From 729f7712a3b6f13f9915ebc45008d48a9c8dfab2 Mon Sep 17 00:00:00 2001 From: Michael Elrom Date: Thu, 17 Sep 2026 11:41:21 -0400 Subject: [PATCH 1/2] feat(forward-networks): add Forward Networks Integration Model and Studio Project Curates Forward Networks' official 26.1 OpenAPI spec into a common-CRUD-for-automation subset (network CRUD, classic/endpoint device inventory, credentials, jump servers, device tags, NQE queries, checks, path search, snapshot listing, and vulnerability analysis) using HTTP Basic auth, plus a companion Studio Project with one workflow per curated operation wired to the -latest Integration Model. --- .../OpenAPIs/forward_networks-26.1.json | 18442 ++++++++++++++++ .../OpenAPIs/forward_networks-latest.json | 11155 ++++++++++ Forward Networks/README.md | 85 + .../Forward Networks.project.json | 7951 +++++++ README.md | 1 + 5 files changed, 37634 insertions(+) create mode 100644 Forward Networks/OpenAPIs/forward_networks-26.1.json create mode 100644 Forward Networks/OpenAPIs/forward_networks-latest.json create mode 100644 Forward Networks/README.md create mode 100644 Forward Networks/Studio Projects/Forward Networks.project.json diff --git a/Forward Networks/OpenAPIs/forward_networks-26.1.json b/Forward Networks/OpenAPIs/forward_networks-26.1.json new file mode 100644 index 0000000..55035c2 --- /dev/null +++ b/Forward Networks/OpenAPIs/forward_networks-26.1.json @@ -0,0 +1,18442 @@ +{ + "openapi": "3.1.0", + "info": { + "title": "Forward Networks", + "description": "Model and verify networks", + "contact": { + "email": "support@forwardnetworks.com" + }, + "license": { + "name": "MIT", + "url": "https://spdx.org/licenses/MIT" + }, + "version": "26.1" + }, + "servers": [ + { + "url": "/api" + } + ], + "tags": [ + { + "name": "Aliases", + "description": "Define groups of network infrastructure elements or packet header values", + "x-displayName": "Aliases" + }, + { + "name": "Checks", + "description": "Enable or define automated checks that verify network policy and behavior", + "x-displayName": "Checks" + }, + { + "name": "Classic Devices", + "description": "Specify the network devices to collect from and model", + "x-displayName": "Classic Devices" + }, + { + "name": "Credentials", + "description": "Provide network device credentials needed for network collection", + "x-displayName": "Credentials" + }, + { + "name": "Current Version", + "description": "Get current API version information", + "x-displayName": "Current Version" + }, + { + "name": "Device Tags", + "description": "List or manage tags associated with network devices and endpoints", + "x-displayName": "Device Tags" + }, + { + "name": "Jump Servers", + "description": "Configure jump servers to assist in reaching network devices", + "x-displayName": "Jump Servers" + }, + { + "name": "Network Collection", + "description": "Configure configuration and state collection from network devices", + "x-displayName": "Network Collection" + }, + { + "name": "Network Devices", + "description": "List the modeled network devices", + "x-displayName": "Network Devices" + }, + { + "name": "Network Endpoints", + "description": "Configure network endpoint profiles and specify the network endpoints to collect from", + "x-displayName": "Network Endpoints" + }, + { + "name": "Network Locations", + "description": "Get, create, update, or delete a network's user-defined locations", + "x-displayName": "Network Locations" + }, + { + "name": "Network Snapshots", + "description": "List or manage the network Snapshots collected from network devices", + "x-displayName": "Network Snapshots" + }, + { + "name": "Network Topology", + "description": "List the links inferred between network devices and override them if necessary", + "x-displayName": "Network Topology" + }, + { + "name": "Networks", + "description": "Create, list, rename, or delete model networks", + "x-displayName": "Networks" + }, + { + "name": "NQE", + "description": "Ask the Network Query Engine for structured, vendor-agnostic network information", + "x-displayName": "NQE" + }, + { + "name": "Path Search", + "description": "Trace packets through the network model", + "x-displayName": "Path Search" + }, + { + "name": "Synthetic Devices", + "description": "Model a network\u2019s internet connections, L2VPNs, and L3VPNs", + "x-displayName": "Synthetic Devices" + }, + { + "name": "System Administration", + "description": "Administer the system, including database backups", + "x-displayName": "System Administration" + }, + { + "name": "User Accounts", + "description": "Manage user accounts", + "x-displayName": "User Accounts" + }, + { + "name": "Vulnerability Analysis", + "description": "Identify network devices potentially impacted by CVEs", + "x-displayName": "Vulnerability Analysis" + } + ], + "paths": { + "/snapshots/{snapshotId}/aliases": { + "get": { + "tags": [ + "Aliases" + ], + "summary": "Gets all Aliases", + "operationId": "getAllAliasesUsingGET", + "parameters": [ + { + "name": "snapshotId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Aliases" + } + } + } + }, + "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\nlatest Snapshot is done or to identify an alternate Snapshot that has already been processed.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorInfo" + } + } + } + } + }, + "security": [ + { + "api_token": [] + } + ] + }, + "delete": { + "tags": [ + "Aliases" + ], + "summary": "Deletes Aliases", + "description": "Use the optional `name` parameter to delete only specific Aliases. It can be repeated as in\n`?name=foo&name=bar`. Omit the `name` parameter to delete all Aliases active in the Snapshot.", + "operationId": "deactivateAliasesUsingDELETE", + "parameters": [ + { + "name": "snapshotId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "name", + "in": "query", + "schema": { + "type": "array", + "items": { + "type": "string" + } + } + } + ], + "responses": { + "200": { + "description": "OK. The response contains the deleted Aliases.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Aliases" + } + } + } + }, + "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\nlatest Snapshot is done or to identify an alternate Snapshot that has already been processed.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorInfo" + } + } + } + } + }, + "security": [ + { + "api_token": [] + } + ] + } + }, + "/snapshots/{snapshotId}/aliases/{name}": { + "get": { + "tags": [ + "Aliases" + ], + "summary": "Gets an Alias", + "operationId": "getSingleAliasUsingGET", + "parameters": [ + { + "name": "snapshotId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "name", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AliasAndValue" + } + } + } + }, + "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\nlatest Snapshot is done or to identify an alternate Snapshot that has already been processed.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorInfo" + } + } + } + } + }, + "security": [ + { + "api_token": [] + } + ] + }, + "put": { + "tags": [ + "Aliases" + ], + "summary": "Creates an Alias", + "operationId": "createSnapshotAliasUsingPUT", + "parameters": [ + { + "name": "snapshotId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "name", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AliasBuilder" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Alias" + } + } + } + }, + "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\nlatest Snapshot is done or to identify an alternate Snapshot that has already been processed.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorInfo" + } + } + } + } + }, + "security": [ + { + "api_token": [] + } + ] + }, + "delete": { + "tags": [ + "Aliases" + ], + "summary": "Deletes an Alias", + "operationId": "deactivateAliasUsingDELETE", + "parameters": [ + { + "name": "snapshotId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "name", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Alias" + } + } + } + } + }, + "security": [ + { + "api_token": [] + } + ] + } + }, + "/predefinedChecks": { + "get": { + "tags": [ + "Checks" + ], + "summary": "Gets available Predefined checks", + "operationId": "getAvailablePredefinedChecksUsingGET", + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/AvailablePredefinedCheck" + } + } + } + } + } + }, + "security": [ + { + "api_token": [] + } + ] + } + }, + "/snapshots/{snapshotId}/checks": { + "get": { + "tags": [ + "Checks" + ], + "summary": "Gets checks (with status)", + "operationId": "getChecksUsingGET", + "parameters": [ + { + "name": "snapshotId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "type", + "in": "query", + "description": "Can be repeated to request multiple types (as in `?type=NQE&type=Predefined`) or omitted to request all\ntypes.", + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/CheckType" + } + } + }, + { + "name": "priority", + "in": "query", + "description": "Can be repeated to request multiple priorities (as in `?priority=HIGH&priority=LOW`) or omitted to request\nall priorities.", + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/CheckPriority" + } + } + }, + { + "name": "status", + "in": "query", + "description": "Can be repeated to request multiple statuses (as in `?status=FAIL&status=ERROR`) or omitted to request all\nstatuses.\n\n**Note:** The response will never contain results with `status` NONE or PROCESSING. The server will wait to\nrespond, if necessary, until processing finishes or times out.", + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/CheckStatus" + } + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/NetworkCheckResult" + } + } + } + } + }, + "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\nlatest Snapshot is done or to identify an alternate Snapshot that has already been processed.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorInfo" + } + } + } + } + }, + "security": [ + { + "api_token": [] + } + ] + }, + "post": { + "tags": [ + "Checks" + ], + "summary": "Adds a check", + "description": "Note that the returned NetworkCheckResult will never have status of type NONE or PROCESSING", + "operationId": "addCheckUsingPOST", + "parameters": [ + { + "name": "snapshotId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "persistent", + "in": "query", + "description": "Whether to associate check with any later snapshots (including future snapshots) too", + "schema": { + "type": "boolean", + "default": true + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/NewNetworkCheck" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/NetworkCheckResult" + } + } + } + }, + "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\nlatest Snapshot is done or to identify an alternate Snapshot that has already been processed.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorInfo" + } + } + } + } + }, + "security": [ + { + "api_token": [] + } + ] + }, + "delete": { + "tags": [ + "Checks" + ], + "summary": "Deactivates all checks", + "operationId": "deactivateChecksUsingDELETE", + "parameters": [ + { + "name": "snapshotId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "object" + } + } + } + } + }, + "security": [ + { + "api_token": [] + } + ] + } + }, + "/snapshots/{snapshotId}/checks/{checkId}": { + "get": { + "tags": [ + "Checks" + ], + "summary": "Gets a check (with status)", + "description": "Note that the returned NetworkCheckResults will never have status of type NONE or PROCESSING", + "operationId": "getSingleCheckUsingGET", + "parameters": [ + { + "name": "snapshotId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "checkId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/NetworkCheckResultWithDiagnosis" + } + } + } + }, + "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\nlatest Snapshot is done or to identify an alternate Snapshot that has already been processed.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorInfo" + } + } + } + } + }, + "security": [ + { + "api_token": [] + } + ] + }, + "delete": { + "tags": [ + "Checks" + ], + "summary": "Deactivates a check", + "operationId": "deactivateCheckUsingDELETE", + "parameters": [ + { + "name": "snapshotId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "checkId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "object" + } + } + } + } + }, + "security": [ + { + "api_token": [] + } + ] + } + }, + "/networks/{networkId}/classic-devices": { + "get": { + "tags": [ + "Classic Devices" + ], + "summary": "Gets a network\u2019s classic devices", + "operationId": "getClassicDevicesUsingGET", + "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": "Adds a new classic device", + "operationId": "addClassicDeviceUsingPOST", + "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": "Updates specific classic devices", + "description": "All JSON properties in the `update` object are optional. Include only the properties you wish\nto change.", + "operationId": "patchClassicDevicesUsingPATCH", + "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": "Adds new classic devices", + "operationId": "addClassicDevicesUsingPOST", + "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": "Deletes all of a network\u2019s classic devices", + "operationId": "deleteAllClassicDevicesUsingPOST", + "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": "Deletes specific classic devices", + "operationId": "deleteClassicDevicesUsingPOST", + "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": "Gets specific classic devices", + "operationId": "getSpecificClassicDevicesUsingPOST", + "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": "Adds or updates classic devices", + "operationId": "putClassicDevicesUsingPOST", + "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": "Gets a classic device", + "operationId": "getClassicDeviceUsingGET", + "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": "Adds or updates a classic device", + "operationId": "putClassicDeviceUsingPUT", + "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": [] + } + ] + }, + "delete": { + "tags": [ + "Classic Devices" + ], + "summary": "Deletes a classic device", + "operationId": "deleteClassicDeviceUsingDELETE", + "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": [] + } + ] + }, + "patch": { + "tags": [ + "Classic Devices" + ], + "summary": "Updates a classic device", + "description": "All JSON properties in the request body are optional. Include only the properties you wish to\nchange.", + "operationId": "patchClassicDeviceUsingPATCH", + "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": [] + } + ] + } + }, + "/networks/{networkId}/cli-credentials": { + "get": { + "tags": [ + "Credentials" + ], + "summary": "Lists network device CLI credentials", + "description": "Substitutes a system-generated identifier for each sensitive `password`.", + "operationId": "getCliCredentialsUsingGET", + "parameters": [ + { + "name": "networkId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/StoredCliCredential" + } + } + } + } + } + }, + "security": [ + { + "api_token": [] + } + ] + }, + "post": { + "tags": [ + "Credentials" + ], + "summary": "Creates a network device CLI credential", + "operationId": "createCliCredentialUsingPOST", + "parameters": [ + { + "name": "networkId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/NewCliCredential" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CliCredential" + } + } + } + } + }, + "security": [ + { + "api_token": [] + } + ] + }, + "patch": { + "tags": [ + "Credentials" + ], + "summary": "Creates network device CLI credentials", + "description": "The response contains the same credentials as the request, in the same order.", + "operationId": "createCliCredentialsUsingPATCH", + "parameters": [ + { + "name": "networkId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/NewCliCredential" + } + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/StoredCliCredential" + } + } + } + } + } + }, + "security": [ + { + "api_token": [] + } + ] + } + }, + "/networks/{networkId}/cli-credentials/{credentialId}": { + "get": { + "tags": [ + "Credentials" + ], + "summary": "Gets a network device CLI credential", + "description": "Substitutes a system-generated identifier for the sensitive `password`.", + "operationId": "getCliCredentialUsingGET", + "parameters": [ + { + "name": "networkId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "credentialId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/StoredCliCredential" + } + } + } + } + }, + "security": [ + { + "api_token": [] + } + ] + }, + "delete": { + "tags": [ + "Credentials" + ], + "summary": "Deletes a network device CLI credential", + "operationId": "deleteCliCredentialUsingDELETE", + "parameters": [ + { + "name": "networkId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "credentialId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "204": { + "description": "No Content", + "content": {} + } + }, + "security": [ + { + "api_token": [] + } + ] + }, + "patch": { + "tags": [ + "Credentials" + ], + "summary": "Updates a network device CLI credential", + "description": "All JSON properties in the request body are optional. Include only the properties you wish to\nchange.", + "operationId": "patchCliCredentialUsingPATCH", + "parameters": [ + { + "name": "networkId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "credentialId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CliCredentialUpdate" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/StoredCliCredential" + } + } + } + } + }, + "security": [ + { + "api_token": [] + } + ] + } + }, + "/networks/{networkId}/http-credentials": { + "get": { + "tags": [ + "Credentials" + ], + "summary": "Lists network device HTTP credentials", + "description": "Substitutes a system-generated identifier for each sensitive `password`.", + "operationId": "getHttpCredentialsUsingGET", + "parameters": [ + { + "name": "networkId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/StoredHttpCredential" + } + } + } + } + } + }, + "security": [ + { + "api_token": [] + } + ] + }, + "post": { + "tags": [ + "Credentials" + ], + "summary": "Creates a network device HTTP credential", + "operationId": "createHttpCredentialUsingPOST", + "parameters": [ + { + "name": "networkId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/NewHttpCredential" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HttpCredential" + } + } + } + } + }, + "security": [ + { + "api_token": [] + } + ] + }, + "patch": { + "tags": [ + "Credentials" + ], + "summary": "Creates network device HTTP credentials", + "description": "The response contains the same credentials as the request, in the same order.", + "operationId": "createHttpCredentialsUsingPATCH", + "parameters": [ + { + "name": "networkId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/NewHttpCredential" + } + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/StoredHttpCredential" + } + } + } + } + } + }, + "security": [ + { + "api_token": [] + } + ] + } + }, + "/networks/{networkId}/http-credentials/{credentialId}": { + "get": { + "tags": [ + "Credentials" + ], + "summary": "Gets a network device HTTP credential", + "description": "Substitutes a system-generated identifier for the sensitive `password`.", + "operationId": "getHttpCredentialUsingGET", + "parameters": [ + { + "name": "networkId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "credentialId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/StoredHttpCredential" + } + } + } + } + }, + "security": [ + { + "api_token": [] + } + ] + }, + "delete": { + "tags": [ + "Credentials" + ], + "summary": "Deletes a network device HTTP credential", + "operationId": "deleteHttpCredentialUsingDELETE", + "parameters": [ + { + "name": "networkId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "credentialId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "204": { + "description": "No Content", + "content": {} + } + }, + "security": [ + { + "api_token": [] + } + ] + }, + "patch": { + "tags": [ + "Credentials" + ], + "summary": "Updates a network device HTTP credential", + "description": "All JSON properties in the request body are optional. Include only the properties you wish to\nchange.", + "operationId": "patchHttpCredentialUsingPATCH", + "parameters": [ + { + "name": "networkId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "credentialId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HttpCredentialUpdate" + } + } + }, + "required": true + }, + "responses": { + "204": { + "description": "No Content", + "content": {} + } + }, + "security": [ + { + "api_token": [] + } + ] + } + }, + "/version": { + "get": { + "tags": [ + "Current Version" + ], + "summary": "Gets the API\u2019s current version", + "operationId": "getApiVersionUsingGET", + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiVersion" + } + } + } + } + }, + "security": [ + { + "api_token": [] + } + ] + } + }, + "/networks/{networkId}/device-tags": { + "get": { + "tags": [ + "Device Tags" + ], + "summary": "Gets all device tags", + "operationId": "getDeviceTagsUsingGET", + "parameters": [ + { + "name": "networkId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DeviceTags" + } + } + } + } + }, + "security": [ + { + "api_token": [] + } + ] + }, + "post": { + "tags": [ + "Device Tags" + ], + "summary": "Creates a device tag", + "operationId": "addDeviceTagUsingPOST", + "parameters": [ + { + "name": "networkId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DeviceTag" + } + } + }, + "required": true + }, + "responses": { + "201": { + "description": "Created", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DeviceTag" + } + } + } + } + }, + "security": [ + { + "api_token": [] + } + ] + } + }, + "/networks/{networkId}/device-tags?with=devices": { + "get": { + "tags": [ + "Device Tags" + ], + "summary": "Gets all tags with their devices", + "description": "If **snapshotId** is specified, the response will include device names that were associated with the tag(s)\nas of the identified network Snapshot.", + "operationId": "getDeviceTagsWithDevicesUsingGET", + "parameters": [ + { + "name": "networkId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "snapshotId", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DeviceTagsWithDevices" + } + } + } + } + }, + "security": [ + { + "api_token": [] + } + ] + } + }, + "/networks/{networkId}/device-tags?action=addBatch": { + "post": { + "tags": [ + "Device Tags" + ], + "summary": "Creates device tags", + "description": "This operation is for creating multiple new device tags all at once.", + "operationId": "addDeviceTagsBatchUsingPOST", + "parameters": [ + { + "name": "networkId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/DeviceTag" + } + } + } + }, + "required": true + }, + "responses": { + "204": { + "description": "No Content", + "content": {} + } + }, + "security": [ + { + "api_token": [] + } + ] + } + }, + "/networks/{networkId}/device-tags?action=addBatchTo": { + "post": { + "tags": [ + "Device Tags" + ], + "summary": "Adds tags to devices", + "description": "If **snapshotId** is specified, the change will take effect starting from the identified network Snapshot,\nand `devices` in the request body must be the names of devices and/or endpoints in the Snapshot. Otherwise,\n`devices` must be the names of devices and/or endpoints configured as _collection\u00a0sources_, and the change\nwill take effect in the network\u2019s next Snapshot.\n\nTo skip validation of `devices`, set the query parameter **validateDevices** to **false** in the URL.", + "operationId": "addDeviceTagsToDevicesUsingPOST", + "parameters": [ + { + "name": "networkId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "snapshotId", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "validateDevices", + "in": "query", + "schema": { + "type": "boolean" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DevicesAndTags" + } + } + }, + "required": true + }, + "responses": { + "204": { + "description": "No Content", + "content": {} + } + }, + "security": [ + { + "api_token": [] + } + ] + } + }, + "/networks/{networkId}/device-tags?action=removeAllFrom": { + "post": { + "tags": [ + "Device Tags" + ], + "summary": "Removes all tags from devices", + "description": "If **snapshotId** is specified, the change will take effect starting from the identified network Snapshot,\nand `devices` in the request body must be the names of devices and/or endpoints in the Snapshot. Otherwise,\n`devices` must be the names of devices and/or endpoints configured as _collection\u00a0sources_, and the change\nwill take effect in the network\u2019s next Snapshot.\n\nTo skip validation of `devices`, set the query parameter **validateDevices** to **false** in the URL.", + "operationId": "removeAllDeviceTagsFromDevicesUsingPOST", + "parameters": [ + { + "name": "networkId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "snapshotId", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "validateDevices", + "in": "query", + "schema": { + "type": "boolean" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DeviceSet" + } + } + }, + "required": true + }, + "responses": { + "204": { + "description": "No Content", + "content": {} + } + }, + "security": [ + { + "api_token": [] + } + ] + } + }, + "/networks/{networkId}/device-tags?action=removeBatchFrom": { + "post": { + "tags": [ + "Device Tags" + ], + "summary": "Removes tags from devices", + "description": "If **snapshotId** is specified, the change will take effect starting from the identified network Snapshot,\nand `devices` in the request body must be the names of devices and/or endpoints in the Snapshot. Otherwise,\n`devices` must be the names of devices and/or endpoints configured as _collection\u00a0sources_, and the change\nwill take effect in the network\u2019s next Snapshot.\n\nTo skip validation of `devices`, set the query parameter **validateDevices** to **false** in the URL.", + "operationId": "removeDeviceTagsFromDevicesUsingPOST", + "parameters": [ + { + "name": "networkId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "snapshotId", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "validateDevices", + "in": "query", + "schema": { + "type": "boolean" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DevicesAndTags" + } + } + }, + "required": true + }, + "responses": { + "204": { + "description": "No Content", + "content": {} + } + }, + "security": [ + { + "api_token": [] + } + ] + } + }, + "/networks/{networkId}/device-tags?action=replaceAllFor": { + "post": { + "tags": [ + "Device Tags" + ], + "summary": "Replaces all tags for devices", + "description": "If **snapshotId** is specified, the change will take effect starting from the identified network Snapshot,\nand `devices` in the request body must be the names of devices and/or endpoints in the Snapshot. Otherwise,\n`devices` must be the names of devices and/or endpoints configured as _collection\u00a0sources_, and the change\nwill take effect in the network\u2019s next Snapshot.\n\nTo skip validation of `devices`, set the query parameter **validateDevices** to **false** in the URL.", + "operationId": "replaceAllDeviceTagsForDevicesUsingPOST", + "parameters": [ + { + "name": "networkId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "snapshotId", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "validateDevices", + "in": "query", + "schema": { + "type": "boolean" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DevicesAndTags" + } + } + }, + "required": true + }, + "responses": { + "204": { + "description": "No Content", + "content": {} + } + }, + "security": [ + { + "api_token": [] + } + ] + } + }, + "/networks/{networkId}/device-tags/{tagName}": { + "get": { + "tags": [ + "Device Tags" + ], + "summary": "Gets a device tag", + "operationId": "getDeviceTagUsingGET", + "parameters": [ + { + "name": "networkId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "tagName", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DeviceTag" + } + } + } + } + }, + "security": [ + { + "api_token": [] + } + ] + }, + "delete": { + "tags": [ + "Device Tags" + ], + "summary": "Deletes a device tag", + "description": "**Warning:** This operation deletes the device tag from the network completely. It removes the tag from all\ndevices and endpoints in all the network\u2019s Snapshots.", + "operationId": "deleteDeviceTagUsingDELETE", + "parameters": [ + { + "name": "networkId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "tagName", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "204": { + "description": "No Content", + "content": {} + } + }, + "security": [ + { + "api_token": [] + } + ] + }, + "patch": { + "tags": [ + "Device Tags" + ], + "summary": "Updates a device tag", + "description": "All JSON properties in the request body are optional. Include only the properties you wish to\nchange.", + "operationId": "updateDeviceTagUsingPATCH", + "parameters": [ + { + "name": "networkId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "tagName", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DeviceTagPatch" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DeviceTag" + } + } + } + } + }, + "security": [ + { + "api_token": [] + } + ] + } + }, + "/networks/{networkId}/device-tags/{tagName}?with=devices": { + "get": { + "tags": [ + "Device Tags" + ], + "summary": "Gets a tag with its devices", + "description": "If **snapshotId** is specified, the response will include device names that were associated with the tag(s)\nas of the identified network Snapshot.", + "operationId": "getDeviceTagWithDevicesUsingGET", + "parameters": [ + { + "name": "networkId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "tagName", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "snapshotId", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DeviceTagWithDevices" + } + } + } + } + }, + "security": [ + { + "api_token": [] + } + ] + } + }, + "/networks/{networkId}/device-tags/{tagName}?action=addTo": { + "post": { + "tags": [ + "Device Tags" + ], + "summary": "Adds a tag to devices", + "description": "If **snapshotId** is specified, the change will take effect starting from the identified network Snapshot,\nand `devices` in the request body must be the names of devices and/or endpoints in the Snapshot. Otherwise,\n`devices` must be the names of devices and/or endpoints configured as _collection\u00a0sources_, and the change\nwill take effect in the network\u2019s next Snapshot.\n\nTo skip validation of `devices`, set the query parameter **validateDevices** to **false** in the URL.", + "operationId": "addDeviceTagToDevicesUsingPOST", + "parameters": [ + { + "name": "networkId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "tagName", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "snapshotId", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "validateDevices", + "in": "query", + "schema": { + "type": "boolean" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DeviceSet" + } + } + }, + "required": true + }, + "responses": { + "204": { + "description": "No Content", + "content": {} + } + }, + "security": [ + { + "api_token": [] + } + ] + } + }, + "/networks/{networkId}/device-tags/{tagName}?action=removeFrom": { + "post": { + "tags": [ + "Device Tags" + ], + "summary": "Removes a tag from devices", + "description": "If **snapshotId** is specified, the change will take effect starting from the identified network Snapshot,\nand `devices` in the request body must be the names of devices and/or endpoints in the Snapshot. Otherwise,\n`devices` must be the names of devices and/or endpoints configured as _collection\u00a0sources_, and the change\nwill take effect in the network\u2019s next Snapshot.\n\nTo skip validation of `devices`, set the query parameter **validateDevices** to **false** in the URL.", + "operationId": "removeDeviceTagFromDevicesUsingPOST", + "parameters": [ + { + "name": "networkId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "tagName", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "snapshotId", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "validateDevices", + "in": "query", + "schema": { + "type": "boolean" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DeviceSet" + } + } + }, + "required": true + }, + "responses": { + "204": { + "description": "No Content", + "content": {} + } + }, + "security": [ + { + "api_token": [] + } + ] + } + }, + "/networks/{networkId}/jumpServers": { + "get": { + "tags": [ + "Jump Servers" + ], + "summary": "Lists a network\u2019s jump servers", + "description": "Substitutes a system-generated identifier for each sensitive `password` and `sshKey`.", + "operationId": "getJumpServersUsingGET", + "parameters": [ + { + "name": "networkId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/StoredJumpServer" + } + } + } + } + } + }, + "security": [ + { + "api_token": [] + } + ] + }, + "post": { + "tags": [ + "Jump Servers" + ], + "summary": "Creates a jump server", + "operationId": "createJumpServerUsingPOST", + "parameters": [ + { + "name": "networkId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/NewJumpServer" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/JumpServer" + } + } + } + } + }, + "security": [ + { + "api_token": [] + } + ] + } + }, + "/networks/{networkId}/jumpServers/{jumpServerId}": { + "delete": { + "tags": [ + "Jump Servers" + ], + "summary": "Deletes a jump server", + "operationId": "deleteJumpServerUsingDELETE", + "parameters": [ + { + "name": "networkId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "jumpServerId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "object" + } + } + } + } + }, + "security": [ + { + "api_token": [] + } + ] + }, + "patch": { + "tags": [ + "Jump Servers" + ], + "summary": "Updates a jump server", + "description": "All JSON properties in the request body are optional. Include only the properties you wish to\nchange.", + "operationId": "editJumpServerUsingPATCH", + "parameters": [ + { + "name": "networkId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "jumpServerId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/JumpServerUpdate" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "object" + } + } + } + } + }, + "security": [ + { + "api_token": [] + } + ] + } + }, + "/networks/{networkId}/cancelcollection": { + "post": { + "tags": [ + "Network Collection" + ], + "summary": "Cancels an in-progress network collection", + "operationId": "cancelCollectUsingPOST", + "parameters": [ + { + "name": "networkId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "object" + } + } + } + } + }, + "security": [ + { + "api_token": [] + } + ] + } + }, + "/networks/{networkId}/collection-schedules": { + "get": { + "tags": [ + "Network Collection" + ], + "summary": "Gets a network\u2019s collection schedules", + "operationId": "getCollectionSchedulesUsingGET", + "parameters": [ + { + "name": "networkId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CollectionSchedules" + } + } + } + } + }, + "security": [ + { + "api_token": [] + } + ] + }, + "post": { + "tags": [ + "Network Collection" + ], + "summary": "Adds a network collection schedule", + "operationId": "addCollectionScheduleUsingPOST", + "parameters": [ + { + "name": "networkId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CollectionScheduleDefinition" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CollectionSchedule" + } + } + } + } + }, + "security": [ + { + "api_token": [] + } + ] + } + }, + "/networks/{networkId}/collection-schedules/{scheduleId}": { + "get": { + "tags": [ + "Network Collection" + ], + "summary": "Gets a network collection schedule", + "operationId": "getCollectionScheduleUsingGET", + "parameters": [ + { + "name": "networkId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "scheduleId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CollectionSchedule" + } + } + } + } + }, + "security": [ + { + "api_token": [] + } + ] + }, + "put": { + "tags": [ + "Network Collection" + ], + "summary": "Replaces a network collection schedule", + "operationId": "replaceCollectionScheduleUsingPUT", + "parameters": [ + { + "name": "networkId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "scheduleId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CollectionSchedule" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "object" + } + } + } + } + }, + "security": [ + { + "api_token": [] + } + ] + }, + "delete": { + "tags": [ + "Network Collection" + ], + "summary": "Deletes a network collection schedule", + "operationId": "deleteCollectionScheduleUsingDELETE", + "parameters": [ + { + "name": "networkId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "scheduleId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "204": { + "description": "No Content", + "content": {} + } + }, + "security": [ + { + "api_token": [] + } + ] + } + }, + "/networks/{networkId}/collector/status": { + "get": { + "tags": [ + "Network Collection" + ], + "summary": "Gets the status of a network\u2019s collector", + "operationId": "getCollectorStateUsingGET", + "parameters": [ + { + "name": "networkId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CollectorState" + } + } + } + } + }, + "security": [ + { + "api_token": [] + } + ] + } + }, + "/networks/{networkId}/startcollection": { + "post": { + "tags": [ + "Network Collection" + ], + "summary": "Triggers a network collection", + "operationId": "collectUsingPOST", + "parameters": [ + { + "name": "networkId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "object" + } + } + } + } + }, + "security": [ + { + "api_token": [] + } + ] + } + }, + "/networks/{networkId}/devices": { + "get": { + "tags": [ + "Network Devices" + ], + "summary": "Gets a network\u2019s devices", + "description": "All glob filter parameters ignore case and support [the common glob\nwildcards](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\n(because it\u2019s 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\n(because it\u2019s 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\"`\nproperty (because collection succeeded). Use `?collectionError=*` to request devices that had a collection\nerror of any kind.", + "schema": { + "type": "string" + } + }, + { + "name": "processingError", + "in": "query", + "description": "`\"processingError\"` glob filter. Use `?processingError=` to request devices with no `\"processingError\"`\nproperty (because processing succeeded). Use `?processingError=*` to request devices that had a processing\nerror 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" + } + } + }, + { + "$ref": "#/components/parameters/SnapshotId" + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Device" + } + } + } + } + }, + "409": { + "description": "The system is currently processing this Snapshot.\n\nNote: GET /networks/{networkId}/snapshots/latestProcessed can be used to determine when processing of the\nlatest Snapshot is done or to identify an alternate Snapshot that has already been processed.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorInfo" + } + } + } + } + }, + "security": [ + { + "api_token": [] + } + ] + } + }, + "/networks/{networkId}/devices/{deviceName}": { + "get": { + "tags": [ + "Network Devices" + ], + "summary": "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" + } + } + }, + { + "$ref": "#/components/parameters/SnapshotId" + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Device" + } + } + } + }, + "409": { + "description": "The system is currently processing this Snapshot.\n\nNote: GET /networks/{networkId}/snapshots/latestProcessed can be used to determine when processing of the\nlatest Snapshot is done or to identify an alternate Snapshot that has already been processed.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorInfo" + } + } + } + } + }, + "security": [ + { + "api_token": [] + } + ] + } + }, + "/networks/{networkId}/devices/{deviceName}/files": { + "get": { + "tags": [ + "Network Devices" + ], + "summary": "Lists a device\u2019s data files", + "operationId": "getDeviceFilesUsingGET", + "parameters": [ + { + "name": "networkId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "deviceName", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "$ref": "#/components/parameters/SnapshotId" + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DeviceFiles" + } + } + } + }, + "409": { + "description": "The system is currently processing this Snapshot.\n\nNote: GET /networks/{networkId}/snapshots/latestProcessed can be used to determine when processing of the\nlatest Snapshot is done or to identify an alternate Snapshot that has already been processed.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorInfo" + } + } + } + } + }, + "security": [ + { + "api_token": [] + } + ] + } + }, + "/networks/{networkId}/devices/{deviceName}/files/{fileName}": { + "get": { + "tags": [ + "Network Devices" + ], + "summary": "Gets device data file content", + "description": "Most device data files are text files. Some are binary. A file\u2019s 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" + } + }, + { + "$ref": "#/components/parameters/SnapshotId" + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "text/plain;charset=utf-8": { + "schema": { + "type": "string", + "format": "byte" + } + }, + "application/octet-stream": { + "schema": { + "type": "string", + "format": "byte" + } + } + } + }, + "409": { + "description": "The system is currently processing this Snapshot.\n\nNote: GET /networks/{networkId}/snapshots/latestProcessed can be used to determine when processing of the\nlatest 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" + } + } + } + } + }, + "security": [ + { + "api_token": [] + } + ] + } + }, + "/networks/{networkId}/missing-devices": { + "get": { + "tags": [ + "Network Devices" + ], + "summary": "Gets a network\u2019s missing devices", + "description": "Returns devices that are listed as CDP, LLDP, iBGP or OSPF neighbors of modeled devices but that aren\u2019t yet\nincluded in the network model.", + "operationId": "getMissingDevicesUsingGET", + "parameters": [ + { + "name": "networkId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "$ref": "#/components/parameters/SnapshotId" + } + ], + "responses": { + "200": { + "description": "OK. Devices are sorted by number of neighbors (most first) and secondarily by name.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/MissingDevices" + } + } + } + }, + "409": { + "description": "The system is currently processing this Snapshot.\n\nNote: GET /networks/{networkId}/snapshots/latestProcessed can be used to determine when processing of the\nlatest Snapshot is done or to identify an alternate Snapshot that has already been processed.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorInfo" + } + } + } + } + }, + "security": [ + { + "api_token": [] + } + ] + } + }, + "/endpoint-profiles": { + "get": { + "tags": [ + "Network Endpoints" + ], + "summary": "Gets the endpoint profiles", + "operationId": "getEndpointProfilesUsingGET", + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/EndpointProfiles" + } + } + } + } + }, + "security": [ + { + "api_token": [] + } + ] + } + }, + "/endpoint-profiles?type=CLI": { + "post": { + "tags": [ + "Network Endpoints" + ], + "summary": "Adds a new CLI endpoint profile", + "operationId": "createCliEndpointProfileUsingPOST", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CliEndpointProfileDef" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/EndpointProfile" + } + } + } + } + }, + "security": [ + { + "api_token": [] + } + ] + } + }, + "/endpoint-profiles?type=HTTP": { + "post": { + "tags": [ + "Network Endpoints" + ], + "summary": "Adds a new HTTP endpoint profile", + "operationId": "createHttpEndpointProfileUsingPOST", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HttpEndpointProfileDef" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/EndpointProfile" + } + } + } + } + }, + "security": [ + { + "api_token": [] + } + ] + } + }, + "/endpoint-profiles?type=SNMP": { + "post": { + "tags": [ + "Network Endpoints" + ], + "summary": "Adds a new SNMP endpoint profile", + "operationId": "createSnmpEndpointProfileUsingPOST", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SnmpEndpointProfileDef" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/EndpointProfile" + } + } + } + } + }, + "security": [ + { + "api_token": [] + } + ] + } + }, + "/endpoint-profiles/CLI-{profileId}": { + "patch": { + "tags": [ + "Network Endpoints" + ], + "summary": "Updates a CLI endpoint profile", + "operationId": "updateCliEndpointProfileUsingPATCH", + "parameters": [ + { + "name": "profileId", + "in": "path", + "description": "Profile ID (the numeric part)", + "required": true, + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CliEndpointProfilePatch" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/EndpointProfile" + } + } + } + } + }, + "security": [ + { + "api_token": [] + } + ] + } + }, + "/endpoint-profiles/HTTP-{profileId}": { + "patch": { + "tags": [ + "Network Endpoints" + ], + "summary": "Updates an HTTP endpoint profile", + "operationId": "updateHttpEndpointProfileUsingPATCH", + "parameters": [ + { + "name": "profileId", + "in": "path", + "description": "Profile ID (the numeric part)", + "required": true, + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HttpEndpointProfilePatch" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/EndpointProfile" + } + } + } + } + }, + "security": [ + { + "api_token": [] + } + ] + } + }, + "/endpoint-profiles/SNMP-{profileId}": { + "patch": { + "tags": [ + "Network Endpoints" + ], + "summary": "Updates an SNMP endpoint profile", + "operationId": "updateSnmpEndpointProfileUsingPATCH", + "parameters": [ + { + "name": "profileId", + "in": "path", + "description": "Profile ID (the numeric part)", + "required": true, + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SnmpEndpointProfilePatch" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/EndpointProfile" + } + } + } + } + }, + "security": [ + { + "api_token": [] + } + ] + } + }, + "/endpoint-profiles/{profileId}": { + "get": { + "tags": [ + "Network Endpoints" + ], + "summary": "Gets an endpoint profile", + "operationId": "getEndpointProfileUsingGET", + "parameters": [ + { + "name": "profileId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/EndpointProfile" + } + } + } + } + }, + "security": [ + { + "api_token": [] + } + ] + }, + "delete": { + "tags": [ + "Network Endpoints" + ], + "summary": "Deletes an endpoint profile", + "operationId": "deleteEndpointProfileUsingDELETE", + "parameters": [ + { + "name": "profileId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "204": { + "description": "No Content", + "content": {} + } + }, + "security": [ + { + "api_token": [] + } + ] + } + }, + "/networks/{networkId}/endpoints": { + "get": { + "tags": [ + "Network Endpoints" + ], + "summary": "Gets a network\u2019s endpoints", + "operationId": "getNetworkEndpointsUsingGET", + "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/NetworkEndpoints" + } + } + } + } + }, + "security": [ + { + "api_token": [] + } + ] + }, + "patch": { + "tags": [ + "Network Endpoints" + ], + "summary": "Updates specific network endpoints", + "description": "All JSON properties in the `update` object are optional. Include only the properties you wish\nto change.", + "operationId": "patchNetworkEndpointsUsingPATCH", + "parameters": [ + { + "name": "networkId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/NetworkEndpointsPatchRequest" + } + } + }, + "required": true + }, + "responses": { + "204": { + "description": "No Content", + "content": {} + } + }, + "security": [ + { + "api_token": [] + } + ] + } + }, + "/networks/{networkId}/endpoints?type=CLI": { + "post": { + "tags": [ + "Network Endpoints" + ], + "summary": "Adds a CLI network endpoint", + "operationId": "createCliNetworkEndpointUsingPOST", + "parameters": [ + { + "name": "networkId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/NewCliNetworkEndpoint" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CliNetworkEndpoint" + } + } + } + } + }, + "security": [ + { + "api_token": [] + } + ] + } + }, + "/networks/{networkId}/endpoints?type=HTTP": { + "post": { + "tags": [ + "Network Endpoints" + ], + "summary": "Adds an HTTP network endpoint", + "operationId": "createHttpNetworkEndpointUsingPOST", + "parameters": [ + { + "name": "networkId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/NewHttpNetworkEndpoint" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HttpNetworkEndpoint" + } + } + } + } + }, + "security": [ + { + "api_token": [] + } + ] + } + }, + "/networks/{networkId}/endpoints?type=SNMP": { + "post": { + "tags": [ + "Network Endpoints" + ], + "summary": "Adds an SNMP network endpoint", + "operationId": "createSnmpNetworkEndpointUsingPOST", + "parameters": [ + { + "name": "networkId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/NewSnmpNetworkEndpoint" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SnmpNetworkEndpoint" + } + } + } + } + }, + "security": [ + { + "api_token": [] + } + ] + } + }, + "/networks/{networkId}/endpoints?action=addBatch&type=CLI": { + "post": { + "tags": [ + "Network Endpoints" + ], + "summary": "Adds CLI network endpoints", + "operationId": "createCliNetworkEndpointsUsingPOST", + "parameters": [ + { + "name": "networkId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/NewCliNetworkEndpoint" + } + } + } + }, + "required": true + }, + "responses": { + "204": { + "description": "No Content", + "content": {} + } + }, + "security": [ + { + "api_token": [] + } + ] + } + }, + "/networks/{networkId}/endpoints?action=addBatch&type=HTTP": { + "post": { + "tags": [ + "Network Endpoints" + ], + "summary": "Adds HTTP network endpoints", + "operationId": "createHttpNetworkEndpointsUsingPOST", + "parameters": [ + { + "name": "networkId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/NewHttpNetworkEndpoint" + } + } + } + }, + "required": true + }, + "responses": { + "204": { + "description": "No Content", + "content": {} + } + }, + "security": [ + { + "api_token": [] + } + ] + } + }, + "/networks/{networkId}/endpoints?action=addBatch&type=SNMP": { + "post": { + "tags": [ + "Network Endpoints" + ], + "summary": "Adds SNMP network endpoints", + "operationId": "createSnmpNetworkEndpointsUsingPOST", + "parameters": [ + { + "name": "networkId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/NewSnmpNetworkEndpoint" + } + } + } + }, + "required": true + }, + "responses": { + "204": { + "description": "No Content", + "content": {} + } + }, + "security": [ + { + "api_token": [] + } + ] + } + }, + "/networks/{networkId}/endpoints?action=deleteBatch": { + "post": { + "tags": [ + "Network Endpoints" + ], + "summary": "Deletes specific network endpoints", + "operationId": "deleteNetworkEndpointsUsingPOST", + "parameters": [ + { + "name": "networkId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DeviceNames" + } + } + }, + "required": true + }, + "responses": { + "204": { + "description": "No Content", + "content": {} + } + }, + "security": [ + { + "api_token": [] + } + ] + } + }, + "/networks/{networkId}/endpoints/{endpointName}": { + "get": { + "tags": [ + "Network Endpoints" + ], + "summary": "Gets a network endpoint", + "operationId": "getNetworkEndpointUsingGET", + "parameters": [ + { + "name": "networkId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "endpointName", + "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/NetworkEndpoint" + } + } + } + } + }, + "security": [ + { + "api_token": [] + } + ] + }, + "delete": { + "tags": [ + "Network Endpoints" + ], + "summary": "Deletes a network endpoint", + "operationId": "deleteNetworkEndpointUsingDELETE", + "parameters": [ + { + "name": "networkId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "endpointName", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "204": { + "description": "No Content", + "content": {} + } + }, + "security": [ + { + "api_token": [] + } + ] + } + }, + "/networks/{networkId}/endpoints/{endpointName}?type=CLI": { + "patch": { + "tags": [ + "Network Endpoints" + ], + "summary": "Updates a CLI network endpoint", + "description": "All JSON properties in the request body are optional. Include only the properties you wish to\nchange.", + "operationId": "updateCliNetworkEndpointUsingPATCH", + "parameters": [ + { + "name": "networkId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "endpointName", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CliNetworkEndpointPatch" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CliNetworkEndpoint" + } + } + } + } + }, + "security": [ + { + "api_token": [] + } + ] + } + }, + "/networks/{networkId}/endpoints/{endpointName}?type=HTTP": { + "patch": { + "tags": [ + "Network Endpoints" + ], + "summary": "Updates an HTTP network endpoint", + "description": "All JSON properties in the request body are optional. Include only the properties you wish to\nchange.", + "operationId": "updateHttpNetworkEndpointUsingPATCH", + "parameters": [ + { + "name": "networkId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "endpointName", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HttpNetworkEndpointPatch" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HttpNetworkEndpoint" + } + } + } + } + }, + "security": [ + { + "api_token": [] + } + ] + } + }, + "/networks/{networkId}/endpoints/{endpointName}?type=SNMP": { + "patch": { + "tags": [ + "Network Endpoints" + ], + "summary": "Updates an SNMP network endpoint", + "description": "All JSON properties in the request body are optional. Include only the properties you wish to\nchange.", + "operationId": "updateSnmpNetworkEndpointUsingPATCH", + "parameters": [ + { + "name": "networkId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "endpointName", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SnmpNetworkEndpointPatch" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SnmpNetworkEndpoint" + } + } + } + } + }, + "security": [ + { + "api_token": [] + } + ] + } + }, + "/networks/{networkId}/atlas": { + "get": { + "tags": [ + "Network Locations" + ], + "summary": "Gets device locations", + "description": "The response is a JSON object that maps device names to their location ids.\n\nSample response: `{\"atl-edge-fw01\": \"2\", \"ny-edge-fw2\": \"1\"}`", + "operationId": "getAtlasUsingGET", + "parameters": [ + { + "name": "networkId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "object", + "additionalProperties": { + "type": "string" + } + } + } + } + } + }, + "security": [ + { + "api_token": [] + } + ] + }, + "patch": { + "tags": [ + "Network Locations" + ], + "summary": "Updates device locations", + "description": "The request is a JSON object that maps device names to their new location ids.\n\nSample request: `{\"atl-edge-fw01\": \"2\", \"ny-edge-fw2\": \"1\"}`", + "operationId": "updateAtlasUsingPATCH", + "parameters": [ + { + "name": "networkId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "additionalProperties": { + "type": "string" + } + } + } + }, + "required": true + }, + "responses": { + "204": { + "description": "No Content", + "content": {} + } + }, + "security": [ + { + "api_token": [] + } + ] + } + }, + "/networks/{networkId}/locations": { + "get": { + "tags": [ + "Network Locations" + ], + "summary": "Gets a network\u2019s locations", + "operationId": "getLocationsUsingGET", + "parameters": [ + { + "name": "networkId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Location" + } + } + } + } + } + }, + "security": [ + { + "api_token": [] + } + ] + }, + "post": { + "tags": [ + "Network Locations" + ], + "summary": "Creates a network location", + "operationId": "addLocationUsingPOST", + "parameters": [ + { + "name": "networkId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/NewLocation" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Location" + } + } + } + } + }, + "security": [ + { + "api_token": [] + } + ] + }, + "put": { + "tags": [ + "Network Locations" + ], + "summary": "Creates network locations", + "description": "Creates multiple locations at once. Can be helpful when first setting up a network.\n\nFails (as a precautionary measure) with 409 Conflict if the network already has any network locations.", + "operationId": "putLocationsUsingPUT", + "parameters": [ + { + "name": "networkId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Location" + } + } + } + }, + "required": true + }, + "responses": { + "204": { + "description": "No Content", + "content": {} + }, + "409": { + "description": "Occurs (as a precautionary measure) if the network already has any network locations.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorInfo" + } + } + } + } + }, + "security": [ + { + "api_token": [] + } + ] + }, + "patch": { + "tags": [ + "Network Locations" + ], + "summary": "Creates or updates network locations", + "description": "Any patches that specify an existing location\u2019s `id` will update the existing location. Any other patches\nwill each create a new location. Patches are applied sequentially.", + "operationId": "patchLocationsUsingPATCH", + "parameters": [ + { + "name": "networkId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/LocationBulkPatch" + } + } + } + }, + "required": true + }, + "responses": { + "204": { + "description": "No Content", + "content": {} + } + }, + "security": [ + { + "api_token": [] + } + ] + } + }, + "/networks/{networkId}/locations/{locationId}": { + "get": { + "tags": [ + "Network Locations" + ], + "summary": "Gets a network location", + "operationId": "getLocationUsingGET", + "parameters": [ + { + "name": "networkId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "locationId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Location" + } + } + } + } + }, + "security": [ + { + "api_token": [] + } + ] + }, + "delete": { + "tags": [ + "Network Locations" + ], + "summary": "Deletes a network location", + "description": "When a location with devices is deleted, all of its devices will be unassigned.", + "operationId": "deleteLocationUsingDELETE", + "parameters": [ + { + "name": "networkId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "locationId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "204": { + "description": "No Content", + "content": {} + } + }, + "security": [ + { + "api_token": [] + } + ] + }, + "patch": { + "tags": [ + "Network Locations" + ], + "summary": "Updates a network location", + "description": "All JSON properties in the request body are optional. Include only the properties you wish to\nchange.", + "operationId": "patchLocationUsingPATCH", + "parameters": [ + { + "name": "networkId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "locationId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/LocationPatch" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Location" + } + } + } + } + }, + "security": [ + { + "api_token": [] + } + ] + } + }, + "/networks/{networkId}/locations/{locationId}/clusters": { + "get": { + "tags": [ + "Network Locations" + ], + "summary": "Gets the device clusters at a location", + "operationId": "getDeviceClustersUsingGET", + "parameters": [ + { + "name": "networkId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "locationId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/DeviceCluster" + } + } + } + } + } + }, + "security": [ + { + "api_token": [] + } + ] + }, + "post": { + "tags": [ + "Network Locations" + ], + "summary": "Creates a device cluster at a location", + "operationId": "addDeviceClusterUsingPOST", + "parameters": [ + { + "name": "networkId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "locationId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DeviceCluster" + } + } + }, + "required": true + }, + "responses": { + "204": { + "description": "No Content", + "content": {} + } + }, + "security": [ + { + "api_token": [] + } + ] + }, + "put": { + "tags": [ + "Network Locations" + ], + "summary": "Replaces all device clusters at a location", + "operationId": "putDeviceClustersUsingPUT", + "parameters": [ + { + "name": "networkId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "locationId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/DeviceCluster" + } + } + } + }, + "required": true + }, + "responses": { + "204": { + "description": "No Content", + "content": {} + } + }, + "security": [ + { + "api_token": [] + } + ] + } + }, + "/networks/{networkId}/locations/{locationId}/clusters/{clusterName}": { + "get": { + "tags": [ + "Network Locations" + ], + "summary": "Gets a device cluster", + "operationId": "getDeviceClusterUsingGET", + "parameters": [ + { + "name": "networkId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "locationId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "clusterName", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DeviceCluster" + } + } + } + } + }, + "security": [ + { + "api_token": [] + } + ] + }, + "delete": { + "tags": [ + "Network Locations" + ], + "summary": "Deletes a device cluster", + "operationId": "deleteDeviceClusterUsingDELETE", + "parameters": [ + { + "name": "networkId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "locationId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "clusterName", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "204": { + "description": "No Content", + "content": {} + } + }, + "security": [ + { + "api_token": [] + } + ] + }, + "patch": { + "tags": [ + "Network Locations" + ], + "summary": "Updates a device cluster", + "description": "All JSON properties in the request body are optional. Include only the properties you wish to\nchange.", + "operationId": "updateDeviceClusterUsingPATCH", + "parameters": [ + { + "name": "networkId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "locationId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "clusterName", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DeviceClusterUpdate" + } + } + }, + "required": true + }, + "responses": { + "204": { + "description": "No Content", + "content": {} + } + }, + "security": [ + { + "api_token": [] + } + ] + } + }, + "/networks/{networkId}/snapshots": { + "get": { + "tags": [ + "Network Snapshots" + ], + "summary": "Lists all Snapshots", + "operationId": "listNetworkSnapshotsUsingGET", + "parameters": [ + { + "name": "networkId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "state", + "in": "query", + "description": "List only Snapshots in this state.", + "schema": { + "$ref": "#/components/schemas/SnapshotState" + } + }, + { + "name": "minSuccessfulDevices", + "in": "query", + "description": "List only Snapshots with at least this many successfully modeled devices.", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "minSuccessfulDevicePct", + "in": "query", + "description": "List only Snapshots with at least this percentage of devices successfully modeled.", + "schema": { + "type": "number", + "format": "double" + } + }, + { + "name": "maxCollectionFailureDevices", + "in": "query", + "description": "List only Snapshots with no more than this many devices from which collection has failed.", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "maxCollectionFailureDevicePct", + "in": "query", + "description": "List only Snapshots with no more than this percentage of devices from which collection has\nfailed.", + "schema": { + "type": "number", + "format": "double" + } + }, + { + "name": "maxParsingFailureDevices", + "in": "query", + "description": "List only Snapshots with no more than this many devices for which parsing of collected data has\nfailed.", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "maxParsingFailureDevicePct", + "in": "query", + "description": "List only Snapshots with no more than this percentage of devices for which parsing of collected data has\nfailed.", + "schema": { + "type": "number", + "format": "double" + } + }, + { + "name": "limit", + "in": "query", + "description": "Maximum number of Snapshots desired", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "includeArchived", + "in": "query", + "description": "Also include archived snapshots. Defaults to false if not provided.", + "schema": { + "type": "boolean", + "default": false + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/NetworkSnapshots" + } + } + } + } + }, + "security": [ + { + "api_token": [] + } + ] + }, + "post": { + "tags": [ + "Network Snapshots" + ], + "summary": "Imports a Snapshot", + "description": "Imports a network Snapshot that was previously exported as a .zip file. If multiple Snapshot .zip files are\nuploaded in a single request, they will be merged. They must not have any devices in common.", + "operationId": "createSnapshotUsingPOST", + "parameters": [ + { + "name": "networkId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "multipart/form-data": { + "schema": { + "type": "object", + "required": [ + "file" + ], + "properties": { + "file": { + "type": "array", + "items": { + "type": "string", + "format": "binary" + } + }, + "note": { + "type": "string" + } + } + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SnapshotInfo" + } + } + } + } + }, + "security": [ + { + "api_token": [] + } + ] + } + }, + "/networks/{networkId}/snapshots/latestProcessed": { + "get": { + "tags": [ + "Network Snapshots" + ], + "summary": "Returns the latest processed Snapshot", + "description": "Returns the latest processed Snapshot (the most recent one that's currently prepared for [path\nsearches](#path-search) and [new checks](#checks)).\n\nTriggers processing of the latest Snapshot if it's not already underway and the network has no processed\nSnapshots.", + "operationId": "getLatestProcessedSnapshotUsingGET", + "parameters": [ + { + "name": "networkId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Processing is complete for the identified Snapshot.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SnapshotInfo" + } + } + } + }, + "404": { + "description": "The network has no Snapshots.", + "content": {} + }, + "409": { + "description": "None of the Snapshots in the network are processed. Processing of the latest Snapshot has\nbegun.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorInfo" + } + } + } + } + }, + "security": [ + { + "api_token": [] + } + ] + } + }, + "/snapshots/{snapshotId}": { + "get": { + "tags": [ + "Network Snapshots" + ], + "summary": "Exports a Snapshot", + "description": "Exports a network Snapshot as a .zip file.", + "operationId": "zipSnapshotUsingGET", + "parameters": [ + { + "name": "snapshotId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "only", + "in": "query", + "description": "Use `?only=CONFIG` to include only device configuration files.", + "schema": { + "type": "string", + "const": "CONFIG" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": {} + } + }, + "security": [ + { + "api_token": [] + } + ] + }, + "post": { + "tags": [ + "Network Snapshots" + ], + "summary": "Exports a Snapshot subset, optionally obfuscated", + "description": "Exports a network Snapshot as a .zip file, optionally limiting which devices are included and optionally\n[obfuscating](/docs/application/settings/system/obfuscate-snapshot/) sensitive data.\n\nTo limit which devices are included, specify either `\"includeDevices\"` or `\"excludeDevices\"`. To obfuscate,\nspecify an `\"obfuscationKey\"`.", + "operationId": "customZipSnapshotUsingPOST", + "parameters": [ + { + "name": "snapshotId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SnapshotExportParams" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "OK", + "content": {} + } + }, + "security": [ + { + "api_token": [] + } + ] + }, + "delete": { + "tags": [ + "Network Snapshots" + ], + "summary": "Deletes a Snapshot", + "operationId": "deleteSnapshotUsingDELETE", + "parameters": [ + { + "name": "snapshotId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "object" + } + } + } + } + }, + "security": [ + { + "api_token": [] + } + ] + } + }, + "/snapshots/{snapshotId}/metrics": { + "get": { + "tags": [ + "Network Snapshots" + ], + "summary": "Returns the metrics of a Snapshot", + "description": "Returns collection and processing health metrics of a Snapshot.", + "operationId": "getSnapshotMetricsUsingGET", + "parameters": [ + { + "name": "snapshotId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Successfully retrieved metrics for the Snapshot.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SnapshotMetrics" + } + } + } + }, + "404": { + "description": "The Snapshot was not found or its metrics were not found; the health metrics will be recomputed if the\nSnapshot is reprocessed.", + "content": {} + } + }, + "security": [ + { + "api_token": [] + } + ] + } + }, + "/snapshots/{snapshotId}/topology": { + "get": { + "tags": [ + "Network Topology" + ], + "summary": "Gets the network topology", + "description": "The links in the response are directed, so they generally appear twice\u2014once for each direction.", + "operationId": "getTopologyUsingGET", + "parameters": [ + { + "name": "snapshotId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/TopologyLink" + } + } + } + } + }, + "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\nlatest Snapshot is done or to identify an alternate Snapshot that has already been processed.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorInfo" + } + } + } + } + }, + "security": [ + { + "api_token": [] + } + ] + } + }, + "/snapshots/{snapshotId}/topology/overrides": { + "get": { + "tags": [ + "Network Topology" + ], + "summary": "Gets the topology overrides", + "operationId": "getSnapshotTopoOverridesUsingGET", + "parameters": [ + { + "name": "snapshotId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/LinkOverrides" + } + } + } + }, + "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\nlatest Snapshot is done or to identify an alternate Snapshot that has already been processed.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorInfo" + } + } + } + } + }, + "security": [ + { + "api_token": [] + } + ] + }, + "post": { + "tags": [ + "Network Topology" + ], + "summary": "Edits the topology overrides", + "operationId": "postSnapshotTopoOverridesUsingPOST", + "parameters": [ + { + "name": "snapshotId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/LinkOverridesEdit" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "object" + } + } + } + }, + "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\nlatest Snapshot is done or to identify an alternate Snapshot that has already been processed.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorInfo" + } + } + } + } + }, + "security": [ + { + "api_token": [] + } + ] + }, + "put": { + "tags": [ + "Network Topology" + ], + "summary": "Sets the topology overrides", + "description": "Replaces any topology overrides previously saved for the Snapshot.", + "operationId": "putSnapshotTopoOverridesUsingPUT", + "parameters": [ + { + "name": "snapshotId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/LinkOverrides" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "object" + } + } + } + }, + "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\nlatest Snapshot is done or to identify an alternate Snapshot that has already been processed.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorInfo" + } + } + } + } + }, + "security": [ + { + "api_token": [] + } + ] + } + }, + "/networks": { + "get": { + "tags": [ + "Networks" + ], + "summary": "Lists all networks", + "operationId": "getNetworksUsingGET", + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Network" + } + } + } + } + } + }, + "security": [ + { + "api_token": [] + } + ] + }, + "post": { + "tags": [ + "Networks" + ], + "summary": "Creates a network", + "operationId": "createNetworkUsingPOST", + "parameters": [ + { + "name": "name", + "in": "query", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Network" + } + } + } + } + }, + "security": [ + { + "api_token": [] + } + ] + } + }, + "/networks/{networkId}": { + "delete": { + "tags": [ + "Networks" + ], + "summary": "Deletes a network", + "operationId": "deleteNetworkUsingDELETE", + "parameters": [ + { + "name": "networkId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Network" + } + } + } + } + }, + "security": [ + { + "api_token": [] + } + ] + }, + "patch": { + "tags": [ + "Networks" + ], + "summary": "Updates a network", + "description": "All JSON properties in the request body are optional. Include only the properties you wish to\nchange.", + "operationId": "updateNetworkUsingPATCH", + "parameters": [ + { + "name": "networkId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/NetworkUpdate" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Network" + } + } + } + } + }, + "security": [ + { + "api_token": [] + } + ] + } + }, + "/networks/{networkId}/workspaces": { + "post": { + "tags": [ + "Networks" + ], + "summary": "Creates a Workspace network", + "description": "A [Workspace network](/docs/application/change-mgmt/workspace_network/) is a network that\ncollects from only a subset of the devices in a large \u201cparent\u201d network. This kind of network can be useful\nin time-sensitive situations like change management windows.", + "operationId": "createWorkspaceNetworkUsingPOST", + "parameters": [ + { + "name": "networkId", + "in": "path", + "description": "The id of the parent network", + "required": true, + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "description": "Information about the new Workspace network", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CreateWorkspaceNetworkRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Network" + } + } + } + } + }, + "security": [ + { + "api_token": [] + } + ] + } + }, + "/nqe": { + "post": { + "tags": [ + "NQE" + ], + "summary": "Runs an NQE query on a Snapshot.", + "operationId": "runNqeQueryUsingPOST", + "parameters": [ + { + "name": "networkId", + "in": "query", + "description": "The ID of the Network to query. Required unless the `snapshotId` parameter is provided.", + "schema": { + "type": "string" + } + }, + { + "$ref": "#/components/parameters/SnapshotId" + } + ], + "requestBody": { + "description": "Each property in the example request body is explained here. To see a detailed explanation of all properties\nallowed in the request body, switch from the \"Example Value\" tab to the \"Schema\" tab.\n\n- The `query` property contains query source code. Use this to run a query directly.\n- The `queryId` property contains the Query ID of a committed query in NQE Library. Use `queryId` to run a query identified by its Query ID.\n- The `commitId` property contains a Commit ID of the query identified by the `queryId` property. Use `commitId` to run a specific version of a committed query.\n- The `queryOptions` property contains refinements of the result set and/or specifies the JSON format. - The `offset` property specifies the starting row to include in the response. For example, an\n offset of 200 would return rows starting from the 200th row. If not specified, an `offset` of 0 will\n be used.\n - The `limit` property specifies the maximum number of rows to include in the response. For\n example, a limit of 1,000 indicates that up to 1,000 rows starting from the given offset should be\n included in the response. If not set, a `limit` of 1,000 will be used. The maximum value for `limit`\n is 10,000.\n - The `sortBy` property specifies which column to sort by. It can be omitted.\n - The `columnFilters` property specifies a collection of conditions on column values. The response\n will only include rows satisfying all specified column filters.\n - In the sample below, up to 100 rows are requested, starting from row 20, from the result set\n consisting of all the rows, sorted by the \"deviceName\" column in ascending order and limited to those\n rows whose \"deviceName\" field contains \"ATL\", rendered with JSON arrays and objects instead of\n strings.\n- The `parameters` property contains a JSON object providing the values for the parameters to use while executing the query for this request. The provided parameter values must match the parameter types\n declared in the NQE query. This property can be omitted or the empty object if the query has no declared\n parameters.\n - In the sample below, values for \"mtuThreshold\" and \"ntpServers\" are specified. The query must\n define parameters \"mtuThreshold\" of type `Integer` and \"ntpServers\" of type `List` for\n these values to be valid.\n\nNote that the sample JSON object contains both the `query` and `queryId` properties and therefore is NOT a\nlegal request. If you use this example for testing, make sure to remove one of them.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/NqeQueryRunRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "The response is an object containing two fields: a `\"snapshotId\"` field, that indicates the Snapshot that\nthe query was run against, and an `\"items\"` field, that contains the query's results.\n\nThe `\"items\"` field contains an array of objects that resulted from the query. Each object in the `\"items\"`\narray, is either a \"basic\" value or a list of \"basic\" values, where a \"basic\" value is either a number,\nboolean, string, or null.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/NqeRunResult" + } + } + } + }, + "400": { + "description": "The query did not complete successfully. For example, the query could not be parsed, the column filters were\ninvalid, or the query timed out or was cancelled during execution. The response will contain\n`\"completionType\"`, `\"errors\"`, and `\"snapshotId\"` fields that provide detailed information onthe errors.\nSee model for more information.\n\nNOTE: A 400 code can also be thrown for other errors, such as a lack of permission to execute the query, or\na request that specified a Query ID for a deleted query without also specifying a Commit ID. In such cases,\nthe `\"completionType\"`, `\"errors\"`, and `\"snapshotId\"` fields will be omitted from the response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/NqeErrorInfo" + } + } + } + } + }, + "security": [ + { + "api_token": [] + } + ] + } + }, + "/nqe-diffs/{before}/{after}": { + "post": { + "tags": [ + "NQE" + ], + "summary": "Diffs the results of two NQE queries between two Snapshots.", + "operationId": "getNqeQueryDiffUsingPOST", + "parameters": [ + { + "name": "before", + "in": "path", + "description": "The ID for the Snapshot to base the diff on.", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "after", + "in": "path", + "description": "The ID for the Snapshot to diff against the base Snapshot.", + "required": true, + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "description": "The `queryId` property contains a Query ID of a query in NQE Library (this can be found in the information\ncallout of a query listed in the Queries pane). The `commitId` property contains a Commit ID of the query\nidentified by `queryId` (this can also be found in either the information callout in the Queries pane, or in\nthe callout in the Versions view dropdown). Use `commitId` to run a specific version of the query.\n\nThe `options` property is optional and can be used to refine the result set and/or specify the JSON format.\nIn the sample object below, `options` requests up to 100 rows, starting from row 20, from the result set\nconsisting of all the rows, sorted by \"Name\" column in ascending order and limited to those rows whose\n\"Name\" field contains \"ATL\", rendered with JSON arrays and objects instead of strings. The `options`\nproperty also allows for sorting and filtering on the diff change type column. To do this, set the\n`columnName` value on either the `sortBy` or `columnFilters` field to \"ChangeType\". It has three possible\nvalues: \"MODIFIED\", \"ADDED\", or \"DELETED\".\n\nThe `parameters` property can be omitted if the query has no declared parameters. If the query declares\nparameters, the `parameters` property should contain a JSON object providing the values for the parameters\nto use while executing the query for this request. The provided parameter values must match the parameter\ntypes declared in the NQE query.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/NqeDiffRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "The response is an object containing two fields: `totalNumValues`, indicating the total number of\ndifferences per row that the query has across the two given snapshots, and `rows`, containing an array of\nobjects indicating the differences between two rows in the query result.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/NqeDiffResult" + } + } + } + }, + "400": { + "description": "The diff request did not complete successfully. For example, the query indicated by `queryId` could be\ninvalid, the `options` for the query were invalid, the query and/or diff timed out or was cancelled during\nexecution, or the user does not have permission to execute the query.", + "content": {} + } + }, + "security": [ + { + "api_token": [] + } + ] + } + }, + "/nqe/queries": { + "get": { + "tags": [ + "NQE" + ], + "summary": "Lists all NQE queries", + "operationId": "getNqeQueriesUsingGET", + "parameters": [ + { + "name": "dir", + "in": "query", + "description": "If specified, include only queries in the given directory. The directory must start and end with a forward\nslash, such as `/L3/Advanced/`.", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/NqeQuery" + } + } + } + } + } + }, + "security": [ + { + "api_token": [] + } + ] + } + }, + "/l7-applications": { + "get": { + "tags": [ + "Path Search" + ], + "summary": "Lists known L7 applications", + "operationId": "getL7ApplicationsUsingGET", + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/L7Application" + } + } + } + } + } + }, + "security": [ + { + "api_token": [] + } + ] + } + }, + "/networks/{networkId}/paths": { + "get": { + "tags": [ + "Path Search" + ], + "summary": "Searches for paths by tracing packets through the network", + "operationId": "getPathsUsingGET", + "parameters": [ + { + "name": "networkId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "from", + "in": "query", + "description": "the device from which the traffic originates. If this is specified, then the srcIp will be considered as a\npacket header only, else, the srcIp will be resolved to specific location(s) and used as the source in the\npath search. Either the source device or srcIp must be specified.", + "schema": { + "type": "string" + } + }, + { + "name": "srcIp", + "in": "query", + "description": "the source IP address or subnet of packets entering the network. For multicast (*, G) paths, set srcIp = G\n(multicast group address).", + "schema": { + "type": "string" + } + }, + { + "name": "dstIp", + "in": "query", + "description": "the destination IP address or subnet of packets entering the network. For multicast (*, G) paths, set dstIp\n= G (multicast group address).", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "intent", + "in": "query", + "description": "Specifies the intent for the search. Default PREFER_DELIVERED.\n*PREFER_VIOLATIONS*: Prefer paths that result in the traffic not getting delivered, e.g. drops, blackholes,\nloops. An example usage is while trying to evaluate if the specified traffic always gets delivered to the\ndestination along all path choices.\n*PREFER_DELIVERED*: Prefer paths that result in the traffic getting delivered. An example usage is while\ntrying to evaluate if traffic gets delivered to the destination along any path choice.\n*VIOLATIONS_ONLY*: Search for paths where traffic is not delivered to the destination.", + "schema": { + "$ref": "#/components/schemas/SearchIntent", + "default": "PREFER_DELIVERED" + } + }, + { + "name": "ipProto", + "in": "query", + "description": "the IP protocol", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "srcPort", + "in": "query", + "description": "the L4 source port, like \"80\" or a range \"8080-8088\"", + "schema": { + "type": "string" + } + }, + { + "name": "dstPort", + "in": "query", + "description": "the L4 destination port, like \"80\" or a range \"8080-8088\"", + "schema": { + "type": "string" + } + }, + { + "name": "icmpType", + "in": "query", + "description": "the ICMP type. Implies ipProto = 1.", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "fin", + "in": "query", + "description": "the FIN (finish) bit (0 or 1). Implies ipProto = 6.", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "syn", + "in": "query", + "description": "the SYN (synchronize) bit (0 or 1). Implies ipProto = 6.", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "rst", + "in": "query", + "description": "the RST (reset) bit (0 or 1). Implies ipProto = 6.", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "psh", + "in": "query", + "description": "the PSH (push) bit (0 or 1). Implies ipProto = 6.", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "ack", + "in": "query", + "description": "the ACK (acknowledgment) bit (0 or 1). Implies ipProto = 6.", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "urg", + "in": "query", + "description": "the URG (urgent) bit (0 or 1). Implies ipProto = 6.", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "appId", + "in": "query", + "description": "the L7 app-id or \"unidentified\" to exclude paths that traverse firewall policies with app-id matches. If the\nsystem doesn't recognize the provided value, it handles the value the same as \"unidentified\" and includes\nthe value in the `unrecognizedValues` response field. The applications that are recognized by the model can\nbe obtained using GET /api/l7-applications.", + "schema": { + "type": "string" + } + }, + { + "name": "userId", + "in": "query", + "description": "the L7 user-id or \"unidentified\" to exclude paths that traverse firewall policies with user-id matches. If\nthe system doesn't recognize the provided value, it handles the value the same as \"unidentified\" and\nincludes the value in the `unrecognizedValues` response field. See [Path Analysis with Layer 7\nUser-Group](/docs/application/search/path-analysis/layer7_ugroup/) for more info.", + "schema": { + "type": "string" + } + }, + { + "name": "userGroupId", + "in": "query", + "description": "the L7 user-group-id. If the system doesn't recognize the provided value, the search returns 0 results as\nthere are no paths that traverse firewall policies with that user-group-id match, and the value is included\nin the `unrecognizedValues` response field. See [Path Analysis with Layer 7\nUser-Group](/docs/application/search/path-analysis/layer7_ugroup/) for more info.", + "schema": { + "type": "string" + } + }, + { + "name": "url", + "in": "query", + "description": "the L7 URL that traffic of interest is trying to access. Prefix wildcards are supported for subdomains.\nSuffix wildcards are supported for top-level domains and URL paths. See [Path Analysis with Layer 7\nURL](/docs/application/search/path-analysis/layer7_url/) for more policy patterns supported in\nthe model.", + "schema": { + "type": "string" + } + }, + { + "name": "includeTags", + "in": "query", + "description": "If true, the response will include device tags for each hop.", + "schema": { + "type": "boolean", + "default": false + } + }, + { + "name": "includeNetworkFunctions", + "in": "query", + "description": "If true, the response includes detailed forwarding info for each hop.\nNote: Setting this to true increases the API response time.", + "schema": { + "type": "boolean", + "default": false + } + }, + { + "name": "maxCandidates", + "in": "query", + "description": "the limit on the number of search results computed, before applying any ranking criteria. Permitted range =\n1 to 10,000. Default 5,000.", + "schema": { + "type": "integer", + "format": "int32", + "default": 5000 + } + }, + { + "name": "maxResults", + "in": "query", + "description": "the limit on the number of search results returned by the API. First, the platform computes up to\nmaxCandidates results that match the search criteria. Then they are sorted by various ranking criteria. A\nkey ranking factor is path length, preferring longer paths (greatest reach) in the network over shorter\nones. Finally, the API limits the number of returned search results to maxResults. Permitted range = 1 to\nmaxCandidates. Default 1.", + "schema": { + "type": "integer", + "format": "int32", + "default": 1 + } + }, + { + "name": "maxReturnPathResults", + "in": "query", + "description": "the limit on the number of return path search results. Permitted range = 0 to 10,000. Default 0. Multicast\n(*, G) and (S, G) queries will always return 0 return path results regardless of this value.", + "schema": { + "type": "integer", + "format": "int32", + "default": 0 + } + }, + { + "name": "maxSeconds", + "in": "query", + "description": "the timeout duration. Permitted range = 1 to 300. Default 30.", + "schema": { + "type": "integer", + "format": "int32", + "default": 30 + } + }, + { + "$ref": "#/components/parameters/SnapshotId" + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PathSearchResponse" + } + } + } + }, + "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\nlatest Snapshot is done or to identify an alternate Snapshot that has already been processed.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorInfo" + } + } + } + } + }, + "security": [ + { + "api_token": [] + } + ] + } + }, + "/networks/{networkId}/paths-bulk": { + "post": { + "tags": [ + "Path Search" + ], + "summary": "Searches for paths by tracing sets of packets through the network", + "operationId": "getPathsBulkUsingPOST", + "parameters": [ + { + "name": "networkId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "$ref": "#/components/parameters/SnapshotId" + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PathSearchBulkRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "The response is an array containing a result (a `PathSearchResponse` or an error object) for each query in\nthe request, in the same order. An error object has an `\"error\": true` property. Each query is evaluated\nindependently.", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/PathSearchResponse" + } + } + } + } + }, + "400": { + "description": "The request failed input validation. For example, a request parameter is outside the permitted range or an\ninput path search query had an invalid IP protocol and ICMP type combination.", + "content": {} + }, + "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\nlatest Snapshot is done or to identify an alternate Snapshot that has already been processed.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorInfo" + } + } + } + } + }, + "security": [ + { + "api_token": [] + } + ] + } + }, + "/networks/{networkId}/paths-bulk-seq": { + "post": { + "tags": [ + "Path Search" + ], + "summary": "Searches for paths by tracing sets of packets through the network", + "operationId": "getTracePathsBulkSeqUsingPOST", + "parameters": [ + { + "name": "networkId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "$ref": "#/components/parameters/SnapshotId" + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PathSearchBulkRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "The response is a sequence of a result (a `PathSearchResponse` or an error object) for each query in the\nrequest, in the same order. Each result is prefixed by an ASCII Record Separator (0x1E), and ends with an\nASCII Line Feed character (0x0A), as described in [RFC 7464: JSON Text\nSequences](https://tools.ietf.org/html/rfc7464). An error object has an `\"error\": true` property. Each query\nis evaluated independently.", + "content": { + "application/json-seq": { + "schema": { + "$ref": "#/components/schemas/PathSearchResponse" + } + } + } + }, + "400": { + "description": "The request failed input validation. For example, a request parameter is outside the permitted range or an\ninput path search query had an invalid IP protocol and ICMP type combination.", + "content": {} + }, + "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\nlatest Snapshot is done or to identify an alternate Snapshot that has already been processed.", + "content": { + "application/json-seq": { + "schema": { + "$ref": "#/components/schemas/ErrorInfo" + } + } + } + } + }, + "security": [ + { + "api_token": [] + } + ] + } + }, + "/networks/{networkId}/encryptors": { + "get": { + "tags": [ + "Synthetic Devices" + ], + "summary": "Gets a network's encryptors", + "operationId": "getEncryptorsUsingGET", + "parameters": [ + { + "name": "networkId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/EncryptorList" + } + } + } + } + }, + "security": [ + { + "api_token": [] + } + ] + }, + "put": { + "tags": [ + "Synthetic Devices" + ], + "summary": "Replaces all of a network\u2019s encryptors", + "operationId": "putEncryptorsUsingPUT", + "parameters": [ + { + "name": "networkId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/EncryptorList" + } + } + }, + "required": true + }, + "responses": { + "204": { + "description": "No Content", + "content": {} + } + }, + "security": [ + { + "api_token": [] + } + ] + } + }, + "/networks/{networkId}/encryptors/{deviceName}": { + "get": { + "tags": [ + "Synthetic Devices" + ], + "summary": "Gets an encryptor", + "operationId": "getEncryptorUsingGET", + "parameters": [ + { + "name": "networkId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "deviceName", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Encryptor" + } + } + } + } + }, + "security": [ + { + "api_token": [] + } + ] + }, + "put": { + "tags": [ + "Synthetic Devices" + ], + "summary": "Adds or replaces an encryptor", + "operationId": "putEncryptorUsingPUT", + "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/Encryptor" + } + } + }, + "required": true + }, + "responses": { + "204": { + "description": "No Content", + "content": {} + } + }, + "security": [ + { + "api_token": [] + } + ] + }, + "delete": { + "tags": [ + "Synthetic Devices" + ], + "summary": "Removes an encryptor", + "operationId": "deleteEncryptorUsingDELETE", + "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": [] + } + ] + }, + "patch": { + "tags": [ + "Synthetic Devices" + ], + "summary": "Updates an encryptor", + "description": "All JSON properties in the request body are optional. Include only the properties you wish to\nchange.", + "operationId": "patchEncryptorUsingPATCH", + "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/EncryptorPatch" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Encryptor" + } + } + } + } + }, + "security": [ + { + "api_token": [] + } + ] + } + }, + "/networks/{networkId}/internet-node": { + "get": { + "tags": [ + "Synthetic Devices" + ], + "summary": "Gets the network\u2019s internet node", + "operationId": "getInternetNodeUsingGET", + "parameters": [ + { + "name": "networkId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/InternetNode" + } + } + } + } + }, + "security": [ + { + "api_token": [] + } + ] + }, + "put": { + "tags": [ + "Synthetic Devices" + ], + "summary": "Replaces the network\u2019s internet node", + "operationId": "putInternetNodeUsingPUT", + "parameters": [ + { + "name": "networkId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/InternetNode" + } + } + }, + "required": true + }, + "responses": { + "204": { + "description": "No Content", + "content": {} + } + }, + "security": [ + { + "api_token": [] + } + ] + }, + "patch": { + "tags": [ + "Synthetic Devices" + ], + "summary": "Updates the network\u2019s internet node", + "description": "All JSON properties in the request body are optional. Include only the properties you wish to\nchange.", + "operationId": "updateInternetNodeUsingPATCH", + "parameters": [ + { + "name": "networkId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/InternetNodePatch" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/InternetNode" + } + } + } + } + }, + "security": [ + { + "api_token": [] + } + ] + } + }, + "/networks/{networkId}/internet-node/connections": { + "get": { + "tags": [ + "Synthetic Devices" + ], + "summary": "Gets some internet node connections", + "operationId": "getInternetNodeConnectionsUsingGET", + "parameters": [ + { + "name": "networkId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "uplinkDevice", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "uplinkPort", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "gatewayDevice", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "gatewayPort", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "vlan", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SyntheticConnections" + } + } + } + } + }, + "security": [ + { + "api_token": [] + } + ] + }, + "post": { + "tags": [ + "Synthetic Devices" + ], + "summary": "Adds a connection to the internet node", + "operationId": "addInternetNodeConnectionUsingPOST", + "parameters": [ + { + "name": "networkId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/InetConnection" + } + } + }, + "required": true + }, + "responses": { + "204": { + "description": "No Content", + "content": {} + } + }, + "security": [ + { + "api_token": [] + } + ] + }, + "delete": { + "tags": [ + "Synthetic Devices" + ], + "summary": "Removes internet node connections", + "operationId": "deleteInternetNodeConnectionsUsingDELETE", + "parameters": [ + { + "name": "networkId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "uplinkDevice", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "uplinkPort", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "gatewayDevice", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "gatewayPort", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "vlan", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SyntheticConnections" + } + } + } + } + }, + "security": [ + { + "api_token": [] + } + ] + } + }, + "/networks/{networkId}/intranet-nodes": { + "get": { + "tags": [ + "Synthetic Devices" + ], + "summary": "Gets a network\u2019s intranet nodes", + "operationId": "getIntranetNodesUsingGET", + "parameters": [ + { + "name": "networkId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/IntranetNodeList" + } + } + } + } + }, + "security": [ + { + "api_token": [] + } + ] + }, + "put": { + "tags": [ + "Synthetic Devices" + ], + "summary": "Replaces all of a network\u2019s intranet nodes", + "operationId": "putIntranetNodesUsingPUT", + "parameters": [ + { + "name": "networkId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/IntranetNodeList" + } + } + }, + "required": true + }, + "responses": { + "204": { + "description": "No Content", + "content": {} + } + }, + "security": [ + { + "api_token": [] + } + ] + } + }, + "/networks/{networkId}/intranet-nodes/{nodeName}": { + "get": { + "tags": [ + "Synthetic Devices" + ], + "summary": "Gets an intranet node", + "operationId": "getIntranetNodeUsingGET", + "parameters": [ + { + "name": "networkId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "nodeName", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/IntranetNode" + } + } + } + } + }, + "security": [ + { + "api_token": [] + } + ] + }, + "put": { + "tags": [ + "Synthetic Devices" + ], + "summary": "Adds or replaces an intranet node", + "operationId": "putIntranetNodeUsingPUT", + "parameters": [ + { + "name": "networkId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "nodeName", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/IntranetNode" + } + } + }, + "required": true + }, + "responses": { + "204": { + "description": "No Content", + "content": {} + } + }, + "security": [ + { + "api_token": [] + } + ] + }, + "delete": { + "tags": [ + "Synthetic Devices" + ], + "summary": "Removes an intranet node", + "operationId": "deleteIntranetNodeUsingDELETE", + "parameters": [ + { + "name": "networkId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "nodeName", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "204": { + "description": "No Content", + "content": {} + } + }, + "security": [ + { + "api_token": [] + } + ] + }, + "patch": { + "tags": [ + "Synthetic Devices" + ], + "summary": "Updates an intranet node", + "description": "All JSON properties in the request body are optional. Include only the properties you wish to\nchange.", + "operationId": "patchIntranetNodeUsingPATCH", + "parameters": [ + { + "name": "networkId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "nodeName", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/IntranetNodePatch" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/IntranetNode" + } + } + } + } + }, + "security": [ + { + "api_token": [] + } + ] + } + }, + "/networks/{networkId}/intranet-nodes/{nodeName}/connections": { + "get": { + "tags": [ + "Synthetic Devices" + ], + "summary": "Gets an intranet node\u2019s connections", + "operationId": "getIntranetNodeConnectionsUsingGET", + "parameters": [ + { + "name": "networkId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "nodeName", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "uplinkDevice", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "uplinkPort", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "gatewayDevice", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "gatewayPort", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "vlan", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SyntheticConnections" + } + } + } + } + }, + "security": [ + { + "api_token": [] + } + ] + }, + "post": { + "tags": [ + "Synthetic Devices" + ], + "summary": "Adds a connection to an intranet node", + "operationId": "addIntranetNodeConnectionUsingPOST", + "parameters": [ + { + "name": "networkId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "nodeName", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/InetConnection" + } + } + }, + "required": true + }, + "responses": { + "204": { + "description": "No Content", + "content": {} + } + }, + "security": [ + { + "api_token": [] + } + ] + }, + "delete": { + "tags": [ + "Synthetic Devices" + ], + "summary": "Removes an intranet node\u2019s connections", + "operationId": "deleteIntranetNodeConnectionsUsingDELETE", + "parameters": [ + { + "name": "networkId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "nodeName", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "uplinkDevice", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "uplinkPort", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "gatewayDevice", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "gatewayPort", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "vlan", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SyntheticConnections" + } + } + } + } + }, + "security": [ + { + "api_token": [] + } + ] + } + }, + "/networks/{networkId}/l2-vpns": { + "get": { + "tags": [ + "Synthetic Devices" + ], + "summary": "Gets a network\u2019s L2VPNs", + "operationId": "getL2VpnsUsingGET", + "parameters": [ + { + "name": "networkId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/L2VpnList" + } + } + } + } + }, + "security": [ + { + "api_token": [] + } + ] + }, + "put": { + "tags": [ + "Synthetic Devices" + ], + "summary": "Replaces all of a network\u2019s L2VPNs", + "operationId": "putL2VpnsUsingPUT", + "parameters": [ + { + "name": "networkId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/L2VpnList" + } + } + }, + "required": true + }, + "responses": { + "204": { + "description": "No Content", + "content": {} + } + }, + "security": [ + { + "api_token": [] + } + ] + } + }, + "/networks/{networkId}/l2-vpns/{l2VpnName}": { + "get": { + "tags": [ + "Synthetic Devices" + ], + "summary": "Gets an L2VPN", + "operationId": "getL2VpnUsingGET", + "parameters": [ + { + "name": "networkId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "l2VpnName", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/L2Vpn" + } + } + } + } + }, + "security": [ + { + "api_token": [] + } + ] + }, + "put": { + "tags": [ + "Synthetic Devices" + ], + "summary": "Adds or replaces an L2VPN", + "operationId": "putL2VpnUsingPUT", + "parameters": [ + { + "name": "networkId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "l2VpnName", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/L2Vpn" + } + } + }, + "required": true + }, + "responses": { + "204": { + "description": "No Content", + "content": {} + } + }, + "security": [ + { + "api_token": [] + } + ] + }, + "delete": { + "tags": [ + "Synthetic Devices" + ], + "summary": "Removes an L2VPN", + "operationId": "deleteL2VpnUsingDELETE", + "parameters": [ + { + "name": "networkId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "l2VpnName", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "204": { + "description": "No Content", + "content": {} + } + }, + "security": [ + { + "api_token": [] + } + ] + }, + "patch": { + "tags": [ + "Synthetic Devices" + ], + "summary": "Updates an L2VPN", + "description": "All JSON properties in the request body are optional. Include only the properties you wish to\nchange.", + "operationId": "patchL2VpnUsingPATCH", + "parameters": [ + { + "name": "networkId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "l2VpnName", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/L2VpnPatch" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/L2Vpn" + } + } + } + } + }, + "security": [ + { + "api_token": [] + } + ] + } + }, + "/networks/{networkId}/l2-vpns/{l2VpnName}/connections": { + "get": { + "tags": [ + "Synthetic Devices" + ], + "summary": "Gets an L2VPN\u2019s connections", + "operationId": "getL2VpnConnectionsUsingGET", + "parameters": [ + { + "name": "networkId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "l2VpnName", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "device", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "port", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "vlan", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SyntheticConnections" + } + } + } + } + }, + "security": [ + { + "api_token": [] + } + ] + }, + "post": { + "tags": [ + "Synthetic Devices" + ], + "summary": "Adds a connection to an L2VPN", + "operationId": "addL2VpnConnectionUsingPOST", + "parameters": [ + { + "name": "networkId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "l2VpnName", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/L2VpnConnection" + } + } + }, + "required": true + }, + "responses": { + "204": { + "description": "No Content", + "content": {} + } + }, + "security": [ + { + "api_token": [] + } + ] + }, + "delete": { + "tags": [ + "Synthetic Devices" + ], + "summary": "Removes an L2VPN\u2019s connections", + "operationId": "deleteL2VpnConnectionsUsingDELETE", + "parameters": [ + { + "name": "networkId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "l2VpnName", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "device", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "port", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "vlan", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SyntheticConnections" + } + } + } + } + }, + "security": [ + { + "api_token": [] + } + ] + } + }, + "/networks/{networkId}/l3-vpns": { + "get": { + "tags": [ + "Synthetic Devices" + ], + "summary": "Gets a network\u2019s L3VPNs", + "operationId": "getL3VpnsUsingGET", + "parameters": [ + { + "name": "networkId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/L3VpnList" + } + } + } + } + }, + "security": [ + { + "api_token": [] + } + ] + }, + "put": { + "tags": [ + "Synthetic Devices" + ], + "summary": "Replaces all of a network\u2019s L3VPNs", + "operationId": "putL3VpnsUsingPUT", + "parameters": [ + { + "name": "networkId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/L3VpnList" + } + } + }, + "required": true + }, + "responses": { + "204": { + "description": "No Content", + "content": {} + } + }, + "security": [ + { + "api_token": [] + } + ] + } + }, + "/networks/{networkId}/l3-vpns/{l3VpnName}": { + "get": { + "tags": [ + "Synthetic Devices" + ], + "summary": "Gets an L3VPN", + "operationId": "getL3VpnUsingGET", + "parameters": [ + { + "name": "networkId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "l3VpnName", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/L3Vpn" + } + } + } + } + }, + "security": [ + { + "api_token": [] + } + ] + }, + "put": { + "tags": [ + "Synthetic Devices" + ], + "summary": "Adds or replaces an L3VPN", + "operationId": "putL3VpnUsingPUT", + "parameters": [ + { + "name": "networkId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "l3VpnName", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/L3Vpn" + } + } + }, + "required": true + }, + "responses": { + "204": { + "description": "No Content", + "content": {} + } + }, + "security": [ + { + "api_token": [] + } + ] + }, + "delete": { + "tags": [ + "Synthetic Devices" + ], + "summary": "Removes an L3VPN", + "operationId": "deleteL3VpnUsingDELETE", + "parameters": [ + { + "name": "networkId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "l3VpnName", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "204": { + "description": "No Content", + "content": {} + } + }, + "security": [ + { + "api_token": [] + } + ] + }, + "patch": { + "tags": [ + "Synthetic Devices" + ], + "summary": "Updates an L3VPN", + "description": "All JSON properties in the request body are optional. Include only the properties you wish to\nchange.", + "operationId": "patchL3VpnUsingPATCH", + "parameters": [ + { + "name": "networkId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "l3VpnName", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/L3VpnPatch" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/L3Vpn" + } + } + } + } + }, + "security": [ + { + "api_token": [] + } + ] + } + }, + "/networks/{networkId}/l3-vpns/{l3VpnName}/connections": { + "get": { + "tags": [ + "Synthetic Devices" + ], + "summary": "Gets an L3VPN\u2019s connections", + "operationId": "getL3VpnConnectionsUsingGET", + "parameters": [ + { + "name": "networkId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "l3VpnName", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "uplinkDevice", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "uplinkPort", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "gatewayDevice", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "gatewayPort", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "vlan", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SyntheticConnections" + } + } + } + } + }, + "security": [ + { + "api_token": [] + } + ] + }, + "post": { + "tags": [ + "Synthetic Devices" + ], + "summary": "Adds a connection to an L3VPN", + "operationId": "addL3VpnConnectionUsingPOST", + "parameters": [ + { + "name": "networkId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "l3VpnName", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/L3VpnConnection" + } + } + }, + "required": true + }, + "responses": { + "204": { + "description": "No Content", + "content": {} + } + }, + "security": [ + { + "api_token": [] + } + ] + }, + "delete": { + "tags": [ + "Synthetic Devices" + ], + "summary": "Removes an L3VPN\u2019s connections", + "operationId": "deleteL3VpnConnectionsUsingDELETE", + "parameters": [ + { + "name": "networkId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "l3VpnName", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "uplinkDevice", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "uplinkPort", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "gatewayDevice", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "gatewayPort", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "vlan", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SyntheticConnections" + } + } + } + } + }, + "security": [ + { + "api_token": [] + } + ] + } + }, + "/networks/{networkId}/wan-circuits": { + "get": { + "tags": [ + "Synthetic Devices" + ], + "summary": "Gets a network\u2019s WAN circuits", + "operationId": "getWanCircuitsUsingGET", + "parameters": [ + { + "name": "networkId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/WanCircuitList" + } + } + } + } + }, + "security": [ + { + "api_token": [] + } + ] + }, + "put": { + "tags": [ + "Synthetic Devices" + ], + "summary": "Replaces all of a network\u2019s WAN circuits", + "operationId": "putWanCircuitsUsingPUT", + "parameters": [ + { + "name": "networkId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/WanCircuitList" + } + } + }, + "required": true + }, + "responses": { + "204": { + "description": "No Content", + "content": {} + } + }, + "security": [ + { + "api_token": [] + } + ] + } + }, + "/networks/{networkId}/wan-circuits/{wanCircuitName}": { + "get": { + "tags": [ + "Synthetic Devices" + ], + "summary": "Gets a WAN circuit", + "operationId": "getWanCircuitUsingGET", + "parameters": [ + { + "name": "networkId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "wanCircuitName", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/WanCircuit" + } + } + } + } + }, + "security": [ + { + "api_token": [] + } + ] + }, + "put": { + "tags": [ + "Synthetic Devices" + ], + "summary": "Adds or replaces a WAN circuit", + "operationId": "putWanCircuitUsingPUT", + "parameters": [ + { + "name": "networkId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "wanCircuitName", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/WanCircuit" + } + } + }, + "required": true + }, + "responses": { + "204": { + "description": "No Content", + "content": {} + } + }, + "security": [ + { + "api_token": [] + } + ] + }, + "delete": { + "tags": [ + "Synthetic Devices" + ], + "summary": "Removes a WAN circuit", + "operationId": "deleteWanCircuitUsingDELETE", + "parameters": [ + { + "name": "networkId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "wanCircuitName", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "204": { + "description": "No Content", + "content": {} + } + }, + "security": [ + { + "api_token": [] + } + ] + }, + "patch": { + "tags": [ + "Synthetic Devices" + ], + "summary": "Updates a WAN circuit", + "description": "All JSON properties in the request body are optional. Include only the properties you wish to\nchange.", + "operationId": "patchWanCircuitUsingPATCH", + "parameters": [ + { + "name": "networkId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "wanCircuitName", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/WanCircuitPatch" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/WanCircuit" + } + } + } + } + }, + "security": [ + { + "api_token": [] + } + ] + } + }, + "/cve-index": { + "get": { + "tags": [ + "System Administration" + ], + "summary": "Exports the CVE index", + "description": "The CVE index is a gzipped binary (.bin.gz) file.\n\nTo download the latest one from fwd.app:\n\n`curl -vu : https://fwd.app/api/cve-index -o cve-index.bin.gz`\n\nThe response includes a `Digest` header containing the file\u2019s SHA-256 digest.", + "operationId": "getCveIndexUsingGET", + "responses": { + "200": { + "description": "OK", + "content": { + "application/gzip": { + "schema": { + "type": "string", + "format": "byte" + } + } + } + } + }, + "security": [ + { + "api_token": [] + } + ] + }, + "put": { + "tags": [ + "System Administration" + ], + "summary": "Imports a new CVE index", + "description": "Replaces the CVE index in use.\n\nTo upload a CVE index gzipped binary (.bin.gz) file downloaded from fwd.app:\n\n`curl -vu : https:///api/cve-index?sha= -T cve-index.bin.gz`\n\nThe `sha` parameter is optional but recommended. The `` value can be found in the `Digest` response\nheader when a CVE index is downloaded from fwd.app.\n\n**Note:** This operation is for on-premises deployments only.", + "operationId": "putCveIndexUsingPUT", + "parameters": [ + { + "name": "sha", + "in": "query", + "description": "Optional SHA-256 digest (consisting of 64 hex digits) to use to verify the integrity of the CVE\nindex", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "string", + "format": "byte" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "OK", + "content": {} + } + }, + "security": [ + { + "api_token": [] + } + ] + } + }, + "/users": { + "get": { + "tags": [ + "User Accounts" + ], + "summary": "Gets all user accounts", + "operationId": "getUsersUsingGET", + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Users" + } + } + } + } + }, + "security": [ + { + "api_token": [] + } + ] + }, + "post": { + "tags": [ + "User Accounts" + ], + "summary": "Creates a user account", + "description": "Creates a new `LOCAL` user account.", + "operationId": "createUserUsingPOST", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/NewUser" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/User" + } + } + } + } + }, + "security": [ + { + "api_token": [] + } + ] + } + }, + "/users/{userId}": { + "get": { + "tags": [ + "User Accounts" + ], + "summary": "Gets a user account", + "operationId": "getUserUsingGET", + "parameters": [ + { + "name": "userId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/User" + } + } + } + } + }, + "security": [ + { + "api_token": [] + } + ] + }, + "delete": { + "tags": [ + "User Accounts" + ], + "summary": "Deletes a user account", + "description": "**Warning**: This operation *cannot* be undone.", + "operationId": "deleteUserUsingDELETE", + "parameters": [ + { + "name": "userId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "204": { + "description": "No Content", + "content": {} + } + }, + "security": [ + { + "api_token": [] + } + ] + }, + "patch": { + "tags": [ + "User Accounts" + ], + "summary": "Updates a user account", + "description": "All JSON properties in the request body are optional. Include only the properties you wish to\nchange.", + "operationId": "updateUserUsingPATCH", + "parameters": [ + { + "name": "userId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UserPatch" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/User" + } + } + } + } + }, + "security": [ + { + "api_token": [] + } + ] + } + }, + "/networks/{networkId}/vulnerabilities": { + "get": { + "tags": [ + "Vulnerability Analysis" + ], + "summary": "Gets vulnerabilities and possibly impacted devices", + "operationId": "getVulnerabilitiesUsingGET", + "parameters": [ + { + "name": "networkId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "$ref": "#/components/parameters/SnapshotId" + }, + { + "name": "offset", + "in": "query", + "description": "An optional number of vulnerabilities to skip. Useful for paging. Defaults to 0.", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "limit", + "in": "query", + "description": "An optional maximum number of vulnerabilities desired. Useful for paging. Defaults to 1000.", + "schema": { + "type": "integer", + "format": "int32" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/VulnerabilityAnalysis" + } + } + } + }, + "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\nlatest Snapshot is done or to identify an alternate Snapshot that has already been processed.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorInfo" + } + } + } + } + }, + "security": [ + { + "api_token": [] + } + ] + } + } + }, + "components": { + "schemas": { + "Alias": { + "type": "object", + "required": [ + "createdAt", + "creationTime", + "creatorId", + "name", + "type" + ], + "properties": { + "createdAt": { + "type": "string", + "examples": [ + "2022-04-06T20:34:45.118Z" + ] + }, + "creationTime": { + "type": "integer", + "format": "int64", + "description": "Deprecated for removal in release 26.4. Use `createdAt` instead.", + "examples": [ + 1649277285118 + ] + }, + "creatorId": { + "type": "string" + }, + "name": { + "type": "string" + }, + "type": { + "$ref": "#/components/schemas/AliasType" + } + } + }, + "AliasAndValue": { + "allOf": [ + { + "$ref": "#/components/schemas/Alias" + } + ] + }, + "AliasBuilder": { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "HOSTS", + "DEVICES", + "INTERFACES", + "HEADERS", + "LOGICAL_NETWORK" + ] + } + }, + "oneOf": [ + { + "$ref": "#/components/schemas/HostsAliasBuilder" + }, + { + "$ref": "#/components/schemas/DevicesAliasBuilder" + }, + { + "$ref": "#/components/schemas/InterfacesAliasBuilder" + }, + { + "$ref": "#/components/schemas/TrafficAliasBuilder" + }, + { + "$ref": "#/components/schemas/LogicalNetworkAliasBuilder" + } + ], + "discriminator": { + "propertyName": "type", + "mapping": { + "HOSTS": "#/components/schemas/HostsAliasBuilder", + "HostFilter": "#/components/schemas/HostsAliasBuilder", + "DEVICES": "#/components/schemas/DevicesAliasBuilder", + "DeviceFilter": "#/components/schemas/DevicesAliasBuilder", + "INTERFACES": "#/components/schemas/InterfacesAliasBuilder", + "InterfaceFilter": "#/components/schemas/InterfacesAliasBuilder", + "HEADERS": "#/components/schemas/TrafficAliasBuilder", + "PacketFilter": "#/components/schemas/TrafficAliasBuilder", + "LOGICAL_NETWORK": "#/components/schemas/LogicalNetworkAliasBuilder" + } + } + }, + "Aliases": { + "type": "object", + "required": [ + "aliases" + ], + "properties": { + "aliases": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Alias" + } + } + } + }, + "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" + } + } + }, + "AliasType": { + "type": "string", + "enum": [ + "HOSTS", + "DEVICES", + "INTERFACES", + "HEADERS", + "LOGICAL_NETWORK" + ] + }, + "HostsAliasBuilder": { + "type": "object", + "required": [ + "name", + "type" + ], + "properties": { + "locations": { + "type": "array", + "items": { + "type": "string" + } + }, + "name": { + "type": "string" + }, + "type": { + "$ref": "#/components/schemas/AliasType" + }, + "values": { + "type": "array", + "items": { + "type": "string" + } + } + } + }, + "DevicesAliasBuilder": { + "type": "object", + "required": [ + "name", + "type" + ], + "properties": { + "name": { + "type": "string" + }, + "type": { + "$ref": "#/components/schemas/AliasType" + }, + "values": { + "type": "array", + "items": { + "type": "string" + } + } + } + }, + "InterfacesAliasBuilder": { + "type": "object", + "required": [ + "name", + "type" + ], + "properties": { + "isExposurePoint": { + "type": "boolean" + }, + "name": { + "type": "string" + }, + "type": { + "$ref": "#/components/schemas/AliasType" + }, + "values": { + "type": "array", + "items": { + "type": "string" + } + }, + "vlanIds": { + "type": "array", + "items": { + "type": "string" + } + }, + "vlanIntfTypes": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "ACCESS", + "TRUNK" + ] + } + } + } + }, + "TrafficAliasBuilder": { + "type": "object", + "required": [ + "name", + "type" + ], + "properties": { + "name": { + "type": "string" + }, + "type": { + "$ref": "#/components/schemas/AliasType" + }, + "values": { + "type": "object", + "additionalProperties": { + "type": "array", + "items": { + "type": "string" + } + } + } + } + }, + "LogicalNetworkAliasBuilder": { + "type": "object", + "required": [ + "name", + "type" + ], + "properties": { + "devices": { + "type": "array", + "items": { + "type": "string" + } + }, + "edgeNodes": { + "type": "array", + "items": { + "type": "string" + } + }, + "name": { + "type": "string" + }, + "type": { + "$ref": "#/components/schemas/AliasType" + } + } + }, + "AvailablePredefinedCheck": { + "type": "object", + "properties": { + "description": { + "type": "string" + }, + "name": { + "type": "string" + }, + "predefinedCheckType": { + "$ref": "#/components/schemas/PredefinedCheckType" + } + } + }, + "CheckPriority": { + "type": "string", + "enum": [ + "NOT_SET", + "LOW", + "MEDIUM", + "HIGH" + ] + }, + "CheckStatus": { + "type": "string", + "enum": [ + "NONE", + "PASS", + "FAIL", + "ERROR", + "TIMEOUT", + "PROCESSING" + ] + }, + "CheckType": { + "type": "string", + "enum": [ + "Isolation", + "Reachability", + "Existential", + "QueryStringBased", + "Predefined", + "NQE" + ] + }, + "NetworkCheckResult": { + "type": "object", + "properties": { + "createdAt": { + "type": "string", + "examples": [ + "2022-04-06T20:34:45.118Z" + ] + }, + "creationDateMillis": { + "type": "integer", + "format": "int64", + "description": "Deprecated for removal in release 26.4. Use `createdAt` instead.", + "examples": [ + 1649277285118 + ] + }, + "creator": { + "type": "string", + "description": "The username of the user who created the check, or null if unknown or if the account was\ndeleted", + "examples": [ + "mary" + ] + }, + "creatorId": { + "type": "string" + }, + "definition": { + "$ref": "#/components/schemas/CheckDefinition" + }, + "definedAt": { + "type": "string", + "examples": [ + "2022-04-06T20:34:45.118Z" + ] + }, + "definitionDateMillis": { + "type": "integer", + "format": "int64", + "description": "Deprecated for removal in release 26.4. Use `definedAt` instead.", + "examples": [ + 1649277285118 + ] + }, + "description": { + "type": "string" + }, + "editedAt": { + "type": "string", + "examples": [ + "2022-04-06T20:34:45.118Z" + ] + }, + "editDateMillis": { + "type": "integer", + "format": "int64", + "description": "Deprecated for removal in release 26.4. Use `editedAt` instead.", + "examples": [ + 1649277285118 + ] + }, + "editor": { + "type": "string", + "description": "The username of the user who last edited the check, or null if unknown, if the account was deleted, or if\nthe check hasn't been edited", + "examples": [ + "steven" + ] + }, + "editorId": { + "type": "string" + }, + "enabled": { + "type": "boolean" + }, + "executedAt": { + "type": "string", + "examples": [ + "2022-04-06T20:34:45.118Z" + ] + }, + "executionDateMillis": { + "type": "integer", + "format": "int64", + "description": "Deprecated for removal in release 26.4. Use `executedAt` instead.", + "examples": [ + 1649277285118 + ] + }, + "executionDurationMillis": { + "type": "integer", + "format": "int64" + }, + "id": { + "type": "string" + }, + "name": { + "type": "string" + }, + "note": { + "type": "string" + }, + "numViolations": { + "type": "integer", + "format": "int64" + }, + "perfMonitoringEnabled": { + "type": "boolean", + "description": "Whether performance monitoring is enabled for this check. Only supported for Existential intent checks.\nPerformance monitoring must be independently enabled for each device along the check\u2019s path(s)." + }, + "priority": { + "$ref": "#/components/schemas/CheckPriority" + }, + "status": { + "$ref": "#/components/schemas/CheckStatus" + }, + "tags": { + "type": "array", + "items": { + "type": "string" + } + } + } + }, + "NetworkCheckResultWithDiagnosis": { + "allOf": [ + { + "type": "object", + "properties": { + "diagnosis": { + "$ref": "#/components/schemas/CheckDiagnosis" + } + } + }, + { + "$ref": "#/components/schemas/NetworkCheckResult" + } + ] + }, + "NewNetworkCheck": { + "type": "object", + "required": [ + "definition" + ], + "properties": { + "definition": { + "$ref": "#/components/schemas/CheckDefinition" + }, + "enabled": { + "type": "boolean" + }, + "name": { + "type": "string" + }, + "note": { + "type": "string" + }, + "perfMonitoringEnabled": { + "type": "boolean", + "description": "Whether performance monitoring is enabled for this check. Only supported for Existential intent checks.\nPerformance monitoring must be independently enabled for each device along the check\u2019s path(s)." + }, + "priority": { + "$ref": "#/components/schemas/CheckPriority" + }, + "tags": { + "type": "array", + "items": { + "type": "string" + } + } + } + }, + "PredefinedCheckType": { + "type": "string", + "enum": [ + "BGP_NEIGHBOR_ADJACENCY", + "BGP_ROUTER_ID", + "BGP_ROUTE_CONSISTENCY", + "BGP_VPC_PARAMETER_CONSISTENCY", + "EBGP_SELECTION_OVER_IBGP", + "BGP_COMMUNITY_LIST", + "NEXT_HOP_REACHABILITY", + "NO_LOOP", + "SHORTEST_PATH", + "IP_UNIQUENESS", + "HOSTNAME_CONSISTENCY", + "HOSTNAME_UNIQUENESS", + "VLAN_CONSISTENCY", + "MTU_CONSISTENCY", + "PORT_CHANNEL_CONSISTENCY", + "DUPLEX_CONSISTENCY", + "LINK_SPEED_CONSISTENCY", + "SOFTWARE_VERSION_CONSISTENCY", + "TRUNK_INTERFACE_WHITELIST", + "VLAN_EXISTENCE", + "LEARNED_MAC_CONSISTENCY", + "FHRP_PEERING", + "VPC_PARAMETER_CONSISTENCY", + "VPC_INTERFACE_PARAMETER_CONSISTENCY", + "VPC_DEDICATED_KEEPALIVE_LINK", + "VPC_ROLE_PRIORITY", + "SSH_RSA_KEY_LENGTH", + "VPC_STP_PRIORITY", + "VPC_MST_REGION_CONSISTENCY" + ] + }, + "ExistsCheck": { + "type": "object", + "required": [ + "checkType", + "filters" + ], + "properties": { + "checkType": { + "type": "string", + "const": "Existential" + }, + "filters": { + "$ref": "#/components/schemas/PathQuery" + }, + "headerFieldsWithDefaults": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "ip_tos", + "tp_src", + "app_id", + "url", + "user_id" + ] + }, + "description": "The header fields for which a default value is assumed if no valid is specified in the `from` clause.\nDefaults to `[\"url\"]`." + }, + "noiseTypes": { + "type": "array", + "items": { + "$ref": "#/components/schemas/NoiseType" + }, + "description": "The noise types that should be included in the search results. Defaults to `[]`." + }, + "returnPath": { + "type": "string", + "enum": [ + "ANY", + "SYMMETRIC" + ] + } + } + }, + "IsolationCheck": { + "type": "object", + "required": [ + "checkType", + "filters" + ], + "properties": { + "checkType": { + "type": "string", + "const": "Isolation" + }, + "filters": { + "$ref": "#/components/schemas/PathQuery" + }, + "headerFieldsWithDefaults": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "ip_tos", + "tp_src", + "app_id", + "url", + "user_id" + ] + }, + "description": "The header fields for which a default value is assumed if no valid is specified in the `from` clause.\nDefaults to `[\"url\"]`." + }, + "noiseTypes": { + "type": "array", + "items": { + "$ref": "#/components/schemas/NoiseType" + }, + "description": "The noise types that should be included in the search results. Defaults to `[]`." + } + } + }, + "ReachabilityCheck": { + "type": "object", + "required": [ + "checkType", + "filters" + ], + "properties": { + "checkType": { + "type": "string", + "const": "Reachability" + }, + "filters": { + "$ref": "#/components/schemas/PathQuery" + }, + "headerFieldsWithDefaults": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "ip_tos", + "tp_src", + "app_id", + "url", + "user_id" + ] + }, + "description": "The header fields for which a default value is assumed if no valid is specified in the `from` clause.\nDefaults to `[\"url\"]`." + }, + "noiseTypes": { + "type": "array", + "items": { + "$ref": "#/components/schemas/NoiseType" + }, + "description": "The noise types that should be included in the search results. Defaults to `[]`." + } + } + }, + "QueryStringCheck": { + "type": "object", + "required": [ + "checkType" + ], + "properties": { + "checkType": { + "type": "string", + "const": "QueryStringBased" + }, + "forRequest": { + "type": "string" + }, + "value": { + "type": "string" + } + } + }, + "PredefinedCheck": { + "type": "object", + "required": [ + "checkType" + ], + "properties": { + "checkType": { + "type": "string", + "const": "Predefined" + }, + "params": { + "type": "object" + }, + "predefinedCheckType": { + "$ref": "#/components/schemas/PredefinedCheckType" + } + } + }, + "NqeCheck": { + "type": "object", + "required": [ + "checkType", + "queryId" + ], + "properties": { + "checkType": { + "type": "string", + "const": "NQE" + }, + "queryId": { + "type": "string", + "examples": [ + "FQ_6ac3682c92a74b778d98584aea8afa5fe40f2150" + ] + }, + "params": { + "type": "object", + "additionalProperties": {}, + "description": "Values for each parameter declared in the query. The parameter values are specified as a JSON object, with\none property per parameter, where the property name matches the parameter name. The property value is the\nJSON representation of the parameter value. The JSON representation of a parameter value depends on the type\nof the value. For values of type `String`, `IpAddress`, `IpSubnet`, and `MacAddress`, the JSON\nrepresentation is a JSON string. For values of type `Number`, the value is an integral JSON number. For\nvalues of type `Boolean`, the JSON representation is true or false. For values of type `List`, the JSON\nrepresentation is an array of JSON values, each of which is a JSON representation for type `T`. For record\nvalues, the JSON representation is a JSON object with corresponding properties whose values are JSON\nrepresentations corresponding to the properties' types. For enumerations, the JSON representation is a JSON\nstring with the enum constant name. For `oneOf` values that contain data, the JSON representation is a JSON\nobject with two properties, `alternative` and `value`, where the `alternative` property contains the\nalternative's name (a string) and the `value` property is a JSON representation of the data associated with\nthis alternative.", + "examples": [ + { + "mtuThreshold": 123, + "ntpServers": [ + "10.22.2.3", + "192.33.4.1" + ] + } + ] + } + } + }, + "DeviceFilter": { + "type": "object", + "required": [ + "type", + "value" + ], + "properties": { + "type": { + "type": "string", + "const": "DeviceFilter" + }, + "value": { + "type": "string", + "examples": [ + "nyc-dc01-fw01" + ] + } + }, + "description": "A filter that matches one device by name or all devices (using value \"*\")" + }, + "DeviceAliasFilter": { + "type": "object", + "required": [ + "type", + "value" + ], + "properties": { + "type": { + "type": "string", + "const": "DeviceAliasFilter" + }, + "value": { + "type": "string", + "description": "A Device Group name" + } + }, + "description": "A filter that matches any device in a Device Group" + }, + "BypassFilter": { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "DeviceFilter", + "DeviceAliasFilter" + ] + } + }, + "oneOf": [ + { + "$ref": "#/components/schemas/DeviceFilter" + }, + { + "$ref": "#/components/schemas/DeviceAliasFilter" + } + ], + "discriminator": { + "propertyName": "type", + "mapping": { + "DeviceFilter": "#/components/schemas/DeviceFilter", + "DeviceAliasFilter": "#/components/schemas/DeviceAliasFilter" + } + } + }, + "PacketFilter": { + "type": "object", + "required": [ + "type", + "values" + ], + "properties": { + "type": { + "type": "string", + "const": "PacketFilter" + }, + "values": { + "type": "object", + "additionalProperties": { + "type": "array", + "items": { + "type": "string" + } + }, + "examples": [ + { + "ipv4_dst": [ + "10.10.10.0/24" + ] + } + ] + } + }, + "description": "A filter that matches a specific packet header value or range of values" + }, + "PacketAliasFilter": { + "type": "object", + "required": [ + "type", + "value" + ], + "properties": { + "direction": { + "type": "string", + "enum": [ + "src", + "dst" + ] + }, + "type": { + "type": "string", + "const": "PacketAliasFilter" + }, + "value": { + "type": "string", + "description": "A Packet Header Set name" + } + }, + "description": "A filter that matches any combination of packet header values that satisfy the criteria in a\nHeader Set" + }, + "NotFilter": { + "type": "object", + "required": [ + "type" + ], + "properties": { + "clause": { + "$ref": "#/components/schemas/FlowHopFilter" + }, + "type": { + "type": "string", + "const": "NotFilter" + } + }, + "description": "A filter that inverts the filter in its `clause`" + }, + "HostFilter": { + "type": "object", + "required": [ + "type", + "value" + ], + "properties": { + "type": { + "type": "string", + "const": "HostFilter" + }, + "value": { + "type": "string", + "examples": [ + "10.10.10.10" + ] + } + }, + "description": "A filter that matches hosts by hostname, IP subnet address, or MAC address" + }, + "InterfaceFilter": { + "type": "object", + "required": [ + "type", + "value" + ], + "properties": { + "type": { + "type": "string", + "const": "InterfaceFilter" + }, + "value": { + "type": "string", + "examples": [ + "nyc-dc01-fw01 eth1" + ] + } + }, + "description": "A filter that matches one device interface by name" + }, + "TunnelInterfaceFilter": { + "type": "object", + "required": [ + "type", + "value" + ], + "properties": { + "type": { + "type": "string", + "const": "TunnelInterfaceFilter" + }, + "value": { + "type": "string", + "examples": [ + "nyc-dc01-rtr-01 ge3" + ] + } + }, + "description": "A filter that matches one tunnel interface by name and has underlay semantics in the `from` or `to` property\nof a `PathQuery`" + }, + "SecurityZoneFilter": { + "type": "object", + "required": [ + "device", + "type", + "value" + ], + "properties": { + "device": { + "type": "string", + "examples": [ + "nyc-dc01-rtr-01" + ] + }, + "type": { + "type": "string", + "const": "SecurityZoneFilter" + }, + "value": { + "type": "string", + "examples": [ + "corp-trusted" + ] + } + }, + "description": "A filter that matches one security zone on a firewall by name and can be used in the `from` or `to` property\nof a `PathQuery`" + }, + "DeviceVrfFilter": { + "type": "object", + "required": [ + "type", + "device", + "vrf" + ], + "properties": { + "type": { + "type": "string", + "const": "DeviceVrfFilter" + }, + "device": { + "type": "string", + "examples": [ + "nyc-dc01-rtr-01" + ] + }, + "vrf": { + "type": "string", + "examples": [ + "MY VRF" + ] + } + }, + "description": "A filter that matches a device\u2019s interfaces by VRF name" + }, + "HostAliasFilter": { + "type": "object", + "required": [ + "type", + "value" + ], + "properties": { + "type": { + "type": "string", + "const": "HostAliasFilter" + }, + "value": { + "type": "string", + "description": "A Host Group name" + } + }, + "description": "A filter that matches any host in a Host Group" + }, + "InterfaceAliasFilter": { + "type": "object", + "required": [ + "type", + "value" + ], + "properties": { + "type": { + "type": "string", + "const": "InterfaceAliasFilter" + }, + "value": { + "type": "string", + "description": "An Interface Group name" + } + }, + "description": "A filter that matches any device interface in an Interface Group" + }, + "SubnetLocationFilter": { + "type": "object", + "required": [ + "type", + "value" + ], + "properties": { + "type": { + "type": "string", + "const": "SubnetLocationFilter" + }, + "value": { + "type": "string", + "examples": [ + "10.10.10.64/30" + ] + }, + "host": { + "type": "string", + "description": "The hostname that resolves to the IP in `value` (metadata only; not used directly)", + "examples": [ + "testing.example.com" + ] + }, + "device": { + "type": "string", + "description": "The device at which the subnet is located", + "examples": [ + "nyc-dc01-rtr01" + ] + } + }, + "description": "A filter that matches a specific IP address or IP subnet address at a specific location in the network. If\nthe IP address is a multicast group address, this filter matches on the locations of the corresponding\nmulticast Rendezvous Points (RPs) in the network." + }, + "VrfFilter": { + "type": "object", + "required": [ + "type", + "value" + ], + "properties": { + "type": { + "type": "string", + "const": "VrfFilter" + }, + "value": { + "type": "string", + "description": "A VRF name. Use `DeviceVrfFilter` instead for a (device, VRF) pair.", + "examples": [ + "MY VRF" + ] + } + }, + "description": "A filter that matches device interfaces by VRF name" + }, + "FlowHopFilter": { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "HostFilter", + "DeviceFilter", + "InterfaceFilter", + "TunnelInterfaceFilter", + "SecurityZoneFilter", + "DeviceVrfFilter", + "PacketFilter", + "HostAliasFilter", + "DeviceAliasFilter", + "InterfaceAliasFilter", + "PacketAliasFilter", + "SubnetLocationFilter", + "VrfFilter", + "NotFilter" + ] + } + }, + "oneOf": [ + { + "$ref": "#/components/schemas/HostFilter" + }, + { + "$ref": "#/components/schemas/DeviceFilter" + }, + { + "$ref": "#/components/schemas/InterfaceFilter" + }, + { + "$ref": "#/components/schemas/TunnelInterfaceFilter" + }, + { + "$ref": "#/components/schemas/SecurityZoneFilter" + }, + { + "$ref": "#/components/schemas/DeviceVrfFilter" + }, + { + "$ref": "#/components/schemas/PacketFilter" + }, + { + "$ref": "#/components/schemas/HostAliasFilter" + }, + { + "$ref": "#/components/schemas/DeviceAliasFilter" + }, + { + "$ref": "#/components/schemas/InterfaceAliasFilter" + }, + { + "$ref": "#/components/schemas/PacketAliasFilter" + }, + { + "$ref": "#/components/schemas/SubnetLocationFilter" + }, + { + "$ref": "#/components/schemas/VrfFilter" + }, + { + "$ref": "#/components/schemas/NotFilter" + } + ], + "discriminator": { + "propertyName": "type", + "mapping": { + "HostFilter": "#/components/schemas/HostFilter", + "DeviceFilter": "#/components/schemas/DeviceFilter", + "InterfaceFilter": "#/components/schemas/InterfaceFilter", + "TunnelInterfaceFilter": "#/components/schemas/TunnelInterfaceFilter", + "SecurityZoneFilter": "#/components/schemas/SecurityZoneFilter", + "DeviceVrfFilter": "#/components/schemas/DeviceVrfFilter", + "PacketFilter": "#/components/schemas/PacketFilter", + "HostAliasFilter": "#/components/schemas/HostAliasFilter", + "DeviceAliasFilter": "#/components/schemas/DeviceAliasFilter", + "InterfaceAliasFilter": "#/components/schemas/InterfaceAliasFilter", + "PacketAliasFilter": "#/components/schemas/PacketAliasFilter", + "SubnetLocationFilter": "#/components/schemas/SubnetLocationFilter", + "VrfFilter": "#/components/schemas/VrfFilter", + "NotFilter": "#/components/schemas/NotFilter" + } + } + }, + "PacketHeaderFilter": { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "PacketFilter", + "PacketAliasFilter", + "NotFilter" + ] + } + }, + "oneOf": [ + { + "$ref": "#/components/schemas/PacketFilter" + }, + { + "$ref": "#/components/schemas/PacketAliasFilter" + }, + { + "$ref": "#/components/schemas/NotFilter" + } + ], + "discriminator": { + "propertyName": "type", + "mapping": { + "PacketFilter": "#/components/schemas/PacketFilter", + "PacketAliasFilter": "#/components/schemas/PacketAliasFilter", + "NotFilter": "#/components/schemas/NotFilter" + } + } + }, + "HopLocationFilter": { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "DeviceFilter", + "InterfaceFilter", + "TunnelInterfaceFilter", + "SecurityZoneFilter", + "DeviceVrfFilter", + "DeviceAliasFilter", + "InterfaceAliasFilter", + "VrfFilter", + "NotFilter" + ] + } + }, + "oneOf": [ + { + "$ref": "#/components/schemas/DeviceFilter" + }, + { + "$ref": "#/components/schemas/InterfaceFilter" + }, + { + "$ref": "#/components/schemas/TunnelInterfaceFilter" + }, + { + "$ref": "#/components/schemas/SecurityZoneFilter" + }, + { + "$ref": "#/components/schemas/DeviceVrfFilter" + }, + { + "$ref": "#/components/schemas/DeviceAliasFilter" + }, + { + "$ref": "#/components/schemas/InterfaceAliasFilter" + }, + { + "$ref": "#/components/schemas/VrfFilter" + }, + { + "$ref": "#/components/schemas/NotFilter" + } + ], + "discriminator": { + "propertyName": "type", + "mapping": { + "DeviceFilter": "#/components/schemas/DeviceFilter", + "InterfaceFilter": "#/components/schemas/InterfaceFilter", + "TunnelInterfaceFilter": "#/components/schemas/TunnelInterfaceFilter", + "SecurityZoneFilter": "#/components/schemas/SecurityZoneFilter", + "DeviceVrfFilter": "#/components/schemas/DeviceVrfFilter", + "DeviceAliasFilter": "#/components/schemas/DeviceAliasFilter", + "InterfaceAliasFilter": "#/components/schemas/InterfaceAliasFilter", + "VrfFilter": "#/components/schemas/VrfFilter", + "NotFilter": "#/components/schemas/NotFilter" + } + } + }, + "HopFilter": { + "type": "object", + "required": [ + "location", + "transitType" + ], + "properties": { + "headers": { + "type": "array", + "items": { + "$ref": "#/components/schemas/PacketHeaderFilter" + } + }, + "location": { + "$ref": "#/components/schemas/HopLocationFilter" + }, + "transitType": { + "type": "string", + "enum": [ + "through", + "ingress", + "egress" + ] + } + } + }, + "LocationFilter": { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "HostFilter", + "DeviceFilter", + "InterfaceFilter", + "TunnelInterfaceFilter", + "SecurityZoneFilter", + "DeviceVrfFilter", + "HostAliasFilter", + "DeviceAliasFilter", + "InterfaceAliasFilter", + "SubnetLocationFilter", + "VrfFilter", + "NotFilter" + ] + } + }, + "oneOf": [ + { + "$ref": "#/components/schemas/HostFilter" + }, + { + "$ref": "#/components/schemas/DeviceFilter" + }, + { + "$ref": "#/components/schemas/InterfaceFilter" + }, + { + "$ref": "#/components/schemas/TunnelInterfaceFilter" + }, + { + "$ref": "#/components/schemas/SecurityZoneFilter" + }, + { + "$ref": "#/components/schemas/DeviceVrfFilter" + }, + { + "$ref": "#/components/schemas/HostAliasFilter" + }, + { + "$ref": "#/components/schemas/DeviceAliasFilter" + }, + { + "$ref": "#/components/schemas/InterfaceAliasFilter" + }, + { + "$ref": "#/components/schemas/SubnetLocationFilter" + }, + { + "$ref": "#/components/schemas/VrfFilter" + }, + { + "$ref": "#/components/schemas/NotFilter" + } + ], + "discriminator": { + "propertyName": "type", + "mapping": { + "HostFilter": "#/components/schemas/HostFilter", + "DeviceFilter": "#/components/schemas/DeviceFilter", + "InterfaceFilter": "#/components/schemas/InterfaceFilter", + "TunnelInterfaceFilter": "#/components/schemas/TunnelInterfaceFilter", + "SecurityZoneFilter": "#/components/schemas/SecurityZoneFilter", + "DeviceVrfFilter": "#/components/schemas/DeviceVrfFilter", + "HostAliasFilter": "#/components/schemas/HostAliasFilter", + "DeviceAliasFilter": "#/components/schemas/DeviceAliasFilter", + "InterfaceAliasFilter": "#/components/schemas/InterfaceAliasFilter", + "SubnetLocationFilter": "#/components/schemas/SubnetLocationFilter", + "VrfFilter": "#/components/schemas/VrfFilter", + "NotFilter": "#/components/schemas/NotFilter" + } + } + }, + "EndpointFilter": { + "type": "object", + "required": [ + "location" + ], + "properties": { + "headers": { + "type": "array", + "items": { + "$ref": "#/components/schemas/PacketHeaderFilter" + } + }, + "location": { + "$ref": "#/components/schemas/LocationFilter" + }, + "logicalNetwork": { + "type": "string" + } + } + }, + "PathQuery": { + "type": "object", + "properties": { + "bypass": { + "type": "array", + "items": { + "$ref": "#/components/schemas/BypassFilter" + } + }, + "chain": { + "type": "array", + "items": { + "$ref": "#/components/schemas/HopFilter" + } + }, + "flowTypes": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "VALID", + "LOOP", + "POTENTIAL_LOOP", + "BLACKHOLE", + "DROPPED", + "INADMISSIBLE", + "UNREACHABLE", + "IGNORED", + "UNDELIVERED" + ] + } + }, + "forwardingTypes": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "L2", + "L3", + "DIRECT_L2", + "FABRIC_PATH", + "VXLAN", + "MCAST_IP", + "DIRECT_IP", + "MPLS", + "L2_PBR", + "L3_PBR" + ] + } + }, + "from": { + "$ref": "#/components/schemas/EndpointFilter" + }, + "mode": { + "type": "string", + "const": "PERMIT_ALL" + }, + "to": { + "$ref": "#/components/schemas/EndpointFilter" + } + } + }, + "NoiseType": { + "type": "string", + "enum": [ + "WRONG_GATEWAY", + "INADMISSIBLE", + "NETWORK_OR_BROADCAST_ADDRESS", + "TO_L2_INTERFACE_MAC", + "GLEAN" + ] + }, + "CheckDefinition": { + "type": "object", + "required": [ + "checkType" + ], + "properties": { + "checkType": { + "type": "string", + "enum": [ + "Existential", + "Isolation", + "Reachability", + "QueryStringBased", + "Predefined", + "NQE" + ] + } + }, + "oneOf": [ + { + "$ref": "#/components/schemas/ExistsCheck" + }, + { + "$ref": "#/components/schemas/IsolationCheck" + }, + { + "$ref": "#/components/schemas/ReachabilityCheck" + }, + { + "$ref": "#/components/schemas/QueryStringCheck" + }, + { + "$ref": "#/components/schemas/PredefinedCheck" + }, + { + "$ref": "#/components/schemas/NqeCheck" + } + ], + "discriminator": { + "propertyName": "checkType", + "mapping": { + "Existential": "#/components/schemas/ExistsCheck", + "Exists": "#/components/schemas/ExistsCheck", + "ExistentialCheck": "#/components/schemas/ExistsCheck", + "Isolation": "#/components/schemas/IsolationCheck", + "IsolationCheck": "#/components/schemas/IsolationCheck", + "Reachability": "#/components/schemas/ReachabilityCheck", + "ReachabilityCheck": "#/components/schemas/ReachabilityCheck", + "QueryStringBased": "#/components/schemas/QueryStringCheck", + "Predefined": "#/components/schemas/PredefinedCheck", + "NQE": "#/components/schemas/NqeCheck", + "NetworkQuery": "#/components/schemas/NqeCheck" + } + } + }, + "LineRange": { + "type": "object", + "properties": { + "start": { + "type": "integer", + "format": "int32", + "description": "The 0-based index of the first line in the range.", + "examples": [ + 23 + ] + }, + "end": { + "type": "integer", + "format": "int32", + "description": "The 0-based index of the last line in the range (inclusive).", + "examples": [ + 27 + ] + } + } + }, + "DiagnosisReference": { + "type": "object", + "properties": { + "key": { + "type": "string", + "description": "A name or identifier associated with the reference, like a device or interface name.", + "examples": [ + "rtr-01 eth0" + ] + }, + "value": { + "type": "string", + "description": "The value associated with `key` that\u2019s relevant to this violation, such as a link speed, MTU size, VLAN\nrange, or IP address.", + "examples": [ + "10.110.4.14" + ] + }, + "files": { + "type": "object", + "additionalProperties": { + "type": "array", + "items": { + "$ref": "#/components/schemas/LineRange" + } + }, + "description": "Relevant line ranges in files collected from the device.", + "examples": [ + { + "rtr-01,configuration,16.txt": [ + { + "start": 6, + "end": 6 + }, + { + "start": 22, + "end": 29 + } + ] + } + ] + } + } + }, + "DiagnosisDetail": { + "type": "object", + "properties": { + "query": { + "type": "string" + }, + "references": { + "type": "array", + "items": { + "$ref": "#/components/schemas/DiagnosisReference" + } + } + } + }, + "CheckDiagnosis": { + "type": "object", + "properties": { + "details": { + "type": "array", + "items": { + "$ref": "#/components/schemas/DiagnosisDetail" + } + }, + "detailsIncomplete": { + "type": "boolean" + }, + "summary": { + "type": "string" + } + } + }, + "ClassicDevice": { + "allOf": [ + { + "type": "object", + "required": [ + "name", + "host" + ], + "properties": { + "name": { + "type": "string", + "description": "A name that\u2019s unique (ignoring case) among all of the network\u2019s collection source names. May consist of\nletters, 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\nfor 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\nauto-association will be attempted using credentials configured to allow it if this property is unspecified\nand 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\nAvi controllers). On Checkpoint, this credential is used for TACACS privilege escalation. Credential\nauto-association will be attempted using credentials configured to allow it if this property is unspecified\nand 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\n`PRIVILEGED_MODE` credential for `cliCredential2Id`. Credential auto-association will be attempted using\ncredentials configured to allow it if this property is unspecified and collecting from this device requires\nthis 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\nHTTP. Credential auto-association will be attempted using credentials configured to allow it if this\nproperty 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\ntrue. Credential auto-association will be attempted using credentials configured to allow it if this\nproperty 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\n`DISABLE_PAGINATION`. Per-command pagination (such as appending `| more`) may be used if set to\n`ENABLE_PAGINATION` for a device that doesn\u2019t 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.\nRelevant 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\n`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\ncan prevent spurious connectivity test failures if the device\u2019s SSH server is configured with a connection\nrate limit.", + "examples": [ + 10 + ] + }, + "useFileTransferForLargeOutput": { + "type": "boolean", + "description": "Whether to use file transfer instead of printing large command output directly to the shell. This is\ncurrently only supported for Juniper devices when executing routing table commands. The primary purpose is\nto avoid printing large outputs directly to the shell, which on Juniper devices can interfere with packet\nforwarding performance. Instead, the command output is written to a temporary file on the device and then\ntransferred over a separate connection. After the transfer is complete, the temporary file is deleted to\nprevent 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\nset, a jump server won\u2019t 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\nrequired to model a [synthetic device](#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\nto `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.\nDefaults 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\n`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\nthe prompt, ignoring any trailing whitespace, the Collector will enter the configured `promptResponse`.\nRelevant 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.\nRelevant 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\n(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\n(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\ndefault 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\ndefault 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\nonly.", + "examples": [ + "AWS.us-east-1" + ] + }, + "cloudSetupId": { + "type": "string", + "description": "Name of the cloud setup associated with this device\u2019s discovery. Present for cloud-based virtualized devices\nonly.", + "examples": [ + "my-aws-setup" + ] + }, + "cloudDiscoverySource": { + "type": "string", + "description": "Account name (AWS), Project ID (GCP), or Subscription ID (Azure) associated with this device\u2019s discovery.\nPresent 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\u2019s assigned Location (see [Network Locations](#network-locations)). Present only if\nspecifically requested. Defaults to \"default\" (the Unassigned location).", + "examples": [ + "atl" + ] + }, + "testResult": { + "$ref": "#/components/schemas/SourceConnectivityResult", + "description": "The device\u2019s most recent connectivity test result. Present only if specifically requested. Absent if the\ndevice\u2019s connectivity hasn\u2019t been tested since the last substantial edit to the device." + } + } + }, + { + "$ref": "#/components/schemas/Attribution" + } + ] + }, + "ClassicDevicePatch": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "A name that\u2019s unique (ignoring case) among all of the network\u2019s collection source names. May consist of\nletters, 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\nalone.", + "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\nproperty 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\nfor 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\nauto-association will be attempted using credentials configured to allow it if this property is unspecified\nand collecting from this device requires this kind of credential. Use `null` to clear. Omit to leave the\nproperty 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\nAvi controllers). On Checkpoint, this credential is used for TACACS privilege escalation. Credential\nauto-association will be attempted using credentials configured to allow it if this property is unspecified\nand collecting from this device requires this kind of credential. Use `null` to clear. Omit to leave the\nproperty 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\n`PRIVILEGED_MODE` credential for `cliCredential2Id`. Credential auto-association will be attempted using\ncredentials configured to allow it if this property is unspecified and collecting from this device requires\nthis 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\nHTTP. Credential auto-association will be attempted using credentials configured to allow it if this\nproperty is unspecified and collecting from this device requires this kind of credential. Use `null` to\nclear. 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\ntrue. Credential auto-association will be attempted using credentials configured to allow it if this\nproperty is unspecified and collecting from this device requires this kind of credential. Use `null` to\nclear. 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\nleave the property alone.", + "examples": [ + "J-0" + ] + }, + "disableIpv6Collection": { + "type": "boolean", + "description": "Disables collection of any IPv6 forwarding state on the device. Defaults to false. Use `null` to clear. Omit\nto leave the property alone.", + "examples": [ + false + ] + }, + "fullCollectionLog": { + "type": "boolean", + "description": "Enables more detailed logging during collection. Defaults to false. Use `null` to clear. Omit to leave the\nproperty alone.", + "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\n`DISABLE_PAGINATION`. Per-command pagination (such as appending `| more`) may be used if set to\n`ENABLE_PAGINATION` for a device that doesn\u2019t have a per-session pagination mode setting. Use `null` to\nclear. Omit to leave the property alone.", + "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.\nRelevant for devices collected via SSH or Telnet. Use `null` to clear. Omit to leave the property alone.", + "examples": [ + 500 + ] + }, + "largeRtt": { + "type": "boolean", + "description": "Whether the device has a large round-trip time (requires a longer response timeout). Use `null` to clear.\nOmit to leave the property alone.", + "examples": [ + false + ] + }, + "minBytesReadPerSec": { + "type": "integer", + "format": "int64", + "description": "The minimum read rate in bytes/sec required to prevent collection from failing with a\n`SLOW_READ_RATE_DETECTED` error. Defaults to 500. Use `null` to clear. Omit to leave the property alone.", + "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\ncan prevent spurious connectivity test failures if the device\u2019s SSH server is configured with a connection\nrate limit. Use `null` to clear. Omit to leave the property alone.", + "examples": [ + 10 + ] + }, + "useFileTransferForLargeOutput": { + "type": "boolean", + "description": "Whether to use file transfer instead of printing large command output directly to the shell. This is\ncurrently only supported for Juniper devices when executing routing table commands. The primary purpose is\nto avoid printing large outputs directly to the shell, which on Juniper devices can interfere with packet\nforwarding performance. Instead, the command output is written to a temporary file on the device and then\ntransferred over a separate connection. After the transfer is complete, the temporary file is deleted to\nprevent unnecessary disk usage on the device. Use `null` to clear. Omit to leave the property alone.", + "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\nset, a jump server won\u2019t be used for BMP collection. Use `null` to clear. Omit to leave the property alone.", + "examples": [ + "10.121.7.33" + ] + }, + "bgpAndBmpFailureHandling": { + "type": "string", + "description": "How to handle BGP or BMP collection failure. Defaults to `FAIL_DEVICE`. Use `null` to clear. Omit to leave\nthe property alone.", + "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\nrequired to model a [synthetic device](#synthetic-devices) connected to this device. Use `null` to clear.\nOmit to leave the property alone.", + "examples": [ + false + ] + }, + "bgpTableType": { + "type": "string", + "description": "The BGP route types to collect. Honored only if `collectedBgpAdvertisements` is true. Defaults to `BOTH`.\nUse `null` to clear. Omit to leave the property alone.", + "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.\nDefaults to `BOTH`. Use `null` to clear. Omit to leave the property alone.", + "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\n`collectBgpAdvertisements` is `true`. Use `null` to clear. Omit to leave the property alone.", + "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\nthe prompt, ignoring any trailing whitespace, the Collector will enter the configured `promptResponse`.\nRelevant for devices collected via SSH or Telnet. Use `null` to clear. Omit to leave the property alone.", + "examples": [ + "y/n" + ] + }, + "promptResponse": { + "type": "string", + "description": "What the Collector should enter in response to a device prompt matching `prompt` in order to proceed.\nRelevant for devices collected via SSH or Telnet. Required if `prompt` is set. Use `null` to clear. Omit to\nleave the property alone.", + "examples": [ + "y" + ] + }, + "collect": { + "type": "boolean", + "description": "Whether to collect from the device. Defaults to true. Use `null` to clear. Omit to leave the\nproperty alone.", + "examples": [ + false + ] + }, + "note": { + "type": "string", + "description": "An optional description or note about the device. Use `null` to clear. Omit to leave the\nproperty alone." + }, + "enableSnmpCollection": { + "type": "boolean", + "description": "Whether to collect performance data (counters) via SNMP. Defaults to false. Use `null` to clear. Omit to\nleave the property alone.", + "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%). Use `null` to clear. Omit\nto leave the property alone.", + "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%). Use `null` to clear.\nOmit to leave the property alone.", + "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%). Use\n`null` to clear. Omit to leave the property alone.", + "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%). Use\n`null` to clear. Omit to leave the property alone.", + "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. Use `null` to clear.\nOmit to leave the property alone.", + "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. Use `null` to\nclear. Omit to leave the property alone.", + "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. Use\n`null` to clear. Omit to leave the property alone.", + "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.\nUse `null` to clear. Omit to leave the property alone.", + "examples": [ + 0.73 + ] + } + } + }, + "ClassicDevices": { + "type": "object", + "properties": { + "devices": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ClassicDevice" + } + } + } + }, + "ClassicDevicesPatch": { + "type": "object", + "properties": { + "names": { + "type": "array", + "items": { + "type": "string" + } + }, + "update": { + "$ref": "#/components/schemas/ClassicDevicePatch" + } + } + }, + "DeviceCriteria": { + "type": "object", + "required": [ + "names" + ], + "properties": { + "names": { + "type": "array", + "items": { + "type": "string" + }, + "examples": [ + "- router_01\n- router_02" + ] + } + } + }, + "DeviceNames": { + "type": "object", + "properties": { + "names": { + "type": "array", + "items": { + "type": "string" + } + } + } + }, + "NewClassicDevice": { + "type": "object", + "required": [ + "name", + "host" + ], + "properties": { + "name": { + "type": "string", + "description": "A name that\u2019s unique (ignoring case) among all of the network\u2019s collection source names. May consist of\nletters, 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\nfor 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\nauto-association will be attempted using credentials configured to allow it if this property is unspecified\nand 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\nAvi controllers). On Checkpoint, this credential is used for TACACS privilege escalation. Credential\nauto-association will be attempted using credentials configured to allow it if this property is unspecified\nand 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\n`PRIVILEGED_MODE` credential for `cliCredential2Id`. Credential auto-association will be attempted using\ncredentials configured to allow it if this property is unspecified and collecting from this device requires\nthis 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\nHTTP. Credential auto-association will be attempted using credentials configured to allow it if this\nproperty 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\ntrue. Credential auto-association will be attempted using credentials configured to allow it if this\nproperty 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\n`DISABLE_PAGINATION`. Per-command pagination (such as appending `| more`) may be used if set to\n`ENABLE_PAGINATION` for a device that doesn\u2019t 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.\nRelevant 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\n`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\ncan prevent spurious connectivity test failures if the device\u2019s SSH server is configured with a connection\nrate limit.", + "examples": [ + 10 + ] + }, + "useFileTransferForLargeOutput": { + "type": "boolean", + "description": "Whether to use file transfer instead of printing large command output directly to the shell. This is\ncurrently only supported for Juniper devices when executing routing table commands. The primary purpose is\nto avoid printing large outputs directly to the shell, which on Juniper devices can interfere with packet\nforwarding performance. Instead, the command output is written to a temporary file on the device and then\ntransferred over a separate connection. After the transfer is complete, the temporary file is deleted to\nprevent 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\nset, a jump server won\u2019t 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\nrequired to model a [synthetic device](#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\nto `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.\nDefaults 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\n`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\nthe prompt, ignoring any trailing whitespace, the Collector will enter the configured `promptResponse`.\nRelevant 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.\nRelevant 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\n(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\n(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\ndefault 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\ndefault 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\nonly.", + "examples": [ + "AWS.us-east-1" + ] + }, + "cloudSetupId": { + "type": "string", + "description": "Name of the cloud setup associated with this device\u2019s discovery. Present for cloud-based virtualized devices\nonly.", + "examples": [ + "my-aws-setup" + ] + }, + "cloudDiscoverySource": { + "type": "string", + "description": "Account name (AWS), Project ID (GCP), or Subscription ID (Azure) associated with this device\u2019s discovery.\nPresent for cloud-based virtualized devices only.", + "examples": [ + "main" + ] + } + } + }, + "ClassicDeviceType": { + "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", + "linux_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", + "viasat_encryptor_snmp3", + "netscaler_ssh", + "cumulus_ssh", + "riverbed_steelhead_ssh", + "riverbed_interceptor_ssh", + "cisco_ucs_ssh", + "avaya_sr_ssh", + "avaya_sr_telnet", + "avaya_ers_ssh", + "avaya_ers_telnet", + "silver_peak_edgeconnect_ssh", + "silver_peak_orchestrator_api", + "prisma_sdwan_ssh", + "prisma_sdwan_api", + "pensando_api", + "forcepoint_https_api", + "forcepoint_http_api", + "forcepoint_ssh", + "cisco_sdwan_ssh", + "cisco_sdwan_vsmart_ssh", + "bluecat_http", + "bluecat_https", + "bluecat_v2_http", + "bluecat_v2_https", + "nokia_ssh", + "brocade_switch_ssh", + "versa_flexvnf_ssh", + "versa_switch_ssh", + "cisco_encs_nfv_ssh", + "extreme_switch_ssh", + "mist_dashboard_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", + "gem1_api", + "taclane_encryptor_snmp", + "sonic_edge_core_ssh" + ] + }, + "PaginationMode": { + "type": "string", + "enum": [ + "KEEP_UNCHANGED", + "DISABLE_PAGINATION", + "ENABLE_PAGINATION" + ] + }, + "ConnectivityTestError": { + "type": "string", + "enum": [ + "PING_FAILED", + "PORT_REACHABILITY_FAILED", + "UNSUPPORTED_SSH_PROTOCOL", + "CONNECTION_FAILED", + "PROMPT_DISCOVERY_FAILED", + "AUTHENTICATION_FAILED", + "TWO_FACTOR_AUTHENTICATION_FAILED", + "KEY_EXCHANGE_FAILED", + "UNEXPECTED_KEY_EXCHANGE_MESSAGE", + "CERTIFICATE_CHECK_FAILED", + "PASSWORD_EXPIRED", + "JUMP_SERVER_PING_FAILED", + "JUMP_SERVER_PORT_REACHABILITY_FAILED", + "JUMP_SERVER_CONNECTION_FAILED", + "JUMP_SERVER_AUTHENTICATION_FAILED", + "JUMP_SERVER_KEY_EXCHANGE_FAILED", + "JUMP_SERVER_PASSWORD_EXPIRED", + "PROXY_SERVER_PING_FAILED", + "PROXY_SERVER_PORT_REACHABILITY_FAILED", + "PROXY_SERVER_CONNECTION_FAILED", + "PROXY_SERVER_AUTHENTICATION_FAILED", + "SERVER_FINGERPRINT_CHECK_FAILED", + "SESSION_LIMIT_REACHED", + "DEVICE_TYPE_MISMATCH", + "DEVICE_TYPE_UNDETECTED", + "SESSION_CLOSED", + "PRIV_PASSWORD_ERROR", + "EXPERT_PASSWORD_ERROR", + "DEVICE_IS_CHILD_CONTEXT", + "GUEST_MISSING_HOST_RESULTS", + "HOST_MISSING_GUEST_RESULTS", + "HOST_NOT_REPORTING_ANY_GUEST", + "GUEST_NOT_REPORTING_ANY_NAME", + "UNSUPPORTED_VERSION", + "AVI_SHELL_AUTH_FAILED", + "KEY_BASED_ACCESS_TO_AVI_CONTAINER_FAILED", + "AVI_SERVICE_ENGINE_DISCOVERED", + "AVI_VIA_LINUX_OVER_JUMP_SERVER_UNSUPPORTED", + "AVI_CONTROLLER_WITHOUT_HEALTHY_SERVICE_ENGINES", + "T128_CONDUCTOR_WITHOUT_HEALTHY_ROUTERS", + "API_CALL_FAILED", + "CHECKPOINT_MANAGER_FOUND", + "AUTHORIZATION_FAILED", + "INCOMPLETE_AUTHORIZATION_CHECK", + "CUSTOM_COMMAND_AUTHORIZATION_FAILED", + "TACACS_SESSION_EXPIRED", + "AZURE_SUBSCRIPTION_NOT_FOUND", + "TIMED_OUT", + "DEVICE_IN_BAD_STATE", + "PROJECT_VIEW_PERMISSION_MISSING", + "UNSUPPORTED_DEVICE_TYPE", + "SLOW_READ_RATE", + "TRANSIENT_SLOW_READ_RATE_DETECTED", + "NO_SPACE_LEFT_ON_COLLECTOR", + "NO_SPACE_LEFT_ON_COLLECTED_DEVICE", + "VERSA_DIRECTOR_DISCOVERED", + "DEVICE_PROTOCOL_MISMATCH", + "API_SERVER_FAILED_TO_RESPOND", + "UNRESOLVABLE_HOSTNAME", + "UNSUPPORTED_SSL_CONNECTION", + "PASSWD_DISCOVERY_ON_INSECURE_PROTOCOL", + "INCOMPLETE_SETUP", + "CONFIG_COLLECTION_UNAUTHORIZED", + "FILE_TRANSFER_FAILED", + "CANCELED", + "OTHER" + ] + }, + "SourceConnectivityResult": { + "type": "object", + "required": [ + "startTime", + "endTime", + "savedAt" + ], + "properties": { + "startTime": { + "type": "string", + "description": "When this connectivity test began, according to the Collector\u2019s system clock.", + "examples": [ + "2025-05-28T12:33:00.000Z" + ] + }, + "endTime": { + "type": "string", + "description": "When this connectivity test ended, according to the Collector\u2019s 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\u2019s system\nclock.", + "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\nbe 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\n`SHELL` (for Avi controllers) auto-discovered during the connectivity test. Can only be present for device\ntypes 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\nthe 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\ntest. 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\u2019s a hostname. Contains just `host` itself if it\u2019s an IP\naddress.", + "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\n- show interfaces status" + ] + } + } + }, + "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\nexist 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\ndeleted.", + "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\nmight 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\nbeen deleted.", + "examples": [ + "you@example.com" + ] + } + } + }, + "CliCredential": { + "type": "object", + "required": [ + "type", + "name", + "password" + ], + "properties": { + "id": { + "type": "string", + "examples": [ + "L-3" + ] + }, + "type": { + "$ref": "#/components/schemas/CliCredentialType", + "examples": [ + "LOGIN" + ] + }, + "name": { + "type": "string", + "description": "For display purposes in the application", + "examples": [ + "admin (sjc)" + ] + }, + "username": { + "type": "string", + "description": "Required for `LOGIN` and `SHELL` types", + "examples": [ + "admin" + ] + }, + "password": { + "type": "string", + "description": "A system-generated identifier is substituted for the actual password in responses.", + "examples": [ + "my-s3cr3t-p4s$w0rd" + ] + }, + "privilegedModePasswordId": { + "type": "string", + "description": "Only valid for `LOGIN` type. If set, only this credential will be used on devices that require a privileged\nmode password during a connectivity test or collection. If a privileged mode password is specified both here\nand in a `ClassicDevice`, the one in the `ClassicDevice` will be used.", + "examples": [ + "PM-6" + ] + }, + "privilegeLevel": { + "type": "integer", + "format": "int32", + "description": "Only valid for `PRIVILEGED_MODE` type. On Checkpoint devices, this is used as the TACACS privilege level, as\nin TACP-15. If absent, the highest privilege level will be used. Has no effect for other kinds of devices.", + "examples": [ + 15 + ] + }, + "autoAssociate": { + "type": "boolean", + "description": "Whether this credential can be attempted on devices not explicitly configured to use it.\nDefaults to true." + } + } + }, + "CliCredentialUpdate": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "For display purposes in the application", + "examples": [ + "admin (sjc)" + ] + }, + "username": { + "type": "string", + "description": "for `LOGIN` and `SHELL` types", + "examples": [ + "admin" + ] + }, + "password": { + "type": "string", + "examples": [ + "my-s3cr3t-p4s$w0rd" + ] + }, + "privilegedModePasswordId": { + "type": "string", + "description": "Only valid for `LOGIN` type. If set, only this credential will be used on devices that require a privileged\nmode password during a connectivity test or collection. If a privileged mode password is specified both here\nand in a `ClassicDevice`, the one in the `ClassicDevice` will be used.", + "examples": [ + "31d70f9f-a279-44ac-a621-ab3181966ad8" + ] + }, + "privilegeLevel": { + "type": "integer", + "format": "int32", + "description": "Only valid for `PRIVILEGED_MODE` type. On Checkpoint devices, this is used as the TACACS privilege level, as\nin TACP-15. If absent, the highest privilege level will be used. Has no effect for other kinds of devices.", + "examples": [ + 15 + ] + }, + "autoAssociate": { + "type": "boolean", + "description": "Only supported for `LOGIN`, `PRIVILEGED_MODE`, and `SHELL` types." + } + } + }, + "HttpCredential": { + "type": "object", + "required": [ + "type", + "name", + "password" + ], + "properties": { + "id": { + "type": "string", + "examples": [ + "H-3" + ] + }, + "type": { + "$ref": "#/components/schemas/HttpCredentialType", + "examples": [ + "LOGIN" + ] + }, + "name": { + "type": "string", + "description": "For display purposes in the application", + "examples": [ + "admin (sjc)" + ] + }, + "username": { + "type": "string", + "description": "Required for the `LOGIN` type", + "examples": [ + "admin" + ] + }, + "password": { + "type": "string", + "description": "A system-generated identifier is substituted for the actual password in responses.", + "examples": [ + "my-s3cr3t-p4s$w0rd" + ] + }, + "loginType": { + "$ref": "#/components/schemas/LoginType", + "description": "Required only for a credential of type `LOGIN` used by a Silver Peak Orchestrator", + "examples": [ + "LOCAL" + ] + }, + "autoAssociate": { + "type": "boolean", + "description": "Defaults to true for the `LOGIN` type. Not allowed for the `API_KEY` type.", + "examples": [ + false + ] + } + } + }, + "HttpCredentialUpdate": { + "type": "object", + "required": [ + "name", + "password" + ], + "properties": { + "name": { + "type": "string", + "description": "For display purposes in the application", + "examples": [ + "admin (sjc)" + ] + }, + "username": { + "type": "string", + "description": "Required for the `LOGIN` type", + "examples": [ + "admin" + ] + }, + "password": { + "type": "string", + "examples": [ + "my-s3cr3t-p4s$w0rd" + ] + }, + "loginType": { + "$ref": "#/components/schemas/LoginType", + "description": "Required only for a credential of type `LOGIN` used by a Silver Peak Orchestrator", + "examples": [ + "LOCAL" + ] + }, + "autoAssociate": { + "type": "boolean", + "description": "Defaults to true for the `LOGIN` type. Not allowed for the `API_KEY` type.", + "examples": [ + false + ] + } + } + }, + "NewCliCredential": { + "type": "object", + "required": [ + "type", + "name", + "password" + ], + "properties": { + "type": { + "$ref": "#/components/schemas/CliCredentialType", + "examples": [ + "LOGIN" + ] + }, + "name": { + "type": "string", + "description": "For display purposes in the application", + "examples": [ + "admin (sjc)" + ] + }, + "username": { + "type": "string", + "description": "Required for `LOGIN` and `SHELL` types", + "examples": [ + "admin" + ] + }, + "password": { + "type": "string", + "examples": [ + "my-s3cr3t-p4s$w0rd" + ] + }, + "privilegedModePasswordId": { + "type": "string", + "description": "Only valid for `LOGIN` type. If set, only this credential will be used on devices that require a privileged\nmode password during a connectivity test or collection. If a privileged mode password is specified both here\nand in a `ClassicDevice`, the one in the `ClassicDevice` will be used.", + "examples": [ + "31d70f9f-a279-44ac-a621-ab3181966ad8" + ] + }, + "privilegeLevel": { + "type": "integer", + "format": "int32", + "description": "Only valid for `PRIVILEGED_MODE` type. On Checkpoint devices, this is used as the TACACS privilege level, as\nin TACP-15. If absent, the highest privilege level will be used. Has no effect for other kinds of devices.", + "examples": [ + 15 + ] + }, + "autoAssociate": { + "type": "boolean", + "description": "Whether this credential can be attempted on devices not explicitly configured to use it.\nDefaults to true." + } + } + }, + "NewHttpCredential": { + "type": "object", + "required": [ + "type", + "name", + "password" + ], + "properties": { + "type": { + "$ref": "#/components/schemas/HttpCredentialType", + "examples": [ + "LOGIN" + ] + }, + "name": { + "type": "string", + "description": "For display purposes in the application", + "examples": [ + "admin (sjc)" + ] + }, + "username": { + "type": "string", + "description": "Required for the `LOGIN` type", + "examples": [ + "admin" + ] + }, + "password": { + "type": "string", + "examples": [ + "my-s3cr3t-p4s$w0rd" + ] + }, + "loginType": { + "$ref": "#/components/schemas/LoginType", + "description": "Required only for a credential of type `LOGIN` used by a Silver Peak Orchestrator", + "examples": [ + "LOCAL" + ] + }, + "autoAssociate": { + "type": "boolean", + "description": "Defaults to true for the `LOGIN` type. Not allowed for the `API_KEY` type.", + "examples": [ + false + ] + } + } + }, + "StoredCliCredential": { + "allOf": [ + { + "$ref": "#/components/schemas/CliCredential" + }, + { + "$ref": "#/components/schemas/Attribution" + } + ] + }, + "StoredHttpCredential": { + "allOf": [ + { + "$ref": "#/components/schemas/HttpCredential" + }, + { + "$ref": "#/components/schemas/Attribution" + } + ] + }, + "CliCredentialType": { + "type": "string", + "enum": [ + "LOGIN", + "PRIVILEGED_MODE", + "EXPERT_MODE", + "SHELL" + ] + }, + "HttpCredentialType": { + "type": "string", + "enum": [ + "LOGIN", + "API_KEY" + ] + }, + "LoginType": { + "type": "string", + "enum": [ + "LOCAL", + "RADIUS", + "TACACS", + "OAUTH", + "JWT", + "SAML" + ] + }, + "ApiVersion": { + "type": "object", + "properties": { + "build": { + "type": "string", + "examples": [ + "ee9b380" + ] + }, + "release": { + "type": "string", + "examples": [ + "21.50.1-03" + ] + }, + "version": { + "type": "string", + "examples": [ + "21.50.1" + ] + } + } + }, + "DeviceSet": { + "type": "object", + "properties": { + "devices": { + "type": "array", + "items": { + "type": "string" + }, + "examples": [ + "- atl-edge-fw01\n- ny-edge-fw2" + ] + } + } + }, + "DeviceTag": { + "type": "object", + "required": [ + "name" + ], + "properties": { + "name": { + "type": "string", + "description": "The device tag\u2019s name. Case-insensitive. May include spaces.", + "examples": [ + "SEC" + ] + }, + "color": { + "type": "string", + "description": "The device tag\u2019s color in RGB hex format. Used in network topology diagrams if specified.", + "examples": [ + "#0064a0" + ] + } + } + }, + "DeviceTagPatch": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "The device tag\u2019s name. Case-insensitive. May include spaces.", + "examples": [ + "SEC" + ] + }, + "color": { + "type": "string", + "description": "The device tag\u2019s color in RGB hex format. Used in network topology diagrams if specified.", + "examples": [ + "#0064a0" + ] + } + } + }, + "DeviceTagWithDevices": { + "allOf": [ + { + "type": "object", + "properties": { + "devices": { + "type": "array", + "items": { + "type": "string" + }, + "description": "The names of network devices and/or endpoints associated with this tag.", + "examples": [ + "- atl-edge-fw01\n- ny-edge-fw2" + ] + } + } + }, + { + "$ref": "#/components/schemas/DeviceTag" + } + ] + }, + "DeviceTags": { + "type": "object", + "properties": { + "tags": { + "type": "array", + "items": { + "$ref": "#/components/schemas/DeviceTag" + } + } + } + }, + "DeviceTagsWithDevices": { + "type": "object", + "properties": { + "tags": { + "type": "array", + "items": { + "$ref": "#/components/schemas/DeviceTagWithDevices" + } + } + } + }, + "DevicesAndTags": { + "type": "object", + "properties": { + "devices": { + "type": "array", + "items": { + "type": "string" + }, + "examples": [ + "- atl-edge-fw01\n- ny-edge-fw2" + ] + }, + "tags": { + "type": "array", + "items": { + "type": "string" + }, + "examples": [ + "- SEC" + ] + } + } + }, + "JumpServer": { + "type": "object", + "required": [ + "host", + "username" + ], + "properties": { + "id": { + "type": "string", + "examples": [ + "8c4a168e-c6ca-4978-bcc9-c0ec7f64a164" + ] + }, + "host": { + "type": "string", + "examples": [ + "10.121.7.14" + ] + }, + "port": { + "type": "integer", + "format": "int32", + "description": "defaults to 22", + "examples": [ + 23 + ] + }, + "username": { + "type": "string", + "examples": [ + "admin" + ] + }, + "password": { + "type": "string", + "description": "Either this or `sshKey` must be provided in requests. A system-generated identifier is substituted for the\nactual password in responses.", + "examples": [ + "my-s3cr3t-p4s$w0rd" + ] + }, + "sshKey": { + "type": "string", + "description": "SSH private key for authentication. Either this or `password` must be provided in requests. Requires\n`supportsPortForwarding` to be true. A system-generated identifier is substituted for the actual key in\nresponses.", + "examples": [ + "-----BEGIN RSA PRIVATE KEY-----\nMIIPIQIBAzCCDtoGCSqGSIb3DQEHAa..." + ] + }, + "sshCert": { + "type": "string", + "description": "SSH user certificate for authentication. Applicable only for certificate based authentication and requires\n`sshKey` to be provided.", + "examples": [ + "ssh-rsa-cert-v01@openssh.com AAAAHHNzaC1yc2EtY2VydC12MDFAb3BlbnNzaC5jb20AAA..." + ] + }, + "supportsPortForwarding": { + "type": "boolean", + "description": "defaults to true", + "examples": [ + false + ] + }, + "commandFormat": { + "$ref": "#/components/schemas/JumpServerCommandFormat", + "description": "applicable when supportsPortForwarding is false, defaults to UNIX", + "examples": [ + "CISCO_IOS" + ] + }, + "vrf": { + "type": "string", + "description": "VRF that this jump server should use to connect to devices. Can be set only if `commandFormat`\nis CISCO_IOS.", + "examples": [ + "Management-vrf" + ] + }, + "authenticationTimeoutSeconds": { + "type": "integer", + "format": "int32", + "description": "seconds to wait for the jump server authentication response. Defaults to 20.", + "examples": [ + 20 + ] + } + } + }, + "JumpServerUpdate": { + "type": "object", + "properties": { + "host": { + "type": "string", + "examples": [ + "10.121.7.14" + ] + }, + "port": { + "type": "integer", + "format": "int32", + "examples": [ + 23 + ] + }, + "username": { + "type": "string", + "examples": [ + "admin" + ] + }, + "password": { + "type": "string", + "examples": [ + "my-s3cr3t-p4s$w0rd" + ] + }, + "sshKey": { + "type": "string", + "examples": [ + "-----BEGIN RSA PRIVATE KEY-----\nMIIPIQIBAzCCDtoGCSqGSIb3DQEHAa..." + ] + }, + "sshCert": { + "type": "string", + "examples": [ + "ssh-rsa-cert-v01@openssh.com AAAAHHNzaC1yc2EtY2VydC12MDFAb3BlbnNzaC5jb20AAA..." + ] + }, + "supportsPortForwarding": { + "type": "boolean", + "examples": [ + false + ] + }, + "commandFormat": { + "$ref": "#/components/schemas/JumpServerCommandFormat", + "examples": [ + "CISCO_IOS" + ] + }, + "vrf": { + "type": "string", + "examples": [ + "Management-vrf" + ] + }, + "authenticationTimeoutSeconds": { + "type": "integer", + "format": "int32", + "examples": [ + 20 + ] + } + } + }, + "NewJumpServer": { + "type": "object", + "required": [ + "host", + "username" + ], + "properties": { + "host": { + "type": "string", + "examples": [ + "10.121.7.14" + ] + }, + "port": { + "type": "integer", + "format": "int32", + "description": "defaults to 22", + "examples": [ + 23 + ] + }, + "username": { + "type": "string", + "examples": [ + "admin" + ] + }, + "password": { + "type": "string", + "description": "Either this or `sshKey` is required", + "examples": [ + "my-s3cr3t-p4s$w0rd" + ] + }, + "sshKey": { + "type": "string", + "description": "SSH private key for authentication. Either this or `password` is required. Requires `supportsPortForwarding`\nto be true.", + "examples": [ + "-----BEGIN RSA PRIVATE KEY-----\nMIIPIQIBAzCCDtoGCSqGSIb3DQEHAa\u2026" + ] + }, + "sshCert": { + "type": "string", + "description": "SSH user certificate for authentication. Applicable only for certificate based authentication and requires\n`sshKey` to be provided.", + "examples": [ + "ssh-rsa-cert-v01@openssh.com AAAAHHNzaC1yc2EtY2VydC12MDFAb3BlbnNzaC5jb20AAA\u2026" + ] + }, + "supportsPortForwarding": { + "type": "boolean", + "description": "defaults to true", + "examples": [ + false + ] + }, + "commandFormat": { + "$ref": "#/components/schemas/JumpServerCommandFormat", + "description": "applicable when supportsPortForwarding is false, defaults to UNIX", + "examples": [ + "CISCO_IOS" + ] + }, + "vrf": { + "type": "string", + "description": "VRF that this jump server should use to connect to devices. Can be set only if `commandFormat`\nis CISCO_IOS.", + "examples": [ + "Management-vrf" + ] + }, + "authenticationTimeoutSeconds": { + "type": "integer", + "format": "int32", + "description": "seconds to wait for the jump server authentication response. Defaults to 20.", + "examples": [ + 20 + ] + } + } + }, + "StoredJumpServer": { + "allOf": [ + { + "$ref": "#/components/schemas/JumpServer" + }, + { + "$ref": "#/components/schemas/Attribution" + } + ] + }, + "JumpServerCommandFormat": { + "type": "string", + "enum": [ + "UNIX", + "CISCO_IOS", + "JUNOS", + "PANORAMA" + ] + }, + "CollectionSchedule": { + "allOf": [ + { + "type": "object", + "required": [ + "id" + ], + "properties": { + "id": { + "type": "string", + "description": "Network-specific collection schedule identifier", + "examples": [ + "1" + ] + } + } + }, + { + "$ref": "#/components/schemas/CollectionScheduleDefinition" + } + ] + }, + "CollectionScheduleDefinition": { + "type": "object", + "required": [ + "enabled", + "daysOfTheWeek" + ], + "properties": { + "enabled": { + "type": "boolean", + "description": "Whether the schedule is currently in effect", + "examples": [ + true + ] + }, + "timeZone": { + "$ref": "#/components/schemas/TimeZone", + "description": "The time zone used to identify day boundaries and to interpret `times`, `startAt`, and `endAt`. Defaults to\nthe organization\u2019s preferred time zone.", + "examples": [ + "America/Los_Angeles" + ] + }, + "daysOfTheWeek": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + }, + "description": "The days of the week, Sun (0), Mon (1), \u2026, Sat (6), on which the collection schedule is active.\nNever empty.", + "examples": [ + "- 0\n- 2\n- 4\n- 6" + ] + }, + "times": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Times of the day (in \"HH:mm\" format) at which network collections should start. Either `times` or\n`periodInSeconds` must be specified\u2014not both. Never empty if present.", + "examples": [ + "- '01:00'\n- '06:00'\n- '11:00'\n- '16:00'\n- '21:00'" + ] + }, + "periodInSeconds": { + "type": "integer", + "format": "int32", + "description": "How many seconds after the start of the most recent collection that the next one should begin. Either\n`times` or `periodInSeconds` must be specified\u2014not both. Must be positive.\n\n**Note**: A Collector can only perform one network collection at a time. A scheduled collection will be\ndelayed if it cannot start on time due to an earlier collection running long.", + "examples": [ + 1800 + ] + }, + "startAt": { + "type": "string", + "description": "The time of day (in \"HH:mm\" format) at which a rate-based collection schedule begins. Must be absent if\n`times` is specified. Defaults to the start of the day (00:00).", + "examples": [ + "05:30" + ] + }, + "endAt": { + "type": "string", + "description": "The time of day (in \"HH:mm\" format) at which a rate-based collection schedule ends. Must be absent if\n`times` is specified. Defaults to the end of the day.", + "examples": [ + "20:00" + ] + } + } + }, + "CollectionSchedules": { + "type": "object", + "properties": { + "schedules": { + "type": "array", + "items": { + "$ref": "#/components/schemas/CollectionSchedule" + } + } + } + }, + "CollectorState": { + "type": "object", + "required": [ + "isSet" + ], + "properties": { + "isSet": { + "type": "boolean", + "description": "Whether the network has a Collector assigned" + }, + "busyStatus": { + "$ref": "#/components/schemas/CollectorStatus", + "description": "Absent if the network has no Collector assigned" + } + } + }, + "TimeZone": { + "type": "string", + "enum": [ + "UTC", + "Africa/Accra", + "Africa/Addis_Ababa", + "Africa/Algiers", + "Africa/Cairo", + "Africa/Dar_es_Salaam", + "Africa/Johannesburg", + "Africa/Khartoum", + "Africa/Kinshasa", + "Africa/Lagos", + "Africa/Luanda", + "Africa/Maputo", + "America/Argentina/Buenos_Aires", + "America/Bogota", + "America/Chicago", + "America/Denver", + "America/Lima", + "America/Los_Angeles", + "America/Mexico_City", + "America/New_York", + "America/Phoenix", + "America/Santiago", + "America/Sao_Paulo", + "America/Toronto", + "Asia/Amman", + "Asia/Baghdad", + "Asia/Bangkok", + "Asia/Beirut", + "Asia/Dhaka", + "Asia/Ho_Chi_Minh", + "Asia/Hong_Kong", + "Asia/Jakarta", + "Asia/Jerusalem", + "Asia/Karachi", + "Asia/Kolkata", + "Asia/Kuala_Lumpur", + "Asia/Manila", + "Asia/Riyadh", + "Asia/Seoul", + "Asia/Shanghai", + "Asia/Singapore", + "Asia/Tehran", + "Asia/Tokyo", + "Asia/Yangon", + "Australia/Adelaide", + "Australia/Eucla", + "Australia/Perth", + "Australia/Sydney", + "Europe/Belgrade", + "Europe/Berlin", + "Europe/Istanbul", + "Europe/London", + "Europe/Madrid", + "Europe/Moscow", + "Europe/Paris", + "Europe/Rome" + ] + }, + "CollectorStatus": { + "type": "string", + "enum": [ + "OFFLINE", + "IDLE", + "TESTING", + "COLLECTING", + "COLLECTION_QUEUED", + "DISCOVERING", + "UPDATING" + ] + }, + "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\n[classic device](#network-setup) name. For a virtual context, this is the classic device name plus context\nname. 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\u2019s common name, if different from `\"name\"`. Absent for most network devices. For a cloud device,\nthis is the name shown in the cloud provider\u2019s console.", + "examples": [ + "nyc-dc01-fw02" + ] + }, + "sourceName": { + "type": "string", + "description": "Name of this device\u2019s [collection source](#network-setup), if different from `\"name\"`. Absent for most\nnetwork 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\nvalue 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" + ] + } + } + }, + "DeviceFiles": { + "type": "object", + "properties": { + "files": { + "type": "array", + "items": { + "$ref": "#/components/schemas/DeviceFile" + } + } + } + }, + "MissingDevices": { + "type": "object", + "properties": { + "devices": { + "type": "array", + "items": { + "$ref": "#/components/schemas/MissingDevice" + } + } + } + }, + "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" + ] + }, + "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", + "avaya_ers", + "viasat_encryptor", + "nokia", + "huawei_switch", + "versa_sase", + "versa_switch", + "brocade_switch", + "cisco_encs_nfv", + "extreme_nos", + "meraki_ms", + "meraki_mr", + "meraki_mx", + "mist_ap", + "dell_os6", + "dell_os9", + "dell_os10", + "dell_sonic", + "gd_encryptor", + "edge_core_sonic" + ] + }, + "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" + ] + }, + "DeviceProcessingError": { + "type": "string", + "enum": [ + "LICENSE_EXHAUSTED", + "MISSING_SIGNATURE", + "DUPLICATE", + "PARSER_EXCEPTION", + "MODELING_EXCEPTION", + "UNSUPPORTED_VENDOR" + ] + }, + "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\ncustom_cli files.", + "examples": [ + "net show bridge macs" + ] + } + } + }, + "MissingDevice": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "A device name different from the names of all network devices already modeled", + "examples": [ + "nyc-dc01-rtr02" + ] + }, + "ipAddresses": { + "type": "array", + "items": { + "type": "string" + }, + "examples": [ + "- 10.10.10.10" + ] + }, + "type": { + "type": "string", + "description": "Detected device type. Absent if undetermined. Never `\"unknown\"`.", + "examples": [ + "cisco_ios_ssh" + ], + "enum": [ + "a10_acos_ssh", + "arista_eos_ssh", + "cisco_ios_ssh", + "cisco_ios_xe_ssh", + "cisco_ios_xr_ssh", + "cisco_nxos_ssh", + "cisco_nxos_aci_ssh", + "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", + "avaya_ers_ssh", + "avaya_ers_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\u2019t determined. Present if and only if `type` is absent. Never contains\n`\"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" + ] + } + } + }, + "CliEndpointProfileDef": { + "type": "object", + "required": [ + "type", + "name" + ], + "properties": { + "type": { + "type": "string", + "const": "CLI" + }, + "name": { + "type": "string", + "description": "Name of this profile (\"HpPrinter\", \"SamsungTV\", etc.).", + "examples": [ + "sentry_pdu_ssh" + ] + }, + "detectorCommand": { + "type": "string", + "description": "CLI command to run to detect a network endpoint of this type. If absent, the profile can be manually\nassigned to a network endpoint, but not auto-detected.", + "examples": [ + "version" + ] + }, + "detectorPatterns": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Patterns matching on output of `detectorCommand` to determine whether the device is of this type. Absent if\n`detectorCommand` is absent. Never empty.", + "examples": [ + "- Sentry Switched PDU" + ] + }, + "detectorErrorPatterns": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Patterns matching an error message if a device doesn\u2019t recognize `detectorCommand`.", + "examples": [ + "- Invalid command\n- 'Switched PDU commands:'" + ] + }, + "nameDetectorCommand": { + "type": "string", + "description": "Command to use to detect the name of a network endpoint of this type. If absent, the name cannot be\ndetected.", + "examples": [ + "show network" + ] + }, + "nameDetectorPatterns": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Glob patterns used to extract the device name from the output of `nameDetectorCommand`. The word immediately\nafter a matched glob pattern is the desired name. If no glob patterns are specified, the first word/token in\nthe `nameDetectorCommand` output will be used.", + "examples": [ + "- FQDN:*enabled" + ] + }, + "prompt": { + "type": "string", + "description": "A case-insensitive glob pattern used to identify an interactive console menu prompt. When this pattern\nmatches the end of the prompt, ignoring any trailing whitespace, the Collector will enter the configured\n`promptResponse`.", + "examples": [ + "y/n" + ] + }, + "promptResponse": { + "type": "string", + "description": "What the Collector should enter in response to an interactive console menu prompt matching `prompt` in order\nto proceed. Required if `prompt` is set.", + "examples": [ + "y" + ] + }, + "pagePrompt": { + "type": "string", + "description": "Case-insensitive glob pattern used to identify a new page banner. Works like `prompt`. If the device doesn\u2019t\ngenerate paginated command output or if paging is like the \u201cmore\u201d command, omit this property.", + "examples": [ + "continue\\?" + ] + }, + "pagePromptResponse": { + "type": "string", + "description": "What the Collector should enter in response to an interactive pagination prompt detected via `pagePrompt` in\norder to proceed. Required if `pagePrompt` is set.", + "examples": [ + "c" + ] + }, + "ptyType": { + "type": "string", + "description": "Device\u2019s terminal type (\"xterm-256color\", \"vt100\", etc.).", + "examples": [ + "vt100" + ] + }, + "ptyColumnSize": { + "type": "integer", + "format": "int32", + "description": "Column size of the output. Defaults to 500.", + "examples": [ + 240 + ] + }, + "clearPrompt": { + "type": "string", + "description": "Command to clear the prompt. Can be specified like \"ctrl-[a-z]\" or \"ctrl+[a-z]\". Defaults to\n\"ctrl+c\".", + "examples": [ + "ctrl+z" + ] + }, + "responseTimeoutSec": { + "type": "integer", + "format": "int32", + "description": "Timeout in seconds applied to this profile\u2019s CLI commands run during discovery and collection.", + "examples": [ + 15 + ] + }, + "commandSets": { + "type": "array", + "items": { + "$ref": "#/components/schemas/CommandSet" + }, + "description": "Predefined command sets to run on network endpoints with this profile. The \"UNIX\" set includes the commands\n\"ifconfig\", \"netstat -ln\", \"hostname\", and \"uname -a\".", + "examples": [ + "- UNIX" + ] + }, + "customCommands": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Additional commands to run on network endpoints with this profile. Commands should be\nread-only.", + "examples": [ + "- uptime\n- iptables -L" + ] + } + } + }, + "CliEndpointProfilePatch": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Name of this profile (\"HpPrinter\", \"SamsungTV\", etc.). Omit to leave this property alone.", + "examples": [ + "sentry_pdu_ssh" + ] + }, + "detectorCommand": { + "type": "string", + "description": "CLI command to run to detect a network endpoint of this type. If absent, the profile can be manually\nassigned to a network endpoint, but not auto-detected. Use `null` to clear. Omit to leave this property\nalone.", + "examples": [ + "version" + ] + }, + "detectorPatterns": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Patterns matching on output of `detectorCommand` to determine whether the device is of this type. Absent if\n`detectorCommand` is absent. Never empty. Use `null` to clear. Omit to leave this property alone.", + "examples": [ + "- Sentry Switched PDU" + ] + }, + "detectorErrorPatterns": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Patterns matching an error message if a device doesn\u2019t recognize `detectorCommand`. Use `null` to clear.\nOmit to leave this property alone.", + "examples": [ + "- Invalid command\n- 'Switched PDU commands:'" + ] + }, + "nameDetectorCommand": { + "type": "string", + "description": "Command to use to detect the name of a network endpoint of this type. If absent, the name cannot be\ndetected. Use `null` to clear. Omit to leave this property alone.", + "examples": [ + "show network" + ] + }, + "nameDetectorPatterns": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Glob patterns used to extract the device name from the output of `nameDetectorCommand`. The word immediately\nafter a matched glob pattern is the desired name. If no glob patterns are specified, the first word/token in\nthe `nameDetectorCommand` output will be used. Use `null` to clear. Omit to leave this property alone.", + "examples": [ + "- FQDN:*enabled" + ] + }, + "prompt": { + "type": "string", + "description": "A case-insensitive glob pattern used to identify an interactive console menu prompt. When this pattern\nmatches the end of the prompt, ignoring any trailing whitespace, the Collector will enter the configured\n`promptResponse`. Use `null` to clear. Omit to leave this property alone.", + "examples": [ + "y/n" + ] + }, + "promptResponse": { + "type": "string", + "description": "What the Collector should enter in response to an interactive console menu prompt matching `prompt` in order\nto proceed. Required if `prompt` is set. Use `null` to clear. Omit to leave this property alone.", + "examples": [ + "y" + ] + }, + "pagePrompt": { + "type": "string", + "description": "Case-insensitive glob pattern used to identify a new page banner. Works like `prompt`. If the device doesn\u2019t\ngenerate paginated command output or if paging is like the \u201cmore\u201d command, omit this property. Use `null` to\nclear. Omit to leave this property alone.", + "examples": [ + "continue\\?" + ] + }, + "pagePromptResponse": { + "type": "string", + "description": "What the Collector should enter in response to an interactive pagination prompt detected via `pagePrompt` in\norder to proceed. Required if `pagePrompt` is set. Use `null` to clear. Omit to leave this property alone.", + "examples": [ + "c" + ] + }, + "ptyType": { + "type": "string", + "description": "Device\u2019s terminal type (\"xterm-256color\", \"vt100\", etc.). Use `null` to clear. Omit to leave this property\nalone.", + "examples": [ + "vt100" + ] + }, + "ptyColumnSize": { + "type": "integer", + "format": "int32", + "description": "Column size of the output. Defaults to 500. Use `null` to clear. Omit to leave this property\nalone.", + "examples": [ + 240 + ] + }, + "clearPrompt": { + "type": "string", + "description": "Command to clear the prompt. Can be specified like \"ctrl-[a-z]\" or \"ctrl+[a-z]\". Defaults to \"ctrl+c\". Use\n`null` to clear. Omit to leave this property alone.", + "examples": [ + "ctrl+z" + ] + }, + "responseTimeoutSec": { + "type": "integer", + "format": "int32", + "description": "Timeout in seconds applied to this profile\u2019s CLI commands run during discovery and collection. Use `null` to\nclear. Omit to leave this property alone.", + "examples": [ + 15 + ] + }, + "commandSets": { + "type": "array", + "items": { + "$ref": "#/components/schemas/CommandSet" + }, + "description": "Predefined command sets to run on network endpoints with this profile. The \"UNIX\" set includes the commands\n\"ifconfig\", \"netstat -ln\", \"hostname\", and \"uname -a\". Use `null` to clear. Omit to leave this property\nalone.", + "examples": [ + "- UNIX" + ] + }, + "customCommands": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Additional commands to run on network endpoints with this profile. Commands should be read-only. Use `null`\nto clear. Omit to leave this property alone.", + "examples": [ + "- uptime\n- iptables -L" + ] + } + } + }, + "CliNetworkEndpoint": { + "allOf": [ + { + "type": "object", + "required": [ + "type", + "name", + "host" + ], + "properties": { + "type": { + "type": "string", + "const": "CLI" + }, + "name": { + "type": "string", + "description": "A name that\u2019s unique (ignoring case) among all of the network\u2019s collection source names. May consist of\nletters, digits, dots, hyphens, and underscores.", + "examples": [ + "my-endpoint" + ] + }, + "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\nfor HTTPS, etc.", + "examples": [ + 22 + ] + }, + "protocol": { + "type": "string", + "description": "The collection protocol to use. Defaults to SSH.", + "examples": [ + "SSH" + ], + "enum": [ + "SSH", + "TELNET" + ] + }, + "profileId": { + "type": "string", + "description": "ID of the endpoint profile to use. Auto-detected during connectivity testing if unspecified.", + "examples": [ + "CLI-7" + ] + }, + "credentialId": { + "type": "string", + "description": "The `id` of a CliCredential of type `LOGIN`. Credential auto-association will be attempted using credentials\nconfigured to allow it if this property is unspecified and collecting from this endpoint requires this kind\nof credential.", + "examples": [ + "L-3" + ] + }, + "jumpServerId": { + "type": "string", + "description": "The `id` of the JumpServer that should be used to collect from this device.", + "examples": [ + "J-0" + ] + }, + "fullCollectionLog": { + "type": "boolean", + "description": "Enables more detailed logging during collection. Defaults to false.", + "examples": [ + false + ] + }, + "largeRtt": { + "type": "boolean", + "description": "Whether the device has a large round-trip time (requires a longer response timeout).", + "examples": [ + false + ] + }, + "collect": { + "type": "boolean", + "description": "Whether to collect from this network endpoint. Defaults to true.", + "examples": [ + true + ] + }, + "note": { + "type": "string", + "description": "An optional description or note about this network endpoint.", + "examples": [ + "Yada yada yada" + ] + } + } + }, + { + "$ref": "#/components/schemas/Attribution" + } + ] + }, + "CliNetworkEndpointPatch": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "A name that\u2019s unique (ignoring case) among all of the network\u2019s collection source names. May consist of\nletters, digits, dots, hyphens, and underscores. Omit to leave this property alone.", + "examples": [ + "my-endpoint" + ] + }, + "host": { + "type": "string", + "description": "IP address or hostname used to connect to the device. Omit to leave this 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\nfor HTTPS, etc. Use `null` to clear. Omit to leave this property alone.", + "examples": [ + 22 + ] + }, + "profileId": { + "type": "string", + "description": "ID of the endpoint profile to use. Auto-detected during connectivity testing if unspecified. Use `null` to\nclear. Omit to leave this property alone.", + "examples": [ + "CLI-7" + ] + }, + "protocol": { + "type": "string", + "description": "The collection protocol to use. Defaults to SSH. Use `null` to clear. Omit to leave this\nproperty alone.", + "examples": [ + "SSH" + ], + "enum": [ + "SSH", + "TELNET" + ] + }, + "credentialId": { + "type": "string", + "description": "The `id` of a CliCredential of type `LOGIN`. Credential auto-association will be attempted using credentials\nconfigured to allow it if this property is unspecified and collecting from this endpoint requires this kind\nof credential. Use `null` to clear. Omit to leave this property alone.", + "examples": [ + "L-3" + ] + }, + "jumpServerId": { + "type": "string", + "description": "The `id` of the JumpServer that should be used to collect from this device. Use `null` to clear. Omit to\nleave this property alone.", + "examples": [ + "J-0" + ] + }, + "fullCollectionLog": { + "type": "boolean", + "description": "Enables more detailed logging during collection. Defaults to false. Use `null` to clear. Omit to leave this\nproperty alone.", + "examples": [ + true + ] + }, + "largeRtt": { + "type": "boolean", + "description": "Whether the device has a large round-trip time (requires a longer response timeout). Use `null` to clear.\nOmit to leave this property alone.", + "examples": [ + false + ] + }, + "collect": { + "type": "boolean", + "description": "Whether to collect from this network endpoint. Defaults to true. Use `null` to clear. Omit to leave this\nproperty alone.", + "examples": [ + true + ] + }, + "note": { + "type": "string", + "description": "An optional description or note about this network endpoint. Use `null` to clear. Omit to leave this\nproperty alone.", + "examples": [ + "Yada yada yada" + ] + } + } + }, + "EndpointProfile": { + "allOf": [ + { + "type": "object", + "oneOf": [ + { + "$ref": "#/components/schemas/CliEndpointProfile" + }, + { + "$ref": "#/components/schemas/SnmpEndpointProfile" + }, + { + "$ref": "#/components/schemas/HttpEndpointProfile" + } + ], + "discriminator": { + "propertyName": "type", + "mapping": { + "CLI": "#/components/schemas/CliEndpointProfile", + "SNMP": "#/components/schemas/SnmpEndpointProfile", + "HTTP": "#/components/schemas/HttpEndpointProfile" + } + } + }, + { + "$ref": "#/components/schemas/Attribution" + } + ] + }, + "EndpointProfiles": { + "type": "object", + "required": [ + "profiles" + ], + "properties": { + "profiles": { + "type": "array", + "items": { + "$ref": "#/components/schemas/EndpointProfile" + } + } + } + }, + "HttpEndpointProfileDef": { + "type": "object", + "required": [ + "type", + "name", + "https", + "authType", + "endpoints" + ], + "properties": { + "type": { + "type": "string", + "const": "HTTP" + }, + "name": { + "type": "string", + "description": "Name of this profile (\"HpPrinter\", \"SamsungTV\", etc.)", + "examples": [ + "nsxt_https" + ] + }, + "https": { + "type": "boolean", + "description": "Whether to use HTTPS to connect rather than HTTP.", + "examples": [ + true + ] + }, + "authType": { + "$ref": "#/components/schemas/HttpAuthStrategy", + "description": "The type of HTTP authentication that devices of this type require for API requests.", + "examples": [ + "BASIC_AUTH" + ] + }, + "headers": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "HTTP headers to send in API requests to devices of this type. These headers should not contain sensitive\ndata. Authentication should be handled separately if required using credentials assigned or discovered on a\nper-device basis. Use `authType` to specify what type of HTTP authentication this device type requires.", + "examples": [ + { + "accept": "application/json" + } + ] + }, + "detectorUri": { + "type": "string", + "description": "HTTP GET URI (path and optional query string) used to detect whether a device of unknown type is this kind\nof network endpoint. If absent, the profile can be manually assigned to a network endpoint, but not\nauto-detected.", + "examples": [ + "/login.jsp" + ] + }, + "detectorPatterns": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Case-insensitive glob patterns used on the response of a request to `detectorUri` to determine whether a\ndevice of unknown type is of this type. Absent if `detectorUri` is absent. Never empty.", + "examples": [ + "- VMware NSX" + ] + }, + "endpoints": { + "type": "array", + "items": { + "$ref": "#/components/schemas/HttpEndpoint" + }, + "description": "HTTP GET endpoints to collect from network endpoints with this profile. Never empty.", + "examples": [ + [ + { + "name": "compute_managers", + "path": "/api/v1/fabric/compute-managers" + }, + { + "name": "logical_router_ports", + "path": "/api/v1/logical-router-ports", + "paginationModel": { + "type": "OFFSET", + "itemsArrayField": "ports", + "parameterName": "page", + "offsetIncrementExpression": { + "operator": "PLUS_ONE" + } + } + } + ] + ] + } + } + }, + "HttpEndpointProfilePatch": { + "type": "object", + "properties": { + "authType": { + "$ref": "#/components/schemas/HttpAuthStrategy", + "description": "The type of HTTP authentication that devices of this type require for API requests. Omit to leave this\nproperty alone.", + "examples": [ + "BASIC_AUTH" + ] + }, + "detectorPatterns": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Case-insensitive glob patterns used on the response of a request to `detectorUri` to determine whether a\ndevice of unknown type is of this type. Absent if `detectorUri` is absent. Never empty. Use `null` to clear.\nOmit to leave this property alone.", + "examples": [ + "- VMware NSX" + ] + }, + "detectorUri": { + "type": "string", + "description": "HTTP GET URI (path and optional query string) used to detect whether a device of unknown type is this kind\nof network endpoint. If absent, the profile can be manually assigned to a network endpoint, but not\nauto-detected. Use `null` to clear. Omit to leave this property alone.", + "examples": [ + "/login.jsp" + ] + }, + "endpoints": { + "type": "array", + "items": { + "$ref": "#/components/schemas/HttpEndpoint" + }, + "description": "HTTP GET endpoints to collect from network endpoints with this profile. Never empty. Omit to leave this\nproperty alone.", + "examples": [ + [ + { + "name": "compute_managers", + "path": "/api/v1/fabric/compute-managers" + }, + { + "name": "logical_router_ports", + "path": "/api/v1/logical-router-ports", + "paginationModel": { + "type": "OFFSET", + "itemsArrayField": "ports", + "parameterName": "page", + "offsetIncrementExpression": { + "operator": "PLUS_ONE" + } + } + } + ] + ] + }, + "headers": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "HTTP headers to send in API requests to devices of this type. These headers should not contain sensitive\ndata. Authentication should be handled separately if required using credentials assigned or discovered on a\nper-device basis. Use `authType` to specify what type of HTTP authentication this device type requires. Use\n`null` to clear. Omit to leave this property alone.", + "examples": [ + { + "accept": "application/json" + } + ] + }, + "https": { + "type": "boolean", + "description": "Whether to use HTTPS to connect rather than HTTP. Omit to leave this property alone.", + "examples": [ + true + ] + }, + "name": { + "type": "string", + "description": "Name of this profile (\"HpPrinter\", \"SamsungTV\", etc.) Omit to leave this property alone.", + "examples": [ + "nsxt_https" + ] + } + } + }, + "HttpNetworkEndpoint": { + "allOf": [ + { + "type": "object", + "required": [ + "type", + "name", + "host" + ], + "properties": { + "type": { + "type": "string", + "const": "HTTP" + }, + "name": { + "type": "string", + "description": "A name that\u2019s unique (ignoring case) among all of the network\u2019s collection source names. May consist of\nletters, digits, dots, hyphens, and underscores.", + "examples": [ + "my-endpoint" + ] + }, + "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\nfor HTTPS, etc.", + "examples": [ + 22 + ] + }, + "profileId": { + "type": "string", + "description": "ID of the endpoint profile to use. Auto-detected during connectivity testing if unspecified.", + "examples": [ + "HTTP-4" + ] + }, + "credentialId": { + "type": "string", + "description": "The `id` of an HttpCredential. The type of the credential must match the HttpAuthStrategy of the endpoint\u2019s\nassigned or discovered profile (see `authType` in HttpEndpointProfileDef). Credential auto-association will\nbe attempted using credentials configured to allow it if this property is unspecified and collecting from\nthis endpoint requires this kind of credential.", + "examples": [ + "H-5" + ] + }, + "disableSslValidation": { + "type": "boolean", + "description": "Whether to skip TLS validation. Can be useful for an endpoint whose certificate isn\u2019t trusted. Not\nrecommended. Defaults to false.", + "examples": [ + false + ] + }, + "collect": { + "type": "boolean", + "description": "Whether to collect from this network endpoint. Defaults to true.", + "examples": [ + true + ] + }, + "note": { + "type": "string", + "description": "An optional description or note about this network endpoint.", + "examples": [ + "Yada yada yada" + ] + } + } + }, + { + "$ref": "#/components/schemas/Attribution" + } + ] + }, + "HttpNetworkEndpointPatch": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "A name that\u2019s unique (ignoring case) among all of the network\u2019s collection source names. May consist of\nletters, digits, dots, hyphens, and underscores. Omit to leave this property alone.", + "examples": [ + "my-endpoint" + ] + }, + "host": { + "type": "string", + "description": "IP address or hostname used to connect to the device. Omit to leave this 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\nfor HTTPS, etc. Use `null` to clear. Omit to leave this property alone.", + "examples": [ + 22 + ] + }, + "profileId": { + "type": "string", + "description": "ID of the endpoint profile to use. Auto-detected during connectivity testing if unspecified. Use `null` to\nclear. Omit to leave this property alone.", + "examples": [ + "HTTP-4" + ] + }, + "credentialId": { + "type": "string", + "description": "The `id` of an HttpCredential. The type of the credential must match the HttpAuthStrategy of the endpoint\u2019s\nassigned or discovered profile (see `authType` in HttpEndpointProfileDef). Credential auto-association will\nbe attempted using credentials configured to allow it if this property is unspecified and collecting from\nthis endpoint requires this kind of credential. Use `null` to clear. Omit to leave this property alone.", + "examples": [ + "H-5" + ] + }, + "disableSslValidation": { + "type": "boolean", + "description": "Whether to skip TLS validation. Can be useful for an endpoint whose certificate isn\u2019t trusted. Not\nrecommended. Defaults to false. Use `null` to clear. Omit to leave this property alone.", + "examples": [ + false + ] + }, + "collect": { + "type": "boolean", + "description": "Whether to collect from this network endpoint. Defaults to true. Use `null` to clear. Omit to leave this\nproperty alone.", + "examples": [ + true + ] + }, + "note": { + "type": "string", + "description": "An optional description or note about this network endpoint. Use `null` to clear. Omit to leave this\nproperty alone.", + "examples": [ + "Yada yada yada" + ] + } + } + }, + "NetworkEndpoint": { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "CLI", + "SNMP", + "HTTP" + ] + }, + "tags": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Tags assigned to the endpoint. Present only if specifically requested." + }, + "locationId": { + "type": "string", + "description": "The `id` of the endpoint\u2019s assigned Location (see [Network Locations](#network-locations)). Present only if\nspecifically requested. Defaults to \"default\" (the Unassigned location).", + "examples": [ + "atl" + ] + }, + "testResult": { + "$ref": "#/components/schemas/SourceConnectivityResult", + "description": "The endpoint\u2019s most recent connectivity test result. Present only if specifically requested. Absent if the\nendpoint\u2019s connectivity hasn\u2019t been tested since the last substantial edit to the endpoint." + } + }, + "oneOf": [ + { + "$ref": "#/components/schemas/CliNetworkEndpoint" + }, + { + "$ref": "#/components/schemas/SnmpNetworkEndpoint" + }, + { + "$ref": "#/components/schemas/HttpNetworkEndpoint" + } + ], + "discriminator": { + "propertyName": "type", + "mapping": { + "CLI": "#/components/schemas/CliNetworkEndpoint", + "SNMP": "#/components/schemas/SnmpNetworkEndpoint", + "HTTP": "#/components/schemas/HttpNetworkEndpoint" + } + } + }, + "NetworkEndpoints": { + "type": "object", + "required": [ + "endpoints" + ], + "properties": { + "endpoints": { + "type": "array", + "items": { + "$ref": "#/components/schemas/NetworkEndpoint" + } + } + } + }, + "NetworkEndpointsPatchRequest": { + "type": "object", + "required": [ + "names", + "update" + ], + "properties": { + "names": { + "type": "array", + "items": { + "type": "string" + }, + "description": "The names of the endpoints to update", + "examples": [ + "- my-endpoint-01\n- my-endpoint-02" + ] + }, + "update": { + "$ref": "#/components/schemas/NetworkEndpointsPatch", + "description": "The property updates to apply to the specified endpoints", + "examples": [ + { + "collect": true, + "note": null + } + ] + } + } + }, + "NewCliNetworkEndpoint": { + "type": "object", + "required": [ + "type", + "name", + "host" + ], + "properties": { + "type": { + "type": "string", + "const": "CLI" + }, + "name": { + "type": "string", + "description": "A name that\u2019s unique (ignoring case) among all of the network\u2019s collection source names. May consist of\nletters, digits, dots, hyphens, and underscores.", + "examples": [ + "my-endpoint" + ] + }, + "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\nfor HTTPS, etc.", + "examples": [ + 22 + ] + }, + "protocol": { + "type": "string", + "description": "The collection protocol to use. Defaults to SSH.", + "examples": [ + "SSH" + ], + "enum": [ + "SSH", + "TELNET" + ] + }, + "profileId": { + "type": "string", + "description": "ID of the endpoint profile to use. Auto-detected during connectivity testing if unspecified.", + "examples": [ + "CLI-7" + ] + }, + "credentialId": { + "type": "string", + "description": "The `id` of a CliCredential of type `LOGIN`. Credential auto-association will be attempted using credentials\nconfigured to allow it if this property is unspecified and collecting from this endpoint requires this kind\nof credential.", + "examples": [ + "L-3" + ] + }, + "jumpServerId": { + "type": "string", + "description": "The `id` of the JumpServer that should be used to collect from this device.", + "examples": [ + "J-0" + ] + }, + "fullCollectionLog": { + "type": "boolean", + "description": "Enables more detailed logging during collection. Defaults to false.", + "examples": [ + false + ] + }, + "largeRtt": { + "type": "boolean", + "description": "Whether the device has a large round-trip time (requires a longer response timeout).", + "examples": [ + false + ] + }, + "collect": { + "type": "boolean", + "description": "Whether to collect from this network endpoint. Defaults to true.", + "examples": [ + true + ] + }, + "note": { + "type": "string", + "description": "An optional description or note about this network endpoint.", + "examples": [ + "Yada yada yada" + ] + } + } + }, + "NewHttpNetworkEndpoint": { + "type": "object", + "required": [ + "type", + "name", + "host" + ], + "properties": { + "type": { + "type": "string", + "const": "HTTP" + }, + "name": { + "type": "string", + "description": "A name that\u2019s unique (ignoring case) among all of the network\u2019s collection source names. May consist of\nletters, digits, dots, hyphens, and underscores.", + "examples": [ + "my-endpoint" + ] + }, + "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\nfor HTTPS, etc.", + "examples": [ + 22 + ] + }, + "profileId": { + "type": "string", + "description": "ID of the endpoint profile to use. Auto-detected during connectivity testing if unspecified.", + "examples": [ + "HTTP-4" + ] + }, + "credentialId": { + "type": "string", + "description": "The `id` of an HttpCredential. The type of the credential must match the HttpAuthStrategy of the endpoint\u2019s\nassigned or discovered profile (see `authType` in HttpEndpointProfileDef). Credential auto-association will\nbe attempted using credentials configured to allow it if this property is unspecified and collecting from\nthis endpoint requires this kind of credential.", + "examples": [ + "H-5" + ] + }, + "disableSslValidation": { + "type": "boolean", + "description": "Whether to skip TLS validation. Can be useful for an endpoint whose certificate isn\u2019t trusted. Not\nrecommended. Defaults to false.", + "examples": [ + false + ] + }, + "collect": { + "type": "boolean", + "description": "Whether to collect from this network endpoint. Defaults to true.", + "examples": [ + true + ] + }, + "note": { + "type": "string", + "description": "An optional description or note about this network endpoint.", + "examples": [ + "Yada yada yada" + ] + } + } + }, + "NewSnmpNetworkEndpoint": { + "type": "object", + "required": [ + "type", + "name", + "host" + ], + "properties": { + "type": { + "type": "string", + "const": "SNMP" + }, + "name": { + "type": "string", + "description": "A name that\u2019s unique (ignoring case) among all of the network\u2019s collection source names. May consist of\nletters, digits, dots, hyphens, and underscores.", + "examples": [ + "my-endpoint" + ] + }, + "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\nfor HTTPS, etc.", + "examples": [ + 22 + ] + }, + "profileId": { + "type": "string", + "description": "ID of the endpoint profile to use. Auto-detected during connectivity testing if unspecified.", + "examples": [ + "SNMP-5" + ] + }, + "credentialId": { + "type": "string", + "description": "The `id` of an SnmpCredential. Credential auto-association will be attempted using credentials configured to\nallow it if this property is unspecified and collecting from this endpoint requires this kind of credential.", + "examples": [ + "S-1" + ] + }, + "fullCollectionLog": { + "type": "boolean", + "description": "Enables more detailed logging during collection. Defaults to false.", + "examples": [ + false + ] + }, + "collect": { + "type": "boolean", + "description": "Whether to collect from this network endpoint. Defaults to true.", + "examples": [ + true + ] + }, + "note": { + "type": "string", + "description": "An optional description or note about this network endpoint.", + "examples": [ + "Yada yada yada" + ] + } + } + }, + "SnmpEndpointProfileDef": { + "type": "object", + "required": [ + "type", + "name" + ], + "properties": { + "type": { + "type": "string", + "const": "SNMP" + }, + "name": { + "type": "string", + "description": "Name of this profile (\"HpPrinter\", \"SamsungTV\", etc.).", + "examples": [ + "esxi_snmp" + ] + }, + "detectorOid": { + "type": "string", + "description": "OID to collect to detect a network endpoint of this type. If absent, the profile can be manually assigned to\na network endpoint, but not auto-detected.", + "examples": [ + "1.3.6.1.2.1.1.1.0" + ] + }, + "detectorPatterns": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Patterns matching on output of `detectorOid` to determine whether the device is of this type. Absent if\n`detectorOid` is absent. Never empty.", + "examples": [ + "- ESXi" + ] + }, + "nameDetectorOid": { + "type": "string", + "description": "OID to collect to detect the name of a network endpoint of this type. If absent, the name cannot be\ndetected.", + "examples": [ + "1.3.6.1.2.1.1.5" + ] + }, + "nameDetectorPatterns": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Glob patterns used to extract the device name from the collected value for `nameDetectorOid`. The word\nimmediately after a matched glob pattern is the desired name. If no glob patterns are specified, the first\nword/token in the `nameDetectorOid` value will be used.", + "examples": [ + "- FQDN:*enabled" + ] + }, + "responseTimeoutSec": { + "type": "integer", + "format": "int32", + "description": "Timeout in seconds for retrieving the value of one of this profile\u2019s OIDs during discovery or collection.\nDefaults to 5.", + "examples": [ + 10 + ] + }, + "oidSets": { + "type": "array", + "items": { + "$ref": "#/components/schemas/OidSet" + }, + "description": "Predefined OID sets to collect from network endpoints with this profile. The \"STANDARD\" set includes OIDs\nfor system name, system description, TCP info, UDP info, host address, and interface info.", + "examples": [ + "- STANDARD" + ] + }, + "customOids": { + "type": "array", + "items": { + "$ref": "#/components/schemas/CustomOid" + }, + "description": "Additional OIDs to collect from network endpoints with this profile. The output of each OID is saved to a\nfile with the associated name.", + "examples": [ + [ + { + "name": "system_desc", + "oid": "1.3.6.1.2.1.1.1" + }, + { + "name": "hostname", + "oid": "1.3.6.1.2.1.1.5" + } + ] + ] + } + } + }, + "SnmpEndpointProfilePatch": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Name of this profile (\"HpPrinter\", \"SamsungTV\", etc.). Omit to leave this property alone.", + "examples": [ + "esxi_snmp" + ] + }, + "detectorOid": { + "type": "string", + "description": "OID to collect to detect a network endpoint of this type. If absent, the profile can be manually assigned to\na network endpoint, but not auto-detected. Use `null` to clear. Omit to leave this property alone.", + "examples": [ + "1.3.6.1.2.1.1.1.0" + ] + }, + "detectorPatterns": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Patterns matching on output of `detectorOid` to determine whether the device is of this type. Absent if\n`detectorOid` is absent. Never empty. Use `null` to clear. Omit to leave this property alone.", + "examples": [ + "- ESXi" + ] + }, + "nameDetectorOid": { + "type": "string", + "description": "OID to collect to detect the name of a network endpoint of this type. If absent, the name cannot be\ndetected. Use `null` to clear. Omit to leave this property alone.", + "examples": [ + "1.3.6.1.2.1.1.5" + ] + }, + "nameDetectorPatterns": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Glob patterns used to extract the device name from the collected value for `nameDetectorOid`. The word\nimmediately after a matched glob pattern is the desired name. If no glob patterns are specified, the first\nword/token in the `nameDetectorOid` value will be used. Use `null` to clear. Omit to leave this property\nalone.", + "examples": [ + "- FQDN:*enabled" + ] + }, + "responseTimeoutSec": { + "type": "integer", + "format": "int32", + "description": "Timeout in seconds for retrieving the value of one of this profile\u2019s OIDs during discovery or collection.\nDefaults to 5. Use `null` to clear. Omit to leave this property alone.", + "examples": [ + 10 + ] + }, + "oidSets": { + "type": "array", + "items": { + "$ref": "#/components/schemas/OidSet" + }, + "description": "Predefined OID sets to collect from network endpoints with this profile. The \"STANDARD\" set includes OIDs\nfor system name, system description, TCP info, UDP info, host address, and interface info. Use `null` to\nclear. Omit to leave this property alone.", + "examples": [ + "- STANDARD" + ] + }, + "customOids": { + "type": "array", + "items": { + "$ref": "#/components/schemas/CustomOid" + }, + "description": "Additional OIDs to collect from network endpoints with this profile. The output of each OID is saved to a\nfile with the associated name. Use `null` to clear. Omit to leave this property alone.", + "examples": [ + [ + { + "name": "system_desc", + "oid": "1.3.6.1.2.1.1.1" + }, + { + "name": "hostname", + "oid": "1.3.6.1.2.1.1.5" + } + ] + ] + } + } + }, + "SnmpNetworkEndpoint": { + "allOf": [ + { + "type": "object", + "required": [ + "type", + "name", + "host" + ], + "properties": { + "type": { + "type": "string", + "const": "SNMP" + }, + "name": { + "type": "string", + "description": "A name that\u2019s unique (ignoring case) among all of the network\u2019s collection source names. May consist of\nletters, digits, dots, hyphens, and underscores.", + "examples": [ + "my-endpoint" + ] + }, + "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\nfor HTTPS, etc.", + "examples": [ + 22 + ] + }, + "profileId": { + "type": "string", + "description": "ID of the endpoint profile to use. Auto-detected during connectivity testing if unspecified.", + "examples": [ + "SNMP-5" + ] + }, + "credentialId": { + "type": "string", + "description": "The `id` of an SnmpCredential. Credential auto-association will be attempted using credentials configured to\nallow it if this property is unspecified and collecting from this endpoint requires this kind of credential.", + "examples": [ + "S-1" + ] + }, + "fullCollectionLog": { + "type": "boolean", + "description": "Enables more detailed logging during collection. Defaults to false.", + "examples": [ + false + ] + }, + "collect": { + "type": "boolean", + "description": "Whether to collect from this network endpoint. Defaults to true.", + "examples": [ + true + ] + }, + "note": { + "type": "string", + "description": "An optional description or note about this network endpoint.", + "examples": [ + "Yada yada yada" + ] + } + } + }, + { + "$ref": "#/components/schemas/Attribution" + } + ] + }, + "SnmpNetworkEndpointPatch": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "A name that\u2019s unique (ignoring case) among all of the network\u2019s collection source names. May consist of\nletters, digits, dots, hyphens, and underscores. Omit to leave this property alone.", + "examples": [ + "my-endpoint" + ] + }, + "host": { + "type": "string", + "description": "IP address or hostname used to connect to the device. Omit to leave this 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\nfor HTTPS, etc. Use `null` to clear. Omit to leave this property alone.", + "examples": [ + 22 + ] + }, + "profileId": { + "type": "string", + "description": "ID of the endpoint profile to use. Auto-detected during connectivity testing if unspecified. Use `null` to\nclear. Omit to leave this property alone.", + "examples": [ + "SNMP-5" + ] + }, + "credentialId": { + "type": "string", + "description": "The `id` of an SnmpCredential. Credential auto-association will be attempted using credentials configured to\nallow it if this property is unspecified and collecting from this endpoint requires this kind of credential.\nUse `null` to clear. Omit to leave this property alone.", + "examples": [ + "S-1" + ] + }, + "collect": { + "type": "boolean", + "description": "Whether to collect from this network endpoint. Defaults to true. Use `null` to clear. Omit to leave this\nproperty alone.", + "examples": [ + true + ] + }, + "note": { + "type": "string", + "description": "An optional description or note about this network endpoint. Use `null` to clear. Omit to leave this\nproperty alone.", + "examples": [ + "Yada yada yada" + ] + } + } + }, + "CliEndpointProfile": { + "allOf": [ + { + "type": "object", + "required": [ + "id" + ], + "properties": { + "id": { + "type": "string", + "description": "System-assigned identifier of this endpoint profile. Always begins with \"CLI-\".", + "examples": [ + "CLI-7" + ] + } + } + }, + { + "$ref": "#/components/schemas/CliEndpointProfileDef" + } + ] + }, + "SnmpEndpointProfile": { + "allOf": [ + { + "type": "object", + "required": [ + "id" + ], + "properties": { + "id": { + "type": "string", + "description": "System-assigned identifier of this endpoint profile. Always begins with \"SNMP-\".", + "examples": [ + "SNMP-5" + ] + } + } + }, + { + "$ref": "#/components/schemas/SnmpEndpointProfileDef" + } + ] + }, + "HttpEndpointProfile": { + "allOf": [ + { + "type": "object", + "required": [ + "id" + ], + "properties": { + "id": { + "type": "string", + "description": "System-assigned identifier of this endpoint profile. Always begins with \"HTTP-\".", + "examples": [ + "HTTP-4" + ] + } + } + }, + { + "$ref": "#/components/schemas/HttpEndpointProfileDef" + } + ] + }, + "CommandSet": { + "type": "string", + "const": "UNIX" + }, + "OidSet": { + "type": "string", + "const": "STANDARD" + }, + "CustomOid": { + "type": "object", + "required": [ + "name", + "oid" + ], + "properties": { + "name": { + "type": "string", + "description": "A concise name for the OID\u2019s value. Used in the name of the file the Collector creates when it retrieves the\nOID\u2019s value from a device. Can contain only letters, digits, underscores, and hyphens.", + "examples": [ + "system_desc" + ] + }, + "oid": { + "type": "string", + "description": "A numeric object identifier (OID) from the Management Information Base (MIB) for the Simple Network\nManagement Protocol (SNMP).", + "examples": [ + "1.3.6.1.2.1.1.1" + ] + } + } + }, + "HttpAuthStrategy": { + "type": "string", + "enum": [ + "NONE", + "BASIC_AUTH" + ] + }, + "OffsetBasedPagination": { + "type": "object", + "required": [ + "type", + "itemsArrayField", + "parameterName", + "offsetIncrementExpression" + ], + "properties": { + "type": { + "type": "string", + "const": "OFFSET" + }, + "itemsArrayField": { + "type": "array", + "items": { + "type": "string" + }, + "description": "JSON property name(s) that must be accessed, starting from the top level of the HTTP response, to reach the\npaginated data array.", + "examples": [ + "- items" + ] + }, + "parameterName": { + "type": "string", + "description": "The name of the URL query parameter to populate with the offset value that increases with each\nrequest.", + "examples": [ + "skip" + ] + }, + "offsetIncrementExpression": { + "$ref": "#/components/schemas/OffsetIncrementExpression", + "description": "What to add to the previous request\u2019s offset value to get the next request\u2019s offset value. The first\nrequest\u2019s offset value is always zero.", + "examples": [ + { + "operator": "LENGTH", + "path": [ + "items" + ] + } + ] + }, + "maxPages": { + "type": "integer", + "format": "int32", + "description": "Maximum number of pages to collect. Defaults to 1000.", + "examples": [ + 100 + ] + } + } + }, + "UrlCursorBasedPagination": { + "type": "object", + "required": [ + "type", + "itemsArrayField", + "urlField" + ], + "properties": { + "type": { + "type": "string", + "const": "URL_CURSOR" + }, + "itemsArrayField": { + "type": "array", + "items": { + "type": "string" + }, + "description": "JSON property name(s) that must be accessed, starting from the top level of the HTTP response, to reach the\npaginated data array.", + "examples": [ + "- items" + ] + }, + "urlField": { + "type": "array", + "items": { + "type": "string" + }, + "description": "JSON property name(s) that must be accessed, starting from the top level of the HTTP response, to reach the\nnext page\u2019s URL.", + "examples": [ + "- pagingInfo\n- nextPageUrl" + ] + }, + "maxPages": { + "type": "integer", + "format": "int32", + "description": "Maximum number of pages to collect. Defaults to 1000.", + "examples": [ + 100 + ] + } + } + }, + "ParameterCursorBasedPagination": { + "type": "object", + "required": [ + "type", + "itemsArrayField", + "parameterName", + "parameterField" + ], + "properties": { + "type": { + "type": "string", + "const": "PARAMETER_CURSOR" + }, + "itemsArrayField": { + "type": "array", + "items": { + "type": "string" + }, + "description": "JSON property name(s) that must be accessed, starting from the top level of the HTTP response, to reach the\npaginated data array.", + "examples": [ + "- items" + ] + }, + "parameterName": { + "type": "string", + "description": "The name of the URL query parameter to populate with the cursor value from the previous\nresponse.", + "examples": [ + "pagingCursor" + ] + }, + "parameterField": { + "type": "array", + "items": { + "type": "string" + }, + "description": "JSON property name(s) that must be accessed, starting from the top level of the HTTP response, to reach the\nnext page\u2019s cursor value.", + "examples": [ + "- pagingInfo\n- nextPageCursor" + ] + }, + "maxPages": { + "type": "integer", + "format": "int32", + "description": "Maximum number of pages to collect. Defaults to 1000.", + "examples": [ + 100 + ] + } + } + }, + "OffsetIncrementExpression": { + "type": "object", + "required": [ + "operator" + ], + "properties": { + "operator": { + "type": "string", + "description": "\"IDENTITY\" means to add the number at `path` in the previous request\u2019s response to the previous request\u2019s\noffset value. \"LENGTH\" means to add the length of the array at `path` in the previous request\u2019s response to\nthe previous request\u2019s offset value. \"PLUS_ONE\" means to simply add one to the previous request\u2019s offset\nvalue.", + "examples": [ + "LENGTH" + ], + "enum": [ + "IDENTITY", + "LENGTH", + "PLUS_ONE" + ] + }, + "path": { + "type": "array", + "items": { + "type": "string" + }, + "description": "JSON property name(s) that must be accessed, starting from the top level of the HTTP response, to reach the\nvalue or array needed to calculate the next offset value. Required if `operator` is \"IDENTITY\" or \"LENGTH\";\nabsent otherwise.", + "examples": [ + "- items" + ] + } + } + }, + "PaginationModel": { + "type": "object", + "required": [ + "type", + "itemsArrayField" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "OFFSET", + "URL_CURSOR", + "PARAMETER_CURSOR" + ] + }, + "itemsArrayField": { + "type": "array", + "items": { + "type": "string" + }, + "description": "JSON property name(s) that must be accessed, starting from the top level of the HTTP response, to reach the\npaginated data array.", + "examples": [ + "- items" + ] + }, + "maxPages": { + "type": "integer", + "format": "int32", + "description": "Maximum number of pages to collect. Defaults to 1000.", + "examples": [ + 100 + ] + } + }, + "oneOf": [ + { + "$ref": "#/components/schemas/OffsetBasedPagination" + }, + { + "$ref": "#/components/schemas/UrlCursorBasedPagination" + }, + { + "$ref": "#/components/schemas/ParameterCursorBasedPagination" + } + ], + "discriminator": { + "propertyName": "type", + "mapping": { + "OFFSET": "#/components/schemas/OffsetBasedPagination", + "URL_CURSOR": "#/components/schemas/UrlCursorBasedPagination", + "PARAMETER_CURSOR": "#/components/schemas/ParameterCursorBasedPagination" + } + } + }, + "HttpEndpoint": { + "type": "object", + "required": [ + "name", + "path" + ], + "properties": { + "name": { + "type": "string", + "description": "A concise name for this HTTP endpoint. Used in the name of the file(s) the Collector creates to store the\nresponse(s) it receives from a device. Can contain only letters, digits, underscores, hyphens, and dots.", + "examples": [ + "compute_managers" + ] + }, + "path": { + "type": "string", + "description": "The URL path for this HTTP endpoint. Must start with \"/\". May include a query string.", + "examples": [ + "/api/v1/fabric/compute-managers" + ] + }, + "paginationModel": { + "$ref": "#/components/schemas/PaginationModel", + "description": "Instructions for fetching this HTTP endpoint\u2019s dataset in parts (pages) using a sequence of requests. Can\nonly be used if this endpoint\u2019s response format is JSON. Absent if this endpoint doesn\u2019t require pagination.", + "examples": [ + { + "type": "OFFSET", + "itemsArrayField": [ + "managers" + ], + "parameterName": "page", + "offsetIncrementExpression": { + "operator": "PLUS_ONE" + } + } + ] + } + } + }, + "ConnectionType": { + "type": "string", + "enum": [ + "CLI", + "SNMP", + "HTTP" + ] + }, + "Protocol": { + "type": "string", + "enum": [ + "HTTP", + "HTTPS", + "SSH", + "TELNET", + "SNMP" + ] + }, + "NetworkEndpointsPatch": { + "type": "object", + "properties": { + "type": { + "$ref": "#/components/schemas/ConnectionType", + "description": "The desired connection type for the specified network endpoints. Omit to leave this property\nalone.", + "examples": [ + "CLI" + ] + }, + "profileId": { + "type": "string", + "description": "ID of the endpoint profile to use. Auto-detected during connectivity testing if unspecified. Use `null` to\nclear. Omit to leave this property alone.", + "examples": [ + "CLI-7" + ] + }, + "protocol": { + "$ref": "#/components/schemas/Protocol", + "description": "The collection protocol to use. Defaults to SSH. Use `null` to clear. Omit to leave this\nproperty alone.", + "examples": [ + "SSH" + ] + }, + "credentialId": { + "type": "string", + "description": "The `id` of a CliCredential of type `LOGIN`. Credential auto-association will be attempted using credentials\nconfigured to allow it if this property is unspecified and collecting from this endpoint requires this kind\nof credential. Use `null` to clear. Omit to leave this property alone.", + "examples": [ + "L-3" + ] + }, + "jumpServerId": { + "type": "string", + "description": "The `id` of the JumpServer that should be used to collect from this device. Use `null` to clear. Omit to\nleave this property alone.", + "examples": [ + "J-0" + ] + }, + "collect": { + "type": "boolean", + "description": "Whether to collect from this network endpoint. Defaults to true. Use `null` to clear. Omit to leave this\nproperty alone.", + "examples": [ + true + ] + }, + "note": { + "type": "string", + "description": "An optional description or note about this network endpoint. Use `null` to clear. Omit to leave this\nproperty alone.", + "examples": [ + "Yada yada yada" + ] + } + } + }, + "DeviceCluster": { + "type": "object", + "required": [ + "name", + "devices" + ], + "properties": { + "name": { + "type": "string", + "examples": [ + "atl-edge" + ] + }, + "devices": { + "type": "array", + "items": { + "type": "string" + }, + "examples": [ + "- atl-edge-fw01\n- atl-edge-fw02\n- atl-isp-edge01\n- atl-isp-edge02" + ] + } + } + }, + "DeviceClusterUpdate": { + "type": "object", + "properties": { + "name": { + "type": "string", + "examples": [ + "atl-edge" + ] + }, + "devices": { + "type": "array", + "items": { + "type": "string" + }, + "examples": [ + "- atl-edge-fw01\n- atl-edge-fw02\n- atl-isp-edge01\n- atl-isp-edge02" + ] + } + } + }, + "Location": { + "type": "object", + "required": [ + "id", + "name", + "lat", + "lng" + ], + "properties": { + "id": { + "type": "string", + "examples": [ + "dyt-a" + ] + }, + "name": { + "type": "string", + "examples": [ + "Dayton DC" + ] + }, + "lat": { + "type": "number", + "format": "double", + "description": "A latitude (geographic coordinate), specified as an angle from -90 to +90 degrees", + "examples": [ + 39.8113 + ] + }, + "lng": { + "type": "number", + "format": "double", + "description": "A longitude (geographic coordinate), specified as an angle from -180 to +180 degrees", + "examples": [ + -84.2722 + ] + }, + "city": { + "type": "string", + "description": "Name of the closest city (for display purposes only). Required if `adminDivision` or `country`\nis specified.", + "examples": [ + "Dayton" + ] + }, + "adminDivision": { + "type": "string", + "description": "Name of the administrative division (district, province, region, state, territory, etc.) that `city` is in\n(for display purposes only)", + "examples": [ + "Ohio" + ] + }, + "country": { + "type": "string", + "description": "Name of the country that `city` is located in (for display purposes only). Required if `city`\nis specified.", + "examples": [ + "United States" + ] + } + } + }, + "LocationBulkPatch": { + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "Identifier of the location to update. Required if `name` is absent.", + "examples": [ + "dyt-a" + ] + }, + "name": { + "type": "string", + "description": "Name of the location to update or create. Required if `id` is absent.", + "examples": [ + "Dayton DC" + ] + }, + "lat": { + "type": "number", + "format": "double", + "description": "A latitude (geographic coordinate), specified as an angle from -90 to +90 degrees", + "examples": [ + 39.8113 + ] + }, + "lng": { + "type": "number", + "format": "double", + "description": "A longitude (geographic coordinate), specified as an angle from -180 to +180 degrees", + "examples": [ + -84.2722 + ] + }, + "city": { + "type": "string", + "description": "Name of the closest city (for display purposes only)", + "examples": [ + "Dayton" + ] + }, + "adminDivision": { + "type": "string", + "description": "Name of the administrative division (district, province, region, state, territory, etc.) that `city` is in\n(for display purposes only)", + "examples": [ + "Ohio" + ] + }, + "country": { + "type": "string", + "description": "Name of the country that `city` is located in (for display purposes only)", + "examples": [ + "United States" + ] + } + } + }, + "LocationPatch": { + "type": "object", + "properties": { + "id": { + "type": "string", + "examples": [ + "dyt-a" + ] + }, + "name": { + "type": "string", + "examples": [ + "Dayton DC" + ] + }, + "lat": { + "type": "number", + "format": "double", + "description": "A latitude (geographic coordinate), specified as an angle from -90 to +90 degrees", + "examples": [ + 39.8113 + ] + }, + "lng": { + "type": "number", + "format": "double", + "description": "A longitude (geographic coordinate), specified as an angle from -180 to +180 degrees", + "examples": [ + -84.2722 + ] + }, + "city": { + "type": "string", + "description": "Name of the closest city (for display purposes only)", + "examples": [ + "Dayton" + ] + }, + "adminDivision": { + "type": "string", + "description": "Name of the administrative division (district, province, region, state, territory, etc.) that `city` is in\n(for display purposes only)", + "examples": [ + "Ohio" + ] + }, + "country": { + "type": "string", + "description": "Name of the country that `city` is located in (for display purposes only)", + "examples": [ + "United States" + ] + } + } + }, + "NewLocation": { + "type": "object", + "required": [ + "name", + "lat", + "lng" + ], + "properties": { + "id": { + "type": "string", + "description": "If absent or null, a numeric identifier will be assigned", + "examples": [ + "dyt-a" + ] + }, + "name": { + "type": "string", + "examples": [ + "Dayton DC" + ] + }, + "lat": { + "type": "number", + "format": "double", + "description": "A latitude (geographic coordinate), specified as an angle from -90 to +90 degrees", + "examples": [ + 39.8113 + ] + }, + "lng": { + "type": "number", + "format": "double", + "description": "A longitude (geographic coordinate), specified as an angle from -180 to +180 degrees", + "examples": [ + -84.2722 + ] + }, + "city": { + "type": "string", + "description": "Name of the closest city (for display purposes only). Required if `adminDivision` or `country`\nis specified.", + "examples": [ + "Dayton" + ] + }, + "adminDivision": { + "type": "string", + "description": "Name of the administrative division (district, province, region, state, territory, etc.) that `city` is in\n(for display purposes only)", + "examples": [ + "Ohio" + ] + }, + "country": { + "type": "string", + "description": "Name of the country that `city` is located in (for display purposes only). Required if `city`\nis specified.", + "examples": [ + "United States" + ] + } + } + }, + "NetworkSnapshots": { + "allOf": [ + { + "type": "object", + "required": [ + "snapshots" + ], + "properties": { + "snapshots": { + "type": "array", + "items": { + "$ref": "#/components/schemas/SnapshotInfo" + } + } + } + }, + { + "$ref": "#/components/schemas/Network" + } + ] + }, + "SnapshotExportParams": { + "type": "object", + "properties": { + "includeDevices": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Must be absent if `\"excludeDevices\"` is specified.", + "examples": [ + "- device-1\n- device-2\n- pa*" + ] + }, + "excludeDevices": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Must be absent if `\"includeDevices\"` is specified.", + "examples": [ + "- device-6\n- device-7\n- pa*" + ] + }, + "obfuscationKey": { + "type": "string", + "description": "If specified, sensitive data will be\n[obfuscated](/docs/application/settings/system/obfuscate-snapshot/).", + "examples": [ + "a-sEcr3t-kEy-th4t-i$-h4rd-to-guE$$" + ] + }, + "obfuscateNames": { + "type": "boolean", + "description": "default: `false`. If specified, `\"obfuscationKey\"` must also be specified.", + "examples": [ + false + ] + } + } + }, + "SnapshotInfo": { + "type": "object", + "properties": { + "createdAt": { + "type": "string", + "examples": [ + "2019-09-20T17:40:34.567Z" + ] + }, + "creationDateMillis": { + "type": "integer", + "format": "int64", + "description": "Deprecated for removal in release 26.4. Use `createdAt` instead.", + "examples": [ + 1569001234567 + ] + }, + "id": { + "type": "string" + }, + "isDraft": { + "type": "boolean", + "examples": [ + false + ] + }, + "note": { + "type": "string" + }, + "parentSnapshotId": { + "type": "string" + }, + "processedAt": { + "type": "string", + "examples": [ + "2019-09-20T18:17:36.789Z" + ] + }, + "processedAtMillis": { + "type": "integer", + "format": "int64", + "description": "Deprecated for removal in release 26.4. Use `processedAt` instead.", + "examples": [ + 1569003456789 + ] + }, + "processingTrigger": { + "type": "string", + "enum": [ + "UNKNOWN", + "COLLECTION", + "IMPORT", + "REPROCESS", + "FORK" + ] + }, + "restoredAt": { + "type": "string", + "examples": [ + "2019-09-20T17:40:34.567Z" + ] + }, + "restoredAtMillis": { + "type": "integer", + "format": "int64", + "description": "Deprecated for removal in release 26.4. Use `restoredAt` instead.", + "examples": [ + 1569001234567 + ] + }, + "state": { + "$ref": "#/components/schemas/SnapshotState" + }, + "favoritedBy": { + "type": "string", + "description": "The username of the user who most recently marked this Snapshot as a favorite if it's currently a favorite\nand the user account hasn\u2019t been deleted.", + "examples": [ + "mary" + ] + }, + "favoritedByUserId": { + "type": "string", + "description": "The id of the user who most recently marked this Snapshot as a favorite if it\u2019s currently a\nfavorite.", + "examples": [ + "1234" + ] + }, + "favoritedAt": { + "type": "string", + "description": "When this Snapshot was most recently marked as a favorite if it\u2019s currently a favorite. A favorite Snapshot\nwill never be automatically deleted, regardless of its network\u2019s Snapshot retention policy.", + "examples": [ + "2019-09-30T19:48:59.481Z" + ] + }, + "favoritedAtMillis": { + "type": "integer", + "format": "int64", + "description": "Deprecated for removal in release 26.4. Use `favoritedAt` instead.", + "examples": [ + 1569872939481 + ] + } + } + }, + "SnapshotMetrics": { + "type": "object", + "properties": { + "collectionConcurrency": { + "type": "integer", + "format": "int32", + "examples": [ + 16 + ] + }, + "collectionDuration": { + "type": "integer", + "format": "int64", + "examples": [ + 1234 + ] + }, + "createdAt": { + "type": "string", + "examples": [ + "2022-04-06T20:34:45.118Z" + ] + }, + "creationDateMillis": { + "type": "integer", + "format": "int64", + "description": "Deprecated for removal in release 26.4. Use `createdAt` instead.", + "examples": [ + 1649277285118 + ] + }, + "deviceCollectionFailures": { + "type": "object", + "additionalProperties": { + "type": "integer", + "format": "int32" + }, + "description": "Possible device error types during collection\n*UNKNOWN*: Unknown error\n*CONNECTION_TIMEOUT*: Connection to device timed out\n*CONNECTION_REFUSED*: Connection to device refused\n*AUTHENTICATION_FAILED*: Authentication failed\n*KEY_EXCHANGE_FAILED*: Key exchange failed\n*AUTHORIZATION_FAILED*: Authorization failed\n*AVI_SHELL_AUTH_FAILED*: Avi authentication failed\n*AVI_CONTROLLER_WITHOUT_HEALTHY_SERVICE_ENGINES*: No Avi Service Engines found\n*NETWORK_UNREACHABLE*: Network not reachable\n*IO_ERROR*: I/O error\n*SESSION_CLOSED*: Session closed unexpectedly\n*STATE_COLLECTION_FAILED*: State collection failed\n*JUMP_SERVER_CONNECTION_TIMEOUT*: Jump server timed out\n*JUMP_SERVER_PASSWORD_AUTH_FAILED*: Jump server auth failed\n*JUMP_SERVER_CONNECTION_FAILED*: Jump server connection refused\n*JUMP_SERVER_KEY_EXCHANGE_FAILED*: Jump server key exchange failed\n*PROXY_SERVER_PING_FAILED*: Proxy ping failed\n*PROXY_SERVER_PORT_REACHABILITY_FAILED*: Proxy port not reachable\n*PROXY_SERVER_CONNECTION_FAILED*: Proxy connection refused\n*PROXY_SERVER_AUTHENTICATION_FAILED*: Proxy authentication failed\n*PRIV_PASSWORD_ERROR*: Privileged password failed\n*UNSUPPORTED_VERSION*: Unsupported version\n*DEVICE_TYPE_UNDETECTED*: Undetected device type\n*WARN_TYPE_MISMATCH*: Device type mismatch\n*DEVICE_IS_CHILD_CONTEXT*: Parent context required\n*MANAGER_COLLECTOR_NOT_FOUND*: Collector manager error\n*INCOMPLETE_SETUP*: Incomplete setup\n*COLLECTION_NOT_FOUND*: Collection not found\n*INFINITE_LOOP_IN_COMMAND_OUTPUT*: Collection stuck in loop\n*MISSING_FILE*: File is missing\n*UNSUPPORTED_VENDOR*: Vendor not supported\n*COMMAND_DISABLED*: Required command is disabled\n*APIC_CONFIG_COLLECTION_FAILED*: APIC config collection failed\n*UNEXPECTED_KEY_EXCHANGE_MESSAGE*: Unexpected Key-Exchange message\n*UNDISCOVERED_ACI_FABRIC*: ACI fabric node was not discovered by APIC\n*SLOW_READ_RATE_DETECTED*: Read rate from the remote peer is too low\n*COLLECTION_TIMED_OUT*: Collection timed out\n*COLLECTION_CANCELED*: Collection canceled by user\n*OPERATION_TIMED_OUT*: Operation timed out\n*CERTIFICATE_CHECK_FAILED*: Certificate cannot be verified" + }, + "deviceProcessingFailures": { + "type": "object", + "additionalProperties": { + "type": "integer", + "format": "int32" + }, + "description": "Possible error types during processing\n*LICENSE_EXHAUSTED*: License limit exceeded\n*MISSING_SIGNATURE*: Missing signature\n*DUPLICATE*: Duplicate device\n*PARSER_EXCEPTION*: Couldn't be parsed\n*UNSUPPORTED_VENDOR*: Vendor not supported" + }, + "endpointCollectionFailures": { + "type": "object", + "additionalProperties": { + "type": "integer", + "format": "int32" + }, + "description": "Possible device error types during collection\n*UNKNOWN*: Unknown error\n*CONNECTION_TIMEOUT*: Connection to device timed out\n*CONNECTION_REFUSED*: Connection to device refused\n*AUTHENTICATION_FAILED*: Authentication failed\n*KEY_EXCHANGE_FAILED*: Key exchange failed\n*AUTHORIZATION_FAILED*: Authorization failed\n*AVI_SHELL_AUTH_FAILED*: Avi authentication failed\n*AVI_CONTROLLER_WITHOUT_HEALTHY_SERVICE_ENGINES*: No Avi Service Engines found\n*NETWORK_UNREACHABLE*: Network not reachable\n*IO_ERROR*: I/O error\n*SESSION_CLOSED*: Session closed unexpectedly\n*STATE_COLLECTION_FAILED*: State collection failed\n*JUMP_SERVER_CONNECTION_TIMEOUT*: Jump server timed out\n*JUMP_SERVER_PASSWORD_AUTH_FAILED*: Jump server auth failed\n*JUMP_SERVER_CONNECTION_FAILED*: Jump server connection refused\n*JUMP_SERVER_KEY_EXCHANGE_FAILED*: Jump server key exchange failed\n*PROXY_SERVER_PING_FAILED*: Proxy ping failed\n*PROXY_SERVER_PORT_REACHABILITY_FAILED*: Proxy port not reachable\n*PROXY_SERVER_CONNECTION_FAILED*: Proxy connection refused\n*PROXY_SERVER_AUTHENTICATION_FAILED*: Proxy authentication failed\n*PRIV_PASSWORD_ERROR*: Privileged password failed\n*UNSUPPORTED_VERSION*: Unsupported version\n*DEVICE_TYPE_UNDETECTED*: Undetected device type\n*WARN_TYPE_MISMATCH*: Device type mismatch\n*DEVICE_IS_CHILD_CONTEXT*: Parent context required\n*MANAGER_COLLECTOR_NOT_FOUND*: Collector manager error\n*INCOMPLETE_SETUP*: Incomplete setup\n*COLLECTION_NOT_FOUND*: Collection not found\n*INFINITE_LOOP_IN_COMMAND_OUTPUT*: Collection stuck in loop\n*MISSING_FILE*: File is missing\n*UNSUPPORTED_VENDOR*: Vendor not supported\n*COMMAND_DISABLED*: Required command is disabled\n*APIC_CONFIG_COLLECTION_FAILED*: APIC config collection failed\n*UNEXPECTED_KEY_EXCHANGE_MESSAGE*: Unexpected Key-Exchange message\n*UNDISCOVERED_ACI_FABRIC*: ACI fabric node was not discovered by APIC\n*SLOW_READ_RATE_DETECTED*: Read rate from the remote peer is too low\n*COLLECTION_TIMED_OUT*: Collection timed out\n*COLLECTION_CANCELED*: Collection canceled by user\n*OPERATION_TIMED_OUT*: Operation timed out\n*CERTIFICATE_CHECK_FAILED*: Certificate cannot be verified" + }, + "endpointProcessingFailures": { + "type": "object", + "additionalProperties": { + "type": "integer", + "format": "int32" + }, + "description": "Possible error types during processing\n*LICENSE_EXHAUSTED*: License limit exceeded\n*MISSING_SIGNATURE*: Missing signature\n*DUPLICATE*: Duplicate device\n*PARSER_EXCEPTION*: Couldn't be parsed\n*UNSUPPORTED_VENDOR*: Vendor not supported" + }, + "hostComputationStatus": { + "$ref": "#/components/schemas/ComputationStatus", + "description": "Host computation status", + "examples": [ + "SUCCESS" + ] + }, + "ipLocationIndexingStatus": { + "$ref": "#/components/schemas/ComputationStatus", + "description": "IP location indexing status", + "examples": [ + "SUCCESS" + ] + }, + "jumpServerCollectionConcurrency": { + "type": "integer", + "format": "int32" + }, + "l2IndexingStatus": { + "$ref": "#/components/schemas/ComputationStatus", + "description": "L2 elements (vlans, LAN segments etc.) indexing status", + "examples": [ + "SUCCESS" + ] + }, + "numCollectionFailureDevices": { + "type": "integer", + "format": "int32" + }, + "numCollectionFailureEndpoints": { + "type": "integer", + "format": "int32" + }, + "numProcessingFailureDevices": { + "type": "integer", + "format": "int32" + }, + "numProcessingFailureEndpoints": { + "type": "integer", + "format": "int32" + }, + "numSuccessfulDevices": { + "type": "integer", + "format": "int32", + "examples": [ + 401 + ] + }, + "numSuccessfulEndpoints": { + "type": "integer", + "format": "int32", + "examples": [ + 234 + ] + }, + "pathSearchIndexingStatus": { + "$ref": "#/components/schemas/ComputationStatus", + "description": "End-to-end path indexing status", + "examples": [ + "SUCCESS" + ] + }, + "processingDuration": { + "type": "integer", + "format": "int64", + "examples": [ + 5678 + ] + }, + "searchIndexingStatus": { + "$ref": "#/components/schemas/ComputationStatus", + "description": "Object search indexing status", + "examples": [ + "SUCCESS" + ] + }, + "snapshotId": { + "type": "string" + }, + "snapshotState": { + "$ref": "#/components/schemas/SnapshotState", + "description": "Current state of the Snapshot", + "examples": [ + "PROCESSING" + ] + } + } + }, + "SnapshotState": { + "type": "string", + "enum": [ + "UNPACKING", + "UNPROCESSED", + "PROCESSING", + "PROCESSED", + "FAILED", + "CANCELED", + "TIMED_OUT", + "ARCHIVED", + "RESTORING", + "RESTORE_FAILED" + ] + }, + "Network": { + "type": "object", + "required": [ + "id", + "name", + "orgId" + ], + "properties": { + "id": { + "type": "string" + }, + "parentId": { + "type": "string", + "description": "The network from which this Workspace network was created. Absent if this network is not a\nWorkspace." + }, + "name": { + "type": "string", + "examples": [ + "My Network" + ] + }, + "orgId": { + "type": "string" + }, + "creator": { + "type": "string", + "description": "The username of the user who created the network, or null if the account was deleted", + "examples": [ + "mary" + ] + }, + "creatorId": { + "type": "string", + "description": "The id of the user who created the network, or null if the account was deleted", + "examples": [ + "123" + ] + }, + "created": { + "type": "string", + "examples": [ + "2022-04-06T20:34:45.118Z" + ] + }, + "createdAt": { + "type": "integer", + "format": "int64", + "description": "Deprecated for removal in release 26.4. Use `created` instead.", + "examples": [ + 1649277285118 + ] + }, + "note": { + "type": "string", + "description": "An optional network description." + }, + "retentionDays": { + "type": "integer", + "format": "int32", + "minimum": 1, + "maximum": 365, + "description": "The number of days without any use of this network after which it will be automatically deleted. Absent for\nparent networks and permanent Workspace networks." + }, + "secondsToExpiry": { + "type": "integer", + "format": "int64", + "description": "Number of seconds without use before the network expires. Present for temporary Workspace\nnetworks only." + } + } + }, + "ComputationStatus": { + "type": "string", + "enum": [ + "UNKNOWN", + "FAILURE", + "SUCCESS", + "CANCELED" + ] + }, + "LinkOverrides": { + "type": "object", + "properties": { + "absent": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Link" + } + }, + "present": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Link" + } + } + } + }, + "LinkOverridesEdit": { + "type": "object", + "properties": { + "absentAdditions": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Link" + } + }, + "absentRemovals": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Link" + } + }, + "presentAdditions": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Link" + } + }, + "presentRemovals": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Link" + } + } + } + }, + "TopologyLink": { + "type": "object", + "properties": { + "sourcePort": { + "type": "string" + }, + "targetPort": { + "type": "string" + } + } + }, + "Link": { + "type": "object", + "properties": { + "port1": { + "type": "string" + }, + "port2": { + "type": "string" + } + } + }, + "CreateWorkspaceNetworkRequest": { + "type": "object", + "required": [ + "name" + ], + "properties": { + "name": { + "type": "string", + "examples": [ + "My Network - Workspace A" + ] + }, + "note": { + "type": "string", + "examples": [ + "For change window 2021-10-30-ABC" + ] + }, + "devices": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Names of the devices to include (`ClassicDevice` names; see [Network Setup](#network-setup)). Can be omitted\nor empty if `cloudAccounts` or `vcenters` is nonempty.", + "examples": [ + "- nyc-dc01-tor01\n- nyc-dc01-rtr01" + ] + }, + "cloudAccounts": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Names of the cloud accounts [AWS](/docs/application/getting_started/configure_collection/cloud/aws_setup/),\n[GCP](/docs/application/getting_started/configure_collection/cloud/gcp_setup/), or\n[Azure](/docs/application/getting_started/configure_collection/cloud/azure_setup/) to include. Can be\nomitted or empty if `devices` or `vcenters` is nonempty.", + "examples": [ + "- my-aws-account\n- my-gcp-account\n- my-azure-account" + ] + }, + "vcenters": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Names of the\n[vCenters](/docs/application/getting_started/configure_collection/VMware_account/#adding-vcenter-instances)\nto include. Can be omitted or empty if `devices` or `cloudAccounts` is nonempty.", + "examples": [ + "- vcenter-01" + ] + }, + "omissions": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "CUSTOM_COMMANDS", + "NQE_CHECKS", + "PREDEFINED_CHECKS", + "INTENT_CHECKS" + ] + }, + "description": "What to omit (not copy) from the parent network", + "examples": [ + "- CUSTOM_COMMANDS\n- NQE_CHECKS" + ] + }, + "retentionDays": { + "type": "integer", + "format": "int32", + "minimum": 1, + "maximum": 365, + "description": "Number of days of inactivity after which the Workspace network will be deleted. If omitted, the value\ndefaults to 7. If specified as null, this network will be considered permanent." + } + } + }, + "NetworkUpdate": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "note": { + "type": "string" + }, + "retentionDays": { + "type": "integer", + "format": "int32" + } + } + }, + "NqeDiffRequest": { + "type": "object", + "required": [ + "queryId" + ], + "properties": { + "queryId": { + "type": "string", + "description": "The query identifier of the query to run, referenced by its NQE Library Query ID.", + "examples": [ + "FQ_ac651cb2901b067fe7dbfb511613ab44776d8029" + ] + }, + "commitId": { + "type": "string", + "description": "Version of the query identified by `queryId` to run. Omit to run the latest version. Required if the query\nidentified by `queryId` has been deleted.", + "examples": [ + "84f84b0c0a0a1805ddff0ca5451c2c55c58605e5" + ] + }, + "options": { + "$ref": "#/components/schemas/NqeQueryOptions" + } + } + }, + "NqeDiffResult": { + "type": "object", + "properties": { + "rows": { + "type": "array", + "items": { + "$ref": "#/components/schemas/NqeDiffEntry" + }, + "description": "The NQE query diff's rows, as a list of objects. Each object represents either an added row, a deleted row,\nor a modified row. In the case of a modified row, the before and after rows are matched up by their values\non the key columns for the before and after tables. In particular, the key columns are the smallest set of\nleft-most columns that uniquely identify rows within the before table and the after table." + }, + "totalNumRows": { + "type": "integer", + "format": "int32", + "description": "The number of diff rows that would be present if there was no limit.\nIf there are column filters, then it should be the number of rows that satisfy the column filters (if there\nwere no limit)." + } + } + }, + "NqeErrorInfo": { + "type": "object", + "required": [ + "httpMethod", + "apiUrl", + "message" + ], + "properties": { + "completionType": { + "type": "string", + "enum": [ + "FINISHED", + "CANCELED", + "TIMED_OUT" + ] + }, + "errors": { + "type": "array", + "items": { + "$ref": "#/components/schemas/NqeQueryError" + } + }, + "snapshotId": { + "type": "string", + "description": "The ID of the Snapshot the query was run against.", + "examples": [ + "101" + ] + }, + "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" + } + } + }, + "NqeQuery": { + "type": "object", + "properties": { + "queryId": { + "type": "string", + "description": "The ID of the query", + "examples": [ + "FQ_ac651cb2901b067fe7dbfb511613ab44776d8029" + ] + }, + "repository": { + "type": "string", + "examples": [ + "ORG" + ], + "enum": [ + "FWD", + "ORG" + ] + }, + "path": { + "type": "string", + "description": "The unique path of the query, including its name, in the latest commit", + "examples": [ + "/L2/MtuConsistency" + ] + }, + "intent": { + "type": "string", + "description": "The intent of the query in the latest commit" + } + } + }, + "NqeQueryRunRequest": { + "type": "object", + "properties": { + "query": { + "type": "string", + "description": "The source code of the query to run. Exactly one of `queryId` or `query` must be provided.", + "examples": [ + "foreach d in network.devices select { Name: d.name }" + ] + }, + "queryId": { + "type": "string", + "description": "The query identifier of the query to run, referenced by its NQE Library Query ID. Exactly one of `queryId`\nor `query` must be provided. This identifier can be found in the information callout in the Queries pane or\nthe Versions view dropdown.", + "examples": [ + "FQ_ac651cb2901b067fe7dbfb511613ab44776d8029" + ] + }, + "commitId": { + "type": "string", + "description": "Version of the query identified by `queryId` to run. Omit to run the latest version. Required if the query\nidentified by `queryId` has been deleted. This identifier can be found in the information callout in the\nQueries pane or the Versions view dropdown.", + "examples": [ + "84f84b0c0a0a1805ddff0ca5451c2c55c58605e5" + ] + }, + "queryOptions": { + "$ref": "#/components/schemas/NqeQueryOptions" + }, + "parameters": { + "type": "object", + "additionalProperties": {}, + "description": "Values for each parameter declared in the query. The parameter values are specified as a JSON object, with\none property per parameter, where the property name matches the parameter name. The property value is the\nJSON representation of the parameter value. The JSON representation of a parameter value depends on the type\nof the value. For values of type `String`, `IpAddress`, `IpSubnet`, and `MacAddress`, the JSON\nrepresentation is a JSON string. For values of type `Number`, the value is an integral JSON number. For\nvalues of type `Boolean`, the JSON representation is true or false. For values of type `List`, the JSON\nrepresentation is an array of JSON values, each of which is a JSON representation for type `T`. For record\nvalues, the JSON representation is a JSON object with corresponding properties whose values are JSON\nrepresentations corresponding to the properties' types. For enumerations, the JSON representation is a JSON\nstring with the enum constant name. For `oneOf` values that contain data, the JSON representation is a JSON\nobject with two properties, `alternative` and `value`, where the `alternative` property contains the\nalternative's name (a string) and the `value` property is a JSON representation of the data associated with\nthis alternative.", + "examples": [ + { + "mtuThreshold": 123, + "ntpServers": [ + "10.22.2.3", + "192.33.4.1" + ] + } + ] + } + } + }, + "NqeRunResult": { + "type": "object", + "properties": { + "snapshotId": { + "type": "string", + "description": "The ID of the Snapshot that the query was run against.", + "examples": [ + "101" + ] + }, + "items": { + "type": "array", + "items": { + "$ref": "#/components/schemas/NqeRecord" + }, + "description": "The query's results, as a list of objects. Each object corresponds to a record returned by the query, and is\nan object with fields of simple values, where a simple value is either a basic value or a list of basic\nvalues. A basic value is either a number, boolean, string, or null.", + "examples": [ + [ + { + "boolField": true, + "numField": 1, + "nullField": null, + "stringField": "string", + "listField": [ + 1, + 2, + 3 + ] + } + ] + ] + }, + "totalNumItems": { + "type": "integer", + "format": "int64", + "description": "The total number of items in the query result. This number could be different than the length of `items` if\na filter is used or if the total size of the rows would exceed the maximum page size of 400MB." + } + } + }, + "SortOrder": { + "type": "object", + "required": [ + "columnName" + ], + "properties": { + "columnName": { + "type": "string", + "description": "The name of a column to sort on.", + "examples": [ + "Name" + ] + }, + "order": { + "type": "string", + "description": "(optional) Either \"ASC\" or \"DESC\" to sort ascending or descending, respectively. Defaults to\n\"ASC\".", + "examples": [ + "ASC" + ], + "enum": [ + "ASC", + "DESC" + ] + } + } + }, + "DefaultColumnFilter": { + "type": "object", + "required": [ + "columnName" + ], + "properties": { + "columnName": { + "type": "string", + "description": "The name of a column to filter on.", + "examples": [ + "Name" + ] + }, + "operator": { + "type": "string", + "const": "DEFAULT" + }, + "value": { + "type": "string", + "description": "A value (in its string representation) to match on.", + "examples": [ + "ATL" + ] + } + } + }, + "BetweenColumnFilter": { + "type": "object", + "required": [ + "columnName", + "operator" + ], + "properties": { + "columnName": { + "type": "string", + "description": "The name of a column to filter on.", + "examples": [ + "Name" + ] + }, + "lowerBound": { + "type": "string", + "description": "A value (in its string representation) to limit on inclusively from below. Required if 'upperBound' is\nomitted.", + "examples": [ + "2023-07-30T08:27:16Z" + ] + }, + "operator": { + "type": "string", + "const": "IS_BETWEEN" + }, + "upperBound": { + "type": "string", + "description": "A value (in its string representation) to limit on inclusively from above. Required if 'lowerBound' is\nomitted.", + "examples": [ + "2025-07-30T08:27:16Z" + ] + } + } + }, + "ColumnFilter": { + "type": "object", + "required": [ + "operator" + ], + "properties": { + "operator": { + "type": "string", + "enum": [ + "DEFAULT", + "IS_BETWEEN" + ] + } + }, + "oneOf": [ + { + "$ref": "#/components/schemas/DefaultColumnFilter" + }, + { + "$ref": "#/components/schemas/BetweenColumnFilter" + } + ], + "discriminator": { + "propertyName": "operator", + "mapping": { + "DEFAULT": "#/components/schemas/DefaultColumnFilter", + "IS_BETWEEN": "#/components/schemas/BetweenColumnFilter" + } + } + }, + "NqeQueryOptions": { + "type": "object", + "properties": { + "offset": { + "type": "integer", + "format": "int32", + "description": "(optional) The number of initial records to skip. Defaults to 0. Cannot be negative.", + "examples": [ + 20 + ] + }, + "limit": { + "type": "integer", + "format": "int32", + "description": "(optional) The maximum number of records to return. Defaults to 1000. Must be positive and must not exceed\n10000.", + "examples": [ + 100 + ] + }, + "sortBy": { + "$ref": "#/components/schemas/SortOrder", + "description": "(optional) An object specifying how results should be sorted." + }, + "columnFilters": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ColumnFilter" + }, + "description": "(optional) Result filters. Only records that match all filters are returned. A record matches the array of\n`columnFilters` if the record matches all of the `columnFilters`, in which case it is kept in the results.", + "examples": [ + [ + { + "columnName": "Name", + "value": "MyDeviceName" + } + ] + ] + }, + "itemFormat": { + "type": "string", + "description": "(optional) Specifies how each row in the result should be rendered. If set to LEGACY (the default), complex\nvalues in the row are rendered as strings. If set to JSON, complex values are rendered as JSON arrays and\nrecords. A complex value is one that is not a scalar (such as a number, string, enum value, date, etc.), or\nis not a list of scalar values.\n\n**Note:** The default value of this property will change from LEGACY to JSON in release 26.3. We recommend\nopting in to the JSON format before that release. If you need to keep using the LEGACY format in release\n26.3 or beyond for some reason, be sure to specify the LEGACY format in each request.", + "examples": [ + "JSON" + ], + "enum": [ + "JSON", + "LEGACY" + ] + } + } + }, + "CellValue": { + "type": "object" + }, + "NqeRecord": { + "type": "object", + "properties": { + "fields": { + "type": "object", + "additionalProperties": { + "$ref": "#/components/schemas/CellValue" + } + } + } + }, + "TextPosition": { + "type": "object", + "properties": { + "character": { + "type": "integer", + "format": "int32", + "description": "Position on the line (by number of characters, starting at 0)" + }, + "line": { + "type": "integer", + "format": "int32", + "description": "Line number (starting at 0)" + } + } + }, + "TextRegion": { + "type": "object", + "properties": { + "start": { + "$ref": "#/components/schemas/TextPosition", + "description": "The region's starting position (starting at (0, 0))." + }, + "end": { + "$ref": "#/components/schemas/TextPosition", + "description": "The region's ending position." + } + } + }, + "NqeQueryError": { + "type": "object", + "properties": { + "location": { + "$ref": "#/components/schemas/TextRegion", + "description": "The region in the original query that caused the error." + }, + "message": { + "type": "string", + "description": "The error's message." + } + } + }, + "NqeDiffEntry": { + "type": "object", + "properties": { + "after": { + "$ref": "#/components/schemas/NqeRecord", + "description": "The record returned by the query against the 'after' snapshot. Not present if `type` is\n\"DELETED\"." + }, + "before": { + "$ref": "#/components/schemas/NqeRecord", + "description": "The record returned by the query against the 'before' snapshot. Not present if `type` is\n\"ADDED\"." + }, + "type": { + "type": "string", + "description": "Describes the type of difference between `before` and `after`:\n* If \"MODIFIED\", then both `before` and `after` will be present, but will differ in at least one field;\n* If \"ADDED\", then only `after` will be present;\n* If \"DELETED\", then only `before` will be present.", + "enum": [ + "ADDED", + "DELETED", + "MODIFIED" + ] + } + }, + "description": "Represents a diff entry between two records returned by the same NQE query." + }, + "L7Application": { + "type": "object", + "properties": { + "id": { + "type": "string" + } + } + }, + "PathSearchBulkRequest": { + "type": "object", + "required": [ + "queries" + ], + "properties": { + "queries": { + "type": "array", + "items": { + "$ref": "#/components/schemas/PathSearchQuery" + } + }, + "intent": { + "$ref": "#/components/schemas/SearchIntent", + "description": "Specifies the intent for the search. Default PREFER_DELIVERED.\n*PREFER_VIOLATIONS*: Prefer paths that result in the traffic not getting delivered, e.g. drops, blackholes,\nloops. An example usage is while trying to evaluate if the specified traffic always gets delivered to the\ndestination along all path choices.\n*PREFER_DELIVERED*: Prefer paths that result in the traffic getting delivered. An example usage is while\ntrying to evaluate if traffic gets delivered to the destination along any path choice.\n*VIOLATIONS_ONLY*: Search for paths where traffic is not delivered to the destination.", + "examples": [ + "PREFER_DELIVERED" + ], + "default": "PREFER_DELIVERED" + }, + "maxCandidates": { + "type": "integer", + "format": "int32", + "description": "the limit on the number of search results computed, before applying any ranking criteria. Permitted range =\n1 to 10,000. Default 5,000.", + "examples": [ + 5000 + ] + }, + "maxResults": { + "type": "integer", + "format": "int32", + "description": "the limit on the number of search results returned by the API. First, the platform computes up to\nmaxCandidates results that match the search criteria. Then they are sorted by various ranking criteria. A\nkey ranking factor is path length, preferring longer paths (greatest reach) in the network over shorter\nones. Finally, the API limits the number of returned search results to maxResults. Permitted range = 1 to\nmaxCandidates. Default 1.", + "examples": [ + 1 + ] + }, + "maxReturnPathResults": { + "type": "integer", + "format": "int32", + "description": "the limit on the number of return path search results. Permitted range = 0 to 10,000. Default 0. Multicast\n(*, G) and (S, G) queries will always return 0 return path results regardless of this value.", + "examples": [ + 0 + ] + }, + "maxSeconds": { + "type": "integer", + "format": "int32", + "description": "the timeout duration per search query. Permitted range = 1 to 300. Default 30.", + "examples": [ + 30 + ] + }, + "maxOverallSeconds": { + "type": "integer", + "format": "int32", + "description": "the overall timeout duration. Permitted range = 1 to 7,200. Default equal to the timeout duration for a\nsingle query.", + "examples": [ + 300 + ] + }, + "includeTags": { + "type": "boolean", + "description": "If true, the response will include device tags for each hop.", + "examples": [ + false + ] + }, + "includeNetworkFunctions": { + "type": "boolean", + "description": "If true, the response includes detailed forwarding info for each hop.\nNote: Setting this to true increases the API response time.", + "examples": [ + false + ] + } + } + }, + "PathSearchResponse": { + "type": "object", + "properties": { + "srcIpLocationType": { + "type": "string", + "description": "Specifies the location discovery method for source IP.\nThe enum values are ordered from most precise to least precise discovery method.\n*INTERFACE*: The IP is a configured IP address of one or more device interfaces.\n*HOST*: The IP corresponds to discovered host(s).\n*SNAT* : The IP is used as the post-translated IP of a Source NAT function in the network and is assumed to\nbe located on the gateway device(s) performing this translation.\n*CO_LOCATED*: The IP is configured on a gateway device as a /32 or /128 route whose next hop is a known\nhost.\n*INTERFACE_ATTACHED_SUBNET*: The IP falls within the attached subnet of L3 interface(s).\n*INTERNET*: The IP is in the public internet and was located at the network's Internet Node. This discovery\nmethod is only applicable when an Internet Node is configured in the network.\n*ROUTE*: The IP was located based on injected routes in the network.\n*MULTICAST*: The IP is a multicast group address. This discovery method is used to locate the rendezvous\npoints of the multicast group and use their IP addresses as IP source.", + "enum": [ + "INTERFACE", + "HOST", + "SNAT", + "CO_LOCATED", + "INTERFACE_ATTACHED_SUBNET", + "INTERNET", + "ROUTE", + "MULTICAST" + ] + }, + "dstIpLocationType": { + "type": "string", + "description": "Specifies the location discovery method for destination IP.\nThe enum values are ordered from most precise to least precise discovery method.\n*INTERFACE*: The IP is a configured IP address of one or more device interfaces.\n*HOST*: The IP corresponds to discovered host(s).\n*DNAT*: The IP gets DNAT'd in the network. The IP may either correspond directly to a VIP on a load balancer\nor a DNAT'd IP on other devices such as routers. This discovery method is only used to locate destination IP\naddresses. DNAT\u2019d IP addresses are recursively resolved to determine where traffic to a given destination IP\nmust be delivered in the network.\n*CO_LOCATED*: The IP is configured on a gateway device as a /32 or /128 route whose next hop is a known\nhost.\n*INTERFACE_ATTACHED_SUBNET*: The IP falls within the attached subnet of L3 interface(s).\n*INTERNET*: The IP is in the public internet and was located at the network's Internet Node. This discovery\nmethod is only applicable when an Internet Node is configured in the network.\n*ROUTE*: The IP was located based on injected routes in the network.\n*MULTICAST*: The IP is a multicast group address.", + "enum": [ + "INTERFACE", + "HOST", + "DNAT", + "CO_LOCATED", + "INTERFACE_ATTACHED_SUBNET", + "INTERNET", + "ROUTE", + "MULTICAST" + ] + }, + "info": { + "$ref": "#/components/schemas/PathInfo" + }, + "returnPathInfo": { + "$ref": "#/components/schemas/PathInfo" + }, + "timedOut": { + "type": "boolean" + }, + "queryUrl": { + "type": "string", + "description": "A Forward application URL at which this path search can be explored or refined interactively" + }, + "unrecognizedValues": { + "$ref": "#/components/schemas/UnrecognizedValues", + "description": "L7 values from the request that were unrecognized by the system" + } + } + }, + "SearchIntent": { + "type": "string", + "enum": [ + "PREFER_VIOLATIONS", + "PREFER_DELIVERED", + "VIOLATIONS_ONLY" + ] + }, + "AclFunction": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "the name of the ACL that is applied to traffic" + }, + "context": { + "type": "string", + "description": "the context in which the ACL function is applied", + "enum": [ + "INPUT", + "OUTPUT" + ] + }, + "action": { + "type": "string", + "description": "the action taken by the ACL function", + "enum": [ + "PERMIT", + "DENY" + ] + } + } + }, + "InterfaceFunctionL2Info": { + "type": "object", + "properties": { + "interfaceName": { + "type": "string" + } + } + }, + "InterfaceFunctionL3Info": { + "type": "object", + "properties": { + "interfaceName": { + "type": "string" + }, + "vrf": { + "type": "string", + "description": "Null if the interface does not belong to any VRF" + } + } + }, + "InterfaceFunction": { + "type": "object", + "properties": { + "l2": { + "$ref": "#/components/schemas/InterfaceFunctionL2Info" + }, + "l3": { + "$ref": "#/components/schemas/InterfaceFunctionL3Info" + }, + "securityZone": { + "type": "string" + } + } + }, + "NetworkFunctions": { + "type": "object", + "properties": { + "acl": { + "type": "array", + "items": { + "$ref": "#/components/schemas/AclFunction" + } + }, + "egress": { + "$ref": "#/components/schemas/InterfaceFunction" + }, + "ingress": { + "$ref": "#/components/schemas/InterfaceFunction" + } + }, + "description": "Detailed forwarding info" + }, + "PathHop": { + "type": "object", + "properties": { + "deviceName": { + "type": "string" + }, + "displayName": { + "type": "string", + "description": "Alternate device name that might be more recognizable but isn\u2019t necessarily unique in the network. For cloud\ndevices, this is the name configured in the cloud provider\u2019s console." + }, + "deviceType": { + "$ref": "#/components/schemas/DeviceType" + }, + "tags": { + "type": "array", + "items": { + "type": "string" + }, + "description": "present only if device tags are specifically requested" + }, + "parseError": { + "type": "boolean", + "description": "`true` indicates that this device\u2019s behavior model might not be reliable" + }, + "ingressInterface": { + "type": "string", + "description": "the physical interface name, where traffic entered the device" + }, + "egressInterface": { + "type": "string", + "description": "the physical interface name, where traffic exited the device.\nAbsent if this is the last hop and traffic did not exit the device." + }, + "behaviors": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "L2", + "L3", + "NAT", + "PBR", + "ACL_PERMIT", + "ACL_DENY" + ] + }, + "description": "Specifies the forwarding behaviors experienced by traffic at the device.\n*L2*: Forwarded at layer 2.\n*L3*: Routed at layer 3.\n*NAT*: NAT transformations applied.\n*PBR*: Forwarded using Policy-Based Routing.\n*ACL_PERMIT*: ACLs were applied to traffic at the device and the traffic was permitted.\n*ACL_DENY*: ACLs were applied to traffic at the device and the traffic was dropped." + }, + "networkFunctions": { + "$ref": "#/components/schemas/NetworkFunctions" + }, + "backfilledFrom": { + "type": "string", + "description": "the collection instant from which the device was backfilled" + } + } + }, + "Path": { + "type": "object", + "properties": { + "forwardingOutcome": { + "type": "string", + "description": "Specifies the traffic forwarding outcome along a path.\n*DELIVERED*: Traffic was delivered to destination IP\u2019s discovered location(s).\n*DELIVERED_TO_INCORRECT_LOCATION*: Traffic was delivered out of some edge ports. However, traffic did not\nreach the expected delivery locations based on destination IP\u2019s discovered locations. One scenario where\nthis occurs is when a device in the middle of the actual path from source IP to destination IP is not\nconfigured for collection in the Forward platform. For example, suppose the actual device path is A -> B ->\nC, and only devices A and C are part of the snapshot in the Forward platform. In this case, the path would\nshow traffic exiting device A at some edge port, but since destination IP is discovered to reside at device\nC, traffic is delivered to an incorrect location.\n*BLACKHOLE*: Traffic was implicitly dropped at the last hop, since the device had no matching rule. For\nexample, if a router does not have a default route, traffic to any IP that is not in the routing table gets\nblackholed.\n*DROPPED*: Traffic was explicitly dropped at the last hop, e.g. by a null route.\n*INADMISSIBLE*: Traffic was not admitted into the network. The first hop interface does not accept the\ntraffic, e.g. incoming traffic had a vlan tag 10 while the ingress interface is an access interface that\nonly permits traffic with vlan tag 20.\n*UNREACHABLE*: ARP/NDP resolution failed along the path resulting in traffic not getting delivered to the\nintended destination.\n*LOOP*: Traffic entered a forwarding loop.", + "enum": [ + "DELIVERED", + "DELIVERED_TO_INCORRECT_LOCATION", + "DROPPED", + "LOOP", + "INADMISSIBLE", + "BLACKHOLE", + "UNREACHABLE" + ] + }, + "securityOutcome": { + "type": "string", + "description": "Specifies whether traffic is denied by ACL rules at any hop along the path.\n*PERMITTED*: All ACLs along the path permitted traffic to flow through.\n*DENIED*: Traffic was dropped by ACLs at some hop along the path. Note that the ACL drop may not always\noccur at the last hop since search results are computed in permit all mode.", + "enum": [ + "PERMITTED", + "DENIED" + ] + }, + "hops": { + "type": "array", + "items": { + "$ref": "#/components/schemas/PathHop" + } + } + } + }, + "TotalHits": { + "type": "object", + "properties": { + "type": { + "type": "string", + "description": "Specifies the type of total hits.\n*LOWER_BOUND*: There may be additional hits that were not included in the results either because the\nrequested number of hits were found, or the request timed out.\n*EXACT*: There are exactly this many hits.", + "enum": [ + "LOWER_BOUND", + "EXACT" + ] + }, + "value": { + "type": "integer", + "format": "int64" + } + }, + "description": "Number of ways in which traffic matching the search criteria is forwarded in the network. Multiple ECMP path\nchoices for traffic lead to separate results. In addition, depending on the scope of query terms, there\nmight be multiple results along a single path. For example a search without IP protocol or destination port\nrestrictions can result in multiple results along a single device path if there are different ACLs that\npermit or deny traffic to different destination ports." + }, + "PathInfo": { + "type": "object", + "properties": { + "paths": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Path" + } + }, + "totalHits": { + "$ref": "#/components/schemas/TotalHits" + } + } + }, + "UnrecognizedValues": { + "type": "object", + "properties": { + "appId": { + "type": "array", + "items": { + "type": "string" + } + }, + "userGroupId": { + "type": "array", + "items": { + "type": "string" + } + }, + "userId": { + "type": "array", + "items": { + "type": "string" + } + } + } + }, + "PathSearchQuery": { + "type": "object", + "required": [ + "dstIp" + ], + "properties": { + "from": { + "type": "string", + "description": "the device from which the traffic originates. If this is specified, then the srcIp will be considered as a\npacket header only, else, the srcIp will be resolved to specific location(s) and used as the source in the\npath search. Either the source device or srcIp must be specified." + }, + "srcIp": { + "type": "string", + "description": "the source IP address or subnet of packets entering the network. For multicast (*, G) paths, set srcIp = G\n(multicast group address).", + "examples": [ + "10.10.10.10" + ] + }, + "dstIp": { + "type": "string", + "description": "the destination IP address or subnet of packets entering the network. For multicast (*, G) paths, set dstIp\n= G (multicast group address).", + "examples": [ + "10.10.10.64/28" + ] + }, + "ipProto": { + "type": "integer", + "format": "int32", + "minimum": 0, + "maximum": 255, + "description": "the IP protocol", + "examples": [ + 6 + ] + }, + "srcPort": { + "type": "string", + "description": "the L4 source port, like \"80\" or a range \"8080-8088\"", + "examples": [ + "80" + ] + }, + "dstPort": { + "type": "string", + "description": "the L4 destination port, like \"80\" or a range \"8080-8088\"", + "examples": [ + "8080-8088" + ] + }, + "icmpType": { + "type": "integer", + "format": "int32", + "minimum": 0, + "maximum": 255, + "description": "the ICMP type. Implies ipProto = 1." + }, + "fin": { + "type": "integer", + "format": "int32", + "minimum": 0, + "maximum": 1, + "description": "the FIN (finish) bit (0 or 1). Implies ipProto = 6.", + "examples": [ + 1 + ] + }, + "syn": { + "type": "integer", + "format": "int32", + "minimum": 0, + "maximum": 1, + "description": "the SYN (synchronize) bit (0 or 1). Implies ipProto = 6.", + "examples": [ + 1 + ] + }, + "rst": { + "type": "integer", + "format": "int32", + "minimum": 0, + "maximum": 1, + "description": "the RST (reset) bit (0 or 1). Implies ipProto = 6.", + "examples": [ + 1 + ] + }, + "psh": { + "type": "integer", + "format": "int32", + "minimum": 0, + "maximum": 1, + "description": "the PSH (push) bit (0 or 1). Implies ipProto = 6.", + "examples": [ + 1 + ] + }, + "ack": { + "type": "integer", + "format": "int32", + "minimum": 0, + "maximum": 1, + "description": "the ACK (acknowledgment) bit (0 or 1). Implies ipProto = 6.", + "examples": [ + 1 + ] + }, + "urg": { + "type": "integer", + "format": "int32", + "minimum": 0, + "maximum": 1, + "description": "the URG (urgent) bit (0 or 1). Implies ipProto = 6.", + "examples": [ + 1 + ] + }, + "appId": { + "type": "string", + "description": "the L7 app-id or \"unidentified\" to exclude paths that traverse firewall policies with app-id matches. If the\nsystem doesn't recognize the provided value, it handles the value the same as \"unidentified\" and includes\nthe value in the `unrecognizedValues` response field. The applications that are recognized by the model can\nbe obtained using GET /api/l7-applications.", + "examples": [ + "ssh" + ] + }, + "userId": { + "type": "string", + "description": "the L7 user-id or \"unidentified\" to exclude paths that traverse firewall policies with user-id matches. If\nthe system doesn't recognize the provided value, it handles the value the same as \"unidentified\" and\nincludes the value in the `unrecognizedValues` response field. See [Path Analysis with Layer 7\nUser-Group](/docs/application/search/path-analysis/layer7_ugroup/) for more info.", + "examples": [ + "user1" + ] + }, + "userGroupId": { + "type": "string", + "description": "the L7 user-group-id. If the system doesn't recognize the provided value, the search returns 0 results as\nthere are no paths that traverse firewall policies with that user-group-id match, and the value is included\nin the `unrecognizedValues` response field. See [Path Analysis with Layer 7\nUser-Group](/docs/application/search/path-analysis/layer7_ugroup/) for more info.", + "examples": [ + "group1" + ] + }, + "url": { + "type": "string", + "description": "the L7 URL that traffic of interest is trying to access. Prefix wildcards are supported for subdomains.\nSuffix wildcards are supported for top-level domains and URL paths. See [Path Analysis with Layer 7\nURL](/docs/application/search/path-analysis/layer7_url/) for more policy patterns supported in the model.", + "examples": [ + "*.example.com" + ] + } + } + }, + "Encryptor": { + "type": "object", + "required": [ + "name", + "siteConnection", + "tunnels" + ], + "properties": { + "name": { + "type": "string", + "examples": [ + "encryptor" + ] + }, + "siteConnection": { + "$ref": "#/components/schemas/EncryptorConnection", + "description": "A connection to a high site" + }, + "underlayConnection": { + "$ref": "#/components/schemas/EncryptorConnection", + "description": "A connection to the underlay network (a low site)" + }, + "tunnels": { + "type": "array", + "items": { + "$ref": "#/components/schemas/EncryptorTunnel" + }, + "description": "Tunnels to other encryptor devices. A tunnel source address is modeled as residing on this device and the\ndestination addresses on another encryptor device. A source address may be reused on an encryptor. Each\ndestination address must match the source address of the tunnel on another encryptor, and vice-versa" + }, + "subnets": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Subnets to route to the high site, in addition to the source addresses of tunnels on the `siteConnection`\ngateway device" + } + } + }, + "EncryptorList": { + "type": "object", + "required": [ + "encryptors" + ], + "properties": { + "encryptors": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Encryptor" + } + } + } + }, + "EncryptorPatch": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "siteConnection": { + "$ref": "#/components/schemas/EncryptorConnection" + }, + "underlayConnection": { + "$ref": "#/components/schemas/EncryptorConnection" + }, + "tunnels": { + "type": "array", + "items": { + "$ref": "#/components/schemas/EncryptorTunnel" + }, + "description": "If specified, this list will **replace** all existing tunnels on the encryptor." + }, + "subnets": { + "type": "array", + "items": { + "type": "string" + }, + "description": "If specified, this set will **replace** all existing subnets on the encryptor." + } + } + }, + "InetConnection": { + "type": "object", + "required": [ + "uplinkPort" + ], + "properties": { + "uplinkPort": { + "$ref": "#/components/schemas/DevicePort", + "description": "The physical uplink port on the edge device.", + "examples": [ + { + "device": "nyc-rtr-01", + "port": "eth1/1" + } + ] + }, + "gatewayPort": { + "$ref": "#/components/schemas/DevicePort", + "description": "The virtual gateway port, if different than `uplinkPort`.", + "examples": [ + { + "device": "nyc-rtr-01", + "port": "vlan100" + } + ] + }, + "vlan": { + "type": "integer", + "format": "int32", + "description": "The VLAN of traffic from `uplinkPort`, if tagged.", + "examples": [ + 100 + ] + }, + "name": { + "type": "string", + "description": "An optional name for this connection, which will be used as the interface name created on the synthetic\ndevice that links to the physical edge port." + }, + "site": { + "type": "string", + "description": "An optional name for the site in which this connection's gateway device resides. A site is a collection of\ndevices that redistribute routes learned from an L3VPN to each other. Grouping connections together into a\nsingle site enables more accurate site subnet autodiscovery when using `IP_ROUTES` or `BGP_ROUTES`." + }, + "subnets": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Site subnets. Routes for these subnets are always created on the node. Required (and must not be empty) if\n`subnetAutoDiscovery` is `NONE`.", + "examples": [ + "- 123.223.47.0/24" + ] + }, + "subnetAutoDiscovery": { + "$ref": "#/components/schemas/AutoDiscoverySource", + "description": "The source from which site subnets are automatically inferred from the gateway device. Defaults to `NONE`.\nIf `INTERFACE_ADDRESSES`, the gateway port's IP address is used as this connection's site subnet. If\n`IP_ROUTES`, subnets are inferred from the gateway device's RIB. If `BGP_ROUTES`, subnets are inferred from\nthe gateway device's Adj-RIB-Out.\n\nNote: If not `NONE`, routes are created on the node for both autodiscovered subnets and any subnets\nspecified in `subnets`.\n\nNote: Using `BGP_ROUTES` will automatically enable collection of Adj-RIB-Out from the gateway device in\nfuture network collections.", + "examples": [ + "NONE" + ] + }, + "peerIps": { + "type": "array", + "items": { + "type": "string" + }, + "description": "IP addresses of BGP peers to which this connection\u2019s site subnets are advertised. If empty, routes\nadvertised to all BGP peers are examined.\n\nNote: This set is only used if `subnetAutoDiscovery` is `BGP_ROUTES`.", + "examples": [ + "- 1.1.1.1" + ] + }, + "backdoorLinkPorts": { + "type": "array", + "items": { + "$ref": "#/components/schemas/DevicePort" + }, + "description": "L3 interfaces that provide backdoor connectivity between sites." + }, + "advertisesDefaultRoute": { + "type": "boolean", + "description": "Whether this connection's gateway device advertises the default route. Defaults to `false`.\n\nNote: This property is only used if `subnetAutoDiscovery` is `IP_ROUTES`." + } + } + }, + "InternetNode": { + "type": "object", + "required": [ + "name", + "connections" + ], + "properties": { + "name": { + "type": "string", + "examples": [ + "inet" + ] + }, + "connections": { + "type": "array", + "items": { + "$ref": "#/components/schemas/InetConnection" + } + }, + "translations": { + "type": "array", + "items": { + "$ref": "#/components/schemas/SyntheticNatEntry" + } + }, + "subnetsToExclude": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Public subnets that should not be located at this device." + } + } + }, + "InternetNodePatch": { + "type": "object", + "properties": { + "connections": { + "type": "array", + "items": { + "$ref": "#/components/schemas/InetConnection" + }, + "description": "If specified, this list will **replace** all existing connections on the internet node." + }, + "name": { + "type": "string" + }, + "translations": { + "type": "array", + "items": { + "$ref": "#/components/schemas/SyntheticNatEntry" + }, + "description": "If specified, this list will **replace** all existing translations on the internet node." + }, + "subnetsToExclude": { + "type": "array", + "items": { + "type": "string" + }, + "description": "If specified, this list will **replace** all existing excluded subnets on the internet node." + } + } + }, + "IntranetNode": { + "type": "object", + "required": [ + "name", + "connections" + ], + "properties": { + "name": { + "type": "string", + "examples": [ + "inet" + ] + }, + "connections": { + "type": "array", + "items": { + "$ref": "#/components/schemas/InetConnection" + } + } + } + }, + "IntranetNodeList": { + "type": "object", + "required": [ + "intranetNodes" + ], + "properties": { + "intranetNodes": { + "type": "array", + "items": { + "$ref": "#/components/schemas/IntranetNode" + } + } + } + }, + "IntranetNodePatch": { + "type": "object", + "properties": { + "connections": { + "type": "array", + "items": { + "$ref": "#/components/schemas/InetConnection" + }, + "description": "If specified, this list will **replace** all existing connections on the intranet node." + }, + "name": { + "type": "string" + } + } + }, + "L2Vpn": { + "type": "object", + "required": [ + "name", + "connections" + ], + "properties": { + "name": { + "type": "string", + "examples": [ + "l2vpn" + ] + }, + "connections": { + "type": "array", + "items": { + "$ref": "#/components/schemas/L2VpnConnection" + } + } + } + }, + "L2VpnConnection": { + "type": "object", + "required": [ + "device", + "port" + ], + "properties": { + "device": { + "type": "string", + "description": "The customer edge device." + }, + "port": { + "type": "string", + "description": "The physical edge port on the customer edge device.", + "examples": [ + "eth1/1" + ] + }, + "vlan": { + "type": "integer", + "format": "int32", + "examples": [ + 100 + ] + }, + "name": { + "type": "string", + "description": "An optional name for this connection, which will be used as the interface name created on the synthetic\ndevice that links to the customer edge device." + } + } + }, + "L2VpnList": { + "type": "object", + "required": [ + "l2Vpns" + ], + "properties": { + "l2Vpns": { + "type": "array", + "items": { + "$ref": "#/components/schemas/L2Vpn" + } + } + } + }, + "L2VpnPatch": { + "type": "object", + "properties": { + "connections": { + "type": "array", + "items": { + "$ref": "#/components/schemas/L2VpnConnection" + }, + "description": "If specified, this list will **replace** all existing connections on the L2 VPN node." + }, + "name": { + "type": "string" + } + } + }, + "L3Vpn": { + "type": "object", + "required": [ + "name", + "connections" + ], + "properties": { + "name": { + "type": "string", + "examples": [ + "l3vpn" + ] + }, + "connections": { + "type": "array", + "items": { + "$ref": "#/components/schemas/L3VpnConnection" + } + } + } + }, + "L3VpnConnection": { + "type": "object", + "required": [ + "uplinkPort" + ], + "properties": { + "uplinkPort": { + "$ref": "#/components/schemas/DevicePort", + "description": "The physical uplink port on the edge device.", + "examples": [ + { + "device": "nyc-rtr-01", + "port": "eth1/1" + } + ] + }, + "gatewayPort": { + "$ref": "#/components/schemas/DevicePort", + "description": "The virtual gateway port, if different than `uplinkPort`.", + "examples": [ + { + "device": "nyc-rtr-01", + "port": "vlan100" + } + ] + }, + "vrf": { + "type": "string", + "description": "An optional name for the VRF on the synthetic L3VPN device under which this connection resides." + }, + "vlan": { + "type": "integer", + "format": "int32", + "description": "The VLAN of traffic from `uplinkPort`, if tagged.", + "examples": [ + 100 + ] + }, + "name": { + "type": "string", + "description": "An optional name for this connection, which will be used as the interface name created on the synthetic\ndevice that links to the physical edge port." + }, + "site": { + "type": "string", + "description": "An optional name for the site in which this connection's gateway device resides. A site is a collection of\ndevices that redistribute routes learned from an L3VPN to each other. Grouping connections together into a\nsingle site enables more accurate site subnet autodiscovery when using `IP_ROUTES` or `BGP_ROUTES`." + }, + "subnets": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Advertised subnets. Routes for these subnets are created on the L3VPN if received by another CE. Required\n(and must not be empty) if `subnetAutoDiscovery` is `NONE`.", + "examples": [ + "- 123.223.47.0/24" + ] + }, + "subnetAutoDiscovery": { + "$ref": "#/components/schemas/AutoDiscoverySource", + "description": "The types of routes from which advertised subnets are automatically inferred in the gateway device\u2019s routing\ntable. Defaults to `NONE`. If `INTERFACE_ADDRESSES`, the gateway port\u2019s IP address is used. If `IP_ROUTES`,\nsubnets are inferred from the gateway device\u2019s RIB. If `BGP_ROUTES`, subnets are inferred from the gateway\ndevice\u2019s Adj-RIB-Out.\n\nNote: If not `NONE`, routes are created on the L3VPN for both autodiscovered subnets, as well any subnets\nspecified in `subnets`, that are received by another CE.\n\nNote: Using `BGP_ROUTES` will automatically enable collection of Adj-RIB-Out from the gateway device in\nfuture network collections.", + "examples": [ + "NONE" + ] + }, + "peerIps": { + "type": "array", + "items": { + "type": "string" + }, + "description": "IP addresses of the provider edge devices to which this connection's edge device sends and receives L3VPN\nroutes. If empty, routes advertised to all BGP peers are examined.", + "examples": [ + "- 1.1.1.1" + ] + }, + "backdoorLinkPorts": { + "type": "array", + "items": { + "$ref": "#/components/schemas/DevicePort" + }, + "description": "L3 interfaces that provide backdoor connectivity between sites." + }, + "advertisesDefaultRoute": { + "type": "boolean", + "description": "Whether the CE advertises the default route. Defaults to `false`.\n\nNote: This property is only used if `subnetAutoDiscovery` is `IP_ROUTES`, which should be the case when BGP\ncollection is not enabled on the CE. If the Adj-RIB-Out is not collected, the RIB is examined and a default\nroute forwarded out `gatewayPort` is skipped if this property is false." + } + } + }, + "L3VpnList": { + "type": "object", + "required": [ + "l3Vpns" + ], + "properties": { + "l3Vpns": { + "type": "array", + "items": { + "$ref": "#/components/schemas/L3Vpn" + } + } + } + }, + "L3VpnPatch": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "connections": { + "type": "array", + "items": { + "$ref": "#/components/schemas/L3VpnConnection" + }, + "description": "If specified, this list will **replace** all existing connections on the L3 VPN node." + } + } + }, + "SyntheticConnections": { + "type": "object", + "properties": { + "connections": { + "type": "array", + "items": { + "$ref": "#/components/schemas/SyntheticConnection" + } + } + } + }, + "WanCircuit": { + "type": "object", + "required": [ + "name", + "connection1", + "connection2" + ], + "properties": { + "name": { + "type": "string", + "examples": [ + "wan-circuit-01" + ] + }, + "connection1": { + "$ref": "#/components/schemas/WanCircuitConnection" + }, + "connection2": { + "$ref": "#/components/schemas/WanCircuitConnection" + } + } + }, + "WanCircuitList": { + "type": "object", + "properties": { + "wanCircuits": { + "type": "array", + "items": { + "$ref": "#/components/schemas/WanCircuit" + } + } + } + }, + "WanCircuitPatch": { + "type": "object", + "properties": { + "name": { + "type": "string", + "examples": [ + "wan-circuit-01" + ] + }, + "connection1": { + "$ref": "#/components/schemas/WanCircuitConnection" + }, + "connection2": { + "$ref": "#/components/schemas/WanCircuitConnection" + } + } + }, + "DevicePort": { + "type": "object", + "properties": { + "device": { + "type": "string" + }, + "port": { + "type": "string" + } + } + }, + "EncryptorConnection": { + "type": "object", + "required": [ + "uplinkPort" + ], + "properties": { + "uplinkPort": { + "$ref": "#/components/schemas/DevicePort", + "description": "The physical uplink port on the edge device.", + "examples": [ + { + "device": "nyc-rtr-01", + "port": "eth1/1" + } + ] + }, + "gatewayPort": { + "$ref": "#/components/schemas/DevicePort", + "description": "The virtual gateway port, if different than `uplinkPort`.", + "examples": [ + { + "device": "nyc-rtr-01", + "port": "vlan100" + } + ] + }, + "vlan": { + "type": "integer", + "format": "int32", + "description": "The VLAN of traffic from `uplinkPort`, if tagged.", + "examples": [ + 100 + ] + }, + "name": { + "type": "string", + "description": "An optional name for this connection, which will be used as the interface name created on the synthetic\ndevice that links to the physical edge port." + } + } + }, + "EncryptorTunnel": { + "type": "object", + "required": [ + "source", + "destination" + ], + "properties": { + "source": { + "type": "string", + "description": "Source IP address of an encryptor tunnel", + "examples": [ + "1.1.1.1" + ] + }, + "destination": { + "type": "string", + "description": "Destination IP address of an encryptor tunnel", + "examples": [ + "2.2.2.2" + ] + } + } + }, + "AutoDiscoverySource": { + "type": "string", + "enum": [ + "NONE", + "IP_ROUTES", + "BGP_ROUTES", + "INTERFACE_ADDRESSES" + ] + }, + "SyntheticNatEntry": { + "type": "object", + "required": [ + "insideAddress", + "outsideAddress" + ], + "properties": { + "insideAddress": { + "type": "string", + "examples": [ + "10.0.0.1" + ] + }, + "outsideAddress": { + "type": "string", + "description": "A public (non-RFC1918) address", + "examples": [ + "1.1.1.1" + ] + } + } + }, + "SyntheticConnection": { + "type": "object", + "properties": { + "name": { + "type": "string" + } + } + }, + "WanCircuitConnection": { + "type": "object", + "required": [ + "device", + "port" + ], + "properties": { + "device": { + "type": "string", + "description": "A customer edge device name" + }, + "port": { + "type": "string", + "description": "The name of the connected port on `device`" + }, + "vlan": { + "type": "integer", + "format": "int32", + "description": "The VLAN of traffic from `port`, if tagged", + "examples": [ + 100 + ] + }, + "name": { + "type": "string", + "description": "An optional name for this connection, which will be used as the interface name created on the synthetic\ndevice that links to the edge device." + } + } + }, + "NewUser": { + "type": "object", + "required": [ + "email", + "password" + ], + "properties": { + "email": { + "type": "string", + "examples": [ + "me@example.com" + ] + }, + "username": { + "type": "string", + "description": "Defaults to the value of `email`", + "examples": [ + "me@example.com" + ] + }, + "password": { + "type": "string", + "examples": [ + "zF4H+K;5]qE~%9G=nbAk" + ] + }, + "isSupport": { + "type": "boolean", + "description": "Defaults to `false`", + "examples": [ + false + ] + }, + "enabled": { + "type": "boolean", + "description": "Defaults to `true`", + "examples": [ + true + ] + } + } + }, + "User": { + "type": "object", + "required": [ + "id", + "username", + "enabled", + "authSource" + ], + "properties": { + "id": { + "type": "string", + "description": "A system-generated identifier that can be used in API requests to manage this account", + "examples": [ + "55555" + ] + }, + "username": { + "type": "string", + "description": "The identifier used to authenticate (log in) with this account", + "examples": [ + "me@example.com" + ] + }, + "email": { + "type": "string", + "description": "The email address at which this user wishes to receive system-generated emails", + "examples": [ + "me@example.com" + ] + }, + "enabled": { + "type": "boolean", + "description": "Whether authentication (login and API use) is currently permitted for this user account" + }, + "authSource": { + "type": "string", + "description": "How this user authenticates. `LOCAL` accounts exist only in the Forward Platform.", + "examples": [ + "SAML" + ], + "enum": [ + "LOCAL", + "TACACS", + "SAML", + "LDAP" + ] + }, + "externalGroups": { + "type": "array", + "items": { + "type": "string" + }, + "description": "The names of any LDAP or SSO (SAML) groups to which this account belongs. Updated each time this user\nauthenticates.", + "examples": [ + "- netops" + ] + }, + "isSupport": { + "type": "boolean", + "description": "Whether this account belongs to Forward Networks support staff. `true` excludes the account from statistics\nshown on the Engagement dashboard." + }, + "lastActive": { + "type": "string", + "description": "The approximate time of the most recent authenticated request from this account", + "examples": [ + "2024-12-31T23:59:59.789Z" + ] + } + } + }, + "UserPatch": { + "type": "object", + "properties": { + "email": { + "type": "string", + "examples": [ + "me@example.com" + ] + }, + "username": { + "type": "string", + "description": "Changes the username of a user whose `authSource` is \"LOCAL\"", + "examples": [ + "me@example.com" + ] + }, + "password": { + "type": "string", + "description": "Assigns a new temporary password to a user whose `authSource` is \"LOCAL\". The user will be prompted to\nchoose a new password when they log in with this password.", + "examples": [ + "zF4H+K;5]qE~%9G=nbAk" + ] + }, + "isSupport": { + "type": "boolean", + "examples": [ + false + ] + }, + "enabled": { + "type": "boolean", + "examples": [ + true + ] + } + } + }, + "Users": { + "type": "object", + "properties": { + "users": { + "type": "array", + "items": { + "$ref": "#/components/schemas/User" + } + } + } + }, + "VulnerabilityAnalysis": { + "type": "object", + "required": [ + "vulnerabilities", + "offset", + "total", + "indexCreatedAt" + ], + "properties": { + "vulnerabilities": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Vulnerability" + } + }, + "offset": { + "type": "integer", + "format": "int32", + "description": "The number of vulnerabilities dropped from the front of `vulnerabilities` due to paging.", + "examples": [ + 200 + ] + }, + "total": { + "type": "integer", + "format": "int32", + "description": "The total number of vulnerabilities available in the analysis. This number can be larger than `offset` plus\nthe length of `vulnerabilities` if some have been dropped from the back of `vulnerabilities` due to paging.", + "examples": [ + 1234 + ] + }, + "indexCreatedAt": { + "type": "string", + "description": "When the CVE index used for analysis was created (epoch milliseconds)", + "examples": [ + "2025-06-01T12:34:56.789Z" + ] + }, + "indexUploadedAt": { + "type": "string", + "description": "When the CVE index used for analysis was uploaded to the server (epoch milliseconds)", + "examples": [ + "2025-06-03T04:05:06.007Z" + ] + }, + "indexUploadedBy": { + "type": "string", + "description": "The id of the `User` who uploaded the CVE index used for analysis", + "examples": [ + "345" + ] + } + } + }, + "VulnerabilityVendor": { + "type": "string", + "enum": [ + "CISCO", + "JUNIPER", + "ARISTA", + "PICA8", + "F5", + "A10", + "CHECKPOINT", + "HP", + "FORTINET", + "PALO_ALTO_NETWORKS", + "VMWARE", + "CITRIX", + "CUMULUS", + "RIVERBED", + "LINUX_GENERIC", + "SYMANTEC", + "AVI_NETWORKS", + "AVAYA", + "T128", + "ARUBA", + "VIASAT", + "SILVER_PEAK", + "PENSANDO", + "FORCEPOINT", + "NOKIA", + "VERSA", + "BROCADE", + "EXTREME", + "DELL", + "HUAWEI", + "GD", + "EDGE_CORE" + ] + }, + "VulnerabilityVendorOs": { + "type": "string", + "enum": [ + "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", + "avaya_sr", + "avaya_ers", + "viasat_encryptor", + "nokia", + "huawei_switch", + "versa_sase", + "versa_switch", + "brocade_switch", + "cisco_encs_nfv", + "extreme_nos", + "meraki_ms", + "meraki_mr", + "meraki_mx", + "mist_ap", + "dell_os6", + "dell_os9", + "dell_os10", + "dell_sonic", + "gd_encryptor", + "edge_core_sonic" + ] + }, + "VulnerabilityDetectionResult": { + "type": "object", + "required": [ + "device", + "vulnerable" + ], + "properties": { + "device": { + "type": "string", + "examples": [ + "dev01" + ] + }, + "vulnerable": { + "type": "boolean", + "description": "Absent if an error prevented analysis from completing", + "examples": [ + false + ] + }, + "fileLines": { + "type": "object", + "additionalProperties": { + "type": "array", + "items": { + "$ref": "#/components/schemas/LineRange" + } + }, + "description": "Relevant source file lines for the device and CVE", + "examples": [ + { + "dev01,configuration.txt": [ + { + "start": 117, + "end": 119 + } + ] + } + ] + } + } + }, + "Vulnerability": { + "type": "object", + "required": [ + "id", + "severity", + "vendor", + "os", + "osVersions", + "dependsOnConfig", + "detectionMethod" + ], + "properties": { + "id": { + "type": "string", + "description": "The Common Vulnerabilities and Exposures ([CVE](https://www.cve.org)) ID assigned to this vulnerability in\nthe National Vulnerability Database ([NVD](https://nvd.nist.gov))", + "examples": [ + "CVE-2019-0201" + ] + }, + "description": { + "type": "string", + "examples": [ + "An issue is present in Apache ZooKeeper 1.0.0 to 3.4.13 and 3.5.0-alpha to 3.5.4-beta. ZooKeeper\u2019s getACL()\ncommand\u2026" + ] + }, + "severity": { + "type": "string", + "examples": [ + "MEDIUM" + ], + "enum": [ + "NONE", + "LOW", + "MEDIUM", + "HIGH", + "CRITICAL" + ] + }, + "url": { + "type": "string", + "description": "URL of this vulnerability\u2019s vendor advisory, if available, or else the URL of the best source of information\nabout the vulnerability that\u2019s currently available", + "examples": [ + "https://www.a10networks.com/blog/cve-2016-0270-gcm-nonce-vulnerability" + ] + }, + "publishedDate": { + "type": "string", + "examples": [ + "2023-12-31" + ] + }, + "v2Score": { + "type": "number", + "format": "double", + "description": "Score assigned by the Common Vulnerability Scoring System ([CVSS](https://nvd.nist.gov/vuln-metrics/cvss))\nv2.0 standard", + "examples": [ + 6.1 + ] + }, + "v3Score": { + "type": "number", + "format": "double", + "description": "Score assigned by the Common Vulnerability Scoring System ([CVSS](https://nvd.nist.gov/vuln-metrics/cvss))\nv3.x standard", + "examples": [ + 9.8 + ] + }, + "v4Score": { + "type": "number", + "format": "double", + "description": "Score assigned by the Common Vulnerability Scoring System\n([CVSS](https://www.first.org/cvss/v4.0/specification-document)) v4.0 standard", + "examples": [ + 8.4 + ] + }, + "knownExploitSource": { + "type": "string", + "description": "`CISA` if the vulnerability is in the Cybersecurity and Infrastructure Security Agency\u2019s Known Exploited\nVulnerabilities ([KEV](https://www.cisa.gov/known-exploited-vulnerabilities-catalog)) catalog. `VENDOR` if\nthe vendor advisory (the page at `url`) indicates that the vulnerability has a known exploit. Absent\notherwise.", + "examples": [ + "CISA" + ], + "enum": [ + "CISA", + "VENDOR" + ] + }, + "weaknesses": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Common Weakness Enumeration ([CWE](https://cwe.mitre.org/about/new_to_cwe.html)) IDs associated with this\nCVE", + "examples": [ + "- CWE-123" + ] + }, + "vendor": { + "$ref": "#/components/schemas/VulnerabilityVendor", + "examples": [ + "ARISTA" + ] + }, + "os": { + "$ref": "#/components/schemas/VulnerabilityVendorOs", + "examples": [ + "arista_eos" + ] + }, + "osVersions": { + "type": "array", + "items": { + "type": "string" + }, + "examples": [ + "- 4.15.0F" + ] + }, + "dependsOnConfig": { + "type": "boolean", + "description": "Whether the CVE depends on configuration for this OS. Null if unknown.", + "examples": [ + true + ] + }, + "detectionMethod": { + "type": "string", + "description": "How the set of possibly matching devices was constructed. `CONFIG` means that the analysis was more thorough\nthan using just the OS version. The `CONFIG` method yields fewer false positives.", + "examples": [ + "OS_VERSION" + ], + "enum": [ + "OS_VERSION", + "CONFIG" + ] + }, + "devices": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Possibly impacted devices. Present when `detectionMethod` is \"OS_VERSION\".", + "examples": [ + "- dev01\n- dev02" + ] + }, + "deviceResults": { + "type": "array", + "items": { + "$ref": "#/components/schemas/VulnerabilityDetectionResult" + }, + "description": "Results of device configuration analysis for this vulnerability. Present when `detectionMethod`\nis \"CONFIG\"." + } + } + } + }, + "securitySchemes": { + "api_token": { + "type": "http", + "scheme": "basic" + } + }, + "parameters": { + "SnapshotId": { + "name": "snapshotId", + "in": "query", + "description": "An optional Snapshot id. If omitted, the network\u2019s latest processed Snapshot is used.", + "schema": { + "type": "string" + } + } + } + } +} diff --git a/Forward Networks/OpenAPIs/forward_networks-latest.json b/Forward Networks/OpenAPIs/forward_networks-latest.json new file mode 100644 index 0000000..0868335 --- /dev/null +++ b/Forward Networks/OpenAPIs/forward_networks-latest.json @@ -0,0 +1,11155 @@ +{ + "openapi": "3.1.0", + "info": { + "title": "Forward Networks", + "description": "Model and verify networks", + "version": "latest", + "x-vendor-api-version": "26.1", + "x-itential-curated": "Trimmed to 71 of 181 upstream operations covering network CRUD, classic/endpoint device inventory, credentials, jump servers, device tags, NQE queries, checks, path search, snapshot listing, and vulnerability analysis. See the repo README for the full scope and the full spec." + }, + "servers": [ + { + "url": "/api" + } + ], + "security": [ + { + "api_token": [] + } + ], + "paths": { + "/networks": { + "get": { + "tags": [ + "Networks" + ], + "summary": "Lists all networks", + "operationId": "getNetworksUsingGET", + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Network" + } + } + } + } + } + }, + "security": [ + { + "api_token": [] + } + ] + }, + "post": { + "tags": [ + "Networks" + ], + "summary": "Creates a network", + "operationId": "createNetworkUsingPOST", + "parameters": [ + { + "name": "name", + "in": "query", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Network" + } + } + } + } + }, + "security": [ + { + "api_token": [] + } + ] + } + }, + "/networks/{networkId}": { + "delete": { + "tags": [ + "Networks" + ], + "summary": "Deletes a network", + "operationId": "deleteNetworkUsingDELETE", + "parameters": [ + { + "name": "networkId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Network" + } + } + } + } + }, + "security": [ + { + "api_token": [] + } + ] + }, + "patch": { + "tags": [ + "Networks" + ], + "summary": "Updates a network", + "description": "All JSON properties in the request body are optional. Include only the properties you wish to\nchange.", + "operationId": "updateNetworkUsingPATCH", + "parameters": [ + { + "name": "networkId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/NetworkUpdate" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Network" + } + } + } + } + }, + "security": [ + { + "api_token": [] + } + ] + } + }, + "/networks/{networkId}/devices": { + "get": { + "tags": [ + "Network Devices" + ], + "summary": "Gets a network\u2019s devices", + "description": "All glob filter parameters ignore case and support [the common glob\nwildcards](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\n(because it\u2019s 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\n(because it\u2019s 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\"`\nproperty (because collection succeeded). Use `?collectionError=*` to request devices that had a collection\nerror of any kind.", + "schema": { + "type": "string" + } + }, + { + "name": "processingError", + "in": "query", + "description": "`\"processingError\"` glob filter. Use `?processingError=` to request devices with no `\"processingError\"`\nproperty (because processing succeeded). Use `?processingError=*` to request devices that had a processing\nerror 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" + } + } + }, + { + "$ref": "#/components/parameters/SnapshotId" + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Device" + } + } + } + } + }, + "409": { + "description": "The system is currently processing this Snapshot.\n\nNote: GET /networks/{networkId}/snapshots/latestProcessed can be used to determine when processing of the\nlatest Snapshot is done or to identify an alternate Snapshot that has already been processed.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorInfo" + } + } + } + } + }, + "security": [ + { + "api_token": [] + } + ] + } + }, + "/networks/{networkId}/devices/{deviceName}": { + "get": { + "tags": [ + "Network Devices" + ], + "summary": "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" + } + } + }, + { + "$ref": "#/components/parameters/SnapshotId" + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Device" + } + } + } + }, + "409": { + "description": "The system is currently processing this Snapshot.\n\nNote: GET /networks/{networkId}/snapshots/latestProcessed can be used to determine when processing of the\nlatest Snapshot is done or to identify an alternate Snapshot that has already been processed.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorInfo" + } + } + } + } + }, + "security": [ + { + "api_token": [] + } + ] + } + }, + "/networks/{networkId}/devices/{deviceName}/files": { + "get": { + "tags": [ + "Network Devices" + ], + "summary": "Lists a device\u2019s data files", + "operationId": "getDeviceFilesUsingGET", + "parameters": [ + { + "name": "networkId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "deviceName", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "$ref": "#/components/parameters/SnapshotId" + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DeviceFiles" + } + } + } + }, + "409": { + "description": "The system is currently processing this Snapshot.\n\nNote: GET /networks/{networkId}/snapshots/latestProcessed can be used to determine when processing of the\nlatest Snapshot is done or to identify an alternate Snapshot that has already been processed.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorInfo" + } + } + } + } + }, + "security": [ + { + "api_token": [] + } + ] + } + }, + "/networks/{networkId}/devices/{deviceName}/files/{fileName}": { + "get": { + "tags": [ + "Network Devices" + ], + "summary": "Gets device data file content", + "description": "Most device data files are text files. Some are binary. A file\u2019s 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" + } + }, + { + "$ref": "#/components/parameters/SnapshotId" + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "text/plain;charset=utf-8": { + "schema": { + "type": "string", + "format": "byte" + } + }, + "application/octet-stream": { + "schema": { + "type": "string", + "format": "byte" + } + } + } + }, + "409": { + "description": "The system is currently processing this Snapshot.\n\nNote: GET /networks/{networkId}/snapshots/latestProcessed can be used to determine when processing of the\nlatest 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" + } + } + } + } + }, + "security": [ + { + "api_token": [] + } + ] + } + }, + "/networks/{networkId}/missing-devices": { + "get": { + "tags": [ + "Network Devices" + ], + "summary": "Gets a network\u2019s missing devices", + "description": "Returns devices that are listed as CDP, LLDP, iBGP or OSPF neighbors of modeled devices but that aren\u2019t yet\nincluded in the network model.", + "operationId": "getMissingDevicesUsingGET", + "parameters": [ + { + "name": "networkId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "$ref": "#/components/parameters/SnapshotId" + } + ], + "responses": { + "200": { + "description": "OK. Devices are sorted by number of neighbors (most first) and secondarily by name.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/MissingDevices" + } + } + } + }, + "409": { + "description": "The system is currently processing this Snapshot.\n\nNote: GET /networks/{networkId}/snapshots/latestProcessed can be used to determine when processing of the\nlatest Snapshot is done or to identify an alternate Snapshot that has already been processed.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorInfo" + } + } + } + } + }, + "security": [ + { + "api_token": [] + } + ] + } + }, + "/networks/{networkId}/classic-devices": { + "get": { + "tags": [ + "Classic Devices" + ], + "summary": "Gets a network\u2019s classic devices", + "operationId": "getClassicDevicesUsingGET", + "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": "Adds a new classic device", + "operationId": "addClassicDeviceUsingPOST", + "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": "Updates specific classic devices", + "description": "All JSON properties in the `update` object are optional. Include only the properties you wish\nto change.", + "operationId": "patchClassicDevicesUsingPATCH", + "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/{deviceName}": { + "get": { + "tags": [ + "Classic Devices" + ], + "summary": "Gets a classic device", + "operationId": "getClassicDeviceUsingGET", + "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": "Adds or updates a classic device", + "operationId": "putClassicDeviceUsingPUT", + "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": [] + } + ] + }, + "delete": { + "tags": [ + "Classic Devices" + ], + "summary": "Deletes a classic device", + "operationId": "deleteClassicDeviceUsingDELETE", + "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": [] + } + ] + }, + "patch": { + "tags": [ + "Classic Devices" + ], + "summary": "Updates a classic device", + "description": "All JSON properties in the request body are optional. Include only the properties you wish to\nchange.", + "operationId": "patchClassicDeviceUsingPATCH", + "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": [] + } + ] + } + }, + "/endpoint-profiles": { + "get": { + "tags": [ + "Network Endpoints" + ], + "summary": "Gets the endpoint profiles", + "operationId": "getEndpointProfilesUsingGET", + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/EndpointProfiles" + } + } + } + } + }, + "security": [ + { + "api_token": [] + } + ] + } + }, + "/endpoint-profiles/{profileId}": { + "get": { + "tags": [ + "Network Endpoints" + ], + "summary": "Gets an endpoint profile", + "operationId": "getEndpointProfileUsingGET", + "parameters": [ + { + "name": "profileId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/EndpointProfile" + } + } + } + } + }, + "security": [ + { + "api_token": [] + } + ] + }, + "delete": { + "tags": [ + "Network Endpoints" + ], + "summary": "Deletes an endpoint profile", + "operationId": "deleteEndpointProfileUsingDELETE", + "parameters": [ + { + "name": "profileId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "204": { + "description": "No Content", + "content": {} + } + }, + "security": [ + { + "api_token": [] + } + ] + } + }, + "/endpoint-profiles?type=CLI": { + "post": { + "tags": [ + "Network Endpoints" + ], + "summary": "Adds a new CLI endpoint profile", + "operationId": "createCliEndpointProfileUsingPOST", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CliEndpointProfileDef" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/EndpointProfile" + } + } + } + } + }, + "security": [ + { + "api_token": [] + } + ] + } + }, + "/endpoint-profiles?type=HTTP": { + "post": { + "tags": [ + "Network Endpoints" + ], + "summary": "Adds a new HTTP endpoint profile", + "operationId": "createHttpEndpointProfileUsingPOST", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HttpEndpointProfileDef" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/EndpointProfile" + } + } + } + } + }, + "security": [ + { + "api_token": [] + } + ] + } + }, + "/endpoint-profiles?type=SNMP": { + "post": { + "tags": [ + "Network Endpoints" + ], + "summary": "Adds a new SNMP endpoint profile", + "operationId": "createSnmpEndpointProfileUsingPOST", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SnmpEndpointProfileDef" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/EndpointProfile" + } + } + } + } + }, + "security": [ + { + "api_token": [] + } + ] + } + }, + "/endpoint-profiles/CLI-{profileId}": { + "patch": { + "tags": [ + "Network Endpoints" + ], + "summary": "Updates a CLI endpoint profile", + "operationId": "updateCliEndpointProfileUsingPATCH", + "parameters": [ + { + "name": "profileId", + "in": "path", + "description": "Profile ID (the numeric part)", + "required": true, + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CliEndpointProfilePatch" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/EndpointProfile" + } + } + } + } + }, + "security": [ + { + "api_token": [] + } + ] + } + }, + "/endpoint-profiles/HTTP-{profileId}": { + "patch": { + "tags": [ + "Network Endpoints" + ], + "summary": "Updates an HTTP endpoint profile", + "operationId": "updateHttpEndpointProfileUsingPATCH", + "parameters": [ + { + "name": "profileId", + "in": "path", + "description": "Profile ID (the numeric part)", + "required": true, + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HttpEndpointProfilePatch" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/EndpointProfile" + } + } + } + } + }, + "security": [ + { + "api_token": [] + } + ] + } + }, + "/endpoint-profiles/SNMP-{profileId}": { + "patch": { + "tags": [ + "Network Endpoints" + ], + "summary": "Updates an SNMP endpoint profile", + "operationId": "updateSnmpEndpointProfileUsingPATCH", + "parameters": [ + { + "name": "profileId", + "in": "path", + "description": "Profile ID (the numeric part)", + "required": true, + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SnmpEndpointProfilePatch" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/EndpointProfile" + } + } + } + } + }, + "security": [ + { + "api_token": [] + } + ] + } + }, + "/networks/{networkId}/endpoints": { + "get": { + "tags": [ + "Network Endpoints" + ], + "summary": "Gets a network\u2019s endpoints", + "operationId": "getNetworkEndpointsUsingGET", + "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/NetworkEndpoints" + } + } + } + } + }, + "security": [ + { + "api_token": [] + } + ] + } + }, + "/networks/{networkId}/endpoints/{endpointName}": { + "get": { + "tags": [ + "Network Endpoints" + ], + "summary": "Gets a network endpoint", + "operationId": "getNetworkEndpointUsingGET", + "parameters": [ + { + "name": "networkId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "endpointName", + "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/NetworkEndpoint" + } + } + } + } + }, + "security": [ + { + "api_token": [] + } + ] + }, + "delete": { + "tags": [ + "Network Endpoints" + ], + "summary": "Deletes a network endpoint", + "operationId": "deleteNetworkEndpointUsingDELETE", + "parameters": [ + { + "name": "networkId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "endpointName", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "204": { + "description": "No Content", + "content": {} + } + }, + "security": [ + { + "api_token": [] + } + ] + } + }, + "/networks/{networkId}/endpoints?type=CLI": { + "post": { + "tags": [ + "Network Endpoints" + ], + "summary": "Adds a CLI network endpoint", + "operationId": "createCliNetworkEndpointUsingPOST", + "parameters": [ + { + "name": "networkId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/NewCliNetworkEndpoint" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CliNetworkEndpoint" + } + } + } + } + }, + "security": [ + { + "api_token": [] + } + ] + } + }, + "/networks/{networkId}/endpoints?type=HTTP": { + "post": { + "tags": [ + "Network Endpoints" + ], + "summary": "Adds an HTTP network endpoint", + "operationId": "createHttpNetworkEndpointUsingPOST", + "parameters": [ + { + "name": "networkId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/NewHttpNetworkEndpoint" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HttpNetworkEndpoint" + } + } + } + } + }, + "security": [ + { + "api_token": [] + } + ] + } + }, + "/networks/{networkId}/endpoints?type=SNMP": { + "post": { + "tags": [ + "Network Endpoints" + ], + "summary": "Adds an SNMP network endpoint", + "operationId": "createSnmpNetworkEndpointUsingPOST", + "parameters": [ + { + "name": "networkId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/NewSnmpNetworkEndpoint" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SnmpNetworkEndpoint" + } + } + } + } + }, + "security": [ + { + "api_token": [] + } + ] + } + }, + "/networks/{networkId}/endpoints/{endpointName}?type=CLI": { + "patch": { + "tags": [ + "Network Endpoints" + ], + "summary": "Updates a CLI network endpoint", + "description": "All JSON properties in the request body are optional. Include only the properties you wish to\nchange.", + "operationId": "updateCliNetworkEndpointUsingPATCH", + "parameters": [ + { + "name": "networkId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "endpointName", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CliNetworkEndpointPatch" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CliNetworkEndpoint" + } + } + } + } + }, + "security": [ + { + "api_token": [] + } + ] + } + }, + "/networks/{networkId}/endpoints/{endpointName}?type=HTTP": { + "patch": { + "tags": [ + "Network Endpoints" + ], + "summary": "Updates an HTTP network endpoint", + "description": "All JSON properties in the request body are optional. Include only the properties you wish to\nchange.", + "operationId": "updateHttpNetworkEndpointUsingPATCH", + "parameters": [ + { + "name": "networkId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "endpointName", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HttpNetworkEndpointPatch" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HttpNetworkEndpoint" + } + } + } + } + }, + "security": [ + { + "api_token": [] + } + ] + } + }, + "/networks/{networkId}/endpoints/{endpointName}?type=SNMP": { + "patch": { + "tags": [ + "Network Endpoints" + ], + "summary": "Updates an SNMP network endpoint", + "description": "All JSON properties in the request body are optional. Include only the properties you wish to\nchange.", + "operationId": "updateSnmpNetworkEndpointUsingPATCH", + "parameters": [ + { + "name": "networkId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "endpointName", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SnmpNetworkEndpointPatch" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SnmpNetworkEndpoint" + } + } + } + } + }, + "security": [ + { + "api_token": [] + } + ] + } + }, + "/networks/{networkId}/cli-credentials": { + "get": { + "tags": [ + "Credentials" + ], + "summary": "Lists network device CLI credentials", + "description": "Substitutes a system-generated identifier for each sensitive `password`.", + "operationId": "getCliCredentialsUsingGET", + "parameters": [ + { + "name": "networkId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/StoredCliCredential" + } + } + } + } + } + }, + "security": [ + { + "api_token": [] + } + ] + }, + "post": { + "tags": [ + "Credentials" + ], + "summary": "Creates a network device CLI credential", + "operationId": "createCliCredentialUsingPOST", + "parameters": [ + { + "name": "networkId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/NewCliCredential" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CliCredential" + } + } + } + } + }, + "security": [ + { + "api_token": [] + } + ] + }, + "patch": { + "tags": [ + "Credentials" + ], + "summary": "Creates network device CLI credentials", + "description": "The response contains the same credentials as the request, in the same order.", + "operationId": "createCliCredentialsUsingPATCH", + "parameters": [ + { + "name": "networkId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/NewCliCredential" + } + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/StoredCliCredential" + } + } + } + } + } + }, + "security": [ + { + "api_token": [] + } + ] + } + }, + "/networks/{networkId}/cli-credentials/{credentialId}": { + "get": { + "tags": [ + "Credentials" + ], + "summary": "Gets a network device CLI credential", + "description": "Substitutes a system-generated identifier for the sensitive `password`.", + "operationId": "getCliCredentialUsingGET", + "parameters": [ + { + "name": "networkId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "credentialId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/StoredCliCredential" + } + } + } + } + }, + "security": [ + { + "api_token": [] + } + ] + }, + "delete": { + "tags": [ + "Credentials" + ], + "summary": "Deletes a network device CLI credential", + "operationId": "deleteCliCredentialUsingDELETE", + "parameters": [ + { + "name": "networkId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "credentialId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "204": { + "description": "No Content", + "content": {} + } + }, + "security": [ + { + "api_token": [] + } + ] + }, + "patch": { + "tags": [ + "Credentials" + ], + "summary": "Updates a network device CLI credential", + "description": "All JSON properties in the request body are optional. Include only the properties you wish to\nchange.", + "operationId": "patchCliCredentialUsingPATCH", + "parameters": [ + { + "name": "networkId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "credentialId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CliCredentialUpdate" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/StoredCliCredential" + } + } + } + } + }, + "security": [ + { + "api_token": [] + } + ] + } + }, + "/networks/{networkId}/http-credentials": { + "get": { + "tags": [ + "Credentials" + ], + "summary": "Lists network device HTTP credentials", + "description": "Substitutes a system-generated identifier for each sensitive `password`.", + "operationId": "getHttpCredentialsUsingGET", + "parameters": [ + { + "name": "networkId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/StoredHttpCredential" + } + } + } + } + } + }, + "security": [ + { + "api_token": [] + } + ] + }, + "post": { + "tags": [ + "Credentials" + ], + "summary": "Creates a network device HTTP credential", + "operationId": "createHttpCredentialUsingPOST", + "parameters": [ + { + "name": "networkId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/NewHttpCredential" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HttpCredential" + } + } + } + } + }, + "security": [ + { + "api_token": [] + } + ] + }, + "patch": { + "tags": [ + "Credentials" + ], + "summary": "Creates network device HTTP credentials", + "description": "The response contains the same credentials as the request, in the same order.", + "operationId": "createHttpCredentialsUsingPATCH", + "parameters": [ + { + "name": "networkId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/NewHttpCredential" + } + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/StoredHttpCredential" + } + } + } + } + } + }, + "security": [ + { + "api_token": [] + } + ] + } + }, + "/networks/{networkId}/http-credentials/{credentialId}": { + "get": { + "tags": [ + "Credentials" + ], + "summary": "Gets a network device HTTP credential", + "description": "Substitutes a system-generated identifier for the sensitive `password`.", + "operationId": "getHttpCredentialUsingGET", + "parameters": [ + { + "name": "networkId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "credentialId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/StoredHttpCredential" + } + } + } + } + }, + "security": [ + { + "api_token": [] + } + ] + }, + "delete": { + "tags": [ + "Credentials" + ], + "summary": "Deletes a network device HTTP credential", + "operationId": "deleteHttpCredentialUsingDELETE", + "parameters": [ + { + "name": "networkId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "credentialId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "204": { + "description": "No Content", + "content": {} + } + }, + "security": [ + { + "api_token": [] + } + ] + }, + "patch": { + "tags": [ + "Credentials" + ], + "summary": "Updates a network device HTTP credential", + "description": "All JSON properties in the request body are optional. Include only the properties you wish to\nchange.", + "operationId": "patchHttpCredentialUsingPATCH", + "parameters": [ + { + "name": "networkId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "credentialId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HttpCredentialUpdate" + } + } + }, + "required": true + }, + "responses": { + "204": { + "description": "No Content", + "content": {} + } + }, + "security": [ + { + "api_token": [] + } + ] + } + }, + "/networks/{networkId}/jumpServers": { + "get": { + "tags": [ + "Jump Servers" + ], + "summary": "Lists a network\u2019s jump servers", + "description": "Substitutes a system-generated identifier for each sensitive `password` and `sshKey`.", + "operationId": "getJumpServersUsingGET", + "parameters": [ + { + "name": "networkId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/StoredJumpServer" + } + } + } + } + } + }, + "security": [ + { + "api_token": [] + } + ] + }, + "post": { + "tags": [ + "Jump Servers" + ], + "summary": "Creates a jump server", + "operationId": "createJumpServerUsingPOST", + "parameters": [ + { + "name": "networkId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/NewJumpServer" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/JumpServer" + } + } + } + } + }, + "security": [ + { + "api_token": [] + } + ] + } + }, + "/networks/{networkId}/jumpServers/{jumpServerId}": { + "delete": { + "tags": [ + "Jump Servers" + ], + "summary": "Deletes a jump server", + "operationId": "deleteJumpServerUsingDELETE", + "parameters": [ + { + "name": "networkId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "jumpServerId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "object" + } + } + } + } + }, + "security": [ + { + "api_token": [] + } + ] + }, + "patch": { + "tags": [ + "Jump Servers" + ], + "summary": "Updates a jump server", + "description": "All JSON properties in the request body are optional. Include only the properties you wish to\nchange.", + "operationId": "editJumpServerUsingPATCH", + "parameters": [ + { + "name": "networkId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "jumpServerId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/JumpServerUpdate" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "object" + } + } + } + } + }, + "security": [ + { + "api_token": [] + } + ] + } + }, + "/networks/{networkId}/device-tags": { + "get": { + "tags": [ + "Device Tags" + ], + "summary": "Gets all device tags", + "operationId": "getDeviceTagsUsingGET", + "parameters": [ + { + "name": "networkId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DeviceTags" + } + } + } + } + }, + "security": [ + { + "api_token": [] + } + ] + }, + "post": { + "tags": [ + "Device Tags" + ], + "summary": "Creates a device tag", + "operationId": "addDeviceTagUsingPOST", + "parameters": [ + { + "name": "networkId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DeviceTag" + } + } + }, + "required": true + }, + "responses": { + "201": { + "description": "Created", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DeviceTag" + } + } + } + } + }, + "security": [ + { + "api_token": [] + } + ] + } + }, + "/networks/{networkId}/device-tags/{tagName}": { + "get": { + "tags": [ + "Device Tags" + ], + "summary": "Gets a device tag", + "operationId": "getDeviceTagUsingGET", + "parameters": [ + { + "name": "networkId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "tagName", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DeviceTag" + } + } + } + } + }, + "security": [ + { + "api_token": [] + } + ] + }, + "delete": { + "tags": [ + "Device Tags" + ], + "summary": "Deletes a device tag", + "description": "**Warning:** This operation deletes the device tag from the network completely. It removes the tag from all\ndevices and endpoints in all the network\u2019s Snapshots.", + "operationId": "deleteDeviceTagUsingDELETE", + "parameters": [ + { + "name": "networkId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "tagName", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "204": { + "description": "No Content", + "content": {} + } + }, + "security": [ + { + "api_token": [] + } + ] + }, + "patch": { + "tags": [ + "Device Tags" + ], + "summary": "Updates a device tag", + "description": "All JSON properties in the request body are optional. Include only the properties you wish to\nchange.", + "operationId": "updateDeviceTagUsingPATCH", + "parameters": [ + { + "name": "networkId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "tagName", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DeviceTagPatch" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DeviceTag" + } + } + } + } + }, + "security": [ + { + "api_token": [] + } + ] + } + }, + "/nqe": { + "post": { + "tags": [ + "NQE" + ], + "summary": "Runs an NQE query on a Snapshot.", + "operationId": "runNqeQueryUsingPOST", + "parameters": [ + { + "name": "networkId", + "in": "query", + "description": "The ID of the Network to query. Required unless the `snapshotId` parameter is provided.", + "schema": { + "type": "string" + } + }, + { + "$ref": "#/components/parameters/SnapshotId" + } + ], + "requestBody": { + "description": "Each property in the example request body is explained here. To see a detailed explanation of all properties\nallowed in the request body, switch from the \"Example Value\" tab to the \"Schema\" tab.\n\n- The `query` property contains query source code. Use this to run a query directly.\n- The `queryId` property contains the Query ID of a committed query in NQE Library. Use `queryId` to run a query identified by its Query ID.\n- The `commitId` property contains a Commit ID of the query identified by the `queryId` property. Use `commitId` to run a specific version of a committed query.\n- The `queryOptions` property contains refinements of the result set and/or specifies the JSON format. - The `offset` property specifies the starting row to include in the response. For example, an\n offset of 200 would return rows starting from the 200th row. If not specified, an `offset` of 0 will\n be used.\n - The `limit` property specifies the maximum number of rows to include in the response. For\n example, a limit of 1,000 indicates that up to 1,000 rows starting from the given offset should be\n included in the response. If not set, a `limit` of 1,000 will be used. The maximum value for `limit`\n is 10,000.\n - The `sortBy` property specifies which column to sort by. It can be omitted.\n - The `columnFilters` property specifies a collection of conditions on column values. The response\n will only include rows satisfying all specified column filters.\n - In the sample below, up to 100 rows are requested, starting from row 20, from the result set\n consisting of all the rows, sorted by the \"deviceName\" column in ascending order and limited to those\n rows whose \"deviceName\" field contains \"ATL\", rendered with JSON arrays and objects instead of\n strings.\n- The `parameters` property contains a JSON object providing the values for the parameters to use while executing the query for this request. The provided parameter values must match the parameter types\n declared in the NQE query. This property can be omitted or the empty object if the query has no declared\n parameters.\n - In the sample below, values for \"mtuThreshold\" and \"ntpServers\" are specified. The query must\n define parameters \"mtuThreshold\" of type `Integer` and \"ntpServers\" of type `List` for\n these values to be valid.\n\nNote that the sample JSON object contains both the `query` and `queryId` properties and therefore is NOT a\nlegal request. If you use this example for testing, make sure to remove one of them.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/NqeQueryRunRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "The response is an object containing two fields: a `\"snapshotId\"` field, that indicates the Snapshot that\nthe query was run against, and an `\"items\"` field, that contains the query's results.\n\nThe `\"items\"` field contains an array of objects that resulted from the query. Each object in the `\"items\"`\narray, is either a \"basic\" value or a list of \"basic\" values, where a \"basic\" value is either a number,\nboolean, string, or null.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/NqeRunResult" + } + } + } + }, + "400": { + "description": "The query did not complete successfully. For example, the query could not be parsed, the column filters were\ninvalid, or the query timed out or was cancelled during execution. The response will contain\n`\"completionType\"`, `\"errors\"`, and `\"snapshotId\"` fields that provide detailed information onthe errors.\nSee model for more information.\n\nNOTE: A 400 code can also be thrown for other errors, such as a lack of permission to execute the query, or\na request that specified a Query ID for a deleted query without also specifying a Commit ID. In such cases,\nthe `\"completionType\"`, `\"errors\"`, and `\"snapshotId\"` fields will be omitted from the response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/NqeErrorInfo" + } + } + } + } + }, + "security": [ + { + "api_token": [] + } + ] + } + }, + "/nqe-diffs/{before}/{after}": { + "post": { + "tags": [ + "NQE" + ], + "summary": "Diffs the results of two NQE queries between two Snapshots.", + "operationId": "getNqeQueryDiffUsingPOST", + "parameters": [ + { + "name": "before", + "in": "path", + "description": "The ID for the Snapshot to base the diff on.", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "after", + "in": "path", + "description": "The ID for the Snapshot to diff against the base Snapshot.", + "required": true, + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "description": "The `queryId` property contains a Query ID of a query in NQE Library (this can be found in the information\ncallout of a query listed in the Queries pane). The `commitId` property contains a Commit ID of the query\nidentified by `queryId` (this can also be found in either the information callout in the Queries pane, or in\nthe callout in the Versions view dropdown). Use `commitId` to run a specific version of the query.\n\nThe `options` property is optional and can be used to refine the result set and/or specify the JSON format.\nIn the sample object below, `options` requests up to 100 rows, starting from row 20, from the result set\nconsisting of all the rows, sorted by \"Name\" column in ascending order and limited to those rows whose\n\"Name\" field contains \"ATL\", rendered with JSON arrays and objects instead of strings. The `options`\nproperty also allows for sorting and filtering on the diff change type column. To do this, set the\n`columnName` value on either the `sortBy` or `columnFilters` field to \"ChangeType\". It has three possible\nvalues: \"MODIFIED\", \"ADDED\", or \"DELETED\".\n\nThe `parameters` property can be omitted if the query has no declared parameters. If the query declares\nparameters, the `parameters` property should contain a JSON object providing the values for the parameters\nto use while executing the query for this request. The provided parameter values must match the parameter\ntypes declared in the NQE query.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/NqeDiffRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "The response is an object containing two fields: `totalNumValues`, indicating the total number of\ndifferences per row that the query has across the two given snapshots, and `rows`, containing an array of\nobjects indicating the differences between two rows in the query result.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/NqeDiffResult" + } + } + } + }, + "400": { + "description": "The diff request did not complete successfully. For example, the query indicated by `queryId` could be\ninvalid, the `options` for the query were invalid, the query and/or diff timed out or was cancelled during\nexecution, or the user does not have permission to execute the query.", + "content": {} + } + }, + "security": [ + { + "api_token": [] + } + ] + } + }, + "/nqe/queries": { + "get": { + "tags": [ + "NQE" + ], + "summary": "Lists all NQE queries", + "operationId": "getNqeQueriesUsingGET", + "parameters": [ + { + "name": "dir", + "in": "query", + "description": "If specified, include only queries in the given directory. The directory must start and end with a forward\nslash, such as `/L3/Advanced/`.", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/NqeQuery" + } + } + } + } + } + }, + "security": [ + { + "api_token": [] + } + ] + } + }, + "/predefinedChecks": { + "get": { + "tags": [ + "Checks" + ], + "summary": "Gets available Predefined checks", + "operationId": "getAvailablePredefinedChecksUsingGET", + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/AvailablePredefinedCheck" + } + } + } + } + } + }, + "security": [ + { + "api_token": [] + } + ] + } + }, + "/snapshots/{snapshotId}/checks": { + "get": { + "tags": [ + "Checks" + ], + "summary": "Gets checks (with status)", + "operationId": "getChecksUsingGET", + "parameters": [ + { + "name": "snapshotId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "type", + "in": "query", + "description": "Can be repeated to request multiple types (as in `?type=NQE&type=Predefined`) or omitted to request all\ntypes.", + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/CheckType" + } + } + }, + { + "name": "priority", + "in": "query", + "description": "Can be repeated to request multiple priorities (as in `?priority=HIGH&priority=LOW`) or omitted to request\nall priorities.", + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/CheckPriority" + } + } + }, + { + "name": "status", + "in": "query", + "description": "Can be repeated to request multiple statuses (as in `?status=FAIL&status=ERROR`) or omitted to request all\nstatuses.\n\n**Note:** The response will never contain results with `status` NONE or PROCESSING. The server will wait to\nrespond, if necessary, until processing finishes or times out.", + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/CheckStatus" + } + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/NetworkCheckResult" + } + } + } + } + }, + "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\nlatest Snapshot is done or to identify an alternate Snapshot that has already been processed.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorInfo" + } + } + } + } + }, + "security": [ + { + "api_token": [] + } + ] + }, + "post": { + "tags": [ + "Checks" + ], + "summary": "Adds a check", + "description": "Note that the returned NetworkCheckResult will never have status of type NONE or PROCESSING", + "operationId": "addCheckUsingPOST", + "parameters": [ + { + "name": "snapshotId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "persistent", + "in": "query", + "description": "Whether to associate check with any later snapshots (including future snapshots) too", + "schema": { + "type": "boolean", + "default": true + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/NewNetworkCheck" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/NetworkCheckResult" + } + } + } + }, + "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\nlatest Snapshot is done or to identify an alternate Snapshot that has already been processed.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorInfo" + } + } + } + } + }, + "security": [ + { + "api_token": [] + } + ] + }, + "delete": { + "tags": [ + "Checks" + ], + "summary": "Deactivates all checks", + "operationId": "deactivateChecksUsingDELETE", + "parameters": [ + { + "name": "snapshotId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "object" + } + } + } + } + }, + "security": [ + { + "api_token": [] + } + ] + } + }, + "/snapshots/{snapshotId}/checks/{checkId}": { + "get": { + "tags": [ + "Checks" + ], + "summary": "Gets a check (with status)", + "description": "Note that the returned NetworkCheckResults will never have status of type NONE or PROCESSING", + "operationId": "getSingleCheckUsingGET", + "parameters": [ + { + "name": "snapshotId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "checkId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/NetworkCheckResultWithDiagnosis" + } + } + } + }, + "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\nlatest Snapshot is done or to identify an alternate Snapshot that has already been processed.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorInfo" + } + } + } + } + }, + "security": [ + { + "api_token": [] + } + ] + }, + "delete": { + "tags": [ + "Checks" + ], + "summary": "Deactivates a check", + "operationId": "deactivateCheckUsingDELETE", + "parameters": [ + { + "name": "snapshotId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "checkId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "object" + } + } + } + } + }, + "security": [ + { + "api_token": [] + } + ] + } + }, + "/l7-applications": { + "get": { + "tags": [ + "Path Search" + ], + "summary": "Lists known L7 applications", + "operationId": "getL7ApplicationsUsingGET", + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/L7Application" + } + } + } + } + } + }, + "security": [ + { + "api_token": [] + } + ] + } + }, + "/networks/{networkId}/paths": { + "get": { + "tags": [ + "Path Search" + ], + "summary": "Searches for paths by tracing packets through the network", + "operationId": "getPathsUsingGET", + "parameters": [ + { + "name": "networkId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "from", + "in": "query", + "description": "the device from which the traffic originates. If this is specified, then the srcIp will be considered as a\npacket header only, else, the srcIp will be resolved to specific location(s) and used as the source in the\npath search. Either the source device or srcIp must be specified.", + "schema": { + "type": "string" + } + }, + { + "name": "srcIp", + "in": "query", + "description": "the source IP address or subnet of packets entering the network. For multicast (*, G) paths, set srcIp = G\n(multicast group address).", + "schema": { + "type": "string" + } + }, + { + "name": "dstIp", + "in": "query", + "description": "the destination IP address or subnet of packets entering the network. For multicast (*, G) paths, set dstIp\n= G (multicast group address).", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "intent", + "in": "query", + "description": "Specifies the intent for the search. Default PREFER_DELIVERED.\n*PREFER_VIOLATIONS*: Prefer paths that result in the traffic not getting delivered, e.g. drops, blackholes,\nloops. An example usage is while trying to evaluate if the specified traffic always gets delivered to the\ndestination along all path choices.\n*PREFER_DELIVERED*: Prefer paths that result in the traffic getting delivered. An example usage is while\ntrying to evaluate if traffic gets delivered to the destination along any path choice.\n*VIOLATIONS_ONLY*: Search for paths where traffic is not delivered to the destination.", + "schema": { + "$ref": "#/components/schemas/SearchIntent", + "default": "PREFER_DELIVERED" + } + }, + { + "name": "ipProto", + "in": "query", + "description": "the IP protocol", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "srcPort", + "in": "query", + "description": "the L4 source port, like \"80\" or a range \"8080-8088\"", + "schema": { + "type": "string" + } + }, + { + "name": "dstPort", + "in": "query", + "description": "the L4 destination port, like \"80\" or a range \"8080-8088\"", + "schema": { + "type": "string" + } + }, + { + "name": "icmpType", + "in": "query", + "description": "the ICMP type. Implies ipProto = 1.", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "fin", + "in": "query", + "description": "the FIN (finish) bit (0 or 1). Implies ipProto = 6.", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "syn", + "in": "query", + "description": "the SYN (synchronize) bit (0 or 1). Implies ipProto = 6.", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "rst", + "in": "query", + "description": "the RST (reset) bit (0 or 1). Implies ipProto = 6.", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "psh", + "in": "query", + "description": "the PSH (push) bit (0 or 1). Implies ipProto = 6.", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "ack", + "in": "query", + "description": "the ACK (acknowledgment) bit (0 or 1). Implies ipProto = 6.", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "urg", + "in": "query", + "description": "the URG (urgent) bit (0 or 1). Implies ipProto = 6.", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "appId", + "in": "query", + "description": "the L7 app-id or \"unidentified\" to exclude paths that traverse firewall policies with app-id matches. If the\nsystem doesn't recognize the provided value, it handles the value the same as \"unidentified\" and includes\nthe value in the `unrecognizedValues` response field. The applications that are recognized by the model can\nbe obtained using GET /api/l7-applications.", + "schema": { + "type": "string" + } + }, + { + "name": "userId", + "in": "query", + "description": "the L7 user-id or \"unidentified\" to exclude paths that traverse firewall policies with user-id matches. If\nthe system doesn't recognize the provided value, it handles the value the same as \"unidentified\" and\nincludes the value in the `unrecognizedValues` response field. See [Path Analysis with Layer 7\nUser-Group](/docs/application/search/path-analysis/layer7_ugroup/) for more info.", + "schema": { + "type": "string" + } + }, + { + "name": "userGroupId", + "in": "query", + "description": "the L7 user-group-id. If the system doesn't recognize the provided value, the search returns 0 results as\nthere are no paths that traverse firewall policies with that user-group-id match, and the value is included\nin the `unrecognizedValues` response field. See [Path Analysis with Layer 7\nUser-Group](/docs/application/search/path-analysis/layer7_ugroup/) for more info.", + "schema": { + "type": "string" + } + }, + { + "name": "url", + "in": "query", + "description": "the L7 URL that traffic of interest is trying to access. Prefix wildcards are supported for subdomains.\nSuffix wildcards are supported for top-level domains and URL paths. See [Path Analysis with Layer 7\nURL](/docs/application/search/path-analysis/layer7_url/) for more policy patterns supported in\nthe model.", + "schema": { + "type": "string" + } + }, + { + "name": "includeTags", + "in": "query", + "description": "If true, the response will include device tags for each hop.", + "schema": { + "type": "boolean", + "default": false + } + }, + { + "name": "includeNetworkFunctions", + "in": "query", + "description": "If true, the response includes detailed forwarding info for each hop.\nNote: Setting this to true increases the API response time.", + "schema": { + "type": "boolean", + "default": false + } + }, + { + "name": "maxCandidates", + "in": "query", + "description": "the limit on the number of search results computed, before applying any ranking criteria. Permitted range =\n1 to 10,000. Default 5,000.", + "schema": { + "type": "integer", + "format": "int32", + "default": 5000 + } + }, + { + "name": "maxResults", + "in": "query", + "description": "the limit on the number of search results returned by the API. First, the platform computes up to\nmaxCandidates results that match the search criteria. Then they are sorted by various ranking criteria. A\nkey ranking factor is path length, preferring longer paths (greatest reach) in the network over shorter\nones. Finally, the API limits the number of returned search results to maxResults. Permitted range = 1 to\nmaxCandidates. Default 1.", + "schema": { + "type": "integer", + "format": "int32", + "default": 1 + } + }, + { + "name": "maxReturnPathResults", + "in": "query", + "description": "the limit on the number of return path search results. Permitted range = 0 to 10,000. Default 0. Multicast\n(*, G) and (S, G) queries will always return 0 return path results regardless of this value.", + "schema": { + "type": "integer", + "format": "int32", + "default": 0 + } + }, + { + "name": "maxSeconds", + "in": "query", + "description": "the timeout duration. Permitted range = 1 to 300. Default 30.", + "schema": { + "type": "integer", + "format": "int32", + "default": 30 + } + }, + { + "$ref": "#/components/parameters/SnapshotId" + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PathSearchResponse" + } + } + } + }, + "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\nlatest Snapshot is done or to identify an alternate Snapshot that has already been processed.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorInfo" + } + } + } + } + }, + "security": [ + { + "api_token": [] + } + ] + } + }, + "/networks/{networkId}/paths-bulk": { + "post": { + "tags": [ + "Path Search" + ], + "summary": "Searches for paths by tracing sets of packets through the network", + "operationId": "getPathsBulkUsingPOST", + "parameters": [ + { + "name": "networkId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "$ref": "#/components/parameters/SnapshotId" + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PathSearchBulkRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "The response is an array containing a result (a `PathSearchResponse` or an error object) for each query in\nthe request, in the same order. An error object has an `\"error\": true` property. Each query is evaluated\nindependently.", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/PathSearchResponse" + } + } + } + } + }, + "400": { + "description": "The request failed input validation. For example, a request parameter is outside the permitted range or an\ninput path search query had an invalid IP protocol and ICMP type combination.", + "content": {} + }, + "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\nlatest Snapshot is done or to identify an alternate Snapshot that has already been processed.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorInfo" + } + } + } + } + }, + "security": [ + { + "api_token": [] + } + ] + } + }, + "/networks/{networkId}/snapshots": { + "get": { + "tags": [ + "Network Snapshots" + ], + "summary": "Lists all Snapshots", + "operationId": "listNetworkSnapshotsUsingGET", + "parameters": [ + { + "name": "networkId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "state", + "in": "query", + "description": "List only Snapshots in this state.", + "schema": { + "$ref": "#/components/schemas/SnapshotState" + } + }, + { + "name": "minSuccessfulDevices", + "in": "query", + "description": "List only Snapshots with at least this many successfully modeled devices.", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "minSuccessfulDevicePct", + "in": "query", + "description": "List only Snapshots with at least this percentage of devices successfully modeled.", + "schema": { + "type": "number", + "format": "double" + } + }, + { + "name": "maxCollectionFailureDevices", + "in": "query", + "description": "List only Snapshots with no more than this many devices from which collection has failed.", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "maxCollectionFailureDevicePct", + "in": "query", + "description": "List only Snapshots with no more than this percentage of devices from which collection has\nfailed.", + "schema": { + "type": "number", + "format": "double" + } + }, + { + "name": "maxParsingFailureDevices", + "in": "query", + "description": "List only Snapshots with no more than this many devices for which parsing of collected data has\nfailed.", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "maxParsingFailureDevicePct", + "in": "query", + "description": "List only Snapshots with no more than this percentage of devices for which parsing of collected data has\nfailed.", + "schema": { + "type": "number", + "format": "double" + } + }, + { + "name": "limit", + "in": "query", + "description": "Maximum number of Snapshots desired", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "includeArchived", + "in": "query", + "description": "Also include archived snapshots. Defaults to false if not provided.", + "schema": { + "type": "boolean", + "default": false + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/NetworkSnapshots" + } + } + } + } + }, + "security": [ + { + "api_token": [] + } + ] + }, + "post": { + "tags": [ + "Network Snapshots" + ], + "summary": "Imports a Snapshot", + "description": "Imports a network Snapshot that was previously exported as a .zip file. If multiple Snapshot .zip files are\nuploaded in a single request, they will be merged. They must not have any devices in common.", + "operationId": "createSnapshotUsingPOST", + "parameters": [ + { + "name": "networkId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "multipart/form-data": { + "schema": { + "type": "object", + "required": [ + "file" + ], + "properties": { + "file": { + "type": "array", + "items": { + "type": "string", + "format": "binary" + } + }, + "note": { + "type": "string" + } + } + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SnapshotInfo" + } + } + } + } + }, + "security": [ + { + "api_token": [] + } + ] + } + }, + "/networks/{networkId}/snapshots/latestProcessed": { + "get": { + "tags": [ + "Network Snapshots" + ], + "summary": "Returns the latest processed Snapshot", + "description": "Returns the latest processed Snapshot (the most recent one that's currently prepared for [path\nsearches](#path-search) and [new checks](#checks)).\n\nTriggers processing of the latest Snapshot if it's not already underway and the network has no processed\nSnapshots.", + "operationId": "getLatestProcessedSnapshotUsingGET", + "parameters": [ + { + "name": "networkId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Processing is complete for the identified Snapshot.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SnapshotInfo" + } + } + } + }, + "404": { + "description": "The network has no Snapshots.", + "content": {} + }, + "409": { + "description": "None of the Snapshots in the network are processed. Processing of the latest Snapshot has\nbegun.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorInfo" + } + } + } + } + }, + "security": [ + { + "api_token": [] + } + ] + } + }, + "/networks/{networkId}/vulnerabilities": { + "get": { + "tags": [ + "Vulnerability Analysis" + ], + "summary": "Gets vulnerabilities and possibly impacted devices", + "operationId": "getVulnerabilitiesUsingGET", + "parameters": [ + { + "name": "networkId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "$ref": "#/components/parameters/SnapshotId" + }, + { + "name": "offset", + "in": "query", + "description": "An optional number of vulnerabilities to skip. Useful for paging. Defaults to 0.", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "limit", + "in": "query", + "description": "An optional maximum number of vulnerabilities desired. Useful for paging. Defaults to 1000.", + "schema": { + "type": "integer", + "format": "int32" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/VulnerabilityAnalysis" + } + } + } + }, + "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\nlatest Snapshot is done or to identify an alternate Snapshot that has already been processed.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorInfo" + } + } + } + } + }, + "security": [ + { + "api_token": [] + } + ] + } + } + }, + "components": { + "schemas": { + "NqeDiffResult": { + "type": "object", + "properties": { + "rows": { + "type": "array", + "items": { + "$ref": "#/components/schemas/NqeDiffEntry" + }, + "description": "The NQE query diff's rows, as a list of objects. Each object represents either an added row, a deleted row,\nor a modified row. In the case of a modified row, the before and after rows are matched up by their values\non the key columns for the before and after tables. In particular, the key columns are the smallest set of\nleft-most columns that uniquely identify rows within the before table and the after table." + }, + "totalNumRows": { + "type": "integer", + "format": "int32", + "description": "The number of diff rows that would be present if there was no limit.\nIf there are column filters, then it should be the number of rows that satisfy the column filters (if there\nwere no limit)." + } + } + }, + "NqeDiffEntry": { + "type": "object", + "properties": { + "after": { + "$ref": "#/components/schemas/NqeRecord", + "description": "The record returned by the query against the 'after' snapshot. Not present if `type` is\n\"DELETED\"." + }, + "before": { + "$ref": "#/components/schemas/NqeRecord", + "description": "The record returned by the query against the 'before' snapshot. Not present if `type` is\n\"ADDED\"." + }, + "type": { + "type": "string", + "description": "Describes the type of difference between `before` and `after`:\n* If \"MODIFIED\", then both `before` and `after` will be present, but will differ in at least one field;\n* If \"ADDED\", then only `after` will be present;\n* If \"DELETED\", then only `before` will be present.", + "enum": [ + "ADDED", + "DELETED", + "MODIFIED" + ] + } + }, + "description": "Represents a diff entry between two records returned by the same NQE query." + }, + "NqeRecord": { + "type": "object", + "properties": { + "fields": { + "type": "object", + "additionalProperties": { + "$ref": "#/components/schemas/CellValue" + } + } + } + }, + "CellValue": { + "type": "object" + }, + "NewCliCredential": { + "type": "object", + "required": [ + "type", + "name", + "password" + ], + "properties": { + "type": { + "$ref": "#/components/schemas/CliCredentialType", + "examples": [ + "LOGIN" + ] + }, + "name": { + "type": "string", + "description": "For display purposes in the application", + "examples": [ + "admin (sjc)" + ] + }, + "username": { + "type": "string", + "description": "Required for `LOGIN` and `SHELL` types", + "examples": [ + "admin" + ] + }, + "password": { + "type": "string", + "examples": [ + "my-s3cr3t-p4s$w0rd" + ] + }, + "privilegedModePasswordId": { + "type": "string", + "description": "Only valid for `LOGIN` type. If set, only this credential will be used on devices that require a privileged\nmode password during a connectivity test or collection. If a privileged mode password is specified both here\nand in a `ClassicDevice`, the one in the `ClassicDevice` will be used.", + "examples": [ + "31d70f9f-a279-44ac-a621-ab3181966ad8" + ] + }, + "privilegeLevel": { + "type": "integer", + "format": "int32", + "description": "Only valid for `PRIVILEGED_MODE` type. On Checkpoint devices, this is used as the TACACS privilege level, as\nin TACP-15. If absent, the highest privilege level will be used. Has no effect for other kinds of devices.", + "examples": [ + 15 + ] + }, + "autoAssociate": { + "type": "boolean", + "description": "Whether this credential can be attempted on devices not explicitly configured to use it.\nDefaults to true." + } + } + }, + "CliCredentialType": { + "type": "string", + "enum": [ + "LOGIN", + "PRIVILEGED_MODE", + "EXPERT_MODE", + "SHELL" + ] + }, + "AvailablePredefinedCheck": { + "type": "object", + "properties": { + "description": { + "type": "string" + }, + "name": { + "type": "string" + }, + "predefinedCheckType": { + "$ref": "#/components/schemas/PredefinedCheckType" + } + } + }, + "PredefinedCheckType": { + "type": "string", + "enum": [ + "BGP_NEIGHBOR_ADJACENCY", + "BGP_ROUTER_ID", + "BGP_ROUTE_CONSISTENCY", + "BGP_VPC_PARAMETER_CONSISTENCY", + "EBGP_SELECTION_OVER_IBGP", + "BGP_COMMUNITY_LIST", + "NEXT_HOP_REACHABILITY", + "NO_LOOP", + "SHORTEST_PATH", + "IP_UNIQUENESS", + "HOSTNAME_CONSISTENCY", + "HOSTNAME_UNIQUENESS", + "VLAN_CONSISTENCY", + "MTU_CONSISTENCY", + "PORT_CHANNEL_CONSISTENCY", + "DUPLEX_CONSISTENCY", + "LINK_SPEED_CONSISTENCY", + "SOFTWARE_VERSION_CONSISTENCY", + "TRUNK_INTERFACE_WHITELIST", + "VLAN_EXISTENCE", + "LEARNED_MAC_CONSISTENCY", + "FHRP_PEERING", + "VPC_PARAMETER_CONSISTENCY", + "VPC_INTERFACE_PARAMETER_CONSISTENCY", + "VPC_DEDICATED_KEEPALIVE_LINK", + "VPC_ROLE_PRIORITY", + "SSH_RSA_KEY_LENGTH", + "VPC_STP_PRIORITY", + "VPC_MST_REGION_CONSISTENCY" + ] + }, + "NewHttpNetworkEndpoint": { + "type": "object", + "required": [ + "type", + "name", + "host" + ], + "properties": { + "type": { + "type": "string", + "const": "HTTP" + }, + "name": { + "type": "string", + "description": "A name that\u2019s unique (ignoring case) among all of the network\u2019s collection source names. May consist of\nletters, digits, dots, hyphens, and underscores.", + "examples": [ + "my-endpoint" + ] + }, + "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\nfor HTTPS, etc.", + "examples": [ + 22 + ] + }, + "profileId": { + "type": "string", + "description": "ID of the endpoint profile to use. Auto-detected during connectivity testing if unspecified.", + "examples": [ + "HTTP-4" + ] + }, + "credentialId": { + "type": "string", + "description": "The `id` of an HttpCredential. The type of the credential must match the HttpAuthStrategy of the endpoint\u2019s\nassigned or discovered profile (see `authType` in HttpEndpointProfileDef). Credential auto-association will\nbe attempted using credentials configured to allow it if this property is unspecified and collecting from\nthis endpoint requires this kind of credential.", + "examples": [ + "H-5" + ] + }, + "disableSslValidation": { + "type": "boolean", + "description": "Whether to skip TLS validation. Can be useful for an endpoint whose certificate isn\u2019t trusted. Not\nrecommended. Defaults to false.", + "examples": [ + false + ] + }, + "collect": { + "type": "boolean", + "description": "Whether to collect from this network endpoint. Defaults to true.", + "examples": [ + true + ] + }, + "note": { + "type": "string", + "description": "An optional description or note about this network endpoint.", + "examples": [ + "Yada yada yada" + ] + } + } + }, + "StoredCliCredential": { + "allOf": [ + { + "$ref": "#/components/schemas/CliCredential" + }, + { + "$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\nexist 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\ndeleted.", + "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\nmight 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\nbeen deleted.", + "examples": [ + "you@example.com" + ] + } + } + }, + "CliCredential": { + "type": "object", + "required": [ + "type", + "name", + "password" + ], + "properties": { + "id": { + "type": "string", + "examples": [ + "L-3" + ] + }, + "type": { + "$ref": "#/components/schemas/CliCredentialType", + "examples": [ + "LOGIN" + ] + }, + "name": { + "type": "string", + "description": "For display purposes in the application", + "examples": [ + "admin (sjc)" + ] + }, + "username": { + "type": "string", + "description": "Required for `LOGIN` and `SHELL` types", + "examples": [ + "admin" + ] + }, + "password": { + "type": "string", + "description": "A system-generated identifier is substituted for the actual password in responses.", + "examples": [ + "my-s3cr3t-p4s$w0rd" + ] + }, + "privilegedModePasswordId": { + "type": "string", + "description": "Only valid for `LOGIN` type. If set, only this credential will be used on devices that require a privileged\nmode password during a connectivity test or collection. If a privileged mode password is specified both here\nand in a `ClassicDevice`, the one in the `ClassicDevice` will be used.", + "examples": [ + "PM-6" + ] + }, + "privilegeLevel": { + "type": "integer", + "format": "int32", + "description": "Only valid for `PRIVILEGED_MODE` type. On Checkpoint devices, this is used as the TACACS privilege level, as\nin TACP-15. If absent, the highest privilege level will be used. Has no effect for other kinds of devices.", + "examples": [ + 15 + ] + }, + "autoAssociate": { + "type": "boolean", + "description": "Whether this credential can be attempted on devices not explicitly configured to use it.\nDefaults to true." + } + } + }, + "CliEndpointProfilePatch": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Name of this profile (\"HpPrinter\", \"SamsungTV\", etc.). Omit to leave this property alone.", + "examples": [ + "sentry_pdu_ssh" + ] + }, + "detectorCommand": { + "type": "string", + "description": "CLI command to run to detect a network endpoint of this type. If absent, the profile can be manually\nassigned to a network endpoint, but not auto-detected. Use `null` to clear. Omit to leave this property\nalone.", + "examples": [ + "version" + ] + }, + "detectorPatterns": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Patterns matching on output of `detectorCommand` to determine whether the device is of this type. Absent if\n`detectorCommand` is absent. Never empty. Use `null` to clear. Omit to leave this property alone.", + "examples": [ + "- Sentry Switched PDU" + ] + }, + "detectorErrorPatterns": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Patterns matching an error message if a device doesn\u2019t recognize `detectorCommand`. Use `null` to clear.\nOmit to leave this property alone.", + "examples": [ + "- Invalid command\n- 'Switched PDU commands:'" + ] + }, + "nameDetectorCommand": { + "type": "string", + "description": "Command to use to detect the name of a network endpoint of this type. If absent, the name cannot be\ndetected. Use `null` to clear. Omit to leave this property alone.", + "examples": [ + "show network" + ] + }, + "nameDetectorPatterns": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Glob patterns used to extract the device name from the output of `nameDetectorCommand`. The word immediately\nafter a matched glob pattern is the desired name. If no glob patterns are specified, the first word/token in\nthe `nameDetectorCommand` output will be used. Use `null` to clear. Omit to leave this property alone.", + "examples": [ + "- FQDN:*enabled" + ] + }, + "prompt": { + "type": "string", + "description": "A case-insensitive glob pattern used to identify an interactive console menu prompt. When this pattern\nmatches the end of the prompt, ignoring any trailing whitespace, the Collector will enter the configured\n`promptResponse`. Use `null` to clear. Omit to leave this property alone.", + "examples": [ + "y/n" + ] + }, + "promptResponse": { + "type": "string", + "description": "What the Collector should enter in response to an interactive console menu prompt matching `prompt` in order\nto proceed. Required if `prompt` is set. Use `null` to clear. Omit to leave this property alone.", + "examples": [ + "y" + ] + }, + "pagePrompt": { + "type": "string", + "description": "Case-insensitive glob pattern used to identify a new page banner. Works like `prompt`. If the device doesn\u2019t\ngenerate paginated command output or if paging is like the \u201cmore\u201d command, omit this property. Use `null` to\nclear. Omit to leave this property alone.", + "examples": [ + "continue\\?" + ] + }, + "pagePromptResponse": { + "type": "string", + "description": "What the Collector should enter in response to an interactive pagination prompt detected via `pagePrompt` in\norder to proceed. Required if `pagePrompt` is set. Use `null` to clear. Omit to leave this property alone.", + "examples": [ + "c" + ] + }, + "ptyType": { + "type": "string", + "description": "Device\u2019s terminal type (\"xterm-256color\", \"vt100\", etc.). Use `null` to clear. Omit to leave this property\nalone.", + "examples": [ + "vt100" + ] + }, + "ptyColumnSize": { + "type": "integer", + "format": "int32", + "description": "Column size of the output. Defaults to 500. Use `null` to clear. Omit to leave this property\nalone.", + "examples": [ + 240 + ] + }, + "clearPrompt": { + "type": "string", + "description": "Command to clear the prompt. Can be specified like \"ctrl-[a-z]\" or \"ctrl+[a-z]\". Defaults to \"ctrl+c\". Use\n`null` to clear. Omit to leave this property alone.", + "examples": [ + "ctrl+z" + ] + }, + "responseTimeoutSec": { + "type": "integer", + "format": "int32", + "description": "Timeout in seconds applied to this profile\u2019s CLI commands run during discovery and collection. Use `null` to\nclear. Omit to leave this property alone.", + "examples": [ + 15 + ] + }, + "commandSets": { + "type": "array", + "items": { + "$ref": "#/components/schemas/CommandSet" + }, + "description": "Predefined command sets to run on network endpoints with this profile. The \"UNIX\" set includes the commands\n\"ifconfig\", \"netstat -ln\", \"hostname\", and \"uname -a\". Use `null` to clear. Omit to leave this property\nalone.", + "examples": [ + "- UNIX" + ] + }, + "customCommands": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Additional commands to run on network endpoints with this profile. Commands should be read-only. Use `null`\nto clear. Omit to leave this property alone.", + "examples": [ + "- uptime\n- iptables -L" + ] + } + } + }, + "CommandSet": { + "type": "string", + "const": "UNIX" + }, + "CheckStatus": { + "type": "string", + "enum": [ + "NONE", + "PASS", + "FAIL", + "ERROR", + "TIMEOUT", + "PROCESSING" + ] + }, + "VulnerabilityAnalysis": { + "type": "object", + "required": [ + "vulnerabilities", + "offset", + "total", + "indexCreatedAt" + ], + "properties": { + "vulnerabilities": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Vulnerability" + } + }, + "offset": { + "type": "integer", + "format": "int32", + "description": "The number of vulnerabilities dropped from the front of `vulnerabilities` due to paging.", + "examples": [ + 200 + ] + }, + "total": { + "type": "integer", + "format": "int32", + "description": "The total number of vulnerabilities available in the analysis. This number can be larger than `offset` plus\nthe length of `vulnerabilities` if some have been dropped from the back of `vulnerabilities` due to paging.", + "examples": [ + 1234 + ] + }, + "indexCreatedAt": { + "type": "string", + "description": "When the CVE index used for analysis was created (epoch milliseconds)", + "examples": [ + "2025-06-01T12:34:56.789Z" + ] + }, + "indexUploadedAt": { + "type": "string", + "description": "When the CVE index used for analysis was uploaded to the server (epoch milliseconds)", + "examples": [ + "2025-06-03T04:05:06.007Z" + ] + }, + "indexUploadedBy": { + "type": "string", + "description": "The id of the `User` who uploaded the CVE index used for analysis", + "examples": [ + "345" + ] + } + } + }, + "Vulnerability": { + "type": "object", + "required": [ + "id", + "severity", + "vendor", + "os", + "osVersions", + "dependsOnConfig", + "detectionMethod" + ], + "properties": { + "id": { + "type": "string", + "description": "The Common Vulnerabilities and Exposures ([CVE](https://www.cve.org)) ID assigned to this vulnerability in\nthe National Vulnerability Database ([NVD](https://nvd.nist.gov))", + "examples": [ + "CVE-2019-0201" + ] + }, + "description": { + "type": "string", + "examples": [ + "An issue is present in Apache ZooKeeper 1.0.0 to 3.4.13 and 3.5.0-alpha to 3.5.4-beta. ZooKeeper\u2019s getACL()\ncommand\u2026" + ] + }, + "severity": { + "type": "string", + "examples": [ + "MEDIUM" + ], + "enum": [ + "NONE", + "LOW", + "MEDIUM", + "HIGH", + "CRITICAL" + ] + }, + "url": { + "type": "string", + "description": "URL of this vulnerability\u2019s vendor advisory, if available, or else the URL of the best source of information\nabout the vulnerability that\u2019s currently available", + "examples": [ + "https://www.a10networks.com/blog/cve-2016-0270-gcm-nonce-vulnerability" + ] + }, + "publishedDate": { + "type": "string", + "examples": [ + "2023-12-31" + ] + }, + "v2Score": { + "type": "number", + "format": "double", + "description": "Score assigned by the Common Vulnerability Scoring System ([CVSS](https://nvd.nist.gov/vuln-metrics/cvss))\nv2.0 standard", + "examples": [ + 6.1 + ] + }, + "v3Score": { + "type": "number", + "format": "double", + "description": "Score assigned by the Common Vulnerability Scoring System ([CVSS](https://nvd.nist.gov/vuln-metrics/cvss))\nv3.x standard", + "examples": [ + 9.8 + ] + }, + "v4Score": { + "type": "number", + "format": "double", + "description": "Score assigned by the Common Vulnerability Scoring System\n([CVSS](https://www.first.org/cvss/v4.0/specification-document)) v4.0 standard", + "examples": [ + 8.4 + ] + }, + "knownExploitSource": { + "type": "string", + "description": "`CISA` if the vulnerability is in the Cybersecurity and Infrastructure Security Agency\u2019s Known Exploited\nVulnerabilities ([KEV](https://www.cisa.gov/known-exploited-vulnerabilities-catalog)) catalog. `VENDOR` if\nthe vendor advisory (the page at `url`) indicates that the vulnerability has a known exploit. Absent\notherwise.", + "examples": [ + "CISA" + ], + "enum": [ + "CISA", + "VENDOR" + ] + }, + "weaknesses": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Common Weakness Enumeration ([CWE](https://cwe.mitre.org/about/new_to_cwe.html)) IDs associated with this\nCVE", + "examples": [ + "- CWE-123" + ] + }, + "vendor": { + "$ref": "#/components/schemas/VulnerabilityVendor", + "examples": [ + "ARISTA" + ] + }, + "os": { + "$ref": "#/components/schemas/VulnerabilityVendorOs", + "examples": [ + "arista_eos" + ] + }, + "osVersions": { + "type": "array", + "items": { + "type": "string" + }, + "examples": [ + "- 4.15.0F" + ] + }, + "dependsOnConfig": { + "type": "boolean", + "description": "Whether the CVE depends on configuration for this OS. Null if unknown.", + "examples": [ + true + ] + }, + "detectionMethod": { + "type": "string", + "description": "How the set of possibly matching devices was constructed. `CONFIG` means that the analysis was more thorough\nthan using just the OS version. The `CONFIG` method yields fewer false positives.", + "examples": [ + "OS_VERSION" + ], + "enum": [ + "OS_VERSION", + "CONFIG" + ] + }, + "devices": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Possibly impacted devices. Present when `detectionMethod` is \"OS_VERSION\".", + "examples": [ + "- dev01\n- dev02" + ] + }, + "deviceResults": { + "type": "array", + "items": { + "$ref": "#/components/schemas/VulnerabilityDetectionResult" + }, + "description": "Results of device configuration analysis for this vulnerability. Present when `detectionMethod`\nis \"CONFIG\"." + } + } + }, + "VulnerabilityDetectionResult": { + "type": "object", + "required": [ + "device", + "vulnerable" + ], + "properties": { + "device": { + "type": "string", + "examples": [ + "dev01" + ] + }, + "vulnerable": { + "type": "boolean", + "description": "Absent if an error prevented analysis from completing", + "examples": [ + false + ] + }, + "fileLines": { + "type": "object", + "additionalProperties": { + "type": "array", + "items": { + "$ref": "#/components/schemas/LineRange" + } + }, + "description": "Relevant source file lines for the device and CVE", + "examples": [ + { + "dev01,configuration.txt": [ + { + "start": 117, + "end": 119 + } + ] + } + ] + } + } + }, + "LineRange": { + "type": "object", + "properties": { + "start": { + "type": "integer", + "format": "int32", + "description": "The 0-based index of the first line in the range.", + "examples": [ + 23 + ] + }, + "end": { + "type": "integer", + "format": "int32", + "description": "The 0-based index of the last line in the range (inclusive).", + "examples": [ + 27 + ] + } + } + }, + "VulnerabilityVendorOs": { + "type": "string", + "enum": [ + "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", + "avaya_sr", + "avaya_ers", + "viasat_encryptor", + "nokia", + "huawei_switch", + "versa_sase", + "versa_switch", + "brocade_switch", + "cisco_encs_nfv", + "extreme_nos", + "meraki_ms", + "meraki_mr", + "meraki_mx", + "mist_ap", + "dell_os6", + "dell_os9", + "dell_os10", + "dell_sonic", + "gd_encryptor", + "edge_core_sonic" + ] + }, + "VulnerabilityVendor": { + "type": "string", + "enum": [ + "CISCO", + "JUNIPER", + "ARISTA", + "PICA8", + "F5", + "A10", + "CHECKPOINT", + "HP", + "FORTINET", + "PALO_ALTO_NETWORKS", + "VMWARE", + "CITRIX", + "CUMULUS", + "RIVERBED", + "LINUX_GENERIC", + "SYMANTEC", + "AVI_NETWORKS", + "AVAYA", + "T128", + "ARUBA", + "VIASAT", + "SILVER_PEAK", + "PENSANDO", + "FORCEPOINT", + "NOKIA", + "VERSA", + "BROCADE", + "EXTREME", + "DELL", + "HUAWEI", + "GD", + "EDGE_CORE" + ] + }, + "DeviceTagPatch": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "The device tag\u2019s name. Case-insensitive. May include spaces.", + "examples": [ + "SEC" + ] + }, + "color": { + "type": "string", + "description": "The device tag\u2019s color in RGB hex format. Used in network topology diagrams if specified.", + "examples": [ + "#0064a0" + ] + } + } + }, + "HttpCredential": { + "type": "object", + "required": [ + "type", + "name", + "password" + ], + "properties": { + "id": { + "type": "string", + "examples": [ + "H-3" + ] + }, + "type": { + "$ref": "#/components/schemas/HttpCredentialType", + "examples": [ + "LOGIN" + ] + }, + "name": { + "type": "string", + "description": "For display purposes in the application", + "examples": [ + "admin (sjc)" + ] + }, + "username": { + "type": "string", + "description": "Required for the `LOGIN` type", + "examples": [ + "admin" + ] + }, + "password": { + "type": "string", + "description": "A system-generated identifier is substituted for the actual password in responses.", + "examples": [ + "my-s3cr3t-p4s$w0rd" + ] + }, + "loginType": { + "$ref": "#/components/schemas/LoginType", + "description": "Required only for a credential of type `LOGIN` used by a Silver Peak Orchestrator", + "examples": [ + "LOCAL" + ] + }, + "autoAssociate": { + "type": "boolean", + "description": "Defaults to true for the `LOGIN` type. Not allowed for the `API_KEY` type.", + "examples": [ + false + ] + } + } + }, + "HttpCredentialType": { + "type": "string", + "enum": [ + "LOGIN", + "API_KEY" + ] + }, + "LoginType": { + "type": "string", + "enum": [ + "LOCAL", + "RADIUS", + "TACACS", + "OAUTH", + "JWT", + "SAML" + ] + }, + "ClassicDevicePatch": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "A name that\u2019s unique (ignoring case) among all of the network\u2019s collection source names. May consist of\nletters, 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\nalone.", + "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\nproperty 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\nfor 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\nauto-association will be attempted using credentials configured to allow it if this property is unspecified\nand collecting from this device requires this kind of credential. Use `null` to clear. Omit to leave the\nproperty 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\nAvi controllers). On Checkpoint, this credential is used for TACACS privilege escalation. Credential\nauto-association will be attempted using credentials configured to allow it if this property is unspecified\nand collecting from this device requires this kind of credential. Use `null` to clear. Omit to leave the\nproperty 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\n`PRIVILEGED_MODE` credential for `cliCredential2Id`. Credential auto-association will be attempted using\ncredentials configured to allow it if this property is unspecified and collecting from this device requires\nthis 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\nHTTP. Credential auto-association will be attempted using credentials configured to allow it if this\nproperty is unspecified and collecting from this device requires this kind of credential. Use `null` to\nclear. 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\ntrue. Credential auto-association will be attempted using credentials configured to allow it if this\nproperty is unspecified and collecting from this device requires this kind of credential. Use `null` to\nclear. 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\nleave the property alone.", + "examples": [ + "J-0" + ] + }, + "disableIpv6Collection": { + "type": "boolean", + "description": "Disables collection of any IPv6 forwarding state on the device. Defaults to false. Use `null` to clear. Omit\nto leave the property alone.", + "examples": [ + false + ] + }, + "fullCollectionLog": { + "type": "boolean", + "description": "Enables more detailed logging during collection. Defaults to false. Use `null` to clear. Omit to leave the\nproperty alone.", + "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\n`DISABLE_PAGINATION`. Per-command pagination (such as appending `| more`) may be used if set to\n`ENABLE_PAGINATION` for a device that doesn\u2019t have a per-session pagination mode setting. Use `null` to\nclear. Omit to leave the property alone.", + "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.\nRelevant for devices collected via SSH or Telnet. Use `null` to clear. Omit to leave the property alone.", + "examples": [ + 500 + ] + }, + "largeRtt": { + "type": "boolean", + "description": "Whether the device has a large round-trip time (requires a longer response timeout). Use `null` to clear.\nOmit to leave the property alone.", + "examples": [ + false + ] + }, + "minBytesReadPerSec": { + "type": "integer", + "format": "int64", + "description": "The minimum read rate in bytes/sec required to prevent collection from failing with a\n`SLOW_READ_RATE_DETECTED` error. Defaults to 500. Use `null` to clear. Omit to leave the property alone.", + "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\ncan prevent spurious connectivity test failures if the device\u2019s SSH server is configured with a connection\nrate limit. Use `null` to clear. Omit to leave the property alone.", + "examples": [ + 10 + ] + }, + "useFileTransferForLargeOutput": { + "type": "boolean", + "description": "Whether to use file transfer instead of printing large command output directly to the shell. This is\ncurrently only supported for Juniper devices when executing routing table commands. The primary purpose is\nto avoid printing large outputs directly to the shell, which on Juniper devices can interfere with packet\nforwarding performance. Instead, the command output is written to a temporary file on the device and then\ntransferred over a separate connection. After the transfer is complete, the temporary file is deleted to\nprevent unnecessary disk usage on the device. Use `null` to clear. Omit to leave the property alone.", + "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\nset, a jump server won\u2019t be used for BMP collection. Use `null` to clear. Omit to leave the property alone.", + "examples": [ + "10.121.7.33" + ] + }, + "bgpAndBmpFailureHandling": { + "type": "string", + "description": "How to handle BGP or BMP collection failure. Defaults to `FAIL_DEVICE`. Use `null` to clear. Omit to leave\nthe property alone.", + "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\nrequired to model a [synthetic device](#synthetic-devices) connected to this device. Use `null` to clear.\nOmit to leave the property alone.", + "examples": [ + false + ] + }, + "bgpTableType": { + "type": "string", + "description": "The BGP route types to collect. Honored only if `collectedBgpAdvertisements` is true. Defaults to `BOTH`.\nUse `null` to clear. Omit to leave the property alone.", + "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.\nDefaults to `BOTH`. Use `null` to clear. Omit to leave the property alone.", + "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\n`collectBgpAdvertisements` is `true`. Use `null` to clear. Omit to leave the property alone.", + "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\nthe prompt, ignoring any trailing whitespace, the Collector will enter the configured `promptResponse`.\nRelevant for devices collected via SSH or Telnet. Use `null` to clear. Omit to leave the property alone.", + "examples": [ + "y/n" + ] + }, + "promptResponse": { + "type": "string", + "description": "What the Collector should enter in response to a device prompt matching `prompt` in order to proceed.\nRelevant for devices collected via SSH or Telnet. Required if `prompt` is set. Use `null` to clear. Omit to\nleave the property alone.", + "examples": [ + "y" + ] + }, + "collect": { + "type": "boolean", + "description": "Whether to collect from the device. Defaults to true. Use `null` to clear. Omit to leave the\nproperty alone.", + "examples": [ + false + ] + }, + "note": { + "type": "string", + "description": "An optional description or note about the device. Use `null` to clear. Omit to leave the\nproperty alone." + }, + "enableSnmpCollection": { + "type": "boolean", + "description": "Whether to collect performance data (counters) via SNMP. Defaults to false. Use `null` to clear. Omit to\nleave the property alone.", + "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%). Use `null` to clear. Omit\nto leave the property alone.", + "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%). Use `null` to clear.\nOmit to leave the property alone.", + "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%). Use\n`null` to clear. Omit to leave the property alone.", + "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%). Use\n`null` to clear. Omit to leave the property alone.", + "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. Use `null` to clear.\nOmit to leave the property alone.", + "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. Use `null` to\nclear. Omit to leave the property alone.", + "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. Use\n`null` to clear. Omit to leave the property alone.", + "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.\nUse `null` to clear. Omit to leave the property alone.", + "examples": [ + 0.73 + ] + } + } + }, + "ClassicDeviceType": { + "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", + "linux_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", + "viasat_encryptor_snmp3", + "netscaler_ssh", + "cumulus_ssh", + "riverbed_steelhead_ssh", + "riverbed_interceptor_ssh", + "cisco_ucs_ssh", + "avaya_sr_ssh", + "avaya_sr_telnet", + "avaya_ers_ssh", + "avaya_ers_telnet", + "silver_peak_edgeconnect_ssh", + "silver_peak_orchestrator_api", + "prisma_sdwan_ssh", + "prisma_sdwan_api", + "pensando_api", + "forcepoint_https_api", + "forcepoint_http_api", + "forcepoint_ssh", + "cisco_sdwan_ssh", + "cisco_sdwan_vsmart_ssh", + "bluecat_http", + "bluecat_https", + "bluecat_v2_http", + "bluecat_v2_https", + "nokia_ssh", + "brocade_switch_ssh", + "versa_flexvnf_ssh", + "versa_switch_ssh", + "cisco_encs_nfv_ssh", + "extreme_switch_ssh", + "mist_dashboard_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", + "gem1_api", + "taclane_encryptor_snmp", + "sonic_edge_core_ssh" + ] + }, + "PaginationMode": { + "type": "string", + "enum": [ + "KEEP_UNCHANGED", + "DISABLE_PAGINATION", + "ENABLE_PAGINATION" + ] + }, + "NewClassicDevice": { + "type": "object", + "required": [ + "name", + "host" + ], + "properties": { + "name": { + "type": "string", + "description": "A name that\u2019s unique (ignoring case) among all of the network\u2019s collection source names. May consist of\nletters, 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\nfor 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\nauto-association will be attempted using credentials configured to allow it if this property is unspecified\nand 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\nAvi controllers). On Checkpoint, this credential is used for TACACS privilege escalation. Credential\nauto-association will be attempted using credentials configured to allow it if this property is unspecified\nand 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\n`PRIVILEGED_MODE` credential for `cliCredential2Id`. Credential auto-association will be attempted using\ncredentials configured to allow it if this property is unspecified and collecting from this device requires\nthis 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\nHTTP. Credential auto-association will be attempted using credentials configured to allow it if this\nproperty 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\ntrue. Credential auto-association will be attempted using credentials configured to allow it if this\nproperty 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\n`DISABLE_PAGINATION`. Per-command pagination (such as appending `| more`) may be used if set to\n`ENABLE_PAGINATION` for a device that doesn\u2019t 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.\nRelevant 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\n`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\ncan prevent spurious connectivity test failures if the device\u2019s SSH server is configured with a connection\nrate limit.", + "examples": [ + 10 + ] + }, + "useFileTransferForLargeOutput": { + "type": "boolean", + "description": "Whether to use file transfer instead of printing large command output directly to the shell. This is\ncurrently only supported for Juniper devices when executing routing table commands. The primary purpose is\nto avoid printing large outputs directly to the shell, which on Juniper devices can interfere with packet\nforwarding performance. Instead, the command output is written to a temporary file on the device and then\ntransferred over a separate connection. After the transfer is complete, the temporary file is deleted to\nprevent 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\nset, a jump server won\u2019t 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\nrequired to model a [synthetic device](#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\nto `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.\nDefaults 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\n`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\nthe prompt, ignoring any trailing whitespace, the Collector will enter the configured `promptResponse`.\nRelevant 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.\nRelevant 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\n(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\n(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\ndefault 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\ndefault 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\nonly.", + "examples": [ + "AWS.us-east-1" + ] + }, + "cloudSetupId": { + "type": "string", + "description": "Name of the cloud setup associated with this device\u2019s discovery. Present for cloud-based virtualized devices\nonly.", + "examples": [ + "my-aws-setup" + ] + }, + "cloudDiscoverySource": { + "type": "string", + "description": "Account name (AWS), Project ID (GCP), or Subscription ID (Azure) associated with this device\u2019s discovery.\nPresent for cloud-based virtualized devices only.", + "examples": [ + "main" + ] + } + } + }, + "SnmpEndpointProfilePatch": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Name of this profile (\"HpPrinter\", \"SamsungTV\", etc.). Omit to leave this property alone.", + "examples": [ + "esxi_snmp" + ] + }, + "detectorOid": { + "type": "string", + "description": "OID to collect to detect a network endpoint of this type. If absent, the profile can be manually assigned to\na network endpoint, but not auto-detected. Use `null` to clear. Omit to leave this property alone.", + "examples": [ + "1.3.6.1.2.1.1.1.0" + ] + }, + "detectorPatterns": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Patterns matching on output of `detectorOid` to determine whether the device is of this type. Absent if\n`detectorOid` is absent. Never empty. Use `null` to clear. Omit to leave this property alone.", + "examples": [ + "- ESXi" + ] + }, + "nameDetectorOid": { + "type": "string", + "description": "OID to collect to detect the name of a network endpoint of this type. If absent, the name cannot be\ndetected. Use `null` to clear. Omit to leave this property alone.", + "examples": [ + "1.3.6.1.2.1.1.5" + ] + }, + "nameDetectorPatterns": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Glob patterns used to extract the device name from the collected value for `nameDetectorOid`. The word\nimmediately after a matched glob pattern is the desired name. If no glob patterns are specified, the first\nword/token in the `nameDetectorOid` value will be used. Use `null` to clear. Omit to leave this property\nalone.", + "examples": [ + "- FQDN:*enabled" + ] + }, + "responseTimeoutSec": { + "type": "integer", + "format": "int32", + "description": "Timeout in seconds for retrieving the value of one of this profile\u2019s OIDs during discovery or collection.\nDefaults to 5. Use `null` to clear. Omit to leave this property alone.", + "examples": [ + 10 + ] + }, + "oidSets": { + "type": "array", + "items": { + "$ref": "#/components/schemas/OidSet" + }, + "description": "Predefined OID sets to collect from network endpoints with this profile. The \"STANDARD\" set includes OIDs\nfor system name, system description, TCP info, UDP info, host address, and interface info. Use `null` to\nclear. Omit to leave this property alone.", + "examples": [ + "- STANDARD" + ] + }, + "customOids": { + "type": "array", + "items": { + "$ref": "#/components/schemas/CustomOid" + }, + "description": "Additional OIDs to collect from network endpoints with this profile. The output of each OID is saved to a\nfile with the associated name. Use `null` to clear. Omit to leave this property alone.", + "examples": [ + [ + { + "name": "system_desc", + "oid": "1.3.6.1.2.1.1.1" + }, + { + "name": "hostname", + "oid": "1.3.6.1.2.1.1.5" + } + ] + ] + } + } + }, + "OidSet": { + "type": "string", + "const": "STANDARD" + }, + "CustomOid": { + "type": "object", + "required": [ + "name", + "oid" + ], + "properties": { + "name": { + "type": "string", + "description": "A concise name for the OID\u2019s value. Used in the name of the file the Collector creates when it retrieves the\nOID\u2019s value from a device. Can contain only letters, digits, underscores, and hyphens.", + "examples": [ + "system_desc" + ] + }, + "oid": { + "type": "string", + "description": "A numeric object identifier (OID) from the Management Information Base (MIB) for the Simple Network\nManagement Protocol (SNMP).", + "examples": [ + "1.3.6.1.2.1.1.1" + ] + } + } + }, + "PathSearchResponse": { + "type": "object", + "properties": { + "srcIpLocationType": { + "type": "string", + "description": "Specifies the location discovery method for source IP.\nThe enum values are ordered from most precise to least precise discovery method.\n*INTERFACE*: The IP is a configured IP address of one or more device interfaces.\n*HOST*: The IP corresponds to discovered host(s).\n*SNAT* : The IP is used as the post-translated IP of a Source NAT function in the network and is assumed to\nbe located on the gateway device(s) performing this translation.\n*CO_LOCATED*: The IP is configured on a gateway device as a /32 or /128 route whose next hop is a known\nhost.\n*INTERFACE_ATTACHED_SUBNET*: The IP falls within the attached subnet of L3 interface(s).\n*INTERNET*: The IP is in the public internet and was located at the network's Internet Node. This discovery\nmethod is only applicable when an Internet Node is configured in the network.\n*ROUTE*: The IP was located based on injected routes in the network.\n*MULTICAST*: The IP is a multicast group address. This discovery method is used to locate the rendezvous\npoints of the multicast group and use their IP addresses as IP source.", + "enum": [ + "INTERFACE", + "HOST", + "SNAT", + "CO_LOCATED", + "INTERFACE_ATTACHED_SUBNET", + "INTERNET", + "ROUTE", + "MULTICAST" + ] + }, + "dstIpLocationType": { + "type": "string", + "description": "Specifies the location discovery method for destination IP.\nThe enum values are ordered from most precise to least precise discovery method.\n*INTERFACE*: The IP is a configured IP address of one or more device interfaces.\n*HOST*: The IP corresponds to discovered host(s).\n*DNAT*: The IP gets DNAT'd in the network. The IP may either correspond directly to a VIP on a load balancer\nor a DNAT'd IP on other devices such as routers. This discovery method is only used to locate destination IP\naddresses. DNAT\u2019d IP addresses are recursively resolved to determine where traffic to a given destination IP\nmust be delivered in the network.\n*CO_LOCATED*: The IP is configured on a gateway device as a /32 or /128 route whose next hop is a known\nhost.\n*INTERFACE_ATTACHED_SUBNET*: The IP falls within the attached subnet of L3 interface(s).\n*INTERNET*: The IP is in the public internet and was located at the network's Internet Node. This discovery\nmethod is only applicable when an Internet Node is configured in the network.\n*ROUTE*: The IP was located based on injected routes in the network.\n*MULTICAST*: The IP is a multicast group address.", + "enum": [ + "INTERFACE", + "HOST", + "DNAT", + "CO_LOCATED", + "INTERFACE_ATTACHED_SUBNET", + "INTERNET", + "ROUTE", + "MULTICAST" + ] + }, + "info": { + "$ref": "#/components/schemas/PathInfo" + }, + "returnPathInfo": { + "$ref": "#/components/schemas/PathInfo" + }, + "timedOut": { + "type": "boolean" + }, + "queryUrl": { + "type": "string", + "description": "A Forward application URL at which this path search can be explored or refined interactively" + }, + "unrecognizedValues": { + "$ref": "#/components/schemas/UnrecognizedValues", + "description": "L7 values from the request that were unrecognized by the system" + } + } + }, + "UnrecognizedValues": { + "type": "object", + "properties": { + "appId": { + "type": "array", + "items": { + "type": "string" + } + }, + "userGroupId": { + "type": "array", + "items": { + "type": "string" + } + }, + "userId": { + "type": "array", + "items": { + "type": "string" + } + } + } + }, + "PathInfo": { + "type": "object", + "properties": { + "paths": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Path" + } + }, + "totalHits": { + "$ref": "#/components/schemas/TotalHits" + } + } + }, + "TotalHits": { + "type": "object", + "properties": { + "type": { + "type": "string", + "description": "Specifies the type of total hits.\n*LOWER_BOUND*: There may be additional hits that were not included in the results either because the\nrequested number of hits were found, or the request timed out.\n*EXACT*: There are exactly this many hits.", + "enum": [ + "LOWER_BOUND", + "EXACT" + ] + }, + "value": { + "type": "integer", + "format": "int64" + } + }, + "description": "Number of ways in which traffic matching the search criteria is forwarded in the network. Multiple ECMP path\nchoices for traffic lead to separate results. In addition, depending on the scope of query terms, there\nmight be multiple results along a single path. For example a search without IP protocol or destination port\nrestrictions can result in multiple results along a single device path if there are different ACLs that\npermit or deny traffic to different destination ports." + }, + "Path": { + "type": "object", + "properties": { + "forwardingOutcome": { + "type": "string", + "description": "Specifies the traffic forwarding outcome along a path.\n*DELIVERED*: Traffic was delivered to destination IP\u2019s discovered location(s).\n*DELIVERED_TO_INCORRECT_LOCATION*: Traffic was delivered out of some edge ports. However, traffic did not\nreach the expected delivery locations based on destination IP\u2019s discovered locations. One scenario where\nthis occurs is when a device in the middle of the actual path from source IP to destination IP is not\nconfigured for collection in the Forward platform. For example, suppose the actual device path is A -> B ->\nC, and only devices A and C are part of the snapshot in the Forward platform. In this case, the path would\nshow traffic exiting device A at some edge port, but since destination IP is discovered to reside at device\nC, traffic is delivered to an incorrect location.\n*BLACKHOLE*: Traffic was implicitly dropped at the last hop, since the device had no matching rule. For\nexample, if a router does not have a default route, traffic to any IP that is not in the routing table gets\nblackholed.\n*DROPPED*: Traffic was explicitly dropped at the last hop, e.g. by a null route.\n*INADMISSIBLE*: Traffic was not admitted into the network. The first hop interface does not accept the\ntraffic, e.g. incoming traffic had a vlan tag 10 while the ingress interface is an access interface that\nonly permits traffic with vlan tag 20.\n*UNREACHABLE*: ARP/NDP resolution failed along the path resulting in traffic not getting delivered to the\nintended destination.\n*LOOP*: Traffic entered a forwarding loop.", + "enum": [ + "DELIVERED", + "DELIVERED_TO_INCORRECT_LOCATION", + "DROPPED", + "LOOP", + "INADMISSIBLE", + "BLACKHOLE", + "UNREACHABLE" + ] + }, + "securityOutcome": { + "type": "string", + "description": "Specifies whether traffic is denied by ACL rules at any hop along the path.\n*PERMITTED*: All ACLs along the path permitted traffic to flow through.\n*DENIED*: Traffic was dropped by ACLs at some hop along the path. Note that the ACL drop may not always\noccur at the last hop since search results are computed in permit all mode.", + "enum": [ + "PERMITTED", + "DENIED" + ] + }, + "hops": { + "type": "array", + "items": { + "$ref": "#/components/schemas/PathHop" + } + } + } + }, + "PathHop": { + "type": "object", + "properties": { + "deviceName": { + "type": "string" + }, + "displayName": { + "type": "string", + "description": "Alternate device name that might be more recognizable but isn\u2019t necessarily unique in the network. For cloud\ndevices, this is the name configured in the cloud provider\u2019s console." + }, + "deviceType": { + "$ref": "#/components/schemas/DeviceType" + }, + "tags": { + "type": "array", + "items": { + "type": "string" + }, + "description": "present only if device tags are specifically requested" + }, + "parseError": { + "type": "boolean", + "description": "`true` indicates that this device\u2019s behavior model might not be reliable" + }, + "ingressInterface": { + "type": "string", + "description": "the physical interface name, where traffic entered the device" + }, + "egressInterface": { + "type": "string", + "description": "the physical interface name, where traffic exited the device.\nAbsent if this is the last hop and traffic did not exit the device." + }, + "behaviors": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "L2", + "L3", + "NAT", + "PBR", + "ACL_PERMIT", + "ACL_DENY" + ] + }, + "description": "Specifies the forwarding behaviors experienced by traffic at the device.\n*L2*: Forwarded at layer 2.\n*L3*: Routed at layer 3.\n*NAT*: NAT transformations applied.\n*PBR*: Forwarded using Policy-Based Routing.\n*ACL_PERMIT*: ACLs were applied to traffic at the device and the traffic was permitted.\n*ACL_DENY*: ACLs were applied to traffic at the device and the traffic was dropped." + }, + "networkFunctions": { + "$ref": "#/components/schemas/NetworkFunctions" + }, + "backfilledFrom": { + "type": "string", + "description": "the collection instant from which the device was backfilled" + } + } + }, + "NetworkFunctions": { + "type": "object", + "properties": { + "acl": { + "type": "array", + "items": { + "$ref": "#/components/schemas/AclFunction" + } + }, + "egress": { + "$ref": "#/components/schemas/InterfaceFunction" + }, + "ingress": { + "$ref": "#/components/schemas/InterfaceFunction" + } + }, + "description": "Detailed forwarding info" + }, + "AclFunction": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "the name of the ACL that is applied to traffic" + }, + "context": { + "type": "string", + "description": "the context in which the ACL function is applied", + "enum": [ + "INPUT", + "OUTPUT" + ] + }, + "action": { + "type": "string", + "description": "the action taken by the ACL function", + "enum": [ + "PERMIT", + "DENY" + ] + } + } + }, + "InterfaceFunction": { + "type": "object", + "properties": { + "l2": { + "$ref": "#/components/schemas/InterfaceFunctionL2Info" + }, + "l3": { + "$ref": "#/components/schemas/InterfaceFunctionL3Info" + }, + "securityZone": { + "type": "string" + } + } + }, + "InterfaceFunctionL2Info": { + "type": "object", + "properties": { + "interfaceName": { + "type": "string" + } + } + }, + "InterfaceFunctionL3Info": { + "type": "object", + "properties": { + "interfaceName": { + "type": "string" + }, + "vrf": { + "type": "string", + "description": "Null if the interface does not belong to any VRF" + } + } + }, + "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" + ] + }, + "NqeQueryRunRequest": { + "type": "object", + "properties": { + "query": { + "type": "string", + "description": "The source code of the query to run. Exactly one of `queryId` or `query` must be provided.", + "examples": [ + "foreach d in network.devices select { Name: d.name }" + ] + }, + "queryId": { + "type": "string", + "description": "The query identifier of the query to run, referenced by its NQE Library Query ID. Exactly one of `queryId`\nor `query` must be provided. This identifier can be found in the information callout in the Queries pane or\nthe Versions view dropdown.", + "examples": [ + "FQ_ac651cb2901b067fe7dbfb511613ab44776d8029" + ] + }, + "commitId": { + "type": "string", + "description": "Version of the query identified by `queryId` to run. Omit to run the latest version. Required if the query\nidentified by `queryId` has been deleted. This identifier can be found in the information callout in the\nQueries pane or the Versions view dropdown.", + "examples": [ + "84f84b0c0a0a1805ddff0ca5451c2c55c58605e5" + ] + }, + "queryOptions": { + "$ref": "#/components/schemas/NqeQueryOptions" + }, + "parameters": { + "type": "object", + "additionalProperties": {}, + "description": "Values for each parameter declared in the query. The parameter values are specified as a JSON object, with\none property per parameter, where the property name matches the parameter name. The property value is the\nJSON representation of the parameter value. The JSON representation of a parameter value depends on the type\nof the value. For values of type `String`, `IpAddress`, `IpSubnet`, and `MacAddress`, the JSON\nrepresentation is a JSON string. For values of type `Number`, the value is an integral JSON number. For\nvalues of type `Boolean`, the JSON representation is true or false. For values of type `List`, the JSON\nrepresentation is an array of JSON values, each of which is a JSON representation for type `T`. For record\nvalues, the JSON representation is a JSON object with corresponding properties whose values are JSON\nrepresentations corresponding to the properties' types. For enumerations, the JSON representation is a JSON\nstring with the enum constant name. For `oneOf` values that contain data, the JSON representation is a JSON\nobject with two properties, `alternative` and `value`, where the `alternative` property contains the\nalternative's name (a string) and the `value` property is a JSON representation of the data associated with\nthis alternative.", + "examples": [ + { + "mtuThreshold": 123, + "ntpServers": [ + "10.22.2.3", + "192.33.4.1" + ] + } + ] + } + } + }, + "NqeQueryOptions": { + "type": "object", + "properties": { + "offset": { + "type": "integer", + "format": "int32", + "description": "(optional) The number of initial records to skip. Defaults to 0. Cannot be negative.", + "examples": [ + 20 + ] + }, + "limit": { + "type": "integer", + "format": "int32", + "description": "(optional) The maximum number of records to return. Defaults to 1000. Must be positive and must not exceed\n10000.", + "examples": [ + 100 + ] + }, + "sortBy": { + "$ref": "#/components/schemas/SortOrder", + "description": "(optional) An object specifying how results should be sorted." + }, + "columnFilters": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ColumnFilter" + }, + "description": "(optional) Result filters. Only records that match all filters are returned. A record matches the array of\n`columnFilters` if the record matches all of the `columnFilters`, in which case it is kept in the results.", + "examples": [ + [ + { + "columnName": "Name", + "value": "MyDeviceName" + } + ] + ] + }, + "itemFormat": { + "type": "string", + "description": "(optional) Specifies how each row in the result should be rendered. If set to LEGACY (the default), complex\nvalues in the row are rendered as strings. If set to JSON, complex values are rendered as JSON arrays and\nrecords. A complex value is one that is not a scalar (such as a number, string, enum value, date, etc.), or\nis not a list of scalar values.\n\n**Note:** The default value of this property will change from LEGACY to JSON in release 26.3. We recommend\nopting in to the JSON format before that release. If you need to keep using the LEGACY format in release\n26.3 or beyond for some reason, be sure to specify the LEGACY format in each request.", + "examples": [ + "JSON" + ], + "enum": [ + "JSON", + "LEGACY" + ] + } + } + }, + "SortOrder": { + "type": "object", + "required": [ + "columnName" + ], + "properties": { + "columnName": { + "type": "string", + "description": "The name of a column to sort on.", + "examples": [ + "Name" + ] + }, + "order": { + "type": "string", + "description": "(optional) Either \"ASC\" or \"DESC\" to sort ascending or descending, respectively. Defaults to\n\"ASC\".", + "examples": [ + "ASC" + ], + "enum": [ + "ASC", + "DESC" + ] + } + } + }, + "ColumnFilter": { + "type": "object", + "required": [ + "operator" + ], + "properties": { + "operator": { + "type": "string", + "enum": [ + "DEFAULT", + "IS_BETWEEN" + ] + } + }, + "oneOf": [ + { + "$ref": "#/components/schemas/DefaultColumnFilter" + }, + { + "$ref": "#/components/schemas/BetweenColumnFilter" + } + ], + "discriminator": { + "propertyName": "operator", + "mapping": { + "DEFAULT": "#/components/schemas/DefaultColumnFilter", + "IS_BETWEEN": "#/components/schemas/BetweenColumnFilter" + } + } + }, + "BetweenColumnFilter": { + "type": "object", + "required": [ + "columnName", + "operator" + ], + "properties": { + "columnName": { + "type": "string", + "description": "The name of a column to filter on.", + "examples": [ + "Name" + ] + }, + "lowerBound": { + "type": "string", + "description": "A value (in its string representation) to limit on inclusively from below. Required if 'upperBound' is\nomitted.", + "examples": [ + "2023-07-30T08:27:16Z" + ] + }, + "operator": { + "type": "string", + "const": "IS_BETWEEN" + }, + "upperBound": { + "type": "string", + "description": "A value (in its string representation) to limit on inclusively from above. Required if 'lowerBound' is\nomitted.", + "examples": [ + "2025-07-30T08:27:16Z" + ] + } + } + }, + "DefaultColumnFilter": { + "type": "object", + "required": [ + "columnName" + ], + "properties": { + "columnName": { + "type": "string", + "description": "The name of a column to filter on.", + "examples": [ + "Name" + ] + }, + "operator": { + "type": "string", + "const": "DEFAULT" + }, + "value": { + "type": "string", + "description": "A value (in its string representation) to match on.", + "examples": [ + "ATL" + ] + } + } + }, + "NewCliNetworkEndpoint": { + "type": "object", + "required": [ + "type", + "name", + "host" + ], + "properties": { + "type": { + "type": "string", + "const": "CLI" + }, + "name": { + "type": "string", + "description": "A name that\u2019s unique (ignoring case) among all of the network\u2019s collection source names. May consist of\nletters, digits, dots, hyphens, and underscores.", + "examples": [ + "my-endpoint" + ] + }, + "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\nfor HTTPS, etc.", + "examples": [ + 22 + ] + }, + "protocol": { + "type": "string", + "description": "The collection protocol to use. Defaults to SSH.", + "examples": [ + "SSH" + ], + "enum": [ + "SSH", + "TELNET" + ] + }, + "profileId": { + "type": "string", + "description": "ID of the endpoint profile to use. Auto-detected during connectivity testing if unspecified.", + "examples": [ + "CLI-7" + ] + }, + "credentialId": { + "type": "string", + "description": "The `id` of a CliCredential of type `LOGIN`. Credential auto-association will be attempted using credentials\nconfigured to allow it if this property is unspecified and collecting from this endpoint requires this kind\nof credential.", + "examples": [ + "L-3" + ] + }, + "jumpServerId": { + "type": "string", + "description": "The `id` of the JumpServer that should be used to collect from this device.", + "examples": [ + "J-0" + ] + }, + "fullCollectionLog": { + "type": "boolean", + "description": "Enables more detailed logging during collection. Defaults to false.", + "examples": [ + false + ] + }, + "largeRtt": { + "type": "boolean", + "description": "Whether the device has a large round-trip time (requires a longer response timeout).", + "examples": [ + false + ] + }, + "collect": { + "type": "boolean", + "description": "Whether to collect from this network endpoint. Defaults to true.", + "examples": [ + true + ] + }, + "note": { + "type": "string", + "description": "An optional description or note about this network endpoint.", + "examples": [ + "Yada yada yada" + ] + } + } + }, + "NetworkEndpoint": { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "CLI", + "SNMP", + "HTTP" + ] + }, + "tags": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Tags assigned to the endpoint. Present only if specifically requested." + }, + "locationId": { + "type": "string", + "description": "The `id` of the endpoint\u2019s assigned Location (see [Network Locations](#network-locations)). Present only if\nspecifically requested. Defaults to \"default\" (the Unassigned location).", + "examples": [ + "atl" + ] + }, + "testResult": { + "$ref": "#/components/schemas/SourceConnectivityResult", + "description": "The endpoint\u2019s most recent connectivity test result. Present only if specifically requested. Absent if the\nendpoint\u2019s connectivity hasn\u2019t been tested since the last substantial edit to the endpoint." + } + }, + "oneOf": [ + { + "$ref": "#/components/schemas/CliNetworkEndpoint" + }, + { + "$ref": "#/components/schemas/SnmpNetworkEndpoint" + }, + { + "$ref": "#/components/schemas/HttpNetworkEndpoint" + } + ], + "discriminator": { + "propertyName": "type", + "mapping": { + "CLI": "#/components/schemas/CliNetworkEndpoint", + "SNMP": "#/components/schemas/SnmpNetworkEndpoint", + "HTTP": "#/components/schemas/HttpNetworkEndpoint" + } + } + }, + "SourceConnectivityResult": { + "type": "object", + "required": [ + "startTime", + "endTime", + "savedAt" + ], + "properties": { + "startTime": { + "type": "string", + "description": "When this connectivity test began, according to the Collector\u2019s system clock.", + "examples": [ + "2025-05-28T12:33:00.000Z" + ] + }, + "endTime": { + "type": "string", + "description": "When this connectivity test ended, according to the Collector\u2019s 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\u2019s system\nclock.", + "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\nbe 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\n`SHELL` (for Avi controllers) auto-discovered during the connectivity test. Can only be present for device\ntypes 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\nthe 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\ntest. 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\u2019s a hostname. Contains just `host` itself if it\u2019s an IP\naddress.", + "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\n- show interfaces status" + ] + } + } + }, + "ConnectivityTestError": { + "type": "string", + "enum": [ + "PING_FAILED", + "PORT_REACHABILITY_FAILED", + "UNSUPPORTED_SSH_PROTOCOL", + "CONNECTION_FAILED", + "PROMPT_DISCOVERY_FAILED", + "AUTHENTICATION_FAILED", + "TWO_FACTOR_AUTHENTICATION_FAILED", + "KEY_EXCHANGE_FAILED", + "UNEXPECTED_KEY_EXCHANGE_MESSAGE", + "CERTIFICATE_CHECK_FAILED", + "PASSWORD_EXPIRED", + "JUMP_SERVER_PING_FAILED", + "JUMP_SERVER_PORT_REACHABILITY_FAILED", + "JUMP_SERVER_CONNECTION_FAILED", + "JUMP_SERVER_AUTHENTICATION_FAILED", + "JUMP_SERVER_KEY_EXCHANGE_FAILED", + "JUMP_SERVER_PASSWORD_EXPIRED", + "PROXY_SERVER_PING_FAILED", + "PROXY_SERVER_PORT_REACHABILITY_FAILED", + "PROXY_SERVER_CONNECTION_FAILED", + "PROXY_SERVER_AUTHENTICATION_FAILED", + "SERVER_FINGERPRINT_CHECK_FAILED", + "SESSION_LIMIT_REACHED", + "DEVICE_TYPE_MISMATCH", + "DEVICE_TYPE_UNDETECTED", + "SESSION_CLOSED", + "PRIV_PASSWORD_ERROR", + "EXPERT_PASSWORD_ERROR", + "DEVICE_IS_CHILD_CONTEXT", + "GUEST_MISSING_HOST_RESULTS", + "HOST_MISSING_GUEST_RESULTS", + "HOST_NOT_REPORTING_ANY_GUEST", + "GUEST_NOT_REPORTING_ANY_NAME", + "UNSUPPORTED_VERSION", + "AVI_SHELL_AUTH_FAILED", + "KEY_BASED_ACCESS_TO_AVI_CONTAINER_FAILED", + "AVI_SERVICE_ENGINE_DISCOVERED", + "AVI_VIA_LINUX_OVER_JUMP_SERVER_UNSUPPORTED", + "AVI_CONTROLLER_WITHOUT_HEALTHY_SERVICE_ENGINES", + "T128_CONDUCTOR_WITHOUT_HEALTHY_ROUTERS", + "API_CALL_FAILED", + "CHECKPOINT_MANAGER_FOUND", + "AUTHORIZATION_FAILED", + "INCOMPLETE_AUTHORIZATION_CHECK", + "CUSTOM_COMMAND_AUTHORIZATION_FAILED", + "TACACS_SESSION_EXPIRED", + "AZURE_SUBSCRIPTION_NOT_FOUND", + "TIMED_OUT", + "DEVICE_IN_BAD_STATE", + "PROJECT_VIEW_PERMISSION_MISSING", + "UNSUPPORTED_DEVICE_TYPE", + "SLOW_READ_RATE", + "TRANSIENT_SLOW_READ_RATE_DETECTED", + "NO_SPACE_LEFT_ON_COLLECTOR", + "NO_SPACE_LEFT_ON_COLLECTED_DEVICE", + "VERSA_DIRECTOR_DISCOVERED", + "DEVICE_PROTOCOL_MISMATCH", + "API_SERVER_FAILED_TO_RESPOND", + "UNRESOLVABLE_HOSTNAME", + "UNSUPPORTED_SSL_CONNECTION", + "PASSWD_DISCOVERY_ON_INSECURE_PROTOCOL", + "INCOMPLETE_SETUP", + "CONFIG_COLLECTION_UNAUTHORIZED", + "FILE_TRANSFER_FAILED", + "CANCELED", + "OTHER" + ] + }, + "SnmpNetworkEndpoint": { + "allOf": [ + { + "type": "object", + "required": [ + "type", + "name", + "host" + ], + "properties": { + "type": { + "type": "string", + "const": "SNMP" + }, + "name": { + "type": "string", + "description": "A name that\u2019s unique (ignoring case) among all of the network\u2019s collection source names. May consist of\nletters, digits, dots, hyphens, and underscores.", + "examples": [ + "my-endpoint" + ] + }, + "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\nfor HTTPS, etc.", + "examples": [ + 22 + ] + }, + "profileId": { + "type": "string", + "description": "ID of the endpoint profile to use. Auto-detected during connectivity testing if unspecified.", + "examples": [ + "SNMP-5" + ] + }, + "credentialId": { + "type": "string", + "description": "The `id` of an SnmpCredential. Credential auto-association will be attempted using credentials configured to\nallow it if this property is unspecified and collecting from this endpoint requires this kind of credential.", + "examples": [ + "S-1" + ] + }, + "fullCollectionLog": { + "type": "boolean", + "description": "Enables more detailed logging during collection. Defaults to false.", + "examples": [ + false + ] + }, + "collect": { + "type": "boolean", + "description": "Whether to collect from this network endpoint. Defaults to true.", + "examples": [ + true + ] + }, + "note": { + "type": "string", + "description": "An optional description or note about this network endpoint.", + "examples": [ + "Yada yada yada" + ] + } + } + }, + { + "$ref": "#/components/schemas/Attribution" + } + ] + }, + "HttpNetworkEndpoint": { + "allOf": [ + { + "type": "object", + "required": [ + "type", + "name", + "host" + ], + "properties": { + "type": { + "type": "string", + "const": "HTTP" + }, + "name": { + "type": "string", + "description": "A name that\u2019s unique (ignoring case) among all of the network\u2019s collection source names. May consist of\nletters, digits, dots, hyphens, and underscores.", + "examples": [ + "my-endpoint" + ] + }, + "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\nfor HTTPS, etc.", + "examples": [ + 22 + ] + }, + "profileId": { + "type": "string", + "description": "ID of the endpoint profile to use. Auto-detected during connectivity testing if unspecified.", + "examples": [ + "HTTP-4" + ] + }, + "credentialId": { + "type": "string", + "description": "The `id` of an HttpCredential. The type of the credential must match the HttpAuthStrategy of the endpoint\u2019s\nassigned or discovered profile (see `authType` in HttpEndpointProfileDef). Credential auto-association will\nbe attempted using credentials configured to allow it if this property is unspecified and collecting from\nthis endpoint requires this kind of credential.", + "examples": [ + "H-5" + ] + }, + "disableSslValidation": { + "type": "boolean", + "description": "Whether to skip TLS validation. Can be useful for an endpoint whose certificate isn\u2019t trusted. Not\nrecommended. Defaults to false.", + "examples": [ + false + ] + }, + "collect": { + "type": "boolean", + "description": "Whether to collect from this network endpoint. Defaults to true.", + "examples": [ + true + ] + }, + "note": { + "type": "string", + "description": "An optional description or note about this network endpoint.", + "examples": [ + "Yada yada yada" + ] + } + } + }, + { + "$ref": "#/components/schemas/Attribution" + } + ] + }, + "CliNetworkEndpoint": { + "allOf": [ + { + "type": "object", + "required": [ + "type", + "name", + "host" + ], + "properties": { + "type": { + "type": "string", + "const": "CLI" + }, + "name": { + "type": "string", + "description": "A name that\u2019s unique (ignoring case) among all of the network\u2019s collection source names. May consist of\nletters, digits, dots, hyphens, and underscores.", + "examples": [ + "my-endpoint" + ] + }, + "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\nfor HTTPS, etc.", + "examples": [ + 22 + ] + }, + "protocol": { + "type": "string", + "description": "The collection protocol to use. Defaults to SSH.", + "examples": [ + "SSH" + ], + "enum": [ + "SSH", + "TELNET" + ] + }, + "profileId": { + "type": "string", + "description": "ID of the endpoint profile to use. Auto-detected during connectivity testing if unspecified.", + "examples": [ + "CLI-7" + ] + }, + "credentialId": { + "type": "string", + "description": "The `id` of a CliCredential of type `LOGIN`. Credential auto-association will be attempted using credentials\nconfigured to allow it if this property is unspecified and collecting from this endpoint requires this kind\nof credential.", + "examples": [ + "L-3" + ] + }, + "jumpServerId": { + "type": "string", + "description": "The `id` of the JumpServer that should be used to collect from this device.", + "examples": [ + "J-0" + ] + }, + "fullCollectionLog": { + "type": "boolean", + "description": "Enables more detailed logging during collection. Defaults to false.", + "examples": [ + false + ] + }, + "largeRtt": { + "type": "boolean", + "description": "Whether the device has a large round-trip time (requires a longer response timeout).", + "examples": [ + false + ] + }, + "collect": { + "type": "boolean", + "description": "Whether to collect from this network endpoint. Defaults to true.", + "examples": [ + true + ] + }, + "note": { + "type": "string", + "description": "An optional description or note about this network endpoint.", + "examples": [ + "Yada yada yada" + ] + } + } + }, + { + "$ref": "#/components/schemas/Attribution" + } + ] + }, + "ClassicDevice": { + "allOf": [ + { + "type": "object", + "required": [ + "name", + "host" + ], + "properties": { + "name": { + "type": "string", + "description": "A name that\u2019s unique (ignoring case) among all of the network\u2019s collection source names. May consist of\nletters, 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\nfor 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\nauto-association will be attempted using credentials configured to allow it if this property is unspecified\nand 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\nAvi controllers). On Checkpoint, this credential is used for TACACS privilege escalation. Credential\nauto-association will be attempted using credentials configured to allow it if this property is unspecified\nand 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\n`PRIVILEGED_MODE` credential for `cliCredential2Id`. Credential auto-association will be attempted using\ncredentials configured to allow it if this property is unspecified and collecting from this device requires\nthis 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\nHTTP. Credential auto-association will be attempted using credentials configured to allow it if this\nproperty 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\ntrue. Credential auto-association will be attempted using credentials configured to allow it if this\nproperty 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\n`DISABLE_PAGINATION`. Per-command pagination (such as appending `| more`) may be used if set to\n`ENABLE_PAGINATION` for a device that doesn\u2019t 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.\nRelevant 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\n`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\ncan prevent spurious connectivity test failures if the device\u2019s SSH server is configured with a connection\nrate limit.", + "examples": [ + 10 + ] + }, + "useFileTransferForLargeOutput": { + "type": "boolean", + "description": "Whether to use file transfer instead of printing large command output directly to the shell. This is\ncurrently only supported for Juniper devices when executing routing table commands. The primary purpose is\nto avoid printing large outputs directly to the shell, which on Juniper devices can interfere with packet\nforwarding performance. Instead, the command output is written to a temporary file on the device and then\ntransferred over a separate connection. After the transfer is complete, the temporary file is deleted to\nprevent 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\nset, a jump server won\u2019t 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\nrequired to model a [synthetic device](#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\nto `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.\nDefaults 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\n`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\nthe prompt, ignoring any trailing whitespace, the Collector will enter the configured `promptResponse`.\nRelevant 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.\nRelevant 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\n(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\n(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\ndefault 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\ndefault 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\nonly.", + "examples": [ + "AWS.us-east-1" + ] + }, + "cloudSetupId": { + "type": "string", + "description": "Name of the cloud setup associated with this device\u2019s discovery. Present for cloud-based virtualized devices\nonly.", + "examples": [ + "my-aws-setup" + ] + }, + "cloudDiscoverySource": { + "type": "string", + "description": "Account name (AWS), Project ID (GCP), or Subscription ID (Azure) associated with this device\u2019s discovery.\nPresent 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\u2019s assigned Location (see [Network Locations](#network-locations)). Present only if\nspecifically requested. Defaults to \"default\" (the Unassigned location).", + "examples": [ + "atl" + ] + }, + "testResult": { + "$ref": "#/components/schemas/SourceConnectivityResult", + "description": "The device\u2019s most recent connectivity test result. Present only if specifically requested. Absent if the\ndevice\u2019s connectivity hasn\u2019t been tested since the last substantial edit to the device." + } + } + }, + { + "$ref": "#/components/schemas/Attribution" + } + ] + }, + "CheckPriority": { + "type": "string", + "enum": [ + "NOT_SET", + "LOW", + "MEDIUM", + "HIGH" + ] + }, + "NqeErrorInfo": { + "type": "object", + "required": [ + "httpMethod", + "apiUrl", + "message" + ], + "properties": { + "completionType": { + "type": "string", + "enum": [ + "FINISHED", + "CANCELED", + "TIMED_OUT" + ] + }, + "errors": { + "type": "array", + "items": { + "$ref": "#/components/schemas/NqeQueryError" + } + }, + "snapshotId": { + "type": "string", + "description": "The ID of the Snapshot the query was run against.", + "examples": [ + "101" + ] + }, + "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" + } + } + }, + "NqeQueryError": { + "type": "object", + "properties": { + "location": { + "$ref": "#/components/schemas/TextRegion", + "description": "The region in the original query that caused the error." + }, + "message": { + "type": "string", + "description": "The error's message." + } + } + }, + "TextRegion": { + "type": "object", + "properties": { + "start": { + "$ref": "#/components/schemas/TextPosition", + "description": "The region's starting position (starting at (0, 0))." + }, + "end": { + "$ref": "#/components/schemas/TextPosition", + "description": "The region's ending position." + } + } + }, + "TextPosition": { + "type": "object", + "properties": { + "character": { + "type": "integer", + "format": "int32", + "description": "Position on the line (by number of characters, starting at 0)" + }, + "line": { + "type": "integer", + "format": "int32", + "description": "Line number (starting at 0)" + } + } + }, + "HttpCredentialUpdate": { + "type": "object", + "required": [ + "name", + "password" + ], + "properties": { + "name": { + "type": "string", + "description": "For display purposes in the application", + "examples": [ + "admin (sjc)" + ] + }, + "username": { + "type": "string", + "description": "Required for the `LOGIN` type", + "examples": [ + "admin" + ] + }, + "password": { + "type": "string", + "examples": [ + "my-s3cr3t-p4s$w0rd" + ] + }, + "loginType": { + "$ref": "#/components/schemas/LoginType", + "description": "Required only for a credential of type `LOGIN` used by a Silver Peak Orchestrator", + "examples": [ + "LOCAL" + ] + }, + "autoAssociate": { + "type": "boolean", + "description": "Defaults to true for the `LOGIN` type. Not allowed for the `API_KEY` type.", + "examples": [ + false + ] + } + } + }, + "CliNetworkEndpointPatch": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "A name that\u2019s unique (ignoring case) among all of the network\u2019s collection source names. May consist of\nletters, digits, dots, hyphens, and underscores. Omit to leave this property alone.", + "examples": [ + "my-endpoint" + ] + }, + "host": { + "type": "string", + "description": "IP address or hostname used to connect to the device. Omit to leave this 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\nfor HTTPS, etc. Use `null` to clear. Omit to leave this property alone.", + "examples": [ + 22 + ] + }, + "profileId": { + "type": "string", + "description": "ID of the endpoint profile to use. Auto-detected during connectivity testing if unspecified. Use `null` to\nclear. Omit to leave this property alone.", + "examples": [ + "CLI-7" + ] + }, + "protocol": { + "type": "string", + "description": "The collection protocol to use. Defaults to SSH. Use `null` to clear. Omit to leave this\nproperty alone.", + "examples": [ + "SSH" + ], + "enum": [ + "SSH", + "TELNET" + ] + }, + "credentialId": { + "type": "string", + "description": "The `id` of a CliCredential of type `LOGIN`. Credential auto-association will be attempted using credentials\nconfigured to allow it if this property is unspecified and collecting from this endpoint requires this kind\nof credential. Use `null` to clear. Omit to leave this property alone.", + "examples": [ + "L-3" + ] + }, + "jumpServerId": { + "type": "string", + "description": "The `id` of the JumpServer that should be used to collect from this device. Use `null` to clear. Omit to\nleave this property alone.", + "examples": [ + "J-0" + ] + }, + "fullCollectionLog": { + "type": "boolean", + "description": "Enables more detailed logging during collection. Defaults to false. Use `null` to clear. Omit to leave this\nproperty alone.", + "examples": [ + true + ] + }, + "largeRtt": { + "type": "boolean", + "description": "Whether the device has a large round-trip time (requires a longer response timeout). Use `null` to clear.\nOmit to leave this property alone.", + "examples": [ + false + ] + }, + "collect": { + "type": "boolean", + "description": "Whether to collect from this network endpoint. Defaults to true. Use `null` to clear. Omit to leave this\nproperty alone.", + "examples": [ + true + ] + }, + "note": { + "type": "string", + "description": "An optional description or note about this network endpoint. Use `null` to clear. Omit to leave this\nproperty alone.", + "examples": [ + "Yada yada yada" + ] + } + } + }, + "NqeDiffRequest": { + "type": "object", + "required": [ + "queryId" + ], + "properties": { + "queryId": { + "type": "string", + "description": "The query identifier of the query to run, referenced by its NQE Library Query ID.", + "examples": [ + "FQ_ac651cb2901b067fe7dbfb511613ab44776d8029" + ] + }, + "commitId": { + "type": "string", + "description": "Version of the query identified by `queryId` to run. Omit to run the latest version. Required if the query\nidentified by `queryId` has been deleted.", + "examples": [ + "84f84b0c0a0a1805ddff0ca5451c2c55c58605e5" + ] + }, + "options": { + "$ref": "#/components/schemas/NqeQueryOptions" + } + } + }, + "NewSnmpNetworkEndpoint": { + "type": "object", + "required": [ + "type", + "name", + "host" + ], + "properties": { + "type": { + "type": "string", + "const": "SNMP" + }, + "name": { + "type": "string", + "description": "A name that\u2019s unique (ignoring case) among all of the network\u2019s collection source names. May consist of\nletters, digits, dots, hyphens, and underscores.", + "examples": [ + "my-endpoint" + ] + }, + "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\nfor HTTPS, etc.", + "examples": [ + 22 + ] + }, + "profileId": { + "type": "string", + "description": "ID of the endpoint profile to use. Auto-detected during connectivity testing if unspecified.", + "examples": [ + "SNMP-5" + ] + }, + "credentialId": { + "type": "string", + "description": "The `id` of an SnmpCredential. Credential auto-association will be attempted using credentials configured to\nallow it if this property is unspecified and collecting from this endpoint requires this kind of credential.", + "examples": [ + "S-1" + ] + }, + "fullCollectionLog": { + "type": "boolean", + "description": "Enables more detailed logging during collection. Defaults to false.", + "examples": [ + false + ] + }, + "collect": { + "type": "boolean", + "description": "Whether to collect from this network endpoint. Defaults to true.", + "examples": [ + true + ] + }, + "note": { + "type": "string", + "description": "An optional description or note about this network endpoint.", + "examples": [ + "Yada yada yada" + ] + } + } + }, + "L7Application": { + "type": "object", + "properties": { + "id": { + "type": "string" + } + } + }, + "NetworkUpdate": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "note": { + "type": "string" + }, + "retentionDays": { + "type": "integer", + "format": "int32" + } + } + }, + "NetworkCheckResultWithDiagnosis": { + "allOf": [ + { + "type": "object", + "properties": { + "diagnosis": { + "$ref": "#/components/schemas/CheckDiagnosis" + } + } + }, + { + "$ref": "#/components/schemas/NetworkCheckResult" + } + ] + }, + "CheckDiagnosis": { + "type": "object", + "properties": { + "details": { + "type": "array", + "items": { + "$ref": "#/components/schemas/DiagnosisDetail" + } + }, + "detailsIncomplete": { + "type": "boolean" + }, + "summary": { + "type": "string" + } + } + }, + "DiagnosisDetail": { + "type": "object", + "properties": { + "query": { + "type": "string" + }, + "references": { + "type": "array", + "items": { + "$ref": "#/components/schemas/DiagnosisReference" + } + } + } + }, + "DiagnosisReference": { + "type": "object", + "properties": { + "key": { + "type": "string", + "description": "A name or identifier associated with the reference, like a device or interface name.", + "examples": [ + "rtr-01 eth0" + ] + }, + "value": { + "type": "string", + "description": "The value associated with `key` that\u2019s relevant to this violation, such as a link speed, MTU size, VLAN\nrange, or IP address.", + "examples": [ + "10.110.4.14" + ] + }, + "files": { + "type": "object", + "additionalProperties": { + "type": "array", + "items": { + "$ref": "#/components/schemas/LineRange" + } + }, + "description": "Relevant line ranges in files collected from the device.", + "examples": [ + { + "rtr-01,configuration,16.txt": [ + { + "start": 6, + "end": 6 + }, + { + "start": 22, + "end": 29 + } + ] + } + ] + } + } + }, + "NetworkCheckResult": { + "type": "object", + "properties": { + "createdAt": { + "type": "string", + "examples": [ + "2022-04-06T20:34:45.118Z" + ] + }, + "creationDateMillis": { + "type": "integer", + "format": "int64", + "description": "Deprecated for removal in release 26.4. Use `createdAt` instead.", + "examples": [ + 1649277285118 + ] + }, + "creator": { + "type": "string", + "description": "The username of the user who created the check, or null if unknown or if the account was\ndeleted", + "examples": [ + "mary" + ] + }, + "creatorId": { + "type": "string" + }, + "definition": { + "$ref": "#/components/schemas/CheckDefinition" + }, + "definedAt": { + "type": "string", + "examples": [ + "2022-04-06T20:34:45.118Z" + ] + }, + "definitionDateMillis": { + "type": "integer", + "format": "int64", + "description": "Deprecated for removal in release 26.4. Use `definedAt` instead.", + "examples": [ + 1649277285118 + ] + }, + "description": { + "type": "string" + }, + "editedAt": { + "type": "string", + "examples": [ + "2022-04-06T20:34:45.118Z" + ] + }, + "editDateMillis": { + "type": "integer", + "format": "int64", + "description": "Deprecated for removal in release 26.4. Use `editedAt` instead.", + "examples": [ + 1649277285118 + ] + }, + "editor": { + "type": "string", + "description": "The username of the user who last edited the check, or null if unknown, if the account was deleted, or if\nthe check hasn't been edited", + "examples": [ + "steven" + ] + }, + "editorId": { + "type": "string" + }, + "enabled": { + "type": "boolean" + }, + "executedAt": { + "type": "string", + "examples": [ + "2022-04-06T20:34:45.118Z" + ] + }, + "executionDateMillis": { + "type": "integer", + "format": "int64", + "description": "Deprecated for removal in release 26.4. Use `executedAt` instead.", + "examples": [ + 1649277285118 + ] + }, + "executionDurationMillis": { + "type": "integer", + "format": "int64" + }, + "id": { + "type": "string" + }, + "name": { + "type": "string" + }, + "note": { + "type": "string" + }, + "numViolations": { + "type": "integer", + "format": "int64" + }, + "perfMonitoringEnabled": { + "type": "boolean", + "description": "Whether performance monitoring is enabled for this check. Only supported for Existential intent checks.\nPerformance monitoring must be independently enabled for each device along the check\u2019s path(s)." + }, + "priority": { + "$ref": "#/components/schemas/CheckPriority" + }, + "status": { + "$ref": "#/components/schemas/CheckStatus" + }, + "tags": { + "type": "array", + "items": { + "type": "string" + } + } + } + }, + "CheckDefinition": { + "type": "object", + "required": [ + "checkType" + ], + "properties": { + "checkType": { + "type": "string", + "enum": [ + "Existential", + "Isolation", + "Reachability", + "QueryStringBased", + "Predefined", + "NQE" + ] + } + }, + "oneOf": [ + { + "$ref": "#/components/schemas/ExistsCheck" + }, + { + "$ref": "#/components/schemas/IsolationCheck" + }, + { + "$ref": "#/components/schemas/ReachabilityCheck" + }, + { + "$ref": "#/components/schemas/QueryStringCheck" + }, + { + "$ref": "#/components/schemas/PredefinedCheck" + }, + { + "$ref": "#/components/schemas/NqeCheck" + } + ], + "discriminator": { + "propertyName": "checkType", + "mapping": { + "Existential": "#/components/schemas/ExistsCheck", + "Exists": "#/components/schemas/ExistsCheck", + "ExistentialCheck": "#/components/schemas/ExistsCheck", + "Isolation": "#/components/schemas/IsolationCheck", + "IsolationCheck": "#/components/schemas/IsolationCheck", + "Reachability": "#/components/schemas/ReachabilityCheck", + "ReachabilityCheck": "#/components/schemas/ReachabilityCheck", + "QueryStringBased": "#/components/schemas/QueryStringCheck", + "Predefined": "#/components/schemas/PredefinedCheck", + "NQE": "#/components/schemas/NqeCheck", + "NetworkQuery": "#/components/schemas/NqeCheck" + } + } + }, + "NqeCheck": { + "type": "object", + "required": [ + "checkType", + "queryId" + ], + "properties": { + "checkType": { + "type": "string", + "const": "NQE" + }, + "queryId": { + "type": "string", + "examples": [ + "FQ_6ac3682c92a74b778d98584aea8afa5fe40f2150" + ] + }, + "params": { + "type": "object", + "additionalProperties": {}, + "description": "Values for each parameter declared in the query. The parameter values are specified as a JSON object, with\none property per parameter, where the property name matches the parameter name. The property value is the\nJSON representation of the parameter value. The JSON representation of a parameter value depends on the type\nof the value. For values of type `String`, `IpAddress`, `IpSubnet`, and `MacAddress`, the JSON\nrepresentation is a JSON string. For values of type `Number`, the value is an integral JSON number. For\nvalues of type `Boolean`, the JSON representation is true or false. For values of type `List`, the JSON\nrepresentation is an array of JSON values, each of which is a JSON representation for type `T`. For record\nvalues, the JSON representation is a JSON object with corresponding properties whose values are JSON\nrepresentations corresponding to the properties' types. For enumerations, the JSON representation is a JSON\nstring with the enum constant name. For `oneOf` values that contain data, the JSON representation is a JSON\nobject with two properties, `alternative` and `value`, where the `alternative` property contains the\nalternative's name (a string) and the `value` property is a JSON representation of the data associated with\nthis alternative.", + "examples": [ + { + "mtuThreshold": 123, + "ntpServers": [ + "10.22.2.3", + "192.33.4.1" + ] + } + ] + } + } + }, + "QueryStringCheck": { + "type": "object", + "required": [ + "checkType" + ], + "properties": { + "checkType": { + "type": "string", + "const": "QueryStringBased" + }, + "forRequest": { + "type": "string" + }, + "value": { + "type": "string" + } + } + }, + "IsolationCheck": { + "type": "object", + "required": [ + "checkType", + "filters" + ], + "properties": { + "checkType": { + "type": "string", + "const": "Isolation" + }, + "filters": { + "$ref": "#/components/schemas/PathQuery" + }, + "headerFieldsWithDefaults": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "ip_tos", + "tp_src", + "app_id", + "url", + "user_id" + ] + }, + "description": "The header fields for which a default value is assumed if no valid is specified in the `from` clause.\nDefaults to `[\"url\"]`." + }, + "noiseTypes": { + "type": "array", + "items": { + "$ref": "#/components/schemas/NoiseType" + }, + "description": "The noise types that should be included in the search results. Defaults to `[]`." + } + } + }, + "PathQuery": { + "type": "object", + "properties": { + "bypass": { + "type": "array", + "items": { + "$ref": "#/components/schemas/BypassFilter" + } + }, + "chain": { + "type": "array", + "items": { + "$ref": "#/components/schemas/HopFilter" + } + }, + "flowTypes": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "VALID", + "LOOP", + "POTENTIAL_LOOP", + "BLACKHOLE", + "DROPPED", + "INADMISSIBLE", + "UNREACHABLE", + "IGNORED", + "UNDELIVERED" + ] + } + }, + "forwardingTypes": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "L2", + "L3", + "DIRECT_L2", + "FABRIC_PATH", + "VXLAN", + "MCAST_IP", + "DIRECT_IP", + "MPLS", + "L2_PBR", + "L3_PBR" + ] + } + }, + "from": { + "$ref": "#/components/schemas/EndpointFilter" + }, + "mode": { + "type": "string", + "const": "PERMIT_ALL" + }, + "to": { + "$ref": "#/components/schemas/EndpointFilter" + } + } + }, + "HopFilter": { + "type": "object", + "required": [ + "location", + "transitType" + ], + "properties": { + "headers": { + "type": "array", + "items": { + "$ref": "#/components/schemas/PacketHeaderFilter" + } + }, + "location": { + "$ref": "#/components/schemas/HopLocationFilter" + }, + "transitType": { + "type": "string", + "enum": [ + "through", + "ingress", + "egress" + ] + } + } + }, + "HopLocationFilter": { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "DeviceFilter", + "InterfaceFilter", + "TunnelInterfaceFilter", + "SecurityZoneFilter", + "DeviceVrfFilter", + "DeviceAliasFilter", + "InterfaceAliasFilter", + "VrfFilter", + "NotFilter" + ] + } + }, + "oneOf": [ + { + "$ref": "#/components/schemas/DeviceFilter" + }, + { + "$ref": "#/components/schemas/InterfaceFilter" + }, + { + "$ref": "#/components/schemas/TunnelInterfaceFilter" + }, + { + "$ref": "#/components/schemas/SecurityZoneFilter" + }, + { + "$ref": "#/components/schemas/DeviceVrfFilter" + }, + { + "$ref": "#/components/schemas/DeviceAliasFilter" + }, + { + "$ref": "#/components/schemas/InterfaceAliasFilter" + }, + { + "$ref": "#/components/schemas/VrfFilter" + }, + { + "$ref": "#/components/schemas/NotFilter" + } + ], + "discriminator": { + "propertyName": "type", + "mapping": { + "DeviceFilter": "#/components/schemas/DeviceFilter", + "InterfaceFilter": "#/components/schemas/InterfaceFilter", + "TunnelInterfaceFilter": "#/components/schemas/TunnelInterfaceFilter", + "SecurityZoneFilter": "#/components/schemas/SecurityZoneFilter", + "DeviceVrfFilter": "#/components/schemas/DeviceVrfFilter", + "DeviceAliasFilter": "#/components/schemas/DeviceAliasFilter", + "InterfaceAliasFilter": "#/components/schemas/InterfaceAliasFilter", + "VrfFilter": "#/components/schemas/VrfFilter", + "NotFilter": "#/components/schemas/NotFilter" + } + } + }, + "InterfaceFilter": { + "type": "object", + "required": [ + "type", + "value" + ], + "properties": { + "type": { + "type": "string", + "const": "InterfaceFilter" + }, + "value": { + "type": "string", + "examples": [ + "nyc-dc01-fw01 eth1" + ] + } + }, + "description": "A filter that matches one device interface by name" + }, + "SecurityZoneFilter": { + "type": "object", + "required": [ + "device", + "type", + "value" + ], + "properties": { + "device": { + "type": "string", + "examples": [ + "nyc-dc01-rtr-01" + ] + }, + "type": { + "type": "string", + "const": "SecurityZoneFilter" + }, + "value": { + "type": "string", + "examples": [ + "corp-trusted" + ] + } + }, + "description": "A filter that matches one security zone on a firewall by name and can be used in the `from` or `to` property\nof a `PathQuery`" + }, + "VrfFilter": { + "type": "object", + "required": [ + "type", + "value" + ], + "properties": { + "type": { + "type": "string", + "const": "VrfFilter" + }, + "value": { + "type": "string", + "description": "A VRF name. Use `DeviceVrfFilter` instead for a (device, VRF) pair.", + "examples": [ + "MY VRF" + ] + } + }, + "description": "A filter that matches device interfaces by VRF name" + }, + "DeviceFilter": { + "type": "object", + "required": [ + "type", + "value" + ], + "properties": { + "type": { + "type": "string", + "const": "DeviceFilter" + }, + "value": { + "type": "string", + "examples": [ + "nyc-dc01-fw01" + ] + } + }, + "description": "A filter that matches one device by name or all devices (using value \"*\")" + }, + "TunnelInterfaceFilter": { + "type": "object", + "required": [ + "type", + "value" + ], + "properties": { + "type": { + "type": "string", + "const": "TunnelInterfaceFilter" + }, + "value": { + "type": "string", + "examples": [ + "nyc-dc01-rtr-01 ge3" + ] + } + }, + "description": "A filter that matches one tunnel interface by name and has underlay semantics in the `from` or `to` property\nof a `PathQuery`" + }, + "NotFilter": { + "type": "object", + "required": [ + "type" + ], + "properties": { + "clause": { + "$ref": "#/components/schemas/FlowHopFilter" + }, + "type": { + "type": "string", + "const": "NotFilter" + } + }, + "description": "A filter that inverts the filter in its `clause`" + }, + "FlowHopFilter": { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "HostFilter", + "DeviceFilter", + "InterfaceFilter", + "TunnelInterfaceFilter", + "SecurityZoneFilter", + "DeviceVrfFilter", + "PacketFilter", + "HostAliasFilter", + "DeviceAliasFilter", + "InterfaceAliasFilter", + "PacketAliasFilter", + "SubnetLocationFilter", + "VrfFilter", + "NotFilter" + ] + } + }, + "oneOf": [ + { + "$ref": "#/components/schemas/HostFilter" + }, + { + "$ref": "#/components/schemas/DeviceFilter" + }, + { + "$ref": "#/components/schemas/InterfaceFilter" + }, + { + "$ref": "#/components/schemas/TunnelInterfaceFilter" + }, + { + "$ref": "#/components/schemas/SecurityZoneFilter" + }, + { + "$ref": "#/components/schemas/DeviceVrfFilter" + }, + { + "$ref": "#/components/schemas/PacketFilter" + }, + { + "$ref": "#/components/schemas/HostAliasFilter" + }, + { + "$ref": "#/components/schemas/DeviceAliasFilter" + }, + { + "$ref": "#/components/schemas/InterfaceAliasFilter" + }, + { + "$ref": "#/components/schemas/PacketAliasFilter" + }, + { + "$ref": "#/components/schemas/SubnetLocationFilter" + }, + { + "$ref": "#/components/schemas/VrfFilter" + }, + { + "$ref": "#/components/schemas/NotFilter" + } + ], + "discriminator": { + "propertyName": "type", + "mapping": { + "HostFilter": "#/components/schemas/HostFilter", + "DeviceFilter": "#/components/schemas/DeviceFilter", + "InterfaceFilter": "#/components/schemas/InterfaceFilter", + "TunnelInterfaceFilter": "#/components/schemas/TunnelInterfaceFilter", + "SecurityZoneFilter": "#/components/schemas/SecurityZoneFilter", + "DeviceVrfFilter": "#/components/schemas/DeviceVrfFilter", + "PacketFilter": "#/components/schemas/PacketFilter", + "HostAliasFilter": "#/components/schemas/HostAliasFilter", + "DeviceAliasFilter": "#/components/schemas/DeviceAliasFilter", + "InterfaceAliasFilter": "#/components/schemas/InterfaceAliasFilter", + "PacketAliasFilter": "#/components/schemas/PacketAliasFilter", + "SubnetLocationFilter": "#/components/schemas/SubnetLocationFilter", + "VrfFilter": "#/components/schemas/VrfFilter", + "NotFilter": "#/components/schemas/NotFilter" + } + } + }, + "HostAliasFilter": { + "type": "object", + "required": [ + "type", + "value" + ], + "properties": { + "type": { + "type": "string", + "const": "HostAliasFilter" + }, + "value": { + "type": "string", + "description": "A Host Group name" + } + }, + "description": "A filter that matches any host in a Host Group" + }, + "PacketFilter": { + "type": "object", + "required": [ + "type", + "values" + ], + "properties": { + "type": { + "type": "string", + "const": "PacketFilter" + }, + "values": { + "type": "object", + "additionalProperties": { + "type": "array", + "items": { + "type": "string" + } + }, + "examples": [ + { + "ipv4_dst": [ + "10.10.10.0/24" + ] + } + ] + } + }, + "description": "A filter that matches a specific packet header value or range of values" + }, + "SubnetLocationFilter": { + "type": "object", + "required": [ + "type", + "value" + ], + "properties": { + "type": { + "type": "string", + "const": "SubnetLocationFilter" + }, + "value": { + "type": "string", + "examples": [ + "10.10.10.64/30" + ] + }, + "host": { + "type": "string", + "description": "The hostname that resolves to the IP in `value` (metadata only; not used directly)", + "examples": [ + "testing.example.com" + ] + }, + "device": { + "type": "string", + "description": "The device at which the subnet is located", + "examples": [ + "nyc-dc01-rtr01" + ] + } + }, + "description": "A filter that matches a specific IP address or IP subnet address at a specific location in the network. If\nthe IP address is a multicast group address, this filter matches on the locations of the corresponding\nmulticast Rendezvous Points (RPs) in the network." + }, + "PacketAliasFilter": { + "type": "object", + "required": [ + "type", + "value" + ], + "properties": { + "direction": { + "type": "string", + "enum": [ + "src", + "dst" + ] + }, + "type": { + "type": "string", + "const": "PacketAliasFilter" + }, + "value": { + "type": "string", + "description": "A Packet Header Set name" + } + }, + "description": "A filter that matches any combination of packet header values that satisfy the criteria in a\nHeader Set" + }, + "InterfaceAliasFilter": { + "type": "object", + "required": [ + "type", + "value" + ], + "properties": { + "type": { + "type": "string", + "const": "InterfaceAliasFilter" + }, + "value": { + "type": "string", + "description": "An Interface Group name" + } + }, + "description": "A filter that matches any device interface in an Interface Group" + }, + "DeviceAliasFilter": { + "type": "object", + "required": [ + "type", + "value" + ], + "properties": { + "type": { + "type": "string", + "const": "DeviceAliasFilter" + }, + "value": { + "type": "string", + "description": "A Device Group name" + } + }, + "description": "A filter that matches any device in a Device Group" + }, + "DeviceVrfFilter": { + "type": "object", + "required": [ + "type", + "device", + "vrf" + ], + "properties": { + "type": { + "type": "string", + "const": "DeviceVrfFilter" + }, + "device": { + "type": "string", + "examples": [ + "nyc-dc01-rtr-01" + ] + }, + "vrf": { + "type": "string", + "examples": [ + "MY VRF" + ] + } + }, + "description": "A filter that matches a device\u2019s interfaces by VRF name" + }, + "HostFilter": { + "type": "object", + "required": [ + "type", + "value" + ], + "properties": { + "type": { + "type": "string", + "const": "HostFilter" + }, + "value": { + "type": "string", + "examples": [ + "10.10.10.10" + ] + } + }, + "description": "A filter that matches hosts by hostname, IP subnet address, or MAC address" + }, + "PacketHeaderFilter": { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "PacketFilter", + "PacketAliasFilter", + "NotFilter" + ] + } + }, + "oneOf": [ + { + "$ref": "#/components/schemas/PacketFilter" + }, + { + "$ref": "#/components/schemas/PacketAliasFilter" + }, + { + "$ref": "#/components/schemas/NotFilter" + } + ], + "discriminator": { + "propertyName": "type", + "mapping": { + "PacketFilter": "#/components/schemas/PacketFilter", + "PacketAliasFilter": "#/components/schemas/PacketAliasFilter", + "NotFilter": "#/components/schemas/NotFilter" + } + } + }, + "EndpointFilter": { + "type": "object", + "required": [ + "location" + ], + "properties": { + "headers": { + "type": "array", + "items": { + "$ref": "#/components/schemas/PacketHeaderFilter" + } + }, + "location": { + "$ref": "#/components/schemas/LocationFilter" + }, + "logicalNetwork": { + "type": "string" + } + } + }, + "LocationFilter": { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "HostFilter", + "DeviceFilter", + "InterfaceFilter", + "TunnelInterfaceFilter", + "SecurityZoneFilter", + "DeviceVrfFilter", + "HostAliasFilter", + "DeviceAliasFilter", + "InterfaceAliasFilter", + "SubnetLocationFilter", + "VrfFilter", + "NotFilter" + ] + } + }, + "oneOf": [ + { + "$ref": "#/components/schemas/HostFilter" + }, + { + "$ref": "#/components/schemas/DeviceFilter" + }, + { + "$ref": "#/components/schemas/InterfaceFilter" + }, + { + "$ref": "#/components/schemas/TunnelInterfaceFilter" + }, + { + "$ref": "#/components/schemas/SecurityZoneFilter" + }, + { + "$ref": "#/components/schemas/DeviceVrfFilter" + }, + { + "$ref": "#/components/schemas/HostAliasFilter" + }, + { + "$ref": "#/components/schemas/DeviceAliasFilter" + }, + { + "$ref": "#/components/schemas/InterfaceAliasFilter" + }, + { + "$ref": "#/components/schemas/SubnetLocationFilter" + }, + { + "$ref": "#/components/schemas/VrfFilter" + }, + { + "$ref": "#/components/schemas/NotFilter" + } + ], + "discriminator": { + "propertyName": "type", + "mapping": { + "HostFilter": "#/components/schemas/HostFilter", + "DeviceFilter": "#/components/schemas/DeviceFilter", + "InterfaceFilter": "#/components/schemas/InterfaceFilter", + "TunnelInterfaceFilter": "#/components/schemas/TunnelInterfaceFilter", + "SecurityZoneFilter": "#/components/schemas/SecurityZoneFilter", + "DeviceVrfFilter": "#/components/schemas/DeviceVrfFilter", + "HostAliasFilter": "#/components/schemas/HostAliasFilter", + "DeviceAliasFilter": "#/components/schemas/DeviceAliasFilter", + "InterfaceAliasFilter": "#/components/schemas/InterfaceAliasFilter", + "SubnetLocationFilter": "#/components/schemas/SubnetLocationFilter", + "VrfFilter": "#/components/schemas/VrfFilter", + "NotFilter": "#/components/schemas/NotFilter" + } + } + }, + "BypassFilter": { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "DeviceFilter", + "DeviceAliasFilter" + ] + } + }, + "oneOf": [ + { + "$ref": "#/components/schemas/DeviceFilter" + }, + { + "$ref": "#/components/schemas/DeviceAliasFilter" + } + ], + "discriminator": { + "propertyName": "type", + "mapping": { + "DeviceFilter": "#/components/schemas/DeviceFilter", + "DeviceAliasFilter": "#/components/schemas/DeviceAliasFilter" + } + } + }, + "NoiseType": { + "type": "string", + "enum": [ + "WRONG_GATEWAY", + "INADMISSIBLE", + "NETWORK_OR_BROADCAST_ADDRESS", + "TO_L2_INTERFACE_MAC", + "GLEAN" + ] + }, + "PredefinedCheck": { + "type": "object", + "required": [ + "checkType" + ], + "properties": { + "checkType": { + "type": "string", + "const": "Predefined" + }, + "params": { + "type": "object" + }, + "predefinedCheckType": { + "$ref": "#/components/schemas/PredefinedCheckType" + } + } + }, + "ExistsCheck": { + "type": "object", + "required": [ + "checkType", + "filters" + ], + "properties": { + "checkType": { + "type": "string", + "const": "Existential" + }, + "filters": { + "$ref": "#/components/schemas/PathQuery" + }, + "headerFieldsWithDefaults": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "ip_tos", + "tp_src", + "app_id", + "url", + "user_id" + ] + }, + "description": "The header fields for which a default value is assumed if no valid is specified in the `from` clause.\nDefaults to `[\"url\"]`." + }, + "noiseTypes": { + "type": "array", + "items": { + "$ref": "#/components/schemas/NoiseType" + }, + "description": "The noise types that should be included in the search results. Defaults to `[]`." + }, + "returnPath": { + "type": "string", + "enum": [ + "ANY", + "SYMMETRIC" + ] + } + } + }, + "ReachabilityCheck": { + "type": "object", + "required": [ + "checkType", + "filters" + ], + "properties": { + "checkType": { + "type": "string", + "const": "Reachability" + }, + "filters": { + "$ref": "#/components/schemas/PathQuery" + }, + "headerFieldsWithDefaults": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "ip_tos", + "tp_src", + "app_id", + "url", + "user_id" + ] + }, + "description": "The header fields for which a default value is assumed if no valid is specified in the `from` clause.\nDefaults to `[\"url\"]`." + }, + "noiseTypes": { + "type": "array", + "items": { + "$ref": "#/components/schemas/NoiseType" + }, + "description": "The noise types that should be included in the search results. Defaults to `[]`." + } + } + }, + "NetworkEndpoints": { + "type": "object", + "required": [ + "endpoints" + ], + "properties": { + "endpoints": { + "type": "array", + "items": { + "$ref": "#/components/schemas/NetworkEndpoint" + } + } + } + }, + "HttpNetworkEndpointPatch": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "A name that\u2019s unique (ignoring case) among all of the network\u2019s collection source names. May consist of\nletters, digits, dots, hyphens, and underscores. Omit to leave this property alone.", + "examples": [ + "my-endpoint" + ] + }, + "host": { + "type": "string", + "description": "IP address or hostname used to connect to the device. Omit to leave this 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\nfor HTTPS, etc. Use `null` to clear. Omit to leave this property alone.", + "examples": [ + 22 + ] + }, + "profileId": { + "type": "string", + "description": "ID of the endpoint profile to use. Auto-detected during connectivity testing if unspecified. Use `null` to\nclear. Omit to leave this property alone.", + "examples": [ + "HTTP-4" + ] + }, + "credentialId": { + "type": "string", + "description": "The `id` of an HttpCredential. The type of the credential must match the HttpAuthStrategy of the endpoint\u2019s\nassigned or discovered profile (see `authType` in HttpEndpointProfileDef). Credential auto-association will\nbe attempted using credentials configured to allow it if this property is unspecified and collecting from\nthis endpoint requires this kind of credential. Use `null` to clear. Omit to leave this property alone.", + "examples": [ + "H-5" + ] + }, + "disableSslValidation": { + "type": "boolean", + "description": "Whether to skip TLS validation. Can be useful for an endpoint whose certificate isn\u2019t trusted. Not\nrecommended. Defaults to false. Use `null` to clear. Omit to leave this property alone.", + "examples": [ + false + ] + }, + "collect": { + "type": "boolean", + "description": "Whether to collect from this network endpoint. Defaults to true. Use `null` to clear. Omit to leave this\nproperty alone.", + "examples": [ + true + ] + }, + "note": { + "type": "string", + "description": "An optional description or note about this network endpoint. Use `null` to clear. Omit to leave this\nproperty alone.", + "examples": [ + "Yada yada yada" + ] + } + } + }, + "CliEndpointProfileDef": { + "type": "object", + "required": [ + "type", + "name" + ], + "properties": { + "type": { + "type": "string", + "const": "CLI" + }, + "name": { + "type": "string", + "description": "Name of this profile (\"HpPrinter\", \"SamsungTV\", etc.).", + "examples": [ + "sentry_pdu_ssh" + ] + }, + "detectorCommand": { + "type": "string", + "description": "CLI command to run to detect a network endpoint of this type. If absent, the profile can be manually\nassigned to a network endpoint, but not auto-detected.", + "examples": [ + "version" + ] + }, + "detectorPatterns": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Patterns matching on output of `detectorCommand` to determine whether the device is of this type. Absent if\n`detectorCommand` is absent. Never empty.", + "examples": [ + "- Sentry Switched PDU" + ] + }, + "detectorErrorPatterns": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Patterns matching an error message if a device doesn\u2019t recognize `detectorCommand`.", + "examples": [ + "- Invalid command\n- 'Switched PDU commands:'" + ] + }, + "nameDetectorCommand": { + "type": "string", + "description": "Command to use to detect the name of a network endpoint of this type. If absent, the name cannot be\ndetected.", + "examples": [ + "show network" + ] + }, + "nameDetectorPatterns": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Glob patterns used to extract the device name from the output of `nameDetectorCommand`. The word immediately\nafter a matched glob pattern is the desired name. If no glob patterns are specified, the first word/token in\nthe `nameDetectorCommand` output will be used.", + "examples": [ + "- FQDN:*enabled" + ] + }, + "prompt": { + "type": "string", + "description": "A case-insensitive glob pattern used to identify an interactive console menu prompt. When this pattern\nmatches the end of the prompt, ignoring any trailing whitespace, the Collector will enter the configured\n`promptResponse`.", + "examples": [ + "y/n" + ] + }, + "promptResponse": { + "type": "string", + "description": "What the Collector should enter in response to an interactive console menu prompt matching `prompt` in order\nto proceed. Required if `prompt` is set.", + "examples": [ + "y" + ] + }, + "pagePrompt": { + "type": "string", + "description": "Case-insensitive glob pattern used to identify a new page banner. Works like `prompt`. If the device doesn\u2019t\ngenerate paginated command output or if paging is like the \u201cmore\u201d command, omit this property.", + "examples": [ + "continue\\?" + ] + }, + "pagePromptResponse": { + "type": "string", + "description": "What the Collector should enter in response to an interactive pagination prompt detected via `pagePrompt` in\norder to proceed. Required if `pagePrompt` is set.", + "examples": [ + "c" + ] + }, + "ptyType": { + "type": "string", + "description": "Device\u2019s terminal type (\"xterm-256color\", \"vt100\", etc.).", + "examples": [ + "vt100" + ] + }, + "ptyColumnSize": { + "type": "integer", + "format": "int32", + "description": "Column size of the output. Defaults to 500.", + "examples": [ + 240 + ] + }, + "clearPrompt": { + "type": "string", + "description": "Command to clear the prompt. Can be specified like \"ctrl-[a-z]\" or \"ctrl+[a-z]\". Defaults to\n\"ctrl+c\".", + "examples": [ + "ctrl+z" + ] + }, + "responseTimeoutSec": { + "type": "integer", + "format": "int32", + "description": "Timeout in seconds applied to this profile\u2019s CLI commands run during discovery and collection.", + "examples": [ + 15 + ] + }, + "commandSets": { + "type": "array", + "items": { + "$ref": "#/components/schemas/CommandSet" + }, + "description": "Predefined command sets to run on network endpoints with this profile. The \"UNIX\" set includes the commands\n\"ifconfig\", \"netstat -ln\", \"hostname\", and \"uname -a\".", + "examples": [ + "- UNIX" + ] + }, + "customCommands": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Additional commands to run on network endpoints with this profile. Commands should be\nread-only.", + "examples": [ + "- uptime\n- iptables -L" + ] + } + } + }, + "NewHttpCredential": { + "type": "object", + "required": [ + "type", + "name", + "password" + ], + "properties": { + "type": { + "$ref": "#/components/schemas/HttpCredentialType", + "examples": [ + "LOGIN" + ] + }, + "name": { + "type": "string", + "description": "For display purposes in the application", + "examples": [ + "admin (sjc)" + ] + }, + "username": { + "type": "string", + "description": "Required for the `LOGIN` type", + "examples": [ + "admin" + ] + }, + "password": { + "type": "string", + "examples": [ + "my-s3cr3t-p4s$w0rd" + ] + }, + "loginType": { + "$ref": "#/components/schemas/LoginType", + "description": "Required only for a credential of type `LOGIN` used by a Silver Peak Orchestrator", + "examples": [ + "LOCAL" + ] + }, + "autoAssociate": { + "type": "boolean", + "description": "Defaults to true for the `LOGIN` type. Not allowed for the `API_KEY` type.", + "examples": [ + false + ] + } + } + }, + "EndpointProfile": { + "allOf": [ + { + "type": "object", + "oneOf": [ + { + "$ref": "#/components/schemas/CliEndpointProfile" + }, + { + "$ref": "#/components/schemas/SnmpEndpointProfile" + }, + { + "$ref": "#/components/schemas/HttpEndpointProfile" + } + ], + "discriminator": { + "propertyName": "type", + "mapping": { + "CLI": "#/components/schemas/CliEndpointProfile", + "SNMP": "#/components/schemas/SnmpEndpointProfile", + "HTTP": "#/components/schemas/HttpEndpointProfile" + } + } + }, + { + "$ref": "#/components/schemas/Attribution" + } + ] + }, + "HttpEndpointProfile": { + "allOf": [ + { + "type": "object", + "required": [ + "id" + ], + "properties": { + "id": { + "type": "string", + "description": "System-assigned identifier of this endpoint profile. Always begins with \"HTTP-\".", + "examples": [ + "HTTP-4" + ] + } + } + }, + { + "$ref": "#/components/schemas/HttpEndpointProfileDef" + } + ] + }, + "HttpEndpointProfileDef": { + "type": "object", + "required": [ + "type", + "name", + "https", + "authType", + "endpoints" + ], + "properties": { + "type": { + "type": "string", + "const": "HTTP" + }, + "name": { + "type": "string", + "description": "Name of this profile (\"HpPrinter\", \"SamsungTV\", etc.)", + "examples": [ + "nsxt_https" + ] + }, + "https": { + "type": "boolean", + "description": "Whether to use HTTPS to connect rather than HTTP.", + "examples": [ + true + ] + }, + "authType": { + "$ref": "#/components/schemas/HttpAuthStrategy", + "description": "The type of HTTP authentication that devices of this type require for API requests.", + "examples": [ + "BASIC_AUTH" + ] + }, + "headers": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "HTTP headers to send in API requests to devices of this type. These headers should not contain sensitive\ndata. Authentication should be handled separately if required using credentials assigned or discovered on a\nper-device basis. Use `authType` to specify what type of HTTP authentication this device type requires.", + "examples": [ + { + "accept": "application/json" + } + ] + }, + "detectorUri": { + "type": "string", + "description": "HTTP GET URI (path and optional query string) used to detect whether a device of unknown type is this kind\nof network endpoint. If absent, the profile can be manually assigned to a network endpoint, but not\nauto-detected.", + "examples": [ + "/login.jsp" + ] + }, + "detectorPatterns": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Case-insensitive glob patterns used on the response of a request to `detectorUri` to determine whether a\ndevice of unknown type is of this type. Absent if `detectorUri` is absent. Never empty.", + "examples": [ + "- VMware NSX" + ] + }, + "endpoints": { + "type": "array", + "items": { + "$ref": "#/components/schemas/HttpEndpoint" + }, + "description": "HTTP GET endpoints to collect from network endpoints with this profile. Never empty.", + "examples": [ + [ + { + "name": "compute_managers", + "path": "/api/v1/fabric/compute-managers" + }, + { + "name": "logical_router_ports", + "path": "/api/v1/logical-router-ports", + "paginationModel": { + "type": "OFFSET", + "itemsArrayField": "ports", + "parameterName": "page", + "offsetIncrementExpression": { + "operator": "PLUS_ONE" + } + } + } + ] + ] + } + } + }, + "HttpEndpoint": { + "type": "object", + "required": [ + "name", + "path" + ], + "properties": { + "name": { + "type": "string", + "description": "A concise name for this HTTP endpoint. Used in the name of the file(s) the Collector creates to store the\nresponse(s) it receives from a device. Can contain only letters, digits, underscores, hyphens, and dots.", + "examples": [ + "compute_managers" + ] + }, + "path": { + "type": "string", + "description": "The URL path for this HTTP endpoint. Must start with \"/\". May include a query string.", + "examples": [ + "/api/v1/fabric/compute-managers" + ] + }, + "paginationModel": { + "$ref": "#/components/schemas/PaginationModel", + "description": "Instructions for fetching this HTTP endpoint\u2019s dataset in parts (pages) using a sequence of requests. Can\nonly be used if this endpoint\u2019s response format is JSON. Absent if this endpoint doesn\u2019t require pagination.", + "examples": [ + { + "type": "OFFSET", + "itemsArrayField": [ + "managers" + ], + "parameterName": "page", + "offsetIncrementExpression": { + "operator": "PLUS_ONE" + } + } + ] + } + } + }, + "PaginationModel": { + "type": "object", + "required": [ + "type", + "itemsArrayField" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "OFFSET", + "URL_CURSOR", + "PARAMETER_CURSOR" + ] + }, + "itemsArrayField": { + "type": "array", + "items": { + "type": "string" + }, + "description": "JSON property name(s) that must be accessed, starting from the top level of the HTTP response, to reach the\npaginated data array.", + "examples": [ + "- items" + ] + }, + "maxPages": { + "type": "integer", + "format": "int32", + "description": "Maximum number of pages to collect. Defaults to 1000.", + "examples": [ + 100 + ] + } + }, + "oneOf": [ + { + "$ref": "#/components/schemas/OffsetBasedPagination" + }, + { + "$ref": "#/components/schemas/UrlCursorBasedPagination" + }, + { + "$ref": "#/components/schemas/ParameterCursorBasedPagination" + } + ], + "discriminator": { + "propertyName": "type", + "mapping": { + "OFFSET": "#/components/schemas/OffsetBasedPagination", + "URL_CURSOR": "#/components/schemas/UrlCursorBasedPagination", + "PARAMETER_CURSOR": "#/components/schemas/ParameterCursorBasedPagination" + } + } + }, + "ParameterCursorBasedPagination": { + "type": "object", + "required": [ + "type", + "itemsArrayField", + "parameterName", + "parameterField" + ], + "properties": { + "type": { + "type": "string", + "const": "PARAMETER_CURSOR" + }, + "itemsArrayField": { + "type": "array", + "items": { + "type": "string" + }, + "description": "JSON property name(s) that must be accessed, starting from the top level of the HTTP response, to reach the\npaginated data array.", + "examples": [ + "- items" + ] + }, + "parameterName": { + "type": "string", + "description": "The name of the URL query parameter to populate with the cursor value from the previous\nresponse.", + "examples": [ + "pagingCursor" + ] + }, + "parameterField": { + "type": "array", + "items": { + "type": "string" + }, + "description": "JSON property name(s) that must be accessed, starting from the top level of the HTTP response, to reach the\nnext page\u2019s cursor value.", + "examples": [ + "- pagingInfo\n- nextPageCursor" + ] + }, + "maxPages": { + "type": "integer", + "format": "int32", + "description": "Maximum number of pages to collect. Defaults to 1000.", + "examples": [ + 100 + ] + } + } + }, + "OffsetBasedPagination": { + "type": "object", + "required": [ + "type", + "itemsArrayField", + "parameterName", + "offsetIncrementExpression" + ], + "properties": { + "type": { + "type": "string", + "const": "OFFSET" + }, + "itemsArrayField": { + "type": "array", + "items": { + "type": "string" + }, + "description": "JSON property name(s) that must be accessed, starting from the top level of the HTTP response, to reach the\npaginated data array.", + "examples": [ + "- items" + ] + }, + "parameterName": { + "type": "string", + "description": "The name of the URL query parameter to populate with the offset value that increases with each\nrequest.", + "examples": [ + "skip" + ] + }, + "offsetIncrementExpression": { + "$ref": "#/components/schemas/OffsetIncrementExpression", + "description": "What to add to the previous request\u2019s offset value to get the next request\u2019s offset value. The first\nrequest\u2019s offset value is always zero.", + "examples": [ + { + "operator": "LENGTH", + "path": [ + "items" + ] + } + ] + }, + "maxPages": { + "type": "integer", + "format": "int32", + "description": "Maximum number of pages to collect. Defaults to 1000.", + "examples": [ + 100 + ] + } + } + }, + "OffsetIncrementExpression": { + "type": "object", + "required": [ + "operator" + ], + "properties": { + "operator": { + "type": "string", + "description": "\"IDENTITY\" means to add the number at `path` in the previous request\u2019s response to the previous request\u2019s\noffset value. \"LENGTH\" means to add the length of the array at `path` in the previous request\u2019s response to\nthe previous request\u2019s offset value. \"PLUS_ONE\" means to simply add one to the previous request\u2019s offset\nvalue.", + "examples": [ + "LENGTH" + ], + "enum": [ + "IDENTITY", + "LENGTH", + "PLUS_ONE" + ] + }, + "path": { + "type": "array", + "items": { + "type": "string" + }, + "description": "JSON property name(s) that must be accessed, starting from the top level of the HTTP response, to reach the\nvalue or array needed to calculate the next offset value. Required if `operator` is \"IDENTITY\" or \"LENGTH\";\nabsent otherwise.", + "examples": [ + "- items" + ] + } + } + }, + "UrlCursorBasedPagination": { + "type": "object", + "required": [ + "type", + "itemsArrayField", + "urlField" + ], + "properties": { + "type": { + "type": "string", + "const": "URL_CURSOR" + }, + "itemsArrayField": { + "type": "array", + "items": { + "type": "string" + }, + "description": "JSON property name(s) that must be accessed, starting from the top level of the HTTP response, to reach the\npaginated data array.", + "examples": [ + "- items" + ] + }, + "urlField": { + "type": "array", + "items": { + "type": "string" + }, + "description": "JSON property name(s) that must be accessed, starting from the top level of the HTTP response, to reach the\nnext page\u2019s URL.", + "examples": [ + "- pagingInfo\n- nextPageUrl" + ] + }, + "maxPages": { + "type": "integer", + "format": "int32", + "description": "Maximum number of pages to collect. Defaults to 1000.", + "examples": [ + 100 + ] + } + } + }, + "HttpAuthStrategy": { + "type": "string", + "enum": [ + "NONE", + "BASIC_AUTH" + ] + }, + "SnmpEndpointProfile": { + "allOf": [ + { + "type": "object", + "required": [ + "id" + ], + "properties": { + "id": { + "type": "string", + "description": "System-assigned identifier of this endpoint profile. Always begins with \"SNMP-\".", + "examples": [ + "SNMP-5" + ] + } + } + }, + { + "$ref": "#/components/schemas/SnmpEndpointProfileDef" + } + ] + }, + "SnmpEndpointProfileDef": { + "type": "object", + "required": [ + "type", + "name" + ], + "properties": { + "type": { + "type": "string", + "const": "SNMP" + }, + "name": { + "type": "string", + "description": "Name of this profile (\"HpPrinter\", \"SamsungTV\", etc.).", + "examples": [ + "esxi_snmp" + ] + }, + "detectorOid": { + "type": "string", + "description": "OID to collect to detect a network endpoint of this type. If absent, the profile can be manually assigned to\na network endpoint, but not auto-detected.", + "examples": [ + "1.3.6.1.2.1.1.1.0" + ] + }, + "detectorPatterns": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Patterns matching on output of `detectorOid` to determine whether the device is of this type. Absent if\n`detectorOid` is absent. Never empty.", + "examples": [ + "- ESXi" + ] + }, + "nameDetectorOid": { + "type": "string", + "description": "OID to collect to detect the name of a network endpoint of this type. If absent, the name cannot be\ndetected.", + "examples": [ + "1.3.6.1.2.1.1.5" + ] + }, + "nameDetectorPatterns": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Glob patterns used to extract the device name from the collected value for `nameDetectorOid`. The word\nimmediately after a matched glob pattern is the desired name. If no glob patterns are specified, the first\nword/token in the `nameDetectorOid` value will be used.", + "examples": [ + "- FQDN:*enabled" + ] + }, + "responseTimeoutSec": { + "type": "integer", + "format": "int32", + "description": "Timeout in seconds for retrieving the value of one of this profile\u2019s OIDs during discovery or collection.\nDefaults to 5.", + "examples": [ + 10 + ] + }, + "oidSets": { + "type": "array", + "items": { + "$ref": "#/components/schemas/OidSet" + }, + "description": "Predefined OID sets to collect from network endpoints with this profile. The \"STANDARD\" set includes OIDs\nfor system name, system description, TCP info, UDP info, host address, and interface info.", + "examples": [ + "- STANDARD" + ] + }, + "customOids": { + "type": "array", + "items": { + "$ref": "#/components/schemas/CustomOid" + }, + "description": "Additional OIDs to collect from network endpoints with this profile. The output of each OID is saved to a\nfile with the associated name.", + "examples": [ + [ + { + "name": "system_desc", + "oid": "1.3.6.1.2.1.1.1" + }, + { + "name": "hostname", + "oid": "1.3.6.1.2.1.1.5" + } + ] + ] + } + } + }, + "CliEndpointProfile": { + "allOf": [ + { + "type": "object", + "required": [ + "id" + ], + "properties": { + "id": { + "type": "string", + "description": "System-assigned identifier of this endpoint profile. Always begins with \"CLI-\".", + "examples": [ + "CLI-7" + ] + } + } + }, + { + "$ref": "#/components/schemas/CliEndpointProfileDef" + } + ] + }, + "SnmpNetworkEndpointPatch": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "A name that\u2019s unique (ignoring case) among all of the network\u2019s collection source names. May consist of\nletters, digits, dots, hyphens, and underscores. Omit to leave this property alone.", + "examples": [ + "my-endpoint" + ] + }, + "host": { + "type": "string", + "description": "IP address or hostname used to connect to the device. Omit to leave this 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\nfor HTTPS, etc. Use `null` to clear. Omit to leave this property alone.", + "examples": [ + 22 + ] + }, + "profileId": { + "type": "string", + "description": "ID of the endpoint profile to use. Auto-detected during connectivity testing if unspecified. Use `null` to\nclear. Omit to leave this property alone.", + "examples": [ + "SNMP-5" + ] + }, + "credentialId": { + "type": "string", + "description": "The `id` of an SnmpCredential. Credential auto-association will be attempted using credentials configured to\nallow it if this property is unspecified and collecting from this endpoint requires this kind of credential.\nUse `null` to clear. Omit to leave this property alone.", + "examples": [ + "S-1" + ] + }, + "collect": { + "type": "boolean", + "description": "Whether to collect from this network endpoint. Defaults to true. Use `null` to clear. Omit to leave this\nproperty alone.", + "examples": [ + true + ] + }, + "note": { + "type": "string", + "description": "An optional description or note about this network endpoint. Use `null` to clear. Omit to leave this\nproperty alone.", + "examples": [ + "Yada yada yada" + ] + } + } + }, + "HttpEndpointProfilePatch": { + "type": "object", + "properties": { + "authType": { + "$ref": "#/components/schemas/HttpAuthStrategy", + "description": "The type of HTTP authentication that devices of this type require for API requests. Omit to leave this\nproperty alone.", + "examples": [ + "BASIC_AUTH" + ] + }, + "detectorPatterns": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Case-insensitive glob patterns used on the response of a request to `detectorUri` to determine whether a\ndevice of unknown type is of this type. Absent if `detectorUri` is absent. Never empty. Use `null` to clear.\nOmit to leave this property alone.", + "examples": [ + "- VMware NSX" + ] + }, + "detectorUri": { + "type": "string", + "description": "HTTP GET URI (path and optional query string) used to detect whether a device of unknown type is this kind\nof network endpoint. If absent, the profile can be manually assigned to a network endpoint, but not\nauto-detected. Use `null` to clear. Omit to leave this property alone.", + "examples": [ + "/login.jsp" + ] + }, + "endpoints": { + "type": "array", + "items": { + "$ref": "#/components/schemas/HttpEndpoint" + }, + "description": "HTTP GET endpoints to collect from network endpoints with this profile. Never empty. Omit to leave this\nproperty alone.", + "examples": [ + [ + { + "name": "compute_managers", + "path": "/api/v1/fabric/compute-managers" + }, + { + "name": "logical_router_ports", + "path": "/api/v1/logical-router-ports", + "paginationModel": { + "type": "OFFSET", + "itemsArrayField": "ports", + "parameterName": "page", + "offsetIncrementExpression": { + "operator": "PLUS_ONE" + } + } + } + ] + ] + }, + "headers": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "HTTP headers to send in API requests to devices of this type. These headers should not contain sensitive\ndata. Authentication should be handled separately if required using credentials assigned or discovered on a\nper-device basis. Use `authType` to specify what type of HTTP authentication this device type requires. Use\n`null` to clear. Omit to leave this property alone.", + "examples": [ + { + "accept": "application/json" + } + ] + }, + "https": { + "type": "boolean", + "description": "Whether to use HTTPS to connect rather than HTTP. Omit to leave this property alone.", + "examples": [ + true + ] + }, + "name": { + "type": "string", + "description": "Name of this profile (\"HpPrinter\", \"SamsungTV\", etc.) Omit to leave this property alone.", + "examples": [ + "nsxt_https" + ] + } + } + }, + "StoredJumpServer": { + "allOf": [ + { + "$ref": "#/components/schemas/JumpServer" + }, + { + "$ref": "#/components/schemas/Attribution" + } + ] + }, + "JumpServer": { + "type": "object", + "required": [ + "host", + "username" + ], + "properties": { + "id": { + "type": "string", + "examples": [ + "8c4a168e-c6ca-4978-bcc9-c0ec7f64a164" + ] + }, + "host": { + "type": "string", + "examples": [ + "10.121.7.14" + ] + }, + "port": { + "type": "integer", + "format": "int32", + "description": "defaults to 22", + "examples": [ + 23 + ] + }, + "username": { + "type": "string", + "examples": [ + "admin" + ] + }, + "password": { + "type": "string", + "description": "Either this or `sshKey` must be provided in requests. A system-generated identifier is substituted for the\nactual password in responses.", + "examples": [ + "my-s3cr3t-p4s$w0rd" + ] + }, + "sshKey": { + "type": "string", + "description": "SSH private key for authentication. Either this or `password` must be provided in requests. Requires\n`supportsPortForwarding` to be true. A system-generated identifier is substituted for the actual key in\nresponses.", + "examples": [ + "-----BEGIN RSA PRIVATE KEY-----\nMIIPIQIBAzCCDtoGCSqGSIb3DQEHAa..." + ] + }, + "sshCert": { + "type": "string", + "description": "SSH user certificate for authentication. Applicable only for certificate based authentication and requires\n`sshKey` to be provided.", + "examples": [ + "ssh-rsa-cert-v01@openssh.com AAAAHHNzaC1yc2EtY2VydC12MDFAb3BlbnNzaC5jb20AAA..." + ] + }, + "supportsPortForwarding": { + "type": "boolean", + "description": "defaults to true", + "examples": [ + false + ] + }, + "commandFormat": { + "$ref": "#/components/schemas/JumpServerCommandFormat", + "description": "applicable when supportsPortForwarding is false, defaults to UNIX", + "examples": [ + "CISCO_IOS" + ] + }, + "vrf": { + "type": "string", + "description": "VRF that this jump server should use to connect to devices. Can be set only if `commandFormat`\nis CISCO_IOS.", + "examples": [ + "Management-vrf" + ] + }, + "authenticationTimeoutSeconds": { + "type": "integer", + "format": "int32", + "description": "seconds to wait for the jump server authentication response. Defaults to 20.", + "examples": [ + 20 + ] + } + } + }, + "JumpServerCommandFormat": { + "type": "string", + "enum": [ + "UNIX", + "CISCO_IOS", + "JUNOS", + "PANORAMA" + ] + }, + "NewNetworkCheck": { + "type": "object", + "required": [ + "definition" + ], + "properties": { + "definition": { + "$ref": "#/components/schemas/CheckDefinition" + }, + "enabled": { + "type": "boolean" + }, + "name": { + "type": "string" + }, + "note": { + "type": "string" + }, + "perfMonitoringEnabled": { + "type": "boolean", + "description": "Whether performance monitoring is enabled for this check. Only supported for Existential intent checks.\nPerformance monitoring must be independently enabled for each device along the check\u2019s path(s)." + }, + "priority": { + "$ref": "#/components/schemas/CheckPriority" + }, + "tags": { + "type": "array", + "items": { + "type": "string" + } + } + } + }, + "PathSearchBulkRequest": { + "type": "object", + "required": [ + "queries" + ], + "properties": { + "queries": { + "type": "array", + "items": { + "$ref": "#/components/schemas/PathSearchQuery" + } + }, + "intent": { + "$ref": "#/components/schemas/SearchIntent", + "description": "Specifies the intent for the search. Default PREFER_DELIVERED.\n*PREFER_VIOLATIONS*: Prefer paths that result in the traffic not getting delivered, e.g. drops, blackholes,\nloops. An example usage is while trying to evaluate if the specified traffic always gets delivered to the\ndestination along all path choices.\n*PREFER_DELIVERED*: Prefer paths that result in the traffic getting delivered. An example usage is while\ntrying to evaluate if traffic gets delivered to the destination along any path choice.\n*VIOLATIONS_ONLY*: Search for paths where traffic is not delivered to the destination.", + "examples": [ + "PREFER_DELIVERED" + ], + "default": "PREFER_DELIVERED" + }, + "maxCandidates": { + "type": "integer", + "format": "int32", + "description": "the limit on the number of search results computed, before applying any ranking criteria. Permitted range =\n1 to 10,000. Default 5,000.", + "examples": [ + 5000 + ] + }, + "maxResults": { + "type": "integer", + "format": "int32", + "description": "the limit on the number of search results returned by the API. First, the platform computes up to\nmaxCandidates results that match the search criteria. Then they are sorted by various ranking criteria. A\nkey ranking factor is path length, preferring longer paths (greatest reach) in the network over shorter\nones. Finally, the API limits the number of returned search results to maxResults. Permitted range = 1 to\nmaxCandidates. Default 1.", + "examples": [ + 1 + ] + }, + "maxReturnPathResults": { + "type": "integer", + "format": "int32", + "description": "the limit on the number of return path search results. Permitted range = 0 to 10,000. Default 0. Multicast\n(*, G) and (S, G) queries will always return 0 return path results regardless of this value.", + "examples": [ + 0 + ] + }, + "maxSeconds": { + "type": "integer", + "format": "int32", + "description": "the timeout duration per search query. Permitted range = 1 to 300. Default 30.", + "examples": [ + 30 + ] + }, + "maxOverallSeconds": { + "type": "integer", + "format": "int32", + "description": "the overall timeout duration. Permitted range = 1 to 7,200. Default equal to the timeout duration for a\nsingle query.", + "examples": [ + 300 + ] + }, + "includeTags": { + "type": "boolean", + "description": "If true, the response will include device tags for each hop.", + "examples": [ + false + ] + }, + "includeNetworkFunctions": { + "type": "boolean", + "description": "If true, the response includes detailed forwarding info for each hop.\nNote: Setting this to true increases the API response time.", + "examples": [ + false + ] + } + } + }, + "SearchIntent": { + "type": "string", + "enum": [ + "PREFER_VIOLATIONS", + "PREFER_DELIVERED", + "VIOLATIONS_ONLY" + ] + }, + "PathSearchQuery": { + "type": "object", + "required": [ + "dstIp" + ], + "properties": { + "from": { + "type": "string", + "description": "the device from which the traffic originates. If this is specified, then the srcIp will be considered as a\npacket header only, else, the srcIp will be resolved to specific location(s) and used as the source in the\npath search. Either the source device or srcIp must be specified." + }, + "srcIp": { + "type": "string", + "description": "the source IP address or subnet of packets entering the network. For multicast (*, G) paths, set srcIp = G\n(multicast group address).", + "examples": [ + "10.10.10.10" + ] + }, + "dstIp": { + "type": "string", + "description": "the destination IP address or subnet of packets entering the network. For multicast (*, G) paths, set dstIp\n= G (multicast group address).", + "examples": [ + "10.10.10.64/28" + ] + }, + "ipProto": { + "type": "integer", + "format": "int32", + "minimum": 0, + "maximum": 255, + "description": "the IP protocol", + "examples": [ + 6 + ] + }, + "srcPort": { + "type": "string", + "description": "the L4 source port, like \"80\" or a range \"8080-8088\"", + "examples": [ + "80" + ] + }, + "dstPort": { + "type": "string", + "description": "the L4 destination port, like \"80\" or a range \"8080-8088\"", + "examples": [ + "8080-8088" + ] + }, + "icmpType": { + "type": "integer", + "format": "int32", + "minimum": 0, + "maximum": 255, + "description": "the ICMP type. Implies ipProto = 1." + }, + "fin": { + "type": "integer", + "format": "int32", + "minimum": 0, + "maximum": 1, + "description": "the FIN (finish) bit (0 or 1). Implies ipProto = 6.", + "examples": [ + 1 + ] + }, + "syn": { + "type": "integer", + "format": "int32", + "minimum": 0, + "maximum": 1, + "description": "the SYN (synchronize) bit (0 or 1). Implies ipProto = 6.", + "examples": [ + 1 + ] + }, + "rst": { + "type": "integer", + "format": "int32", + "minimum": 0, + "maximum": 1, + "description": "the RST (reset) bit (0 or 1). Implies ipProto = 6.", + "examples": [ + 1 + ] + }, + "psh": { + "type": "integer", + "format": "int32", + "minimum": 0, + "maximum": 1, + "description": "the PSH (push) bit (0 or 1). Implies ipProto = 6.", + "examples": [ + 1 + ] + }, + "ack": { + "type": "integer", + "format": "int32", + "minimum": 0, + "maximum": 1, + "description": "the ACK (acknowledgment) bit (0 or 1). Implies ipProto = 6.", + "examples": [ + 1 + ] + }, + "urg": { + "type": "integer", + "format": "int32", + "minimum": 0, + "maximum": 1, + "description": "the URG (urgent) bit (0 or 1). Implies ipProto = 6.", + "examples": [ + 1 + ] + }, + "appId": { + "type": "string", + "description": "the L7 app-id or \"unidentified\" to exclude paths that traverse firewall policies with app-id matches. If the\nsystem doesn't recognize the provided value, it handles the value the same as \"unidentified\" and includes\nthe value in the `unrecognizedValues` response field. The applications that are recognized by the model can\nbe obtained using GET /api/l7-applications.", + "examples": [ + "ssh" + ] + }, + "userId": { + "type": "string", + "description": "the L7 user-id or \"unidentified\" to exclude paths that traverse firewall policies with user-id matches. If\nthe system doesn't recognize the provided value, it handles the value the same as \"unidentified\" and\nincludes the value in the `unrecognizedValues` response field. See [Path Analysis with Layer 7\nUser-Group](/docs/application/search/path-analysis/layer7_ugroup/) for more info.", + "examples": [ + "user1" + ] + }, + "userGroupId": { + "type": "string", + "description": "the L7 user-group-id. If the system doesn't recognize the provided value, the search returns 0 results as\nthere are no paths that traverse firewall policies with that user-group-id match, and the value is included\nin the `unrecognizedValues` response field. See [Path Analysis with Layer 7\nUser-Group](/docs/application/search/path-analysis/layer7_ugroup/) for more info.", + "examples": [ + "group1" + ] + }, + "url": { + "type": "string", + "description": "the L7 URL that traffic of interest is trying to access. Prefix wildcards are supported for subdomains.\nSuffix wildcards are supported for top-level domains and URL paths. See [Path Analysis with Layer 7\nURL](/docs/application/search/path-analysis/layer7_url/) for more policy patterns supported in the model.", + "examples": [ + "*.example.com" + ] + } + } + }, + "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" + } + } + }, + "Network": { + "type": "object", + "required": [ + "id", + "name", + "orgId" + ], + "properties": { + "id": { + "type": "string" + }, + "parentId": { + "type": "string", + "description": "The network from which this Workspace network was created. Absent if this network is not a\nWorkspace." + }, + "name": { + "type": "string", + "examples": [ + "My Network" + ] + }, + "orgId": { + "type": "string" + }, + "creator": { + "type": "string", + "description": "The username of the user who created the network, or null if the account was deleted", + "examples": [ + "mary" + ] + }, + "creatorId": { + "type": "string", + "description": "The id of the user who created the network, or null if the account was deleted", + "examples": [ + "123" + ] + }, + "created": { + "type": "string", + "examples": [ + "2022-04-06T20:34:45.118Z" + ] + }, + "createdAt": { + "type": "integer", + "format": "int64", + "description": "Deprecated for removal in release 26.4. Use `created` instead.", + "examples": [ + 1649277285118 + ] + }, + "note": { + "type": "string", + "description": "An optional network description." + }, + "retentionDays": { + "type": "integer", + "format": "int32", + "minimum": 1, + "maximum": 365, + "description": "The number of days without any use of this network after which it will be automatically deleted. Absent for\nparent networks and permanent Workspace networks." + }, + "secondsToExpiry": { + "type": "integer", + "format": "int64", + "description": "Number of seconds without use before the network expires. Present for temporary Workspace\nnetworks only." + } + } + }, + "EndpointProfiles": { + "type": "object", + "required": [ + "profiles" + ], + "properties": { + "profiles": { + "type": "array", + "items": { + "$ref": "#/components/schemas/EndpointProfile" + } + } + } + }, + "JumpServerUpdate": { + "type": "object", + "properties": { + "host": { + "type": "string", + "examples": [ + "10.121.7.14" + ] + }, + "port": { + "type": "integer", + "format": "int32", + "examples": [ + 23 + ] + }, + "username": { + "type": "string", + "examples": [ + "admin" + ] + }, + "password": { + "type": "string", + "examples": [ + "my-s3cr3t-p4s$w0rd" + ] + }, + "sshKey": { + "type": "string", + "examples": [ + "-----BEGIN RSA PRIVATE KEY-----\nMIIPIQIBAzCCDtoGCSqGSIb3DQEHAa..." + ] + }, + "sshCert": { + "type": "string", + "examples": [ + "ssh-rsa-cert-v01@openssh.com AAAAHHNzaC1yc2EtY2VydC12MDFAb3BlbnNzaC5jb20AAA..." + ] + }, + "supportsPortForwarding": { + "type": "boolean", + "examples": [ + false + ] + }, + "commandFormat": { + "$ref": "#/components/schemas/JumpServerCommandFormat", + "examples": [ + "CISCO_IOS" + ] + }, + "vrf": { + "type": "string", + "examples": [ + "Management-vrf" + ] + }, + "authenticationTimeoutSeconds": { + "type": "integer", + "format": "int32", + "examples": [ + 20 + ] + } + } + }, + "DeviceFiles": { + "type": "object", + "properties": { + "files": { + "type": "array", + "items": { + "$ref": "#/components/schemas/DeviceFile" + } + } + } + }, + "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\ncustom_cli files.", + "examples": [ + "net show bridge macs" + ] + } + } + }, + "StoredHttpCredential": { + "allOf": [ + { + "$ref": "#/components/schemas/HttpCredential" + }, + { + "$ref": "#/components/schemas/Attribution" + } + ] + }, + "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\n[classic device](#network-setup) name. For a virtual context, this is the classic device name plus context\nname. 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\u2019s common name, if different from `\"name\"`. Absent for most network devices. For a cloud device,\nthis is the name shown in the cloud provider\u2019s console.", + "examples": [ + "nyc-dc01-fw02" + ] + }, + "sourceName": { + "type": "string", + "description": "Name of this device\u2019s [collection source](#network-setup), if different from `\"name\"`. Absent for most\nnetwork 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\nvalue 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" + ] + } + } + }, + "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", + "avaya_ers", + "viasat_encryptor", + "nokia", + "huawei_switch", + "versa_sase", + "versa_switch", + "brocade_switch", + "cisco_encs_nfv", + "extreme_nos", + "meraki_ms", + "meraki_mr", + "meraki_mx", + "mist_ap", + "dell_os6", + "dell_os9", + "dell_os10", + "dell_sonic", + "gd_encryptor", + "edge_core_sonic" + ] + }, + "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" + ] + }, + "DeviceProcessingError": { + "type": "string", + "enum": [ + "LICENSE_EXHAUSTED", + "MISSING_SIGNATURE", + "DUPLICATE", + "PARSER_EXCEPTION", + "MODELING_EXCEPTION", + "UNSUPPORTED_VENDOR" + ] + }, + "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" + ] + }, + "NqeQuery": { + "type": "object", + "properties": { + "queryId": { + "type": "string", + "description": "The ID of the query", + "examples": [ + "FQ_ac651cb2901b067fe7dbfb511613ab44776d8029" + ] + }, + "repository": { + "type": "string", + "examples": [ + "ORG" + ], + "enum": [ + "FWD", + "ORG" + ] + }, + "path": { + "type": "string", + "description": "The unique path of the query, including its name, in the latest commit", + "examples": [ + "/L2/MtuConsistency" + ] + }, + "intent": { + "type": "string", + "description": "The intent of the query in the latest commit" + } + } + }, + "DeviceTags": { + "type": "object", + "properties": { + "tags": { + "type": "array", + "items": { + "$ref": "#/components/schemas/DeviceTag" + } + } + } + }, + "DeviceTag": { + "type": "object", + "required": [ + "name" + ], + "properties": { + "name": { + "type": "string", + "description": "The device tag\u2019s name. Case-insensitive. May include spaces.", + "examples": [ + "SEC" + ] + }, + "color": { + "type": "string", + "description": "The device tag\u2019s color in RGB hex format. Used in network topology diagrams if specified.", + "examples": [ + "#0064a0" + ] + } + } + }, + "NewJumpServer": { + "type": "object", + "required": [ + "host", + "username" + ], + "properties": { + "host": { + "type": "string", + "examples": [ + "10.121.7.14" + ] + }, + "port": { + "type": "integer", + "format": "int32", + "description": "defaults to 22", + "examples": [ + 23 + ] + }, + "username": { + "type": "string", + "examples": [ + "admin" + ] + }, + "password": { + "type": "string", + "description": "Either this or `sshKey` is required", + "examples": [ + "my-s3cr3t-p4s$w0rd" + ] + }, + "sshKey": { + "type": "string", + "description": "SSH private key for authentication. Either this or `password` is required. Requires `supportsPortForwarding`\nto be true.", + "examples": [ + "-----BEGIN RSA PRIVATE KEY-----\nMIIPIQIBAzCCDtoGCSqGSIb3DQEHAa\u2026" + ] + }, + "sshCert": { + "type": "string", + "description": "SSH user certificate for authentication. Applicable only for certificate based authentication and requires\n`sshKey` to be provided.", + "examples": [ + "ssh-rsa-cert-v01@openssh.com AAAAHHNzaC1yc2EtY2VydC12MDFAb3BlbnNzaC5jb20AAA\u2026" + ] + }, + "supportsPortForwarding": { + "type": "boolean", + "description": "defaults to true", + "examples": [ + false + ] + }, + "commandFormat": { + "$ref": "#/components/schemas/JumpServerCommandFormat", + "description": "applicable when supportsPortForwarding is false, defaults to UNIX", + "examples": [ + "CISCO_IOS" + ] + }, + "vrf": { + "type": "string", + "description": "VRF that this jump server should use to connect to devices. Can be set only if `commandFormat`\nis CISCO_IOS.", + "examples": [ + "Management-vrf" + ] + }, + "authenticationTimeoutSeconds": { + "type": "integer", + "format": "int32", + "description": "seconds to wait for the jump server authentication response. Defaults to 20.", + "examples": [ + 20 + ] + } + } + }, + "SnapshotInfo": { + "type": "object", + "properties": { + "createdAt": { + "type": "string", + "examples": [ + "2019-09-20T17:40:34.567Z" + ] + }, + "creationDateMillis": { + "type": "integer", + "format": "int64", + "description": "Deprecated for removal in release 26.4. Use `createdAt` instead.", + "examples": [ + 1569001234567 + ] + }, + "id": { + "type": "string" + }, + "isDraft": { + "type": "boolean", + "examples": [ + false + ] + }, + "note": { + "type": "string" + }, + "parentSnapshotId": { + "type": "string" + }, + "processedAt": { + "type": "string", + "examples": [ + "2019-09-20T18:17:36.789Z" + ] + }, + "processedAtMillis": { + "type": "integer", + "format": "int64", + "description": "Deprecated for removal in release 26.4. Use `processedAt` instead.", + "examples": [ + 1569003456789 + ] + }, + "processingTrigger": { + "type": "string", + "enum": [ + "UNKNOWN", + "COLLECTION", + "IMPORT", + "REPROCESS", + "FORK" + ] + }, + "restoredAt": { + "type": "string", + "examples": [ + "2019-09-20T17:40:34.567Z" + ] + }, + "restoredAtMillis": { + "type": "integer", + "format": "int64", + "description": "Deprecated for removal in release 26.4. Use `restoredAt` instead.", + "examples": [ + 1569001234567 + ] + }, + "state": { + "$ref": "#/components/schemas/SnapshotState" + }, + "favoritedBy": { + "type": "string", + "description": "The username of the user who most recently marked this Snapshot as a favorite if it's currently a favorite\nand the user account hasn\u2019t been deleted.", + "examples": [ + "mary" + ] + }, + "favoritedByUserId": { + "type": "string", + "description": "The id of the user who most recently marked this Snapshot as a favorite if it\u2019s currently a\nfavorite.", + "examples": [ + "1234" + ] + }, + "favoritedAt": { + "type": "string", + "description": "When this Snapshot was most recently marked as a favorite if it\u2019s currently a favorite. A favorite Snapshot\nwill never be automatically deleted, regardless of its network\u2019s Snapshot retention policy.", + "examples": [ + "2019-09-30T19:48:59.481Z" + ] + }, + "favoritedAtMillis": { + "type": "integer", + "format": "int64", + "description": "Deprecated for removal in release 26.4. Use `favoritedAt` instead.", + "examples": [ + 1569872939481 + ] + } + } + }, + "SnapshotState": { + "type": "string", + "enum": [ + "UNPACKING", + "UNPROCESSED", + "PROCESSING", + "PROCESSED", + "FAILED", + "CANCELED", + "TIMED_OUT", + "ARCHIVED", + "RESTORING", + "RESTORE_FAILED" + ] + }, + "CheckType": { + "type": "string", + "enum": [ + "Isolation", + "Reachability", + "Existential", + "QueryStringBased", + "Predefined", + "NQE" + ] + }, + "NqeRunResult": { + "type": "object", + "properties": { + "snapshotId": { + "type": "string", + "description": "The ID of the Snapshot that the query was run against.", + "examples": [ + "101" + ] + }, + "items": { + "type": "array", + "items": { + "$ref": "#/components/schemas/NqeRecord" + }, + "description": "The query's results, as a list of objects. Each object corresponds to a record returned by the query, and is\nan object with fields of simple values, where a simple value is either a basic value or a list of basic\nvalues. A basic value is either a number, boolean, string, or null.", + "examples": [ + [ + { + "boolField": true, + "numField": 1, + "nullField": null, + "stringField": "string", + "listField": [ + 1, + 2, + 3 + ] + } + ] + ] + }, + "totalNumItems": { + "type": "integer", + "format": "int64", + "description": "The total number of items in the query result. This number could be different than the length of `items` if\na filter is used or if the total size of the rows would exceed the maximum page size of 400MB." + } + } + }, + "ClassicDevices": { + "type": "object", + "properties": { + "devices": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ClassicDevice" + } + } + } + }, + "CliCredentialUpdate": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "For display purposes in the application", + "examples": [ + "admin (sjc)" + ] + }, + "username": { + "type": "string", + "description": "for `LOGIN` and `SHELL` types", + "examples": [ + "admin" + ] + }, + "password": { + "type": "string", + "examples": [ + "my-s3cr3t-p4s$w0rd" + ] + }, + "privilegedModePasswordId": { + "type": "string", + "description": "Only valid for `LOGIN` type. If set, only this credential will be used on devices that require a privileged\nmode password during a connectivity test or collection. If a privileged mode password is specified both here\nand in a `ClassicDevice`, the one in the `ClassicDevice` will be used.", + "examples": [ + "31d70f9f-a279-44ac-a621-ab3181966ad8" + ] + }, + "privilegeLevel": { + "type": "integer", + "format": "int32", + "description": "Only valid for `PRIVILEGED_MODE` type. On Checkpoint devices, this is used as the TACACS privilege level, as\nin TACP-15. If absent, the highest privilege level will be used. Has no effect for other kinds of devices.", + "examples": [ + 15 + ] + }, + "autoAssociate": { + "type": "boolean", + "description": "Only supported for `LOGIN`, `PRIVILEGED_MODE`, and `SHELL` types." + } + } + }, + "ClassicDevicesPatch": { + "type": "object", + "properties": { + "names": { + "type": "array", + "items": { + "type": "string" + } + }, + "update": { + "$ref": "#/components/schemas/ClassicDevicePatch" + } + } + }, + "NetworkSnapshots": { + "allOf": [ + { + "type": "object", + "required": [ + "snapshots" + ], + "properties": { + "snapshots": { + "type": "array", + "items": { + "$ref": "#/components/schemas/SnapshotInfo" + } + } + } + }, + { + "$ref": "#/components/schemas/Network" + } + ] + }, + "MissingDevices": { + "type": "object", + "properties": { + "devices": { + "type": "array", + "items": { + "$ref": "#/components/schemas/MissingDevice" + } + } + } + }, + "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", + "avaya_ers_ssh", + "avaya_ers_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\u2019t determined. Present if and only if `type` is absent. Never contains\n`\"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" + ] + } + } + } + }, + "parameters": { + "SnapshotId": { + "name": "snapshotId", + "in": "query", + "description": "An optional Snapshot id. If omitted, the network\u2019s latest processed Snapshot is used.", + "schema": { + "type": "string" + } + } + }, + "securitySchemes": { + "api_token": { + "type": "http", + "scheme": "basic" + } + } + } +} diff --git a/Forward Networks/README.md b/Forward Networks/README.md new file mode 100644 index 0000000..1488104 --- /dev/null +++ b/Forward Networks/README.md @@ -0,0 +1,85 @@ +# Forward Networks + +Forward Networks builds a continuously updated digital twin of a network from device configuration and state, used for verification, path search, security and compliance checks, and network-wide querying via the Network Query Engine (NQE). + +## Table of Contents + +- [Contents](#contents) +- [Requirements](#requirements) +- [Integration Configuration](#integration-configuration) +- [OpenAPIs](#openapis) + - [`forward_networks-latest.json`](#forward_networks-latestjson) + - [`forward_networks-26.1.json`](#forward_networks-261json) +- [Studio Projects](#studio-projects) + +## Contents + +| Asset | Description | +|---|---| +| [OpenAPIs/](./OpenAPIs/) | Forward Networks REST API OpenAPI specs — curated `-latest` plus the full dated version | +| [Studio Projects/](./Studio%20Projects/) | One workflow per curated operation, organized by resource category | + +## Requirements + +| Requirement | Version | +|---|---| +| Itential Platform | 6.x | +| Forward Networks Platform | 26.1 (see OpenAPIs below) | +| Forward Networks Integration Model | Required to build automation against the OpenAPI specs | + +## Integration Configuration + +Authentication is HTTP Basic auth, using a Forward Networks API access key as the username and its matching secret as the password on every request. Generate an access key/secret pair in Forward Networks under your user account's API access settings, then configure the Integration's basic-auth credentials in Itential Platform's Admin Essentials with the key as the username and the secret as the password. + +## OpenAPIs + +| Spec | Version | Operations | Description | +|---|---|---|---| +| [`forward_networks-latest.json`](./OpenAPIs/forward_networks-latest.json) | latest (curated) | 71 | Trimmed to 71 of 181 upstream operations covering common CRUD for network automation — see breakdown below | +| [`forward_networks-26.1.json`](./OpenAPIs/forward_networks-26.1.json) | 26.1 | 181 | Full spec for Forward Networks 26.1. | + +### `forward_networks-latest.json` + +Actively-maintained spec (`x-vendor-api-version: 26.1`). Trimmed to 71 of 181 upstream operations covering common CRUD for network automation. + +Resources included, by category: + +- **Networks**: List, Create, Delete, Update +- **Network Devices**: List Devices, Get Device, List Device Files, Get Device File Content, List Missing Devices +- **Classic Devices**: List, Create, Update (batch), Get, Update (upsert), Delete, Update +- **Network Endpoints**: Endpoint Profiles (List, Get, Delete, Create CLI/HTTP/SNMP, Update CLI/HTTP/SNMP) and Network Endpoints (List, Get, Delete, Create CLI/HTTP/SNMP, Update CLI/HTTP/SNMP) +- **Credentials**: CLI Credentials and HTTP Credentials (List, Create, Batch Create, Get, Delete, Update) +- **Jump Servers**: List, Create, Delete, Update +- **Device Tags**: List, Create, Get, Delete, Update +- **NQE**: Run Query, Diff Query Results, List Queries +- **Checks**: List Predefined Checks, List/Add/Deactivate Checks, Get/Deactivate a Single Check +- **Path Search**: List L7 Applications, Trace a Path, Bulk Path Trace +- **Network Snapshots**: List, Create, Get Latest Processed +- **Vulnerability Analysis**: List Vulnerabilities + +### `forward_networks-26.1.json` + +Full, unmodified vendor spec for Forward Networks 26.1 (181 operations) — the vendor's complete API surface, preserved as-is. See `forward_networks-latest.json` above for the curated subset if you just need common CRUD automation. + +## Studio Projects + +### `Forward Networks.project.json` + +One workflow per curated operation from `forward_networks-latest.json`, organized into folders by resource category, wired to the `Forward Networks:latest` Integration Model. + +Every workflow's adapter task is wired to the Integration instance name `Forward Networks`. After importing, either name your Integration instance `Forward Networks`, or update the `adapter_id` value in each workflow task to match your own instance name. + +| Folder | Workflows | +|---|---| +| Networks | 4 | +| Network Devices | 5 | +| Classic Devices | 7 | +| Network Endpoints | 18 | +| Credentials | 12 | +| Jump Servers | 4 | +| Device Tags | 5 | +| NQE | 3 | +| Checks | 6 | +| Path Search | 3 | +| Network Snapshots | 3 | +| Vulnerability Analysis | 1 | diff --git a/Forward Networks/Studio Projects/Forward Networks.project.json b/Forward Networks/Studio Projects/Forward Networks.project.json new file mode 100644 index 0000000..d6cfc23 --- /dev/null +++ b/Forward Networks/Studio Projects/Forward Networks.project.json @@ -0,0 +1,7951 @@ +{ + "_id": "4c42d25fe04c4014a488e87a", + "name": "Forward Networks", + "description": "Forward Networks network digital twin automation: network CRUD, classic/endpoint device inventory, credentials, jump servers, device tags, NQE queries, checks, path search, snapshot listing, and vulnerability analysis.", + "components": [ + { + "iid": 0, + "reference": "be1a4ffa-7cec-5253-995c-c6a2cfd9e0a3", + "type": "workflow", + "folder": "/Networks", + "document": { + "name": "Lists all networks", + "description": "Lists all networks", + "type": "automation", + "font_size": 12, + "tasks": { + "workflow_start": { + "name": "workflow_start", + "groups": [], + "nodeLocation": { + "x": 264, + "y": 0 + } + }, + "3713": { + "name": "getNetworksUsingGET", + "canvasName": "getNetworksUsingGET", + "summary": "Lists all networks", + "description": "Lists all networks", + "location": "Adapter", + "locationType": "Forward Networks:latest", + "app": "Forward Networks:latest", + "type": "automatic", + "displayName": "Forward Networks", + "variables": { + "incoming": { + "adapter_id": "Forward Networks" + }, + "outgoing": { + "response": null + }, + "error": "", + "decorators": [] + }, + "groups": [], + "actor": "Pronghorn", + "scheduled": false, + "nodeLocation": { + "x": 264, + "y": 150 + } + }, + "workflow_end": { + "name": "workflow_end", + "groups": [], + "nodeLocation": { + "x": 264, + "y": 300 + } + } + }, + "transitions": { + "workflow_start": { + "3713": { + "type": "standard", + "state": "success" + } + }, + "3713": { + "workflow_end": { + "type": "standard", + "state": "success" + } + }, + "workflow_end": {} + }, + "inputSchema": { + "type": "object", + "properties": {} + }, + "outputSchema": { + "type": "object", + "properties": { + "response": { + "type": "object", + "description": "Full HTTP response envelope ({ok, url, status, headers, text, body})." + } + } + }, + "scenarios": [], + "canvasVersion": 3, + "tags": [], + "groups": [], + "migrationVersion": 8 + } + }, + { + "iid": 1, + "reference": "c33b78ee-6a04-5bf4-8e6d-0a6d8064ce20", + "type": "workflow", + "folder": "/Networks", + "document": { + "name": "Creates a network", + "description": "Creates a network", + "type": "automation", + "font_size": 12, + "tasks": { + "workflow_start": { + "name": "workflow_start", + "groups": [], + "nodeLocation": { + "x": 264, + "y": 0 + } + }, + "b8af": { + "name": "createNetworkUsingPOST", + "canvasName": "createNetworkUsingPOST", + "summary": "Creates a network", + "description": "Creates a network", + "location": "Adapter", + "locationType": "Forward Networks:latest", + "app": "Forward Networks:latest", + "type": "automatic", + "displayName": "Forward Networks", + "variables": { + "incoming": { + "name": "$var.job.name", + "adapter_id": "Forward Networks" + }, + "outgoing": { + "response": null + }, + "error": "", + "decorators": [] + }, + "groups": [], + "actor": "Pronghorn", + "scheduled": false, + "nodeLocation": { + "x": 264, + "y": 150 + } + }, + "workflow_end": { + "name": "workflow_end", + "groups": [], + "nodeLocation": { + "x": 264, + "y": 300 + } + } + }, + "transitions": { + "workflow_start": { + "b8af": { + "type": "standard", + "state": "success" + } + }, + "b8af": { + "workflow_end": { + "type": "standard", + "state": "success" + } + }, + "workflow_end": {} + }, + "inputSchema": { + "type": "object", + "properties": { + "name": { + "type": "string" + } + }, + "required": [ + "name" + ] + }, + "outputSchema": { + "type": "object", + "properties": { + "response": { + "type": "object", + "description": "Full HTTP response envelope ({ok, url, status, headers, text, body})." + } + } + }, + "scenarios": [], + "canvasVersion": 3, + "tags": [], + "groups": [], + "migrationVersion": 8 + } + }, + { + "iid": 2, + "reference": "edd8e957-6b82-58f1-89f4-79416ab4f2f8", + "type": "workflow", + "folder": "/Networks", + "document": { + "name": "Deletes a network", + "description": "Deletes a network", + "type": "automation", + "font_size": 12, + "tasks": { + "workflow_start": { + "name": "workflow_start", + "groups": [], + "nodeLocation": { + "x": 264, + "y": 0 + } + }, + "b002": { + "name": "deleteNetworkUsingDELETE", + "canvasName": "deleteNetworkUsingDELETE", + "summary": "Deletes a network", + "description": "Deletes a network", + "location": "Adapter", + "locationType": "Forward Networks:latest", + "app": "Forward Networks:latest", + "type": "automatic", + "displayName": "Forward Networks", + "variables": { + "incoming": { + "networkId": "$var.job.networkId", + "adapter_id": "Forward Networks" + }, + "outgoing": { + "response": null + }, + "error": "", + "decorators": [] + }, + "groups": [], + "actor": "Pronghorn", + "scheduled": false, + "nodeLocation": { + "x": 264, + "y": 150 + } + }, + "workflow_end": { + "name": "workflow_end", + "groups": [], + "nodeLocation": { + "x": 264, + "y": 300 + } + } + }, + "transitions": { + "workflow_start": { + "b002": { + "type": "standard", + "state": "success" + } + }, + "b002": { + "workflow_end": { + "type": "standard", + "state": "success" + } + }, + "workflow_end": {} + }, + "inputSchema": { + "type": "object", + "properties": { + "networkId": { + "type": "string" + } + }, + "required": [ + "networkId" + ] + }, + "outputSchema": { + "type": "object", + "properties": { + "response": { + "type": "object", + "description": "Full HTTP response envelope ({ok, url, status, headers, text, body})." + } + } + }, + "scenarios": [], + "canvasVersion": 3, + "tags": [], + "groups": [], + "migrationVersion": 8 + } + }, + { + "iid": 3, + "reference": "19ed4333-2807-5ed4-b7dc-59a649e2bfad", + "type": "workflow", + "folder": "/Networks", + "document": { + "name": "Updates a network", + "description": "All JSON properties in the request body are optional. Include only the properties you wish to change.", + "type": "automation", + "font_size": 12, + "tasks": { + "workflow_start": { + "name": "workflow_start", + "groups": [], + "nodeLocation": { + "x": 264, + "y": 0 + } + }, + "f7cc": { + "name": "updateNetworkUsingPATCH", + "canvasName": "updateNetworkUsingPATCH", + "summary": "Updates a network", + "description": "All JSON properties in the request body are optional. Include only the properties you wish to change.", + "location": "Adapter", + "locationType": "Forward Networks:latest", + "app": "Forward Networks:latest", + "type": "automatic", + "displayName": "Forward Networks", + "variables": { + "incoming": { + "networkId": "$var.job.networkId", + "bodyContentType": "application/json", + "requestBodyPayload": "$var.job.body", + "adapter_id": "Forward Networks" + }, + "outgoing": { + "response": null + }, + "error": "", + "decorators": [] + }, + "groups": [], + "actor": "Pronghorn", + "scheduled": false, + "nodeLocation": { + "x": 264, + "y": 150 + } + }, + "workflow_end": { + "name": "workflow_end", + "groups": [], + "nodeLocation": { + "x": 264, + "y": 300 + } + } + }, + "transitions": { + "workflow_start": { + "f7cc": { + "type": "standard", + "state": "success" + } + }, + "f7cc": { + "workflow_end": { + "type": "standard", + "state": "success" + } + }, + "workflow_end": {} + }, + "inputSchema": { + "type": "object", + "properties": { + "networkId": { + "type": "string" + }, + "body": { + "type": "object" + } + }, + "required": [ + "networkId", + "body" + ] + }, + "outputSchema": { + "type": "object", + "properties": { + "response": { + "type": "object", + "description": "Full HTTP response envelope ({ok, url, status, headers, text, body})." + } + } + }, + "scenarios": [], + "canvasVersion": 3, + "tags": [], + "groups": [], + "migrationVersion": 8 + } + }, + { + "iid": 4, + "reference": "8cb8827c-24f0-54f8-836c-d0a25baeae60", + "type": "workflow", + "folder": "/Network Devices", + "document": { + "name": "Gets a network\u2019s 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]`).", + "type": "automation", + "font_size": 12, + "tasks": { + "workflow_start": { + "name": "workflow_start", + "groups": [], + "nodeLocation": { + "x": 264, + "y": 0 + } + }, + "a609": { + "name": "getDevicesUsingGET", + "canvasName": "getDevicesUsingGET", + "summary": "Gets a network\u2019s 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]`).", + "location": "Adapter", + "locationType": "Forward Networks:latest", + "app": "Forward Networks:latest", + "type": "automatic", + "displayName": "Forward Networks", + "variables": { + "incoming": { + "networkId": "$var.job.networkId", + "name": "$var.job.name", + "displayName": "$var.job.displayName", + "sourceName": "$var.job.sourceName", + "type": "$var.job.type", + "vendor": "$var.job.vendor", + "model": "$var.job.model", + "platform": "$var.job.platform", + "osVersion": "$var.job.osVersion", + "collectionError": "$var.job.collectionError", + "processingError": "$var.job.processingError", + "skip": "$var.job.skip", + "limit": "$var.job.limit", + "with": "$var.job.with", + "snapshotId": "$var.job.snapshotId", + "adapter_id": "Forward Networks" + }, + "outgoing": { + "response": null + }, + "error": "", + "decorators": [] + }, + "groups": [], + "actor": "Pronghorn", + "scheduled": false, + "nodeLocation": { + "x": 264, + "y": 150 + } + }, + "workflow_end": { + "name": "workflow_end", + "groups": [], + "nodeLocation": { + "x": 264, + "y": 300 + } + } + }, + "transitions": { + "workflow_start": { + "a609": { + "type": "standard", + "state": "success" + } + }, + "a609": { + "workflow_end": { + "type": "standard", + "state": "success" + } + }, + "workflow_end": {} + }, + "inputSchema": { + "type": "object", + "properties": { + "networkId": { + "type": "string" + }, + "name": { + "type": "string" + }, + "displayName": { + "type": "string" + }, + "sourceName": { + "type": "string" + }, + "type": { + "type": "string" + }, + "vendor": { + "type": "string" + }, + "model": { + "type": "string" + }, + "platform": { + "type": "string" + }, + "osVersion": { + "type": "string" + }, + "collectionError": { + "type": "string" + }, + "processingError": { + "type": "string" + }, + "skip": { + "type": "integer" + }, + "limit": { + "type": "integer" + }, + "with": { + "type": "array" + }, + "snapshotId": { + "type": "string" + } + }, + "required": [ + "networkId" + ] + }, + "outputSchema": { + "type": "object", + "properties": { + "response": { + "type": "object", + "description": "Full HTTP response envelope ({ok, url, status, headers, text, body})." + } + } + }, + "scenarios": [], + "canvasVersion": 3, + "tags": [], + "groups": [], + "migrationVersion": 8 + } + }, + { + "iid": 5, + "reference": "5537002d-1538-546e-abd3-7b143276a5ee", + "type": "workflow", + "folder": "/Network Devices", + "document": { + "name": "Gets a network device", + "description": "Gets a network device", + "type": "automation", + "font_size": 12, + "tasks": { + "workflow_start": { + "name": "workflow_start", + "groups": [], + "nodeLocation": { + "x": 264, + "y": 0 + } + }, + "3556": { + "name": "getOneDeviceUsingGET", + "canvasName": "getOneDeviceUsingGET", + "summary": "Gets a network device", + "description": "Gets a network device", + "location": "Adapter", + "locationType": "Forward Networks:latest", + "app": "Forward Networks:latest", + "type": "automatic", + "displayName": "Forward Networks", + "variables": { + "incoming": { + "networkId": "$var.job.networkId", + "deviceName": "$var.job.deviceName", + "with": "$var.job.with", + "snapshotId": "$var.job.snapshotId", + "adapter_id": "Forward Networks" + }, + "outgoing": { + "response": null + }, + "error": "", + "decorators": [] + }, + "groups": [], + "actor": "Pronghorn", + "scheduled": false, + "nodeLocation": { + "x": 264, + "y": 150 + } + }, + "workflow_end": { + "name": "workflow_end", + "groups": [], + "nodeLocation": { + "x": 264, + "y": 300 + } + } + }, + "transitions": { + "workflow_start": { + "3556": { + "type": "standard", + "state": "success" + } + }, + "3556": { + "workflow_end": { + "type": "standard", + "state": "success" + } + }, + "workflow_end": {} + }, + "inputSchema": { + "type": "object", + "properties": { + "networkId": { + "type": "string" + }, + "deviceName": { + "type": "string" + }, + "with": { + "type": "array" + }, + "snapshotId": { + "type": "string" + } + }, + "required": [ + "networkId", + "deviceName" + ] + }, + "outputSchema": { + "type": "object", + "properties": { + "response": { + "type": "object", + "description": "Full HTTP response envelope ({ok, url, status, headers, text, body})." + } + } + }, + "scenarios": [], + "canvasVersion": 3, + "tags": [], + "groups": [], + "migrationVersion": 8 + } + }, + { + "iid": 6, + "reference": "ff9e0574-8909-5bf7-b55e-760122518024", + "type": "workflow", + "folder": "/Network Devices", + "document": { + "name": "Lists a device\u2019s data files", + "description": "Lists a device\u2019s data files", + "type": "automation", + "font_size": 12, + "tasks": { + "workflow_start": { + "name": "workflow_start", + "groups": [], + "nodeLocation": { + "x": 264, + "y": 0 + } + }, + "2fa3": { + "name": "getDeviceFilesUsingGET", + "canvasName": "getDeviceFilesUsingGET", + "summary": "Lists a device\u2019s data files", + "description": "Lists a device\u2019s data files", + "location": "Adapter", + "locationType": "Forward Networks:latest", + "app": "Forward Networks:latest", + "type": "automatic", + "displayName": "Forward Networks", + "variables": { + "incoming": { + "networkId": "$var.job.networkId", + "deviceName": "$var.job.deviceName", + "snapshotId": "$var.job.snapshotId", + "adapter_id": "Forward Networks" + }, + "outgoing": { + "response": null + }, + "error": "", + "decorators": [] + }, + "groups": [], + "actor": "Pronghorn", + "scheduled": false, + "nodeLocation": { + "x": 264, + "y": 150 + } + }, + "workflow_end": { + "name": "workflow_end", + "groups": [], + "nodeLocation": { + "x": 264, + "y": 300 + } + } + }, + "transitions": { + "workflow_start": { + "2fa3": { + "type": "standard", + "state": "success" + } + }, + "2fa3": { + "workflow_end": { + "type": "standard", + "state": "success" + } + }, + "workflow_end": {} + }, + "inputSchema": { + "type": "object", + "properties": { + "networkId": { + "type": "string" + }, + "deviceName": { + "type": "string" + }, + "snapshotId": { + "type": "string" + } + }, + "required": [ + "networkId", + "deviceName" + ] + }, + "outputSchema": { + "type": "object", + "properties": { + "response": { + "type": "object", + "description": "Full HTTP response envelope ({ok, url, status, headers, text, body})." + } + } + }, + "scenarios": [], + "canvasVersion": 3, + "tags": [], + "groups": [], + "migrationVersion": 8 + } + }, + { + "iid": 7, + "reference": "c2d6eaf1-1e84-5dfa-af3c-14c8043b9b2a", + "type": "workflow", + "folder": "/Network Devices", + "document": { + "name": "Gets device data file content", + "description": "Most device data files are text files. Some are binary. A file\u2019s extension indicates its type. For convenience, the .txt file extension is optional (can be omitted).", + "type": "automation", + "font_size": 12, + "tasks": { + "workflow_start": { + "name": "workflow_start", + "groups": [], + "nodeLocation": { + "x": 264, + "y": 0 + } + }, + "789c": { + "name": "getDeviceFileContentUsingGET", + "canvasName": "getDeviceFileContentUsingGET", + "summary": "Gets device data file content", + "description": "Most device data files are text files. Some are binary. A file\u2019s extension indicates its type. For convenience, the .txt file extension is optional (can be omitted).", + "location": "Adapter", + "locationType": "Forward Networks:latest", + "app": "Forward Networks:latest", + "type": "automatic", + "displayName": "Forward Networks", + "variables": { + "incoming": { + "networkId": "$var.job.networkId", + "deviceName": "$var.job.deviceName", + "fileName": "$var.job.fileName", + "snapshotId": "$var.job.snapshotId", + "adapter_id": "Forward Networks" + }, + "outgoing": { + "response": null + }, + "error": "", + "decorators": [] + }, + "groups": [], + "actor": "Pronghorn", + "scheduled": false, + "nodeLocation": { + "x": 264, + "y": 150 + } + }, + "workflow_end": { + "name": "workflow_end", + "groups": [], + "nodeLocation": { + "x": 264, + "y": 300 + } + } + }, + "transitions": { + "workflow_start": { + "789c": { + "type": "standard", + "state": "success" + } + }, + "789c": { + "workflow_end": { + "type": "standard", + "state": "success" + } + }, + "workflow_end": {} + }, + "inputSchema": { + "type": "object", + "properties": { + "networkId": { + "type": "string" + }, + "deviceName": { + "type": "string" + }, + "fileName": { + "type": "string" + }, + "snapshotId": { + "type": "string" + } + }, + "required": [ + "networkId", + "deviceName", + "fileName" + ] + }, + "outputSchema": { + "type": "object", + "properties": { + "response": { + "type": "object", + "description": "Full HTTP response envelope ({ok, url, status, headers, text, body})." + } + } + }, + "scenarios": [], + "canvasVersion": 3, + "tags": [], + "groups": [], + "migrationVersion": 8 + } + }, + { + "iid": 8, + "reference": "d9061fe4-ac7d-5fd2-9d2f-7f15aeed3fe9", + "type": "workflow", + "folder": "/Network Devices", + "document": { + "name": "Gets a network\u2019s missing devices", + "description": "Returns devices that are listed as CDP, LLDP, iBGP or OSPF neighbors of modeled devices but that aren\u2019t yet included in the network model.", + "type": "automation", + "font_size": 12, + "tasks": { + "workflow_start": { + "name": "workflow_start", + "groups": [], + "nodeLocation": { + "x": 264, + "y": 0 + } + }, + "5c62": { + "name": "getMissingDevicesUsingGET", + "canvasName": "getMissingDevicesUsingGET", + "summary": "Gets a network\u2019s missing devices", + "description": "Returns devices that are listed as CDP, LLDP, iBGP or OSPF neighbors of modeled devices but that aren\u2019t yet included in the network model.", + "location": "Adapter", + "locationType": "Forward Networks:latest", + "app": "Forward Networks:latest", + "type": "automatic", + "displayName": "Forward Networks", + "variables": { + "incoming": { + "networkId": "$var.job.networkId", + "snapshotId": "$var.job.snapshotId", + "adapter_id": "Forward Networks" + }, + "outgoing": { + "response": null + }, + "error": "", + "decorators": [] + }, + "groups": [], + "actor": "Pronghorn", + "scheduled": false, + "nodeLocation": { + "x": 264, + "y": 150 + } + }, + "workflow_end": { + "name": "workflow_end", + "groups": [], + "nodeLocation": { + "x": 264, + "y": 300 + } + } + }, + "transitions": { + "workflow_start": { + "5c62": { + "type": "standard", + "state": "success" + } + }, + "5c62": { + "workflow_end": { + "type": "standard", + "state": "success" + } + }, + "workflow_end": {} + }, + "inputSchema": { + "type": "object", + "properties": { + "networkId": { + "type": "string" + }, + "snapshotId": { + "type": "string" + } + }, + "required": [ + "networkId" + ] + }, + "outputSchema": { + "type": "object", + "properties": { + "response": { + "type": "object", + "description": "Full HTTP response envelope ({ok, url, status, headers, text, body})." + } + } + }, + "scenarios": [], + "canvasVersion": 3, + "tags": [], + "groups": [], + "migrationVersion": 8 + } + }, + { + "iid": 9, + "reference": "90bb5078-cd12-59e9-af4e-b528d3ece0a6", + "type": "workflow", + "folder": "/Classic Devices", + "document": { + "name": "Gets a network\u2019s classic devices", + "description": "Gets a network\u2019s classic devices", + "type": "automation", + "font_size": 12, + "tasks": { + "workflow_start": { + "name": "workflow_start", + "groups": [], + "nodeLocation": { + "x": 264, + "y": 0 + } + }, + "0681": { + "name": "getClassicDevicesUsingGET", + "canvasName": "getClassicDevicesUsingGET", + "summary": "Gets a network\u2019s classic devices", + "description": "Gets a network\u2019s classic devices", + "location": "Adapter", + "locationType": "Forward Networks:latest", + "app": "Forward Networks:latest", + "type": "automatic", + "displayName": "Forward Networks", + "variables": { + "incoming": { + "networkId": "$var.job.networkId", + "with": "$var.job.with", + "adapter_id": "Forward Networks" + }, + "outgoing": { + "response": null + }, + "error": "", + "decorators": [] + }, + "groups": [], + "actor": "Pronghorn", + "scheduled": false, + "nodeLocation": { + "x": 264, + "y": 150 + } + }, + "workflow_end": { + "name": "workflow_end", + "groups": [], + "nodeLocation": { + "x": 264, + "y": 300 + } + } + }, + "transitions": { + "workflow_start": { + "0681": { + "type": "standard", + "state": "success" + } + }, + "0681": { + "workflow_end": { + "type": "standard", + "state": "success" + } + }, + "workflow_end": {} + }, + "inputSchema": { + "type": "object", + "properties": { + "networkId": { + "type": "string" + }, + "with": { + "type": "array" + } + }, + "required": [ + "networkId" + ] + }, + "outputSchema": { + "type": "object", + "properties": { + "response": { + "type": "object", + "description": "Full HTTP response envelope ({ok, url, status, headers, text, body})." + } + } + }, + "scenarios": [], + "canvasVersion": 3, + "tags": [], + "groups": [], + "migrationVersion": 8 + } + }, + { + "iid": 10, + "reference": "c9fdee2c-6d90-5896-925b-04802c3c5c32", + "type": "workflow", + "folder": "/Classic Devices", + "document": { + "name": "Adds a new classic device", + "description": "Adds a new classic device", + "type": "automation", + "font_size": 12, + "tasks": { + "workflow_start": { + "name": "workflow_start", + "groups": [], + "nodeLocation": { + "x": 264, + "y": 0 + } + }, + "fae5": { + "name": "addClassicDeviceUsingPOST", + "canvasName": "addClassicDeviceUsingPOST", + "summary": "Adds a new classic device", + "description": "Adds a new classic device", + "location": "Adapter", + "locationType": "Forward Networks:latest", + "app": "Forward Networks:latest", + "type": "automatic", + "displayName": "Forward Networks", + "variables": { + "incoming": { + "networkId": "$var.job.networkId", + "bodyContentType": "application/json", + "requestBodyPayload": "$var.job.body", + "adapter_id": "Forward Networks" + }, + "outgoing": { + "response": null + }, + "error": "", + "decorators": [] + }, + "groups": [], + "actor": "Pronghorn", + "scheduled": false, + "nodeLocation": { + "x": 264, + "y": 150 + } + }, + "workflow_end": { + "name": "workflow_end", + "groups": [], + "nodeLocation": { + "x": 264, + "y": 300 + } + } + }, + "transitions": { + "workflow_start": { + "fae5": { + "type": "standard", + "state": "success" + } + }, + "fae5": { + "workflow_end": { + "type": "standard", + "state": "success" + } + }, + "workflow_end": {} + }, + "inputSchema": { + "type": "object", + "properties": { + "networkId": { + "type": "string" + }, + "body": { + "type": "object" + } + }, + "required": [ + "networkId", + "body" + ] + }, + "outputSchema": { + "type": "object", + "properties": { + "response": { + "type": "object", + "description": "Full HTTP response envelope ({ok, url, status, headers, text, body})." + } + } + }, + "scenarios": [], + "canvasVersion": 3, + "tags": [], + "groups": [], + "migrationVersion": 8 + } + }, + { + "iid": 11, + "reference": "bade68c7-aeff-5887-a0e6-5c88f3fd0d40", + "type": "workflow", + "folder": "/Classic Devices", + "document": { + "name": "Updates specific classic devices", + "description": "All JSON properties in the `update` object are optional. Include only the properties you wish to change.", + "type": "automation", + "font_size": 12, + "tasks": { + "workflow_start": { + "name": "workflow_start", + "groups": [], + "nodeLocation": { + "x": 264, + "y": 0 + } + }, + "a936": { + "name": "patchClassicDevicesUsingPATCH", + "canvasName": "patchClassicDevicesUsingPATCH", + "summary": "Updates specific classic devices", + "description": "All JSON properties in the `update` object are optional. Include only the properties you wish to change.", + "location": "Adapter", + "locationType": "Forward Networks:latest", + "app": "Forward Networks:latest", + "type": "automatic", + "displayName": "Forward Networks", + "variables": { + "incoming": { + "networkId": "$var.job.networkId", + "bodyContentType": "application/json", + "requestBodyPayload": "$var.job.body", + "adapter_id": "Forward Networks" + }, + "outgoing": { + "response": null + }, + "error": "", + "decorators": [] + }, + "groups": [], + "actor": "Pronghorn", + "scheduled": false, + "nodeLocation": { + "x": 264, + "y": 150 + } + }, + "workflow_end": { + "name": "workflow_end", + "groups": [], + "nodeLocation": { + "x": 264, + "y": 300 + } + } + }, + "transitions": { + "workflow_start": { + "a936": { + "type": "standard", + "state": "success" + } + }, + "a936": { + "workflow_end": { + "type": "standard", + "state": "success" + } + }, + "workflow_end": {} + }, + "inputSchema": { + "type": "object", + "properties": { + "networkId": { + "type": "string" + }, + "body": { + "type": "object" + } + }, + "required": [ + "networkId", + "body" + ] + }, + "outputSchema": { + "type": "object", + "properties": { + "response": { + "type": "object", + "description": "Full HTTP response envelope ({ok, url, status, headers, text, body})." + } + } + }, + "scenarios": [], + "canvasVersion": 3, + "tags": [], + "groups": [], + "migrationVersion": 8 + } + }, + { + "iid": 12, + "reference": "50095c63-1d2f-5871-b71d-8c7cb0beb544", + "type": "workflow", + "folder": "/Classic Devices", + "document": { + "name": "Gets a classic device", + "description": "Gets a classic device", + "type": "automation", + "font_size": 12, + "tasks": { + "workflow_start": { + "name": "workflow_start", + "groups": [], + "nodeLocation": { + "x": 264, + "y": 0 + } + }, + "b4bf": { + "name": "getClassicDeviceUsingGET", + "canvasName": "getClassicDeviceUsingGET", + "summary": "Gets a classic device", + "description": "Gets a classic device", + "location": "Adapter", + "locationType": "Forward Networks:latest", + "app": "Forward Networks:latest", + "type": "automatic", + "displayName": "Forward Networks", + "variables": { + "incoming": { + "networkId": "$var.job.networkId", + "deviceName": "$var.job.deviceName", + "with": "$var.job.with", + "adapter_id": "Forward Networks" + }, + "outgoing": { + "response": null + }, + "error": "", + "decorators": [] + }, + "groups": [], + "actor": "Pronghorn", + "scheduled": false, + "nodeLocation": { + "x": 264, + "y": 150 + } + }, + "workflow_end": { + "name": "workflow_end", + "groups": [], + "nodeLocation": { + "x": 264, + "y": 300 + } + } + }, + "transitions": { + "workflow_start": { + "b4bf": { + "type": "standard", + "state": "success" + } + }, + "b4bf": { + "workflow_end": { + "type": "standard", + "state": "success" + } + }, + "workflow_end": {} + }, + "inputSchema": { + "type": "object", + "properties": { + "networkId": { + "type": "string" + }, + "deviceName": { + "type": "string" + }, + "with": { + "type": "array" + } + }, + "required": [ + "networkId", + "deviceName" + ] + }, + "outputSchema": { + "type": "object", + "properties": { + "response": { + "type": "object", + "description": "Full HTTP response envelope ({ok, url, status, headers, text, body})." + } + } + }, + "scenarios": [], + "canvasVersion": 3, + "tags": [], + "groups": [], + "migrationVersion": 8 + } + }, + { + "iid": 13, + "reference": "b26befdf-3b58-5019-b9f6-ee443b57ce76", + "type": "workflow", + "folder": "/Classic Devices", + "document": { + "name": "Adds or updates a classic device", + "description": "Adds or updates a classic device", + "type": "automation", + "font_size": 12, + "tasks": { + "workflow_start": { + "name": "workflow_start", + "groups": [], + "nodeLocation": { + "x": 264, + "y": 0 + } + }, + "50c1": { + "name": "putClassicDeviceUsingPUT", + "canvasName": "putClassicDeviceUsingPUT", + "summary": "Adds or updates a classic device", + "description": "Adds or updates a classic device", + "location": "Adapter", + "locationType": "Forward Networks:latest", + "app": "Forward Networks:latest", + "type": "automatic", + "displayName": "Forward Networks", + "variables": { + "incoming": { + "networkId": "$var.job.networkId", + "deviceName": "$var.job.deviceName", + "bodyContentType": "application/json", + "requestBodyPayload": "$var.job.body", + "adapter_id": "Forward Networks" + }, + "outgoing": { + "response": null + }, + "error": "", + "decorators": [] + }, + "groups": [], + "actor": "Pronghorn", + "scheduled": false, + "nodeLocation": { + "x": 264, + "y": 150 + } + }, + "workflow_end": { + "name": "workflow_end", + "groups": [], + "nodeLocation": { + "x": 264, + "y": 300 + } + } + }, + "transitions": { + "workflow_start": { + "50c1": { + "type": "standard", + "state": "success" + } + }, + "50c1": { + "workflow_end": { + "type": "standard", + "state": "success" + } + }, + "workflow_end": {} + }, + "inputSchema": { + "type": "object", + "properties": { + "networkId": { + "type": "string" + }, + "deviceName": { + "type": "string" + }, + "body": { + "type": "object" + } + }, + "required": [ + "networkId", + "deviceName", + "body" + ] + }, + "outputSchema": { + "type": "object", + "properties": { + "response": { + "type": "object", + "description": "Full HTTP response envelope ({ok, url, status, headers, text, body})." + } + } + }, + "scenarios": [], + "canvasVersion": 3, + "tags": [], + "groups": [], + "migrationVersion": 8 + } + }, + { + "iid": 14, + "reference": "87be67f2-bbbc-50ea-84c6-47afbc224a92", + "type": "workflow", + "folder": "/Classic Devices", + "document": { + "name": "Deletes a classic device", + "description": "Deletes a classic device", + "type": "automation", + "font_size": 12, + "tasks": { + "workflow_start": { + "name": "workflow_start", + "groups": [], + "nodeLocation": { + "x": 264, + "y": 0 + } + }, + "ffd6": { + "name": "deleteClassicDeviceUsingDELETE", + "canvasName": "deleteClassicDeviceUsingDELETE", + "summary": "Deletes a classic device", + "description": "Deletes a classic device", + "location": "Adapter", + "locationType": "Forward Networks:latest", + "app": "Forward Networks:latest", + "type": "automatic", + "displayName": "Forward Networks", + "variables": { + "incoming": { + "networkId": "$var.job.networkId", + "deviceName": "$var.job.deviceName", + "adapter_id": "Forward Networks" + }, + "outgoing": { + "response": null + }, + "error": "", + "decorators": [] + }, + "groups": [], + "actor": "Pronghorn", + "scheduled": false, + "nodeLocation": { + "x": 264, + "y": 150 + } + }, + "workflow_end": { + "name": "workflow_end", + "groups": [], + "nodeLocation": { + "x": 264, + "y": 300 + } + } + }, + "transitions": { + "workflow_start": { + "ffd6": { + "type": "standard", + "state": "success" + } + }, + "ffd6": { + "workflow_end": { + "type": "standard", + "state": "success" + } + }, + "workflow_end": {} + }, + "inputSchema": { + "type": "object", + "properties": { + "networkId": { + "type": "string" + }, + "deviceName": { + "type": "string" + } + }, + "required": [ + "networkId", + "deviceName" + ] + }, + "outputSchema": { + "type": "object", + "properties": { + "response": { + "type": "object", + "description": "Full HTTP response envelope ({ok, url, status, headers, text, body})." + } + } + }, + "scenarios": [], + "canvasVersion": 3, + "tags": [], + "groups": [], + "migrationVersion": 8 + } + }, + { + "iid": 15, + "reference": "42c834ef-c5fd-5cdc-bbc3-dbcbaad95d0d", + "type": "workflow", + "folder": "/Classic Devices", + "document": { + "name": "Updates a classic device", + "description": "All JSON properties in the request body are optional. Include only the properties you wish to change.", + "type": "automation", + "font_size": 12, + "tasks": { + "workflow_start": { + "name": "workflow_start", + "groups": [], + "nodeLocation": { + "x": 264, + "y": 0 + } + }, + "ba04": { + "name": "patchClassicDeviceUsingPATCH", + "canvasName": "patchClassicDeviceUsingPATCH", + "summary": "Updates a classic device", + "description": "All JSON properties in the request body are optional. Include only the properties you wish to change.", + "location": "Adapter", + "locationType": "Forward Networks:latest", + "app": "Forward Networks:latest", + "type": "automatic", + "displayName": "Forward Networks", + "variables": { + "incoming": { + "networkId": "$var.job.networkId", + "deviceName": "$var.job.deviceName", + "bodyContentType": "application/json", + "requestBodyPayload": "$var.job.body", + "adapter_id": "Forward Networks" + }, + "outgoing": { + "response": null + }, + "error": "", + "decorators": [] + }, + "groups": [], + "actor": "Pronghorn", + "scheduled": false, + "nodeLocation": { + "x": 264, + "y": 150 + } + }, + "workflow_end": { + "name": "workflow_end", + "groups": [], + "nodeLocation": { + "x": 264, + "y": 300 + } + } + }, + "transitions": { + "workflow_start": { + "ba04": { + "type": "standard", + "state": "success" + } + }, + "ba04": { + "workflow_end": { + "type": "standard", + "state": "success" + } + }, + "workflow_end": {} + }, + "inputSchema": { + "type": "object", + "properties": { + "networkId": { + "type": "string" + }, + "deviceName": { + "type": "string" + }, + "body": { + "type": "object" + } + }, + "required": [ + "networkId", + "deviceName", + "body" + ] + }, + "outputSchema": { + "type": "object", + "properties": { + "response": { + "type": "object", + "description": "Full HTTP response envelope ({ok, url, status, headers, text, body})." + } + } + }, + "scenarios": [], + "canvasVersion": 3, + "tags": [], + "groups": [], + "migrationVersion": 8 + } + }, + { + "iid": 16, + "reference": "4d5b7351-62b8-5346-8d95-bf6986a8f829", + "type": "workflow", + "folder": "/Network Endpoints", + "document": { + "name": "Gets the endpoint profiles", + "description": "Gets the endpoint profiles", + "type": "automation", + "font_size": 12, + "tasks": { + "workflow_start": { + "name": "workflow_start", + "groups": [], + "nodeLocation": { + "x": 264, + "y": 0 + } + }, + "be3d": { + "name": "getEndpointProfilesUsingGET", + "canvasName": "getEndpointProfilesUsingGET", + "summary": "Gets the endpoint profiles", + "description": "Gets the endpoint profiles", + "location": "Adapter", + "locationType": "Forward Networks:latest", + "app": "Forward Networks:latest", + "type": "automatic", + "displayName": "Forward Networks", + "variables": { + "incoming": { + "adapter_id": "Forward Networks" + }, + "outgoing": { + "response": null + }, + "error": "", + "decorators": [] + }, + "groups": [], + "actor": "Pronghorn", + "scheduled": false, + "nodeLocation": { + "x": 264, + "y": 150 + } + }, + "workflow_end": { + "name": "workflow_end", + "groups": [], + "nodeLocation": { + "x": 264, + "y": 300 + } + } + }, + "transitions": { + "workflow_start": { + "be3d": { + "type": "standard", + "state": "success" + } + }, + "be3d": { + "workflow_end": { + "type": "standard", + "state": "success" + } + }, + "workflow_end": {} + }, + "inputSchema": { + "type": "object", + "properties": {} + }, + "outputSchema": { + "type": "object", + "properties": { + "response": { + "type": "object", + "description": "Full HTTP response envelope ({ok, url, status, headers, text, body})." + } + } + }, + "scenarios": [], + "canvasVersion": 3, + "tags": [], + "groups": [], + "migrationVersion": 8 + } + }, + { + "iid": 17, + "reference": "9933f5ca-d59a-5153-94ea-fca8b3be4766", + "type": "workflow", + "folder": "/Network Endpoints", + "document": { + "name": "Gets an endpoint profile", + "description": "Gets an endpoint profile", + "type": "automation", + "font_size": 12, + "tasks": { + "workflow_start": { + "name": "workflow_start", + "groups": [], + "nodeLocation": { + "x": 264, + "y": 0 + } + }, + "ea2f": { + "name": "getEndpointProfileUsingGET", + "canvasName": "getEndpointProfileUsingGET", + "summary": "Gets an endpoint profile", + "description": "Gets an endpoint profile", + "location": "Adapter", + "locationType": "Forward Networks:latest", + "app": "Forward Networks:latest", + "type": "automatic", + "displayName": "Forward Networks", + "variables": { + "incoming": { + "profileId": "$var.job.profileId", + "adapter_id": "Forward Networks" + }, + "outgoing": { + "response": null + }, + "error": "", + "decorators": [] + }, + "groups": [], + "actor": "Pronghorn", + "scheduled": false, + "nodeLocation": { + "x": 264, + "y": 150 + } + }, + "workflow_end": { + "name": "workflow_end", + "groups": [], + "nodeLocation": { + "x": 264, + "y": 300 + } + } + }, + "transitions": { + "workflow_start": { + "ea2f": { + "type": "standard", + "state": "success" + } + }, + "ea2f": { + "workflow_end": { + "type": "standard", + "state": "success" + } + }, + "workflow_end": {} + }, + "inputSchema": { + "type": "object", + "properties": { + "profileId": { + "type": "string" + } + }, + "required": [ + "profileId" + ] + }, + "outputSchema": { + "type": "object", + "properties": { + "response": { + "type": "object", + "description": "Full HTTP response envelope ({ok, url, status, headers, text, body})." + } + } + }, + "scenarios": [], + "canvasVersion": 3, + "tags": [], + "groups": [], + "migrationVersion": 8 + } + }, + { + "iid": 18, + "reference": "4c76ece7-87f7-5ac2-a8b6-78139ae0e546", + "type": "workflow", + "folder": "/Network Endpoints", + "document": { + "name": "Deletes an endpoint profile", + "description": "Deletes an endpoint profile", + "type": "automation", + "font_size": 12, + "tasks": { + "workflow_start": { + "name": "workflow_start", + "groups": [], + "nodeLocation": { + "x": 264, + "y": 0 + } + }, + "305d": { + "name": "deleteEndpointProfileUsingDELETE", + "canvasName": "deleteEndpointProfileUsingDELETE", + "summary": "Deletes an endpoint profile", + "description": "Deletes an endpoint profile", + "location": "Adapter", + "locationType": "Forward Networks:latest", + "app": "Forward Networks:latest", + "type": "automatic", + "displayName": "Forward Networks", + "variables": { + "incoming": { + "profileId": "$var.job.profileId", + "adapter_id": "Forward Networks" + }, + "outgoing": { + "response": null + }, + "error": "", + "decorators": [] + }, + "groups": [], + "actor": "Pronghorn", + "scheduled": false, + "nodeLocation": { + "x": 264, + "y": 150 + } + }, + "workflow_end": { + "name": "workflow_end", + "groups": [], + "nodeLocation": { + "x": 264, + "y": 300 + } + } + }, + "transitions": { + "workflow_start": { + "305d": { + "type": "standard", + "state": "success" + } + }, + "305d": { + "workflow_end": { + "type": "standard", + "state": "success" + } + }, + "workflow_end": {} + }, + "inputSchema": { + "type": "object", + "properties": { + "profileId": { + "type": "string" + } + }, + "required": [ + "profileId" + ] + }, + "outputSchema": { + "type": "object", + "properties": { + "response": { + "type": "object", + "description": "Full HTTP response envelope ({ok, url, status, headers, text, body})." + } + } + }, + "scenarios": [], + "canvasVersion": 3, + "tags": [], + "groups": [], + "migrationVersion": 8 + } + }, + { + "iid": 19, + "reference": "43aad7dc-7256-5d39-8e92-a9bd364253ab", + "type": "workflow", + "folder": "/Network Endpoints", + "document": { + "name": "Adds a new CLI endpoint profile", + "description": "Adds a new CLI endpoint profile", + "type": "automation", + "font_size": 12, + "tasks": { + "workflow_start": { + "name": "workflow_start", + "groups": [], + "nodeLocation": { + "x": 264, + "y": 0 + } + }, + "7ab6": { + "name": "createCliEndpointProfileUsingPOST", + "canvasName": "createCliEndpointProfileUsingPOST", + "summary": "Adds a new CLI endpoint profile", + "description": "Adds a new CLI endpoint profile", + "location": "Adapter", + "locationType": "Forward Networks:latest", + "app": "Forward Networks:latest", + "type": "automatic", + "displayName": "Forward Networks", + "variables": { + "incoming": { + "bodyContentType": "application/json", + "requestBodyPayload": "$var.job.body", + "adapter_id": "Forward Networks" + }, + "outgoing": { + "response": null + }, + "error": "", + "decorators": [] + }, + "groups": [], + "actor": "Pronghorn", + "scheduled": false, + "nodeLocation": { + "x": 264, + "y": 150 + } + }, + "workflow_end": { + "name": "workflow_end", + "groups": [], + "nodeLocation": { + "x": 264, + "y": 300 + } + } + }, + "transitions": { + "workflow_start": { + "7ab6": { + "type": "standard", + "state": "success" + } + }, + "7ab6": { + "workflow_end": { + "type": "standard", + "state": "success" + } + }, + "workflow_end": {} + }, + "inputSchema": { + "type": "object", + "properties": { + "body": { + "type": "object" + } + }, + "required": [ + "body" + ] + }, + "outputSchema": { + "type": "object", + "properties": { + "response": { + "type": "object", + "description": "Full HTTP response envelope ({ok, url, status, headers, text, body})." + } + } + }, + "scenarios": [], + "canvasVersion": 3, + "tags": [], + "groups": [], + "migrationVersion": 8 + } + }, + { + "iid": 20, + "reference": "2e3e083a-42f9-5c6c-b8e9-1e54d5742918", + "type": "workflow", + "folder": "/Network Endpoints", + "document": { + "name": "Adds a new HTTP endpoint profile", + "description": "Adds a new HTTP endpoint profile", + "type": "automation", + "font_size": 12, + "tasks": { + "workflow_start": { + "name": "workflow_start", + "groups": [], + "nodeLocation": { + "x": 264, + "y": 0 + } + }, + "86c5": { + "name": "createHttpEndpointProfileUsingPOST", + "canvasName": "createHttpEndpointProfileUsingPOST", + "summary": "Adds a new HTTP endpoint profile", + "description": "Adds a new HTTP endpoint profile", + "location": "Adapter", + "locationType": "Forward Networks:latest", + "app": "Forward Networks:latest", + "type": "automatic", + "displayName": "Forward Networks", + "variables": { + "incoming": { + "bodyContentType": "application/json", + "requestBodyPayload": "$var.job.body", + "adapter_id": "Forward Networks" + }, + "outgoing": { + "response": null + }, + "error": "", + "decorators": [] + }, + "groups": [], + "actor": "Pronghorn", + "scheduled": false, + "nodeLocation": { + "x": 264, + "y": 150 + } + }, + "workflow_end": { + "name": "workflow_end", + "groups": [], + "nodeLocation": { + "x": 264, + "y": 300 + } + } + }, + "transitions": { + "workflow_start": { + "86c5": { + "type": "standard", + "state": "success" + } + }, + "86c5": { + "workflow_end": { + "type": "standard", + "state": "success" + } + }, + "workflow_end": {} + }, + "inputSchema": { + "type": "object", + "properties": { + "body": { + "type": "object" + } + }, + "required": [ + "body" + ] + }, + "outputSchema": { + "type": "object", + "properties": { + "response": { + "type": "object", + "description": "Full HTTP response envelope ({ok, url, status, headers, text, body})." + } + } + }, + "scenarios": [], + "canvasVersion": 3, + "tags": [], + "groups": [], + "migrationVersion": 8 + } + }, + { + "iid": 21, + "reference": "192e2dc4-71b1-5f2e-abbb-443374f2d5bd", + "type": "workflow", + "folder": "/Network Endpoints", + "document": { + "name": "Adds a new SNMP endpoint profile", + "description": "Adds a new SNMP endpoint profile", + "type": "automation", + "font_size": 12, + "tasks": { + "workflow_start": { + "name": "workflow_start", + "groups": [], + "nodeLocation": { + "x": 264, + "y": 0 + } + }, + "d8fd": { + "name": "createSnmpEndpointProfileUsingPOST", + "canvasName": "createSnmpEndpointProfileUsingPOST", + "summary": "Adds a new SNMP endpoint profile", + "description": "Adds a new SNMP endpoint profile", + "location": "Adapter", + "locationType": "Forward Networks:latest", + "app": "Forward Networks:latest", + "type": "automatic", + "displayName": "Forward Networks", + "variables": { + "incoming": { + "bodyContentType": "application/json", + "requestBodyPayload": "$var.job.body", + "adapter_id": "Forward Networks" + }, + "outgoing": { + "response": null + }, + "error": "", + "decorators": [] + }, + "groups": [], + "actor": "Pronghorn", + "scheduled": false, + "nodeLocation": { + "x": 264, + "y": 150 + } + }, + "workflow_end": { + "name": "workflow_end", + "groups": [], + "nodeLocation": { + "x": 264, + "y": 300 + } + } + }, + "transitions": { + "workflow_start": { + "d8fd": { + "type": "standard", + "state": "success" + } + }, + "d8fd": { + "workflow_end": { + "type": "standard", + "state": "success" + } + }, + "workflow_end": {} + }, + "inputSchema": { + "type": "object", + "properties": { + "body": { + "type": "object" + } + }, + "required": [ + "body" + ] + }, + "outputSchema": { + "type": "object", + "properties": { + "response": { + "type": "object", + "description": "Full HTTP response envelope ({ok, url, status, headers, text, body})." + } + } + }, + "scenarios": [], + "canvasVersion": 3, + "tags": [], + "groups": [], + "migrationVersion": 8 + } + }, + { + "iid": 22, + "reference": "35cb92b0-065a-5c44-8fd9-638b5bbba0ac", + "type": "workflow", + "folder": "/Network Endpoints", + "document": { + "name": "Updates a CLI endpoint profile", + "description": "Updates a CLI endpoint profile", + "type": "automation", + "font_size": 12, + "tasks": { + "workflow_start": { + "name": "workflow_start", + "groups": [], + "nodeLocation": { + "x": 264, + "y": 0 + } + }, + "783f": { + "name": "updateCliEndpointProfileUsingPATCH", + "canvasName": "updateCliEndpointProfileUsingPATCH", + "summary": "Updates a CLI endpoint profile", + "description": "Updates a CLI endpoint profile", + "location": "Adapter", + "locationType": "Forward Networks:latest", + "app": "Forward Networks:latest", + "type": "automatic", + "displayName": "Forward Networks", + "variables": { + "incoming": { + "profileId": "$var.job.profileId", + "bodyContentType": "application/json", + "requestBodyPayload": "$var.job.body", + "adapter_id": "Forward Networks" + }, + "outgoing": { + "response": null + }, + "error": "", + "decorators": [] + }, + "groups": [], + "actor": "Pronghorn", + "scheduled": false, + "nodeLocation": { + "x": 264, + "y": 150 + } + }, + "workflow_end": { + "name": "workflow_end", + "groups": [], + "nodeLocation": { + "x": 264, + "y": 300 + } + } + }, + "transitions": { + "workflow_start": { + "783f": { + "type": "standard", + "state": "success" + } + }, + "783f": { + "workflow_end": { + "type": "standard", + "state": "success" + } + }, + "workflow_end": {} + }, + "inputSchema": { + "type": "object", + "properties": { + "profileId": { + "type": "string" + }, + "body": { + "type": "object" + } + }, + "required": [ + "profileId", + "body" + ] + }, + "outputSchema": { + "type": "object", + "properties": { + "response": { + "type": "object", + "description": "Full HTTP response envelope ({ok, url, status, headers, text, body})." + } + } + }, + "scenarios": [], + "canvasVersion": 3, + "tags": [], + "groups": [], + "migrationVersion": 8 + } + }, + { + "iid": 23, + "reference": "1677e541-0048-5b22-9657-186e3224b1fa", + "type": "workflow", + "folder": "/Network Endpoints", + "document": { + "name": "Updates an HTTP endpoint profile", + "description": "Updates an HTTP endpoint profile", + "type": "automation", + "font_size": 12, + "tasks": { + "workflow_start": { + "name": "workflow_start", + "groups": [], + "nodeLocation": { + "x": 264, + "y": 0 + } + }, + "0247": { + "name": "updateHttpEndpointProfileUsingPATCH", + "canvasName": "updateHttpEndpointProfileUsingPATCH", + "summary": "Updates an HTTP endpoint profile", + "description": "Updates an HTTP endpoint profile", + "location": "Adapter", + "locationType": "Forward Networks:latest", + "app": "Forward Networks:latest", + "type": "automatic", + "displayName": "Forward Networks", + "variables": { + "incoming": { + "profileId": "$var.job.profileId", + "bodyContentType": "application/json", + "requestBodyPayload": "$var.job.body", + "adapter_id": "Forward Networks" + }, + "outgoing": { + "response": null + }, + "error": "", + "decorators": [] + }, + "groups": [], + "actor": "Pronghorn", + "scheduled": false, + "nodeLocation": { + "x": 264, + "y": 150 + } + }, + "workflow_end": { + "name": "workflow_end", + "groups": [], + "nodeLocation": { + "x": 264, + "y": 300 + } + } + }, + "transitions": { + "workflow_start": { + "0247": { + "type": "standard", + "state": "success" + } + }, + "0247": { + "workflow_end": { + "type": "standard", + "state": "success" + } + }, + "workflow_end": {} + }, + "inputSchema": { + "type": "object", + "properties": { + "profileId": { + "type": "string" + }, + "body": { + "type": "object" + } + }, + "required": [ + "profileId", + "body" + ] + }, + "outputSchema": { + "type": "object", + "properties": { + "response": { + "type": "object", + "description": "Full HTTP response envelope ({ok, url, status, headers, text, body})." + } + } + }, + "scenarios": [], + "canvasVersion": 3, + "tags": [], + "groups": [], + "migrationVersion": 8 + } + }, + { + "iid": 24, + "reference": "34c92bc6-9bd1-54f2-a5fc-9fc29b148cf2", + "type": "workflow", + "folder": "/Network Endpoints", + "document": { + "name": "Updates an SNMP endpoint profile", + "description": "Updates an SNMP endpoint profile", + "type": "automation", + "font_size": 12, + "tasks": { + "workflow_start": { + "name": "workflow_start", + "groups": [], + "nodeLocation": { + "x": 264, + "y": 0 + } + }, + "a081": { + "name": "updateSnmpEndpointProfileUsingPATCH", + "canvasName": "updateSnmpEndpointProfileUsingPATCH", + "summary": "Updates an SNMP endpoint profile", + "description": "Updates an SNMP endpoint profile", + "location": "Adapter", + "locationType": "Forward Networks:latest", + "app": "Forward Networks:latest", + "type": "automatic", + "displayName": "Forward Networks", + "variables": { + "incoming": { + "profileId": "$var.job.profileId", + "bodyContentType": "application/json", + "requestBodyPayload": "$var.job.body", + "adapter_id": "Forward Networks" + }, + "outgoing": { + "response": null + }, + "error": "", + "decorators": [] + }, + "groups": [], + "actor": "Pronghorn", + "scheduled": false, + "nodeLocation": { + "x": 264, + "y": 150 + } + }, + "workflow_end": { + "name": "workflow_end", + "groups": [], + "nodeLocation": { + "x": 264, + "y": 300 + } + } + }, + "transitions": { + "workflow_start": { + "a081": { + "type": "standard", + "state": "success" + } + }, + "a081": { + "workflow_end": { + "type": "standard", + "state": "success" + } + }, + "workflow_end": {} + }, + "inputSchema": { + "type": "object", + "properties": { + "profileId": { + "type": "string" + }, + "body": { + "type": "object" + } + }, + "required": [ + "profileId", + "body" + ] + }, + "outputSchema": { + "type": "object", + "properties": { + "response": { + "type": "object", + "description": "Full HTTP response envelope ({ok, url, status, headers, text, body})." + } + } + }, + "scenarios": [], + "canvasVersion": 3, + "tags": [], + "groups": [], + "migrationVersion": 8 + } + }, + { + "iid": 25, + "reference": "53f5261e-4af7-549f-af70-7f396b00fadd", + "type": "workflow", + "folder": "/Network Endpoints", + "document": { + "name": "Gets a network\u2019s endpoints", + "description": "Gets a network\u2019s endpoints", + "type": "automation", + "font_size": 12, + "tasks": { + "workflow_start": { + "name": "workflow_start", + "groups": [], + "nodeLocation": { + "x": 264, + "y": 0 + } + }, + "43ec": { + "name": "getNetworkEndpointsUsingGET", + "canvasName": "getNetworkEndpointsUsingGET", + "summary": "Gets a network\u2019s endpoints", + "description": "Gets a network\u2019s endpoints", + "location": "Adapter", + "locationType": "Forward Networks:latest", + "app": "Forward Networks:latest", + "type": "automatic", + "displayName": "Forward Networks", + "variables": { + "incoming": { + "networkId": "$var.job.networkId", + "with": "$var.job.with", + "adapter_id": "Forward Networks" + }, + "outgoing": { + "response": null + }, + "error": "", + "decorators": [] + }, + "groups": [], + "actor": "Pronghorn", + "scheduled": false, + "nodeLocation": { + "x": 264, + "y": 150 + } + }, + "workflow_end": { + "name": "workflow_end", + "groups": [], + "nodeLocation": { + "x": 264, + "y": 300 + } + } + }, + "transitions": { + "workflow_start": { + "43ec": { + "type": "standard", + "state": "success" + } + }, + "43ec": { + "workflow_end": { + "type": "standard", + "state": "success" + } + }, + "workflow_end": {} + }, + "inputSchema": { + "type": "object", + "properties": { + "networkId": { + "type": "string" + }, + "with": { + "type": "array" + } + }, + "required": [ + "networkId" + ] + }, + "outputSchema": { + "type": "object", + "properties": { + "response": { + "type": "object", + "description": "Full HTTP response envelope ({ok, url, status, headers, text, body})." + } + } + }, + "scenarios": [], + "canvasVersion": 3, + "tags": [], + "groups": [], + "migrationVersion": 8 + } + }, + { + "iid": 26, + "reference": "c3737358-c2c4-5c62-a17b-66ae55de0dd1", + "type": "workflow", + "folder": "/Network Endpoints", + "document": { + "name": "Gets a network endpoint", + "description": "Gets a network endpoint", + "type": "automation", + "font_size": 12, + "tasks": { + "workflow_start": { + "name": "workflow_start", + "groups": [], + "nodeLocation": { + "x": 264, + "y": 0 + } + }, + "2f5c": { + "name": "getNetworkEndpointUsingGET", + "canvasName": "getNetworkEndpointUsingGET", + "summary": "Gets a network endpoint", + "description": "Gets a network endpoint", + "location": "Adapter", + "locationType": "Forward Networks:latest", + "app": "Forward Networks:latest", + "type": "automatic", + "displayName": "Forward Networks", + "variables": { + "incoming": { + "networkId": "$var.job.networkId", + "endpointName": "$var.job.endpointName", + "with": "$var.job.with", + "adapter_id": "Forward Networks" + }, + "outgoing": { + "response": null + }, + "error": "", + "decorators": [] + }, + "groups": [], + "actor": "Pronghorn", + "scheduled": false, + "nodeLocation": { + "x": 264, + "y": 150 + } + }, + "workflow_end": { + "name": "workflow_end", + "groups": [], + "nodeLocation": { + "x": 264, + "y": 300 + } + } + }, + "transitions": { + "workflow_start": { + "2f5c": { + "type": "standard", + "state": "success" + } + }, + "2f5c": { + "workflow_end": { + "type": "standard", + "state": "success" + } + }, + "workflow_end": {} + }, + "inputSchema": { + "type": "object", + "properties": { + "networkId": { + "type": "string" + }, + "endpointName": { + "type": "string" + }, + "with": { + "type": "array" + } + }, + "required": [ + "networkId", + "endpointName" + ] + }, + "outputSchema": { + "type": "object", + "properties": { + "response": { + "type": "object", + "description": "Full HTTP response envelope ({ok, url, status, headers, text, body})." + } + } + }, + "scenarios": [], + "canvasVersion": 3, + "tags": [], + "groups": [], + "migrationVersion": 8 + } + }, + { + "iid": 27, + "reference": "3a948e2b-6233-5cb0-bc47-c87f9c873bc2", + "type": "workflow", + "folder": "/Network Endpoints", + "document": { + "name": "Deletes a network endpoint", + "description": "Deletes a network endpoint", + "type": "automation", + "font_size": 12, + "tasks": { + "workflow_start": { + "name": "workflow_start", + "groups": [], + "nodeLocation": { + "x": 264, + "y": 0 + } + }, + "454e": { + "name": "deleteNetworkEndpointUsingDELETE", + "canvasName": "deleteNetworkEndpointUsingDELETE", + "summary": "Deletes a network endpoint", + "description": "Deletes a network endpoint", + "location": "Adapter", + "locationType": "Forward Networks:latest", + "app": "Forward Networks:latest", + "type": "automatic", + "displayName": "Forward Networks", + "variables": { + "incoming": { + "networkId": "$var.job.networkId", + "endpointName": "$var.job.endpointName", + "adapter_id": "Forward Networks" + }, + "outgoing": { + "response": null + }, + "error": "", + "decorators": [] + }, + "groups": [], + "actor": "Pronghorn", + "scheduled": false, + "nodeLocation": { + "x": 264, + "y": 150 + } + }, + "workflow_end": { + "name": "workflow_end", + "groups": [], + "nodeLocation": { + "x": 264, + "y": 300 + } + } + }, + "transitions": { + "workflow_start": { + "454e": { + "type": "standard", + "state": "success" + } + }, + "454e": { + "workflow_end": { + "type": "standard", + "state": "success" + } + }, + "workflow_end": {} + }, + "inputSchema": { + "type": "object", + "properties": { + "networkId": { + "type": "string" + }, + "endpointName": { + "type": "string" + } + }, + "required": [ + "networkId", + "endpointName" + ] + }, + "outputSchema": { + "type": "object", + "properties": { + "response": { + "type": "object", + "description": "Full HTTP response envelope ({ok, url, status, headers, text, body})." + } + } + }, + "scenarios": [], + "canvasVersion": 3, + "tags": [], + "groups": [], + "migrationVersion": 8 + } + }, + { + "iid": 28, + "reference": "1336f707-2e04-5e11-aced-617fb82cc5df", + "type": "workflow", + "folder": "/Network Endpoints", + "document": { + "name": "Adds a CLI network endpoint", + "description": "Adds a CLI network endpoint", + "type": "automation", + "font_size": 12, + "tasks": { + "workflow_start": { + "name": "workflow_start", + "groups": [], + "nodeLocation": { + "x": 264, + "y": 0 + } + }, + "3a2e": { + "name": "createCliNetworkEndpointUsingPOST", + "canvasName": "createCliNetworkEndpointUsingPOST", + "summary": "Adds a CLI network endpoint", + "description": "Adds a CLI network endpoint", + "location": "Adapter", + "locationType": "Forward Networks:latest", + "app": "Forward Networks:latest", + "type": "automatic", + "displayName": "Forward Networks", + "variables": { + "incoming": { + "networkId": "$var.job.networkId", + "bodyContentType": "application/json", + "requestBodyPayload": "$var.job.body", + "adapter_id": "Forward Networks" + }, + "outgoing": { + "response": null + }, + "error": "", + "decorators": [] + }, + "groups": [], + "actor": "Pronghorn", + "scheduled": false, + "nodeLocation": { + "x": 264, + "y": 150 + } + }, + "workflow_end": { + "name": "workflow_end", + "groups": [], + "nodeLocation": { + "x": 264, + "y": 300 + } + } + }, + "transitions": { + "workflow_start": { + "3a2e": { + "type": "standard", + "state": "success" + } + }, + "3a2e": { + "workflow_end": { + "type": "standard", + "state": "success" + } + }, + "workflow_end": {} + }, + "inputSchema": { + "type": "object", + "properties": { + "networkId": { + "type": "string" + }, + "body": { + "type": "object" + } + }, + "required": [ + "networkId", + "body" + ] + }, + "outputSchema": { + "type": "object", + "properties": { + "response": { + "type": "object", + "description": "Full HTTP response envelope ({ok, url, status, headers, text, body})." + } + } + }, + "scenarios": [], + "canvasVersion": 3, + "tags": [], + "groups": [], + "migrationVersion": 8 + } + }, + { + "iid": 29, + "reference": "0a4db60e-b493-5db2-bc57-1bd9abe20fee", + "type": "workflow", + "folder": "/Network Endpoints", + "document": { + "name": "Adds an HTTP network endpoint", + "description": "Adds an HTTP network endpoint", + "type": "automation", + "font_size": 12, + "tasks": { + "workflow_start": { + "name": "workflow_start", + "groups": [], + "nodeLocation": { + "x": 264, + "y": 0 + } + }, + "7d59": { + "name": "createHttpNetworkEndpointUsingPOST", + "canvasName": "createHttpNetworkEndpointUsingPOST", + "summary": "Adds an HTTP network endpoint", + "description": "Adds an HTTP network endpoint", + "location": "Adapter", + "locationType": "Forward Networks:latest", + "app": "Forward Networks:latest", + "type": "automatic", + "displayName": "Forward Networks", + "variables": { + "incoming": { + "networkId": "$var.job.networkId", + "bodyContentType": "application/json", + "requestBodyPayload": "$var.job.body", + "adapter_id": "Forward Networks" + }, + "outgoing": { + "response": null + }, + "error": "", + "decorators": [] + }, + "groups": [], + "actor": "Pronghorn", + "scheduled": false, + "nodeLocation": { + "x": 264, + "y": 150 + } + }, + "workflow_end": { + "name": "workflow_end", + "groups": [], + "nodeLocation": { + "x": 264, + "y": 300 + } + } + }, + "transitions": { + "workflow_start": { + "7d59": { + "type": "standard", + "state": "success" + } + }, + "7d59": { + "workflow_end": { + "type": "standard", + "state": "success" + } + }, + "workflow_end": {} + }, + "inputSchema": { + "type": "object", + "properties": { + "networkId": { + "type": "string" + }, + "body": { + "type": "object" + } + }, + "required": [ + "networkId", + "body" + ] + }, + "outputSchema": { + "type": "object", + "properties": { + "response": { + "type": "object", + "description": "Full HTTP response envelope ({ok, url, status, headers, text, body})." + } + } + }, + "scenarios": [], + "canvasVersion": 3, + "tags": [], + "groups": [], + "migrationVersion": 8 + } + }, + { + "iid": 30, + "reference": "cb1f42dd-f298-5c3e-a44b-9389a7ba83d4", + "type": "workflow", + "folder": "/Network Endpoints", + "document": { + "name": "Adds an SNMP network endpoint", + "description": "Adds an SNMP network endpoint", + "type": "automation", + "font_size": 12, + "tasks": { + "workflow_start": { + "name": "workflow_start", + "groups": [], + "nodeLocation": { + "x": 264, + "y": 0 + } + }, + "254e": { + "name": "createSnmpNetworkEndpointUsingPOST", + "canvasName": "createSnmpNetworkEndpointUsingPOST", + "summary": "Adds an SNMP network endpoint", + "description": "Adds an SNMP network endpoint", + "location": "Adapter", + "locationType": "Forward Networks:latest", + "app": "Forward Networks:latest", + "type": "automatic", + "displayName": "Forward Networks", + "variables": { + "incoming": { + "networkId": "$var.job.networkId", + "bodyContentType": "application/json", + "requestBodyPayload": "$var.job.body", + "adapter_id": "Forward Networks" + }, + "outgoing": { + "response": null + }, + "error": "", + "decorators": [] + }, + "groups": [], + "actor": "Pronghorn", + "scheduled": false, + "nodeLocation": { + "x": 264, + "y": 150 + } + }, + "workflow_end": { + "name": "workflow_end", + "groups": [], + "nodeLocation": { + "x": 264, + "y": 300 + } + } + }, + "transitions": { + "workflow_start": { + "254e": { + "type": "standard", + "state": "success" + } + }, + "254e": { + "workflow_end": { + "type": "standard", + "state": "success" + } + }, + "workflow_end": {} + }, + "inputSchema": { + "type": "object", + "properties": { + "networkId": { + "type": "string" + }, + "body": { + "type": "object" + } + }, + "required": [ + "networkId", + "body" + ] + }, + "outputSchema": { + "type": "object", + "properties": { + "response": { + "type": "object", + "description": "Full HTTP response envelope ({ok, url, status, headers, text, body})." + } + } + }, + "scenarios": [], + "canvasVersion": 3, + "tags": [], + "groups": [], + "migrationVersion": 8 + } + }, + { + "iid": 31, + "reference": "71aebd54-06f4-5b40-a364-86b6379547b5", + "type": "workflow", + "folder": "/Network Endpoints", + "document": { + "name": "Updates a CLI network endpoint", + "description": "All JSON properties in the request body are optional. Include only the properties you wish to change.", + "type": "automation", + "font_size": 12, + "tasks": { + "workflow_start": { + "name": "workflow_start", + "groups": [], + "nodeLocation": { + "x": 264, + "y": 0 + } + }, + "5c84": { + "name": "updateCliNetworkEndpointUsingPATCH", + "canvasName": "updateCliNetworkEndpointUsingPATCH", + "summary": "Updates a CLI network endpoint", + "description": "All JSON properties in the request body are optional. Include only the properties you wish to change.", + "location": "Adapter", + "locationType": "Forward Networks:latest", + "app": "Forward Networks:latest", + "type": "automatic", + "displayName": "Forward Networks", + "variables": { + "incoming": { + "networkId": "$var.job.networkId", + "endpointName": "$var.job.endpointName", + "bodyContentType": "application/json", + "requestBodyPayload": "$var.job.body", + "adapter_id": "Forward Networks" + }, + "outgoing": { + "response": null + }, + "error": "", + "decorators": [] + }, + "groups": [], + "actor": "Pronghorn", + "scheduled": false, + "nodeLocation": { + "x": 264, + "y": 150 + } + }, + "workflow_end": { + "name": "workflow_end", + "groups": [], + "nodeLocation": { + "x": 264, + "y": 300 + } + } + }, + "transitions": { + "workflow_start": { + "5c84": { + "type": "standard", + "state": "success" + } + }, + "5c84": { + "workflow_end": { + "type": "standard", + "state": "success" + } + }, + "workflow_end": {} + }, + "inputSchema": { + "type": "object", + "properties": { + "networkId": { + "type": "string" + }, + "endpointName": { + "type": "string" + }, + "body": { + "type": "object" + } + }, + "required": [ + "networkId", + "endpointName", + "body" + ] + }, + "outputSchema": { + "type": "object", + "properties": { + "response": { + "type": "object", + "description": "Full HTTP response envelope ({ok, url, status, headers, text, body})." + } + } + }, + "scenarios": [], + "canvasVersion": 3, + "tags": [], + "groups": [], + "migrationVersion": 8 + } + }, + { + "iid": 32, + "reference": "f8ca73de-02fe-55f7-8d6a-423ac68d4dc2", + "type": "workflow", + "folder": "/Network Endpoints", + "document": { + "name": "Updates an HTTP network endpoint", + "description": "All JSON properties in the request body are optional. Include only the properties you wish to change.", + "type": "automation", + "font_size": 12, + "tasks": { + "workflow_start": { + "name": "workflow_start", + "groups": [], + "nodeLocation": { + "x": 264, + "y": 0 + } + }, + "ed3d": { + "name": "updateHttpNetworkEndpointUsingPATCH", + "canvasName": "updateHttpNetworkEndpointUsingPATCH", + "summary": "Updates an HTTP network endpoint", + "description": "All JSON properties in the request body are optional. Include only the properties you wish to change.", + "location": "Adapter", + "locationType": "Forward Networks:latest", + "app": "Forward Networks:latest", + "type": "automatic", + "displayName": "Forward Networks", + "variables": { + "incoming": { + "networkId": "$var.job.networkId", + "endpointName": "$var.job.endpointName", + "bodyContentType": "application/json", + "requestBodyPayload": "$var.job.body", + "adapter_id": "Forward Networks" + }, + "outgoing": { + "response": null + }, + "error": "", + "decorators": [] + }, + "groups": [], + "actor": "Pronghorn", + "scheduled": false, + "nodeLocation": { + "x": 264, + "y": 150 + } + }, + "workflow_end": { + "name": "workflow_end", + "groups": [], + "nodeLocation": { + "x": 264, + "y": 300 + } + } + }, + "transitions": { + "workflow_start": { + "ed3d": { + "type": "standard", + "state": "success" + } + }, + "ed3d": { + "workflow_end": { + "type": "standard", + "state": "success" + } + }, + "workflow_end": {} + }, + "inputSchema": { + "type": "object", + "properties": { + "networkId": { + "type": "string" + }, + "endpointName": { + "type": "string" + }, + "body": { + "type": "object" + } + }, + "required": [ + "networkId", + "endpointName", + "body" + ] + }, + "outputSchema": { + "type": "object", + "properties": { + "response": { + "type": "object", + "description": "Full HTTP response envelope ({ok, url, status, headers, text, body})." + } + } + }, + "scenarios": [], + "canvasVersion": 3, + "tags": [], + "groups": [], + "migrationVersion": 8 + } + }, + { + "iid": 33, + "reference": "b0dddec8-80de-51a8-bfc7-e4e6f9d455d5", + "type": "workflow", + "folder": "/Network Endpoints", + "document": { + "name": "Updates an SNMP network endpoint", + "description": "All JSON properties in the request body are optional. Include only the properties you wish to change.", + "type": "automation", + "font_size": 12, + "tasks": { + "workflow_start": { + "name": "workflow_start", + "groups": [], + "nodeLocation": { + "x": 264, + "y": 0 + } + }, + "d9db": { + "name": "updateSnmpNetworkEndpointUsingPATCH", + "canvasName": "updateSnmpNetworkEndpointUsingPATCH", + "summary": "Updates an SNMP network endpoint", + "description": "All JSON properties in the request body are optional. Include only the properties you wish to change.", + "location": "Adapter", + "locationType": "Forward Networks:latest", + "app": "Forward Networks:latest", + "type": "automatic", + "displayName": "Forward Networks", + "variables": { + "incoming": { + "networkId": "$var.job.networkId", + "endpointName": "$var.job.endpointName", + "bodyContentType": "application/json", + "requestBodyPayload": "$var.job.body", + "adapter_id": "Forward Networks" + }, + "outgoing": { + "response": null + }, + "error": "", + "decorators": [] + }, + "groups": [], + "actor": "Pronghorn", + "scheduled": false, + "nodeLocation": { + "x": 264, + "y": 150 + } + }, + "workflow_end": { + "name": "workflow_end", + "groups": [], + "nodeLocation": { + "x": 264, + "y": 300 + } + } + }, + "transitions": { + "workflow_start": { + "d9db": { + "type": "standard", + "state": "success" + } + }, + "d9db": { + "workflow_end": { + "type": "standard", + "state": "success" + } + }, + "workflow_end": {} + }, + "inputSchema": { + "type": "object", + "properties": { + "networkId": { + "type": "string" + }, + "endpointName": { + "type": "string" + }, + "body": { + "type": "object" + } + }, + "required": [ + "networkId", + "endpointName", + "body" + ] + }, + "outputSchema": { + "type": "object", + "properties": { + "response": { + "type": "object", + "description": "Full HTTP response envelope ({ok, url, status, headers, text, body})." + } + } + }, + "scenarios": [], + "canvasVersion": 3, + "tags": [], + "groups": [], + "migrationVersion": 8 + } + }, + { + "iid": 34, + "reference": "4a43bc7e-5fbf-562a-8a8c-bf530c08c89e", + "type": "workflow", + "folder": "/Credentials", + "document": { + "name": "Lists network device CLI credentials", + "description": "Substitutes a system-generated identifier for each sensitive `password`.", + "type": "automation", + "font_size": 12, + "tasks": { + "workflow_start": { + "name": "workflow_start", + "groups": [], + "nodeLocation": { + "x": 264, + "y": 0 + } + }, + "b642": { + "name": "getCliCredentialsUsingGET", + "canvasName": "getCliCredentialsUsingGET", + "summary": "Lists network device CLI credentials", + "description": "Substitutes a system-generated identifier for each sensitive `password`.", + "location": "Adapter", + "locationType": "Forward Networks:latest", + "app": "Forward Networks:latest", + "type": "automatic", + "displayName": "Forward Networks", + "variables": { + "incoming": { + "networkId": "$var.job.networkId", + "adapter_id": "Forward Networks" + }, + "outgoing": { + "response": null + }, + "error": "", + "decorators": [] + }, + "groups": [], + "actor": "Pronghorn", + "scheduled": false, + "nodeLocation": { + "x": 264, + "y": 150 + } + }, + "workflow_end": { + "name": "workflow_end", + "groups": [], + "nodeLocation": { + "x": 264, + "y": 300 + } + } + }, + "transitions": { + "workflow_start": { + "b642": { + "type": "standard", + "state": "success" + } + }, + "b642": { + "workflow_end": { + "type": "standard", + "state": "success" + } + }, + "workflow_end": {} + }, + "inputSchema": { + "type": "object", + "properties": { + "networkId": { + "type": "string" + } + }, + "required": [ + "networkId" + ] + }, + "outputSchema": { + "type": "object", + "properties": { + "response": { + "type": "object", + "description": "Full HTTP response envelope ({ok, url, status, headers, text, body})." + } + } + }, + "scenarios": [], + "canvasVersion": 3, + "tags": [], + "groups": [], + "migrationVersion": 8 + } + }, + { + "iid": 35, + "reference": "54c7d324-5f5a-507a-9ab8-325b24dffd27", + "type": "workflow", + "folder": "/Credentials", + "document": { + "name": "Creates a network device CLI credential", + "description": "Creates a network device CLI credential", + "type": "automation", + "font_size": 12, + "tasks": { + "workflow_start": { + "name": "workflow_start", + "groups": [], + "nodeLocation": { + "x": 264, + "y": 0 + } + }, + "6e0d": { + "name": "createCliCredentialUsingPOST", + "canvasName": "createCliCredentialUsingPOST", + "summary": "Creates a network device CLI credential", + "description": "Creates a network device CLI credential", + "location": "Adapter", + "locationType": "Forward Networks:latest", + "app": "Forward Networks:latest", + "type": "automatic", + "displayName": "Forward Networks", + "variables": { + "incoming": { + "networkId": "$var.job.networkId", + "bodyContentType": "application/json", + "requestBodyPayload": "$var.job.body", + "adapter_id": "Forward Networks" + }, + "outgoing": { + "response": null + }, + "error": "", + "decorators": [] + }, + "groups": [], + "actor": "Pronghorn", + "scheduled": false, + "nodeLocation": { + "x": 264, + "y": 150 + } + }, + "workflow_end": { + "name": "workflow_end", + "groups": [], + "nodeLocation": { + "x": 264, + "y": 300 + } + } + }, + "transitions": { + "workflow_start": { + "6e0d": { + "type": "standard", + "state": "success" + } + }, + "6e0d": { + "workflow_end": { + "type": "standard", + "state": "success" + } + }, + "workflow_end": {} + }, + "inputSchema": { + "type": "object", + "properties": { + "networkId": { + "type": "string" + }, + "body": { + "type": "object" + } + }, + "required": [ + "networkId", + "body" + ] + }, + "outputSchema": { + "type": "object", + "properties": { + "response": { + "type": "object", + "description": "Full HTTP response envelope ({ok, url, status, headers, text, body})." + } + } + }, + "scenarios": [], + "canvasVersion": 3, + "tags": [], + "groups": [], + "migrationVersion": 8 + } + }, + { + "iid": 36, + "reference": "d6aef756-4645-5f19-b740-208911327894", + "type": "workflow", + "folder": "/Credentials", + "document": { + "name": "Creates network device CLI credentials", + "description": "The response contains the same credentials as the request, in the same order.", + "type": "automation", + "font_size": 12, + "tasks": { + "workflow_start": { + "name": "workflow_start", + "groups": [], + "nodeLocation": { + "x": 264, + "y": 0 + } + }, + "ba5d": { + "name": "createCliCredentialsUsingPATCH", + "canvasName": "createCliCredentialsUsingPATCH", + "summary": "Creates network device CLI credentials", + "description": "The response contains the same credentials as the request, in the same order.", + "location": "Adapter", + "locationType": "Forward Networks:latest", + "app": "Forward Networks:latest", + "type": "automatic", + "displayName": "Forward Networks", + "variables": { + "incoming": { + "networkId": "$var.job.networkId", + "bodyContentType": "application/json", + "requestBodyPayload": "$var.job.body", + "adapter_id": "Forward Networks" + }, + "outgoing": { + "response": null + }, + "error": "", + "decorators": [] + }, + "groups": [], + "actor": "Pronghorn", + "scheduled": false, + "nodeLocation": { + "x": 264, + "y": 150 + } + }, + "workflow_end": { + "name": "workflow_end", + "groups": [], + "nodeLocation": { + "x": 264, + "y": 300 + } + } + }, + "transitions": { + "workflow_start": { + "ba5d": { + "type": "standard", + "state": "success" + } + }, + "ba5d": { + "workflow_end": { + "type": "standard", + "state": "success" + } + }, + "workflow_end": {} + }, + "inputSchema": { + "type": "object", + "properties": { + "networkId": { + "type": "string" + }, + "body": { + "type": "array" + } + }, + "required": [ + "networkId", + "body" + ] + }, + "outputSchema": { + "type": "object", + "properties": { + "response": { + "type": "object", + "description": "Full HTTP response envelope ({ok, url, status, headers, text, body})." + } + } + }, + "scenarios": [], + "canvasVersion": 3, + "tags": [], + "groups": [], + "migrationVersion": 8 + } + }, + { + "iid": 37, + "reference": "29679a69-a0dd-58eb-b0b9-d0cb78fcd069", + "type": "workflow", + "folder": "/Credentials", + "document": { + "name": "Gets a network device CLI credential", + "description": "Substitutes a system-generated identifier for the sensitive `password`.", + "type": "automation", + "font_size": 12, + "tasks": { + "workflow_start": { + "name": "workflow_start", + "groups": [], + "nodeLocation": { + "x": 264, + "y": 0 + } + }, + "f879": { + "name": "getCliCredentialUsingGET", + "canvasName": "getCliCredentialUsingGET", + "summary": "Gets a network device CLI credential", + "description": "Substitutes a system-generated identifier for the sensitive `password`.", + "location": "Adapter", + "locationType": "Forward Networks:latest", + "app": "Forward Networks:latest", + "type": "automatic", + "displayName": "Forward Networks", + "variables": { + "incoming": { + "networkId": "$var.job.networkId", + "credentialId": "$var.job.credentialId", + "adapter_id": "Forward Networks" + }, + "outgoing": { + "response": null + }, + "error": "", + "decorators": [] + }, + "groups": [], + "actor": "Pronghorn", + "scheduled": false, + "nodeLocation": { + "x": 264, + "y": 150 + } + }, + "workflow_end": { + "name": "workflow_end", + "groups": [], + "nodeLocation": { + "x": 264, + "y": 300 + } + } + }, + "transitions": { + "workflow_start": { + "f879": { + "type": "standard", + "state": "success" + } + }, + "f879": { + "workflow_end": { + "type": "standard", + "state": "success" + } + }, + "workflow_end": {} + }, + "inputSchema": { + "type": "object", + "properties": { + "networkId": { + "type": "string" + }, + "credentialId": { + "type": "string" + } + }, + "required": [ + "networkId", + "credentialId" + ] + }, + "outputSchema": { + "type": "object", + "properties": { + "response": { + "type": "object", + "description": "Full HTTP response envelope ({ok, url, status, headers, text, body})." + } + } + }, + "scenarios": [], + "canvasVersion": 3, + "tags": [], + "groups": [], + "migrationVersion": 8 + } + }, + { + "iid": 38, + "reference": "9a2726b3-74c8-5a42-a9c6-312cf53a9bd6", + "type": "workflow", + "folder": "/Credentials", + "document": { + "name": "Deletes a network device CLI credential", + "description": "Deletes a network device CLI credential", + "type": "automation", + "font_size": 12, + "tasks": { + "workflow_start": { + "name": "workflow_start", + "groups": [], + "nodeLocation": { + "x": 264, + "y": 0 + } + }, + "e802": { + "name": "deleteCliCredentialUsingDELETE", + "canvasName": "deleteCliCredentialUsingDELETE", + "summary": "Deletes a network device CLI credential", + "description": "Deletes a network device CLI credential", + "location": "Adapter", + "locationType": "Forward Networks:latest", + "app": "Forward Networks:latest", + "type": "automatic", + "displayName": "Forward Networks", + "variables": { + "incoming": { + "networkId": "$var.job.networkId", + "credentialId": "$var.job.credentialId", + "adapter_id": "Forward Networks" + }, + "outgoing": { + "response": null + }, + "error": "", + "decorators": [] + }, + "groups": [], + "actor": "Pronghorn", + "scheduled": false, + "nodeLocation": { + "x": 264, + "y": 150 + } + }, + "workflow_end": { + "name": "workflow_end", + "groups": [], + "nodeLocation": { + "x": 264, + "y": 300 + } + } + }, + "transitions": { + "workflow_start": { + "e802": { + "type": "standard", + "state": "success" + } + }, + "e802": { + "workflow_end": { + "type": "standard", + "state": "success" + } + }, + "workflow_end": {} + }, + "inputSchema": { + "type": "object", + "properties": { + "networkId": { + "type": "string" + }, + "credentialId": { + "type": "string" + } + }, + "required": [ + "networkId", + "credentialId" + ] + }, + "outputSchema": { + "type": "object", + "properties": { + "response": { + "type": "object", + "description": "Full HTTP response envelope ({ok, url, status, headers, text, body})." + } + } + }, + "scenarios": [], + "canvasVersion": 3, + "tags": [], + "groups": [], + "migrationVersion": 8 + } + }, + { + "iid": 39, + "reference": "1a59854a-29f3-5071-bd93-a322001233ee", + "type": "workflow", + "folder": "/Credentials", + "document": { + "name": "Updates a network device CLI credential", + "description": "All JSON properties in the request body are optional. Include only the properties you wish to change.", + "type": "automation", + "font_size": 12, + "tasks": { + "workflow_start": { + "name": "workflow_start", + "groups": [], + "nodeLocation": { + "x": 264, + "y": 0 + } + }, + "42d4": { + "name": "patchCliCredentialUsingPATCH", + "canvasName": "patchCliCredentialUsingPATCH", + "summary": "Updates a network device CLI credential", + "description": "All JSON properties in the request body are optional. Include only the properties you wish to change.", + "location": "Adapter", + "locationType": "Forward Networks:latest", + "app": "Forward Networks:latest", + "type": "automatic", + "displayName": "Forward Networks", + "variables": { + "incoming": { + "networkId": "$var.job.networkId", + "credentialId": "$var.job.credentialId", + "bodyContentType": "application/json", + "requestBodyPayload": "$var.job.body", + "adapter_id": "Forward Networks" + }, + "outgoing": { + "response": null + }, + "error": "", + "decorators": [] + }, + "groups": [], + "actor": "Pronghorn", + "scheduled": false, + "nodeLocation": { + "x": 264, + "y": 150 + } + }, + "workflow_end": { + "name": "workflow_end", + "groups": [], + "nodeLocation": { + "x": 264, + "y": 300 + } + } + }, + "transitions": { + "workflow_start": { + "42d4": { + "type": "standard", + "state": "success" + } + }, + "42d4": { + "workflow_end": { + "type": "standard", + "state": "success" + } + }, + "workflow_end": {} + }, + "inputSchema": { + "type": "object", + "properties": { + "networkId": { + "type": "string" + }, + "credentialId": { + "type": "string" + }, + "body": { + "type": "object" + } + }, + "required": [ + "networkId", + "credentialId", + "body" + ] + }, + "outputSchema": { + "type": "object", + "properties": { + "response": { + "type": "object", + "description": "Full HTTP response envelope ({ok, url, status, headers, text, body})." + } + } + }, + "scenarios": [], + "canvasVersion": 3, + "tags": [], + "groups": [], + "migrationVersion": 8 + } + }, + { + "iid": 40, + "reference": "6ab74150-a752-5a34-81fb-7150ea5ee1f9", + "type": "workflow", + "folder": "/Credentials", + "document": { + "name": "Lists network device HTTP credentials", + "description": "Substitutes a system-generated identifier for each sensitive `password`.", + "type": "automation", + "font_size": 12, + "tasks": { + "workflow_start": { + "name": "workflow_start", + "groups": [], + "nodeLocation": { + "x": 264, + "y": 0 + } + }, + "bf41": { + "name": "getHttpCredentialsUsingGET", + "canvasName": "getHttpCredentialsUsingGET", + "summary": "Lists network device HTTP credentials", + "description": "Substitutes a system-generated identifier for each sensitive `password`.", + "location": "Adapter", + "locationType": "Forward Networks:latest", + "app": "Forward Networks:latest", + "type": "automatic", + "displayName": "Forward Networks", + "variables": { + "incoming": { + "networkId": "$var.job.networkId", + "adapter_id": "Forward Networks" + }, + "outgoing": { + "response": null + }, + "error": "", + "decorators": [] + }, + "groups": [], + "actor": "Pronghorn", + "scheduled": false, + "nodeLocation": { + "x": 264, + "y": 150 + } + }, + "workflow_end": { + "name": "workflow_end", + "groups": [], + "nodeLocation": { + "x": 264, + "y": 300 + } + } + }, + "transitions": { + "workflow_start": { + "bf41": { + "type": "standard", + "state": "success" + } + }, + "bf41": { + "workflow_end": { + "type": "standard", + "state": "success" + } + }, + "workflow_end": {} + }, + "inputSchema": { + "type": "object", + "properties": { + "networkId": { + "type": "string" + } + }, + "required": [ + "networkId" + ] + }, + "outputSchema": { + "type": "object", + "properties": { + "response": { + "type": "object", + "description": "Full HTTP response envelope ({ok, url, status, headers, text, body})." + } + } + }, + "scenarios": [], + "canvasVersion": 3, + "tags": [], + "groups": [], + "migrationVersion": 8 + } + }, + { + "iid": 41, + "reference": "13b95111-bee5-5f22-9bf8-465a960b7afe", + "type": "workflow", + "folder": "/Credentials", + "document": { + "name": "Creates a network device HTTP credential", + "description": "Creates a network device HTTP credential", + "type": "automation", + "font_size": 12, + "tasks": { + "workflow_start": { + "name": "workflow_start", + "groups": [], + "nodeLocation": { + "x": 264, + "y": 0 + } + }, + "d96b": { + "name": "createHttpCredentialUsingPOST", + "canvasName": "createHttpCredentialUsingPOST", + "summary": "Creates a network device HTTP credential", + "description": "Creates a network device HTTP credential", + "location": "Adapter", + "locationType": "Forward Networks:latest", + "app": "Forward Networks:latest", + "type": "automatic", + "displayName": "Forward Networks", + "variables": { + "incoming": { + "networkId": "$var.job.networkId", + "bodyContentType": "application/json", + "requestBodyPayload": "$var.job.body", + "adapter_id": "Forward Networks" + }, + "outgoing": { + "response": null + }, + "error": "", + "decorators": [] + }, + "groups": [], + "actor": "Pronghorn", + "scheduled": false, + "nodeLocation": { + "x": 264, + "y": 150 + } + }, + "workflow_end": { + "name": "workflow_end", + "groups": [], + "nodeLocation": { + "x": 264, + "y": 300 + } + } + }, + "transitions": { + "workflow_start": { + "d96b": { + "type": "standard", + "state": "success" + } + }, + "d96b": { + "workflow_end": { + "type": "standard", + "state": "success" + } + }, + "workflow_end": {} + }, + "inputSchema": { + "type": "object", + "properties": { + "networkId": { + "type": "string" + }, + "body": { + "type": "object" + } + }, + "required": [ + "networkId", + "body" + ] + }, + "outputSchema": { + "type": "object", + "properties": { + "response": { + "type": "object", + "description": "Full HTTP response envelope ({ok, url, status, headers, text, body})." + } + } + }, + "scenarios": [], + "canvasVersion": 3, + "tags": [], + "groups": [], + "migrationVersion": 8 + } + }, + { + "iid": 42, + "reference": "56b37b0b-6d64-526a-8800-af92d2690710", + "type": "workflow", + "folder": "/Credentials", + "document": { + "name": "Creates network device HTTP credentials", + "description": "The response contains the same credentials as the request, in the same order.", + "type": "automation", + "font_size": 12, + "tasks": { + "workflow_start": { + "name": "workflow_start", + "groups": [], + "nodeLocation": { + "x": 264, + "y": 0 + } + }, + "dce6": { + "name": "createHttpCredentialsUsingPATCH", + "canvasName": "createHttpCredentialsUsingPATCH", + "summary": "Creates network device HTTP credentials", + "description": "The response contains the same credentials as the request, in the same order.", + "location": "Adapter", + "locationType": "Forward Networks:latest", + "app": "Forward Networks:latest", + "type": "automatic", + "displayName": "Forward Networks", + "variables": { + "incoming": { + "networkId": "$var.job.networkId", + "bodyContentType": "application/json", + "requestBodyPayload": "$var.job.body", + "adapter_id": "Forward Networks" + }, + "outgoing": { + "response": null + }, + "error": "", + "decorators": [] + }, + "groups": [], + "actor": "Pronghorn", + "scheduled": false, + "nodeLocation": { + "x": 264, + "y": 150 + } + }, + "workflow_end": { + "name": "workflow_end", + "groups": [], + "nodeLocation": { + "x": 264, + "y": 300 + } + } + }, + "transitions": { + "workflow_start": { + "dce6": { + "type": "standard", + "state": "success" + } + }, + "dce6": { + "workflow_end": { + "type": "standard", + "state": "success" + } + }, + "workflow_end": {} + }, + "inputSchema": { + "type": "object", + "properties": { + "networkId": { + "type": "string" + }, + "body": { + "type": "array" + } + }, + "required": [ + "networkId", + "body" + ] + }, + "outputSchema": { + "type": "object", + "properties": { + "response": { + "type": "object", + "description": "Full HTTP response envelope ({ok, url, status, headers, text, body})." + } + } + }, + "scenarios": [], + "canvasVersion": 3, + "tags": [], + "groups": [], + "migrationVersion": 8 + } + }, + { + "iid": 43, + "reference": "d545bfd0-5dc1-5c79-8196-6a134f2840db", + "type": "workflow", + "folder": "/Credentials", + "document": { + "name": "Gets a network device HTTP credential", + "description": "Substitutes a system-generated identifier for the sensitive `password`.", + "type": "automation", + "font_size": 12, + "tasks": { + "workflow_start": { + "name": "workflow_start", + "groups": [], + "nodeLocation": { + "x": 264, + "y": 0 + } + }, + "585e": { + "name": "getHttpCredentialUsingGET", + "canvasName": "getHttpCredentialUsingGET", + "summary": "Gets a network device HTTP credential", + "description": "Substitutes a system-generated identifier for the sensitive `password`.", + "location": "Adapter", + "locationType": "Forward Networks:latest", + "app": "Forward Networks:latest", + "type": "automatic", + "displayName": "Forward Networks", + "variables": { + "incoming": { + "networkId": "$var.job.networkId", + "credentialId": "$var.job.credentialId", + "adapter_id": "Forward Networks" + }, + "outgoing": { + "response": null + }, + "error": "", + "decorators": [] + }, + "groups": [], + "actor": "Pronghorn", + "scheduled": false, + "nodeLocation": { + "x": 264, + "y": 150 + } + }, + "workflow_end": { + "name": "workflow_end", + "groups": [], + "nodeLocation": { + "x": 264, + "y": 300 + } + } + }, + "transitions": { + "workflow_start": { + "585e": { + "type": "standard", + "state": "success" + } + }, + "585e": { + "workflow_end": { + "type": "standard", + "state": "success" + } + }, + "workflow_end": {} + }, + "inputSchema": { + "type": "object", + "properties": { + "networkId": { + "type": "string" + }, + "credentialId": { + "type": "string" + } + }, + "required": [ + "networkId", + "credentialId" + ] + }, + "outputSchema": { + "type": "object", + "properties": { + "response": { + "type": "object", + "description": "Full HTTP response envelope ({ok, url, status, headers, text, body})." + } + } + }, + "scenarios": [], + "canvasVersion": 3, + "tags": [], + "groups": [], + "migrationVersion": 8 + } + }, + { + "iid": 44, + "reference": "3ed12005-e3cc-5478-913e-227f7b5be603", + "type": "workflow", + "folder": "/Credentials", + "document": { + "name": "Deletes a network device HTTP credential", + "description": "Deletes a network device HTTP credential", + "type": "automation", + "font_size": 12, + "tasks": { + "workflow_start": { + "name": "workflow_start", + "groups": [], + "nodeLocation": { + "x": 264, + "y": 0 + } + }, + "87db": { + "name": "deleteHttpCredentialUsingDELETE", + "canvasName": "deleteHttpCredentialUsingDELETE", + "summary": "Deletes a network device HTTP credential", + "description": "Deletes a network device HTTP credential", + "location": "Adapter", + "locationType": "Forward Networks:latest", + "app": "Forward Networks:latest", + "type": "automatic", + "displayName": "Forward Networks", + "variables": { + "incoming": { + "networkId": "$var.job.networkId", + "credentialId": "$var.job.credentialId", + "adapter_id": "Forward Networks" + }, + "outgoing": { + "response": null + }, + "error": "", + "decorators": [] + }, + "groups": [], + "actor": "Pronghorn", + "scheduled": false, + "nodeLocation": { + "x": 264, + "y": 150 + } + }, + "workflow_end": { + "name": "workflow_end", + "groups": [], + "nodeLocation": { + "x": 264, + "y": 300 + } + } + }, + "transitions": { + "workflow_start": { + "87db": { + "type": "standard", + "state": "success" + } + }, + "87db": { + "workflow_end": { + "type": "standard", + "state": "success" + } + }, + "workflow_end": {} + }, + "inputSchema": { + "type": "object", + "properties": { + "networkId": { + "type": "string" + }, + "credentialId": { + "type": "string" + } + }, + "required": [ + "networkId", + "credentialId" + ] + }, + "outputSchema": { + "type": "object", + "properties": { + "response": { + "type": "object", + "description": "Full HTTP response envelope ({ok, url, status, headers, text, body})." + } + } + }, + "scenarios": [], + "canvasVersion": 3, + "tags": [], + "groups": [], + "migrationVersion": 8 + } + }, + { + "iid": 45, + "reference": "ce8a0a95-a437-536f-b855-2484e628bbc2", + "type": "workflow", + "folder": "/Credentials", + "document": { + "name": "Updates a network device HTTP credential", + "description": "All JSON properties in the request body are optional. Include only the properties you wish to change.", + "type": "automation", + "font_size": 12, + "tasks": { + "workflow_start": { + "name": "workflow_start", + "groups": [], + "nodeLocation": { + "x": 264, + "y": 0 + } + }, + "7149": { + "name": "patchHttpCredentialUsingPATCH", + "canvasName": "patchHttpCredentialUsingPATCH", + "summary": "Updates a network device HTTP credential", + "description": "All JSON properties in the request body are optional. Include only the properties you wish to change.", + "location": "Adapter", + "locationType": "Forward Networks:latest", + "app": "Forward Networks:latest", + "type": "automatic", + "displayName": "Forward Networks", + "variables": { + "incoming": { + "networkId": "$var.job.networkId", + "credentialId": "$var.job.credentialId", + "bodyContentType": "application/json", + "requestBodyPayload": "$var.job.body", + "adapter_id": "Forward Networks" + }, + "outgoing": { + "response": null + }, + "error": "", + "decorators": [] + }, + "groups": [], + "actor": "Pronghorn", + "scheduled": false, + "nodeLocation": { + "x": 264, + "y": 150 + } + }, + "workflow_end": { + "name": "workflow_end", + "groups": [], + "nodeLocation": { + "x": 264, + "y": 300 + } + } + }, + "transitions": { + "workflow_start": { + "7149": { + "type": "standard", + "state": "success" + } + }, + "7149": { + "workflow_end": { + "type": "standard", + "state": "success" + } + }, + "workflow_end": {} + }, + "inputSchema": { + "type": "object", + "properties": { + "networkId": { + "type": "string" + }, + "credentialId": { + "type": "string" + }, + "body": { + "type": "object" + } + }, + "required": [ + "networkId", + "credentialId", + "body" + ] + }, + "outputSchema": { + "type": "object", + "properties": { + "response": { + "type": "object", + "description": "Full HTTP response envelope ({ok, url, status, headers, text, body})." + } + } + }, + "scenarios": [], + "canvasVersion": 3, + "tags": [], + "groups": [], + "migrationVersion": 8 + } + }, + { + "iid": 46, + "reference": "8987238c-13d7-57c5-bc4e-b56fb5de2869", + "type": "workflow", + "folder": "/Jump Servers", + "document": { + "name": "Lists a network\u2019s jump servers", + "description": "Substitutes a system-generated identifier for each sensitive `password` and `sshKey`.", + "type": "automation", + "font_size": 12, + "tasks": { + "workflow_start": { + "name": "workflow_start", + "groups": [], + "nodeLocation": { + "x": 264, + "y": 0 + } + }, + "d055": { + "name": "getJumpServersUsingGET", + "canvasName": "getJumpServersUsingGET", + "summary": "Lists a network\u2019s jump servers", + "description": "Substitutes a system-generated identifier for each sensitive `password` and `sshKey`.", + "location": "Adapter", + "locationType": "Forward Networks:latest", + "app": "Forward Networks:latest", + "type": "automatic", + "displayName": "Forward Networks", + "variables": { + "incoming": { + "networkId": "$var.job.networkId", + "adapter_id": "Forward Networks" + }, + "outgoing": { + "response": null + }, + "error": "", + "decorators": [] + }, + "groups": [], + "actor": "Pronghorn", + "scheduled": false, + "nodeLocation": { + "x": 264, + "y": 150 + } + }, + "workflow_end": { + "name": "workflow_end", + "groups": [], + "nodeLocation": { + "x": 264, + "y": 300 + } + } + }, + "transitions": { + "workflow_start": { + "d055": { + "type": "standard", + "state": "success" + } + }, + "d055": { + "workflow_end": { + "type": "standard", + "state": "success" + } + }, + "workflow_end": {} + }, + "inputSchema": { + "type": "object", + "properties": { + "networkId": { + "type": "string" + } + }, + "required": [ + "networkId" + ] + }, + "outputSchema": { + "type": "object", + "properties": { + "response": { + "type": "object", + "description": "Full HTTP response envelope ({ok, url, status, headers, text, body})." + } + } + }, + "scenarios": [], + "canvasVersion": 3, + "tags": [], + "groups": [], + "migrationVersion": 8 + } + }, + { + "iid": 47, + "reference": "85146303-9ec8-52ab-a241-fe892a768fe4", + "type": "workflow", + "folder": "/Jump Servers", + "document": { + "name": "Creates a jump server", + "description": "Creates a jump server", + "type": "automation", + "font_size": 12, + "tasks": { + "workflow_start": { + "name": "workflow_start", + "groups": [], + "nodeLocation": { + "x": 264, + "y": 0 + } + }, + "985e": { + "name": "createJumpServerUsingPOST", + "canvasName": "createJumpServerUsingPOST", + "summary": "Creates a jump server", + "description": "Creates a jump server", + "location": "Adapter", + "locationType": "Forward Networks:latest", + "app": "Forward Networks:latest", + "type": "automatic", + "displayName": "Forward Networks", + "variables": { + "incoming": { + "networkId": "$var.job.networkId", + "bodyContentType": "application/json", + "requestBodyPayload": "$var.job.body", + "adapter_id": "Forward Networks" + }, + "outgoing": { + "response": null + }, + "error": "", + "decorators": [] + }, + "groups": [], + "actor": "Pronghorn", + "scheduled": false, + "nodeLocation": { + "x": 264, + "y": 150 + } + }, + "workflow_end": { + "name": "workflow_end", + "groups": [], + "nodeLocation": { + "x": 264, + "y": 300 + } + } + }, + "transitions": { + "workflow_start": { + "985e": { + "type": "standard", + "state": "success" + } + }, + "985e": { + "workflow_end": { + "type": "standard", + "state": "success" + } + }, + "workflow_end": {} + }, + "inputSchema": { + "type": "object", + "properties": { + "networkId": { + "type": "string" + }, + "body": { + "type": "object" + } + }, + "required": [ + "networkId", + "body" + ] + }, + "outputSchema": { + "type": "object", + "properties": { + "response": { + "type": "object", + "description": "Full HTTP response envelope ({ok, url, status, headers, text, body})." + } + } + }, + "scenarios": [], + "canvasVersion": 3, + "tags": [], + "groups": [], + "migrationVersion": 8 + } + }, + { + "iid": 48, + "reference": "eb9f3966-6646-59b7-88e3-1af2746da850", + "type": "workflow", + "folder": "/Jump Servers", + "document": { + "name": "Deletes a jump server", + "description": "Deletes a jump server", + "type": "automation", + "font_size": 12, + "tasks": { + "workflow_start": { + "name": "workflow_start", + "groups": [], + "nodeLocation": { + "x": 264, + "y": 0 + } + }, + "43cd": { + "name": "deleteJumpServerUsingDELETE", + "canvasName": "deleteJumpServerUsingDELETE", + "summary": "Deletes a jump server", + "description": "Deletes a jump server", + "location": "Adapter", + "locationType": "Forward Networks:latest", + "app": "Forward Networks:latest", + "type": "automatic", + "displayName": "Forward Networks", + "variables": { + "incoming": { + "networkId": "$var.job.networkId", + "jumpServerId": "$var.job.jumpServerId", + "adapter_id": "Forward Networks" + }, + "outgoing": { + "response": null + }, + "error": "", + "decorators": [] + }, + "groups": [], + "actor": "Pronghorn", + "scheduled": false, + "nodeLocation": { + "x": 264, + "y": 150 + } + }, + "workflow_end": { + "name": "workflow_end", + "groups": [], + "nodeLocation": { + "x": 264, + "y": 300 + } + } + }, + "transitions": { + "workflow_start": { + "43cd": { + "type": "standard", + "state": "success" + } + }, + "43cd": { + "workflow_end": { + "type": "standard", + "state": "success" + } + }, + "workflow_end": {} + }, + "inputSchema": { + "type": "object", + "properties": { + "networkId": { + "type": "string" + }, + "jumpServerId": { + "type": "string" + } + }, + "required": [ + "networkId", + "jumpServerId" + ] + }, + "outputSchema": { + "type": "object", + "properties": { + "response": { + "type": "object", + "description": "Full HTTP response envelope ({ok, url, status, headers, text, body})." + } + } + }, + "scenarios": [], + "canvasVersion": 3, + "tags": [], + "groups": [], + "migrationVersion": 8 + } + }, + { + "iid": 49, + "reference": "c68e11c2-710a-565b-b784-0db4d4671533", + "type": "workflow", + "folder": "/Jump Servers", + "document": { + "name": "Updates a jump server", + "description": "All JSON properties in the request body are optional. Include only the properties you wish to change.", + "type": "automation", + "font_size": 12, + "tasks": { + "workflow_start": { + "name": "workflow_start", + "groups": [], + "nodeLocation": { + "x": 264, + "y": 0 + } + }, + "9a47": { + "name": "editJumpServerUsingPATCH", + "canvasName": "editJumpServerUsingPATCH", + "summary": "Updates a jump server", + "description": "All JSON properties in the request body are optional. Include only the properties you wish to change.", + "location": "Adapter", + "locationType": "Forward Networks:latest", + "app": "Forward Networks:latest", + "type": "automatic", + "displayName": "Forward Networks", + "variables": { + "incoming": { + "networkId": "$var.job.networkId", + "jumpServerId": "$var.job.jumpServerId", + "bodyContentType": "application/json", + "requestBodyPayload": "$var.job.body", + "adapter_id": "Forward Networks" + }, + "outgoing": { + "response": null + }, + "error": "", + "decorators": [] + }, + "groups": [], + "actor": "Pronghorn", + "scheduled": false, + "nodeLocation": { + "x": 264, + "y": 150 + } + }, + "workflow_end": { + "name": "workflow_end", + "groups": [], + "nodeLocation": { + "x": 264, + "y": 300 + } + } + }, + "transitions": { + "workflow_start": { + "9a47": { + "type": "standard", + "state": "success" + } + }, + "9a47": { + "workflow_end": { + "type": "standard", + "state": "success" + } + }, + "workflow_end": {} + }, + "inputSchema": { + "type": "object", + "properties": { + "networkId": { + "type": "string" + }, + "jumpServerId": { + "type": "string" + }, + "body": { + "type": "object" + } + }, + "required": [ + "networkId", + "jumpServerId", + "body" + ] + }, + "outputSchema": { + "type": "object", + "properties": { + "response": { + "type": "object", + "description": "Full HTTP response envelope ({ok, url, status, headers, text, body})." + } + } + }, + "scenarios": [], + "canvasVersion": 3, + "tags": [], + "groups": [], + "migrationVersion": 8 + } + }, + { + "iid": 50, + "reference": "cc3bb5bb-5866-5cbb-bb45-8fde57793708", + "type": "workflow", + "folder": "/Device Tags", + "document": { + "name": "Gets all device tags", + "description": "Gets all device tags", + "type": "automation", + "font_size": 12, + "tasks": { + "workflow_start": { + "name": "workflow_start", + "groups": [], + "nodeLocation": { + "x": 264, + "y": 0 + } + }, + "2c91": { + "name": "getDeviceTagsUsingGET", + "canvasName": "getDeviceTagsUsingGET", + "summary": "Gets all device tags", + "description": "Gets all device tags", + "location": "Adapter", + "locationType": "Forward Networks:latest", + "app": "Forward Networks:latest", + "type": "automatic", + "displayName": "Forward Networks", + "variables": { + "incoming": { + "networkId": "$var.job.networkId", + "adapter_id": "Forward Networks" + }, + "outgoing": { + "response": null + }, + "error": "", + "decorators": [] + }, + "groups": [], + "actor": "Pronghorn", + "scheduled": false, + "nodeLocation": { + "x": 264, + "y": 150 + } + }, + "workflow_end": { + "name": "workflow_end", + "groups": [], + "nodeLocation": { + "x": 264, + "y": 300 + } + } + }, + "transitions": { + "workflow_start": { + "2c91": { + "type": "standard", + "state": "success" + } + }, + "2c91": { + "workflow_end": { + "type": "standard", + "state": "success" + } + }, + "workflow_end": {} + }, + "inputSchema": { + "type": "object", + "properties": { + "networkId": { + "type": "string" + } + }, + "required": [ + "networkId" + ] + }, + "outputSchema": { + "type": "object", + "properties": { + "response": { + "type": "object", + "description": "Full HTTP response envelope ({ok, url, status, headers, text, body})." + } + } + }, + "scenarios": [], + "canvasVersion": 3, + "tags": [], + "groups": [], + "migrationVersion": 8 + } + }, + { + "iid": 51, + "reference": "2b3ea0d7-ff7e-5b69-b886-7807aeca08c4", + "type": "workflow", + "folder": "/Device Tags", + "document": { + "name": "Creates a device tag", + "description": "Creates a device tag", + "type": "automation", + "font_size": 12, + "tasks": { + "workflow_start": { + "name": "workflow_start", + "groups": [], + "nodeLocation": { + "x": 264, + "y": 0 + } + }, + "3b3e": { + "name": "addDeviceTagUsingPOST", + "canvasName": "addDeviceTagUsingPOST", + "summary": "Creates a device tag", + "description": "Creates a device tag", + "location": "Adapter", + "locationType": "Forward Networks:latest", + "app": "Forward Networks:latest", + "type": "automatic", + "displayName": "Forward Networks", + "variables": { + "incoming": { + "networkId": "$var.job.networkId", + "bodyContentType": "application/json", + "requestBodyPayload": "$var.job.body", + "adapter_id": "Forward Networks" + }, + "outgoing": { + "response": null + }, + "error": "", + "decorators": [] + }, + "groups": [], + "actor": "Pronghorn", + "scheduled": false, + "nodeLocation": { + "x": 264, + "y": 150 + } + }, + "workflow_end": { + "name": "workflow_end", + "groups": [], + "nodeLocation": { + "x": 264, + "y": 300 + } + } + }, + "transitions": { + "workflow_start": { + "3b3e": { + "type": "standard", + "state": "success" + } + }, + "3b3e": { + "workflow_end": { + "type": "standard", + "state": "success" + } + }, + "workflow_end": {} + }, + "inputSchema": { + "type": "object", + "properties": { + "networkId": { + "type": "string" + }, + "body": { + "type": "object" + } + }, + "required": [ + "networkId", + "body" + ] + }, + "outputSchema": { + "type": "object", + "properties": { + "response": { + "type": "object", + "description": "Full HTTP response envelope ({ok, url, status, headers, text, body})." + } + } + }, + "scenarios": [], + "canvasVersion": 3, + "tags": [], + "groups": [], + "migrationVersion": 8 + } + }, + { + "iid": 52, + "reference": "92113d1c-ee13-569e-90e7-76a9bc1d9bc6", + "type": "workflow", + "folder": "/Device Tags", + "document": { + "name": "Gets a device tag", + "description": "Gets a device tag", + "type": "automation", + "font_size": 12, + "tasks": { + "workflow_start": { + "name": "workflow_start", + "groups": [], + "nodeLocation": { + "x": 264, + "y": 0 + } + }, + "6d79": { + "name": "getDeviceTagUsingGET", + "canvasName": "getDeviceTagUsingGET", + "summary": "Gets a device tag", + "description": "Gets a device tag", + "location": "Adapter", + "locationType": "Forward Networks:latest", + "app": "Forward Networks:latest", + "type": "automatic", + "displayName": "Forward Networks", + "variables": { + "incoming": { + "networkId": "$var.job.networkId", + "tagName": "$var.job.tagName", + "adapter_id": "Forward Networks" + }, + "outgoing": { + "response": null + }, + "error": "", + "decorators": [] + }, + "groups": [], + "actor": "Pronghorn", + "scheduled": false, + "nodeLocation": { + "x": 264, + "y": 150 + } + }, + "workflow_end": { + "name": "workflow_end", + "groups": [], + "nodeLocation": { + "x": 264, + "y": 300 + } + } + }, + "transitions": { + "workflow_start": { + "6d79": { + "type": "standard", + "state": "success" + } + }, + "6d79": { + "workflow_end": { + "type": "standard", + "state": "success" + } + }, + "workflow_end": {} + }, + "inputSchema": { + "type": "object", + "properties": { + "networkId": { + "type": "string" + }, + "tagName": { + "type": "string" + } + }, + "required": [ + "networkId", + "tagName" + ] + }, + "outputSchema": { + "type": "object", + "properties": { + "response": { + "type": "object", + "description": "Full HTTP response envelope ({ok, url, status, headers, text, body})." + } + } + }, + "scenarios": [], + "canvasVersion": 3, + "tags": [], + "groups": [], + "migrationVersion": 8 + } + }, + { + "iid": 53, + "reference": "fafe3d48-0f7e-5ca0-8d41-228a7076bb2d", + "type": "workflow", + "folder": "/Device Tags", + "document": { + "name": "Deletes a device tag", + "description": "**Warning:** This operation deletes the device tag from the network completely. It removes the tag from all devices and endpoints in all the network\u2019s Snapshots.", + "type": "automation", + "font_size": 12, + "tasks": { + "workflow_start": { + "name": "workflow_start", + "groups": [], + "nodeLocation": { + "x": 264, + "y": 0 + } + }, + "7db0": { + "name": "deleteDeviceTagUsingDELETE", + "canvasName": "deleteDeviceTagUsingDELETE", + "summary": "Deletes a device tag", + "description": "**Warning:** This operation deletes the device tag from the network completely. It removes the tag from all devices and endpoints in all the network\u2019s Snapshots.", + "location": "Adapter", + "locationType": "Forward Networks:latest", + "app": "Forward Networks:latest", + "type": "automatic", + "displayName": "Forward Networks", + "variables": { + "incoming": { + "networkId": "$var.job.networkId", + "tagName": "$var.job.tagName", + "adapter_id": "Forward Networks" + }, + "outgoing": { + "response": null + }, + "error": "", + "decorators": [] + }, + "groups": [], + "actor": "Pronghorn", + "scheduled": false, + "nodeLocation": { + "x": 264, + "y": 150 + } + }, + "workflow_end": { + "name": "workflow_end", + "groups": [], + "nodeLocation": { + "x": 264, + "y": 300 + } + } + }, + "transitions": { + "workflow_start": { + "7db0": { + "type": "standard", + "state": "success" + } + }, + "7db0": { + "workflow_end": { + "type": "standard", + "state": "success" + } + }, + "workflow_end": {} + }, + "inputSchema": { + "type": "object", + "properties": { + "networkId": { + "type": "string" + }, + "tagName": { + "type": "string" + } + }, + "required": [ + "networkId", + "tagName" + ] + }, + "outputSchema": { + "type": "object", + "properties": { + "response": { + "type": "object", + "description": "Full HTTP response envelope ({ok, url, status, headers, text, body})." + } + } + }, + "scenarios": [], + "canvasVersion": 3, + "tags": [], + "groups": [], + "migrationVersion": 8 + } + }, + { + "iid": 54, + "reference": "93607f18-2aab-54be-9a52-943c1efb4068", + "type": "workflow", + "folder": "/Device Tags", + "document": { + "name": "Updates a device tag", + "description": "All JSON properties in the request body are optional. Include only the properties you wish to change.", + "type": "automation", + "font_size": 12, + "tasks": { + "workflow_start": { + "name": "workflow_start", + "groups": [], + "nodeLocation": { + "x": 264, + "y": 0 + } + }, + "4f9c": { + "name": "updateDeviceTagUsingPATCH", + "canvasName": "updateDeviceTagUsingPATCH", + "summary": "Updates a device tag", + "description": "All JSON properties in the request body are optional. Include only the properties you wish to change.", + "location": "Adapter", + "locationType": "Forward Networks:latest", + "app": "Forward Networks:latest", + "type": "automatic", + "displayName": "Forward Networks", + "variables": { + "incoming": { + "networkId": "$var.job.networkId", + "tagName": "$var.job.tagName", + "bodyContentType": "application/json", + "requestBodyPayload": "$var.job.body", + "adapter_id": "Forward Networks" + }, + "outgoing": { + "response": null + }, + "error": "", + "decorators": [] + }, + "groups": [], + "actor": "Pronghorn", + "scheduled": false, + "nodeLocation": { + "x": 264, + "y": 150 + } + }, + "workflow_end": { + "name": "workflow_end", + "groups": [], + "nodeLocation": { + "x": 264, + "y": 300 + } + } + }, + "transitions": { + "workflow_start": { + "4f9c": { + "type": "standard", + "state": "success" + } + }, + "4f9c": { + "workflow_end": { + "type": "standard", + "state": "success" + } + }, + "workflow_end": {} + }, + "inputSchema": { + "type": "object", + "properties": { + "networkId": { + "type": "string" + }, + "tagName": { + "type": "string" + }, + "body": { + "type": "object" + } + }, + "required": [ + "networkId", + "tagName", + "body" + ] + }, + "outputSchema": { + "type": "object", + "properties": { + "response": { + "type": "object", + "description": "Full HTTP response envelope ({ok, url, status, headers, text, body})." + } + } + }, + "scenarios": [], + "canvasVersion": 3, + "tags": [], + "groups": [], + "migrationVersion": 8 + } + }, + { + "iid": 55, + "reference": "3dc4254e-d318-56a4-a05f-fb164607da1d", + "type": "workflow", + "folder": "/NQE", + "document": { + "name": "Runs an NQE query on a Snapshot", + "description": "Runs an NQE query on a Snapshot.", + "type": "automation", + "font_size": 12, + "tasks": { + "workflow_start": { + "name": "workflow_start", + "groups": [], + "nodeLocation": { + "x": 264, + "y": 0 + } + }, + "319e": { + "name": "runNqeQueryUsingPOST", + "canvasName": "runNqeQueryUsingPOST", + "summary": "Runs an NQE query on a Snapshot.", + "description": "Runs an NQE query on a Snapshot.", + "location": "Adapter", + "locationType": "Forward Networks:latest", + "app": "Forward Networks:latest", + "type": "automatic", + "displayName": "Forward Networks", + "variables": { + "incoming": { + "networkId": "$var.job.networkId", + "snapshotId": "$var.job.snapshotId", + "bodyContentType": "application/json", + "requestBodyPayload": "$var.job.body", + "adapter_id": "Forward Networks" + }, + "outgoing": { + "response": null + }, + "error": "", + "decorators": [] + }, + "groups": [], + "actor": "Pronghorn", + "scheduled": false, + "nodeLocation": { + "x": 264, + "y": 150 + } + }, + "workflow_end": { + "name": "workflow_end", + "groups": [], + "nodeLocation": { + "x": 264, + "y": 300 + } + } + }, + "transitions": { + "workflow_start": { + "319e": { + "type": "standard", + "state": "success" + } + }, + "319e": { + "workflow_end": { + "type": "standard", + "state": "success" + } + }, + "workflow_end": {} + }, + "inputSchema": { + "type": "object", + "properties": { + "networkId": { + "type": "string" + }, + "snapshotId": { + "type": "string" + }, + "body": { + "type": "object" + } + }, + "required": [ + "body" + ] + }, + "outputSchema": { + "type": "object", + "properties": { + "response": { + "type": "object", + "description": "Full HTTP response envelope ({ok, url, status, headers, text, body})." + } + } + }, + "scenarios": [], + "canvasVersion": 3, + "tags": [], + "groups": [], + "migrationVersion": 8 + } + }, + { + "iid": 56, + "reference": "2e372fb5-e3cb-51b0-bff7-5308cb41f31b", + "type": "workflow", + "folder": "/NQE", + "document": { + "name": "Diffs the results of two NQE queries between two Snapshots", + "description": "Diffs the results of two NQE queries between two Snapshots.", + "type": "automation", + "font_size": 12, + "tasks": { + "workflow_start": { + "name": "workflow_start", + "groups": [], + "nodeLocation": { + "x": 264, + "y": 0 + } + }, + "733d": { + "name": "getNqeQueryDiffUsingPOST", + "canvasName": "getNqeQueryDiffUsingPOST", + "summary": "Diffs the results of two NQE queries between two Snapshots.", + "description": "Diffs the results of two NQE queries between two Snapshots.", + "location": "Adapter", + "locationType": "Forward Networks:latest", + "app": "Forward Networks:latest", + "type": "automatic", + "displayName": "Forward Networks", + "variables": { + "incoming": { + "before": "$var.job.before", + "after": "$var.job.after", + "bodyContentType": "application/json", + "requestBodyPayload": "$var.job.body", + "adapter_id": "Forward Networks" + }, + "outgoing": { + "response": null + }, + "error": "", + "decorators": [] + }, + "groups": [], + "actor": "Pronghorn", + "scheduled": false, + "nodeLocation": { + "x": 264, + "y": 150 + } + }, + "workflow_end": { + "name": "workflow_end", + "groups": [], + "nodeLocation": { + "x": 264, + "y": 300 + } + } + }, + "transitions": { + "workflow_start": { + "733d": { + "type": "standard", + "state": "success" + } + }, + "733d": { + "workflow_end": { + "type": "standard", + "state": "success" + } + }, + "workflow_end": {} + }, + "inputSchema": { + "type": "object", + "properties": { + "before": { + "type": "string" + }, + "after": { + "type": "string" + }, + "body": { + "type": "object" + } + }, + "required": [ + "before", + "after", + "body" + ] + }, + "outputSchema": { + "type": "object", + "properties": { + "response": { + "type": "object", + "description": "Full HTTP response envelope ({ok, url, status, headers, text, body})." + } + } + }, + "scenarios": [], + "canvasVersion": 3, + "tags": [], + "groups": [], + "migrationVersion": 8 + } + }, + { + "iid": 57, + "reference": "0c52ce36-19ce-5b77-81b1-e5167ab8022c", + "type": "workflow", + "folder": "/NQE", + "document": { + "name": "Lists all NQE queries", + "description": "Lists all NQE queries", + "type": "automation", + "font_size": 12, + "tasks": { + "workflow_start": { + "name": "workflow_start", + "groups": [], + "nodeLocation": { + "x": 264, + "y": 0 + } + }, + "e246": { + "name": "getNqeQueriesUsingGET", + "canvasName": "getNqeQueriesUsingGET", + "summary": "Lists all NQE queries", + "description": "Lists all NQE queries", + "location": "Adapter", + "locationType": "Forward Networks:latest", + "app": "Forward Networks:latest", + "type": "automatic", + "displayName": "Forward Networks", + "variables": { + "incoming": { + "dir": "$var.job.dir", + "adapter_id": "Forward Networks" + }, + "outgoing": { + "response": null + }, + "error": "", + "decorators": [] + }, + "groups": [], + "actor": "Pronghorn", + "scheduled": false, + "nodeLocation": { + "x": 264, + "y": 150 + } + }, + "workflow_end": { + "name": "workflow_end", + "groups": [], + "nodeLocation": { + "x": 264, + "y": 300 + } + } + }, + "transitions": { + "workflow_start": { + "e246": { + "type": "standard", + "state": "success" + } + }, + "e246": { + "workflow_end": { + "type": "standard", + "state": "success" + } + }, + "workflow_end": {} + }, + "inputSchema": { + "type": "object", + "properties": { + "dir": { + "type": "string" + } + } + }, + "outputSchema": { + "type": "object", + "properties": { + "response": { + "type": "object", + "description": "Full HTTP response envelope ({ok, url, status, headers, text, body})." + } + } + }, + "scenarios": [], + "canvasVersion": 3, + "tags": [], + "groups": [], + "migrationVersion": 8 + } + }, + { + "iid": 58, + "reference": "7f411d19-ef9a-583b-a70e-d4c19c2fc4e8", + "type": "workflow", + "folder": "/Checks", + "document": { + "name": "Gets available Predefined checks", + "description": "Gets available Predefined checks", + "type": "automation", + "font_size": 12, + "tasks": { + "workflow_start": { + "name": "workflow_start", + "groups": [], + "nodeLocation": { + "x": 264, + "y": 0 + } + }, + "94ae": { + "name": "getAvailablePredefinedChecksUsingGET", + "canvasName": "getAvailablePredefinedChecksUsingGET", + "summary": "Gets available Predefined checks", + "description": "Gets available Predefined checks", + "location": "Adapter", + "locationType": "Forward Networks:latest", + "app": "Forward Networks:latest", + "type": "automatic", + "displayName": "Forward Networks", + "variables": { + "incoming": { + "adapter_id": "Forward Networks" + }, + "outgoing": { + "response": null + }, + "error": "", + "decorators": [] + }, + "groups": [], + "actor": "Pronghorn", + "scheduled": false, + "nodeLocation": { + "x": 264, + "y": 150 + } + }, + "workflow_end": { + "name": "workflow_end", + "groups": [], + "nodeLocation": { + "x": 264, + "y": 300 + } + } + }, + "transitions": { + "workflow_start": { + "94ae": { + "type": "standard", + "state": "success" + } + }, + "94ae": { + "workflow_end": { + "type": "standard", + "state": "success" + } + }, + "workflow_end": {} + }, + "inputSchema": { + "type": "object", + "properties": {} + }, + "outputSchema": { + "type": "object", + "properties": { + "response": { + "type": "object", + "description": "Full HTTP response envelope ({ok, url, status, headers, text, body})." + } + } + }, + "scenarios": [], + "canvasVersion": 3, + "tags": [], + "groups": [], + "migrationVersion": 8 + } + }, + { + "iid": 59, + "reference": "a212f2a4-410e-59cd-9071-b5e9cde0e693", + "type": "workflow", + "folder": "/Checks", + "document": { + "name": "Gets checks (with status)", + "description": "Gets checks (with status)", + "type": "automation", + "font_size": 12, + "tasks": { + "workflow_start": { + "name": "workflow_start", + "groups": [], + "nodeLocation": { + "x": 264, + "y": 0 + } + }, + "32ee": { + "name": "getChecksUsingGET", + "canvasName": "getChecksUsingGET", + "summary": "Gets checks (with status)", + "description": "Gets checks (with status)", + "location": "Adapter", + "locationType": "Forward Networks:latest", + "app": "Forward Networks:latest", + "type": "automatic", + "displayName": "Forward Networks", + "variables": { + "incoming": { + "snapshotId": "$var.job.snapshotId", + "type": "$var.job.type", + "priority": "$var.job.priority", + "status": "$var.job.status", + "adapter_id": "Forward Networks" + }, + "outgoing": { + "response": null + }, + "error": "", + "decorators": [] + }, + "groups": [], + "actor": "Pronghorn", + "scheduled": false, + "nodeLocation": { + "x": 264, + "y": 150 + } + }, + "workflow_end": { + "name": "workflow_end", + "groups": [], + "nodeLocation": { + "x": 264, + "y": 300 + } + } + }, + "transitions": { + "workflow_start": { + "32ee": { + "type": "standard", + "state": "success" + } + }, + "32ee": { + "workflow_end": { + "type": "standard", + "state": "success" + } + }, + "workflow_end": {} + }, + "inputSchema": { + "type": "object", + "properties": { + "snapshotId": { + "type": "string" + }, + "type": { + "type": "array" + }, + "priority": { + "type": "array" + }, + "status": { + "type": "array" + } + }, + "required": [ + "snapshotId" + ] + }, + "outputSchema": { + "type": "object", + "properties": { + "response": { + "type": "object", + "description": "Full HTTP response envelope ({ok, url, status, headers, text, body})." + } + } + }, + "scenarios": [], + "canvasVersion": 3, + "tags": [], + "groups": [], + "migrationVersion": 8 + } + }, + { + "iid": 60, + "reference": "93522a2b-94b5-514e-a92e-d81250cef293", + "type": "workflow", + "folder": "/Checks", + "document": { + "name": "Adds a check", + "description": "Note that the returned NetworkCheckResult will never have status of type NONE or PROCESSING", + "type": "automation", + "font_size": 12, + "tasks": { + "workflow_start": { + "name": "workflow_start", + "groups": [], + "nodeLocation": { + "x": 264, + "y": 0 + } + }, + "728a": { + "name": "addCheckUsingPOST", + "canvasName": "addCheckUsingPOST", + "summary": "Adds a check", + "description": "Note that the returned NetworkCheckResult will never have status of type NONE or PROCESSING", + "location": "Adapter", + "locationType": "Forward Networks:latest", + "app": "Forward Networks:latest", + "type": "automatic", + "displayName": "Forward Networks", + "variables": { + "incoming": { + "snapshotId": "$var.job.snapshotId", + "persistent": "$var.job.persistent", + "bodyContentType": "application/json", + "requestBodyPayload": "$var.job.body", + "adapter_id": "Forward Networks" + }, + "outgoing": { + "response": null + }, + "error": "", + "decorators": [] + }, + "groups": [], + "actor": "Pronghorn", + "scheduled": false, + "nodeLocation": { + "x": 264, + "y": 150 + } + }, + "workflow_end": { + "name": "workflow_end", + "groups": [], + "nodeLocation": { + "x": 264, + "y": 300 + } + } + }, + "transitions": { + "workflow_start": { + "728a": { + "type": "standard", + "state": "success" + } + }, + "728a": { + "workflow_end": { + "type": "standard", + "state": "success" + } + }, + "workflow_end": {} + }, + "inputSchema": { + "type": "object", + "properties": { + "snapshotId": { + "type": "string" + }, + "persistent": { + "type": "boolean" + }, + "body": { + "type": "object" + } + }, + "required": [ + "snapshotId", + "body" + ] + }, + "outputSchema": { + "type": "object", + "properties": { + "response": { + "type": "object", + "description": "Full HTTP response envelope ({ok, url, status, headers, text, body})." + } + } + }, + "scenarios": [], + "canvasVersion": 3, + "tags": [], + "groups": [], + "migrationVersion": 8 + } + }, + { + "iid": 61, + "reference": "d8def8a7-c75a-5236-9fab-29a93e82a9fd", + "type": "workflow", + "folder": "/Checks", + "document": { + "name": "Deactivates all checks", + "description": "Deactivates all checks", + "type": "automation", + "font_size": 12, + "tasks": { + "workflow_start": { + "name": "workflow_start", + "groups": [], + "nodeLocation": { + "x": 264, + "y": 0 + } + }, + "d03f": { + "name": "deactivateChecksUsingDELETE", + "canvasName": "deactivateChecksUsingDELETE", + "summary": "Deactivates all checks", + "description": "Deactivates all checks", + "location": "Adapter", + "locationType": "Forward Networks:latest", + "app": "Forward Networks:latest", + "type": "automatic", + "displayName": "Forward Networks", + "variables": { + "incoming": { + "snapshotId": "$var.job.snapshotId", + "adapter_id": "Forward Networks" + }, + "outgoing": { + "response": null + }, + "error": "", + "decorators": [] + }, + "groups": [], + "actor": "Pronghorn", + "scheduled": false, + "nodeLocation": { + "x": 264, + "y": 150 + } + }, + "workflow_end": { + "name": "workflow_end", + "groups": [], + "nodeLocation": { + "x": 264, + "y": 300 + } + } + }, + "transitions": { + "workflow_start": { + "d03f": { + "type": "standard", + "state": "success" + } + }, + "d03f": { + "workflow_end": { + "type": "standard", + "state": "success" + } + }, + "workflow_end": {} + }, + "inputSchema": { + "type": "object", + "properties": { + "snapshotId": { + "type": "string" + } + }, + "required": [ + "snapshotId" + ] + }, + "outputSchema": { + "type": "object", + "properties": { + "response": { + "type": "object", + "description": "Full HTTP response envelope ({ok, url, status, headers, text, body})." + } + } + }, + "scenarios": [], + "canvasVersion": 3, + "tags": [], + "groups": [], + "migrationVersion": 8 + } + }, + { + "iid": 62, + "reference": "9ae5c3e8-7fd2-56ea-a284-9642042ca7ba", + "type": "workflow", + "folder": "/Checks", + "document": { + "name": "Gets a check (with status)", + "description": "Note that the returned NetworkCheckResults will never have status of type NONE or PROCESSING", + "type": "automation", + "font_size": 12, + "tasks": { + "workflow_start": { + "name": "workflow_start", + "groups": [], + "nodeLocation": { + "x": 264, + "y": 0 + } + }, + "d33e": { + "name": "getSingleCheckUsingGET", + "canvasName": "getSingleCheckUsingGET", + "summary": "Gets a check (with status)", + "description": "Note that the returned NetworkCheckResults will never have status of type NONE or PROCESSING", + "location": "Adapter", + "locationType": "Forward Networks:latest", + "app": "Forward Networks:latest", + "type": "automatic", + "displayName": "Forward Networks", + "variables": { + "incoming": { + "snapshotId": "$var.job.snapshotId", + "checkId": "$var.job.checkId", + "adapter_id": "Forward Networks" + }, + "outgoing": { + "response": null + }, + "error": "", + "decorators": [] + }, + "groups": [], + "actor": "Pronghorn", + "scheduled": false, + "nodeLocation": { + "x": 264, + "y": 150 + } + }, + "workflow_end": { + "name": "workflow_end", + "groups": [], + "nodeLocation": { + "x": 264, + "y": 300 + } + } + }, + "transitions": { + "workflow_start": { + "d33e": { + "type": "standard", + "state": "success" + } + }, + "d33e": { + "workflow_end": { + "type": "standard", + "state": "success" + } + }, + "workflow_end": {} + }, + "inputSchema": { + "type": "object", + "properties": { + "snapshotId": { + "type": "string" + }, + "checkId": { + "type": "string" + } + }, + "required": [ + "snapshotId", + "checkId" + ] + }, + "outputSchema": { + "type": "object", + "properties": { + "response": { + "type": "object", + "description": "Full HTTP response envelope ({ok, url, status, headers, text, body})." + } + } + }, + "scenarios": [], + "canvasVersion": 3, + "tags": [], + "groups": [], + "migrationVersion": 8 + } + }, + { + "iid": 63, + "reference": "6b803436-b236-5eaa-a9d7-8505a36859b0", + "type": "workflow", + "folder": "/Checks", + "document": { + "name": "Deactivates a check", + "description": "Deactivates a check", + "type": "automation", + "font_size": 12, + "tasks": { + "workflow_start": { + "name": "workflow_start", + "groups": [], + "nodeLocation": { + "x": 264, + "y": 0 + } + }, + "cf18": { + "name": "deactivateCheckUsingDELETE", + "canvasName": "deactivateCheckUsingDELETE", + "summary": "Deactivates a check", + "description": "Deactivates a check", + "location": "Adapter", + "locationType": "Forward Networks:latest", + "app": "Forward Networks:latest", + "type": "automatic", + "displayName": "Forward Networks", + "variables": { + "incoming": { + "snapshotId": "$var.job.snapshotId", + "checkId": "$var.job.checkId", + "adapter_id": "Forward Networks" + }, + "outgoing": { + "response": null + }, + "error": "", + "decorators": [] + }, + "groups": [], + "actor": "Pronghorn", + "scheduled": false, + "nodeLocation": { + "x": 264, + "y": 150 + } + }, + "workflow_end": { + "name": "workflow_end", + "groups": [], + "nodeLocation": { + "x": 264, + "y": 300 + } + } + }, + "transitions": { + "workflow_start": { + "cf18": { + "type": "standard", + "state": "success" + } + }, + "cf18": { + "workflow_end": { + "type": "standard", + "state": "success" + } + }, + "workflow_end": {} + }, + "inputSchema": { + "type": "object", + "properties": { + "snapshotId": { + "type": "string" + }, + "checkId": { + "type": "string" + } + }, + "required": [ + "snapshotId", + "checkId" + ] + }, + "outputSchema": { + "type": "object", + "properties": { + "response": { + "type": "object", + "description": "Full HTTP response envelope ({ok, url, status, headers, text, body})." + } + } + }, + "scenarios": [], + "canvasVersion": 3, + "tags": [], + "groups": [], + "migrationVersion": 8 + } + }, + { + "iid": 64, + "reference": "d789df06-18e6-532c-9c22-535f884767af", + "type": "workflow", + "folder": "/Path Search", + "document": { + "name": "Lists known L7 applications", + "description": "Lists known L7 applications", + "type": "automation", + "font_size": 12, + "tasks": { + "workflow_start": { + "name": "workflow_start", + "groups": [], + "nodeLocation": { + "x": 264, + "y": 0 + } + }, + "c8af": { + "name": "getL7ApplicationsUsingGET", + "canvasName": "getL7ApplicationsUsingGET", + "summary": "Lists known L7 applications", + "description": "Lists known L7 applications", + "location": "Adapter", + "locationType": "Forward Networks:latest", + "app": "Forward Networks:latest", + "type": "automatic", + "displayName": "Forward Networks", + "variables": { + "incoming": { + "adapter_id": "Forward Networks" + }, + "outgoing": { + "response": null + }, + "error": "", + "decorators": [] + }, + "groups": [], + "actor": "Pronghorn", + "scheduled": false, + "nodeLocation": { + "x": 264, + "y": 150 + } + }, + "workflow_end": { + "name": "workflow_end", + "groups": [], + "nodeLocation": { + "x": 264, + "y": 300 + } + } + }, + "transitions": { + "workflow_start": { + "c8af": { + "type": "standard", + "state": "success" + } + }, + "c8af": { + "workflow_end": { + "type": "standard", + "state": "success" + } + }, + "workflow_end": {} + }, + "inputSchema": { + "type": "object", + "properties": {} + }, + "outputSchema": { + "type": "object", + "properties": { + "response": { + "type": "object", + "description": "Full HTTP response envelope ({ok, url, status, headers, text, body})." + } + } + }, + "scenarios": [], + "canvasVersion": 3, + "tags": [], + "groups": [], + "migrationVersion": 8 + } + }, + { + "iid": 65, + "reference": "f1981e3f-a8cc-5668-8b7a-c1983bb69b3b", + "type": "workflow", + "folder": "/Path Search", + "document": { + "name": "Searches for paths by tracing packets through the network", + "description": "Searches for paths by tracing packets through the network", + "type": "automation", + "font_size": 12, + "tasks": { + "workflow_start": { + "name": "workflow_start", + "groups": [], + "nodeLocation": { + "x": 264, + "y": 0 + } + }, + "5c86": { + "name": "getPathsUsingGET", + "canvasName": "getPathsUsingGET", + "summary": "Searches for paths by tracing packets through the network", + "description": "Searches for paths by tracing packets through the network", + "location": "Adapter", + "locationType": "Forward Networks:latest", + "app": "Forward Networks:latest", + "type": "automatic", + "displayName": "Forward Networks", + "variables": { + "incoming": { + "networkId": "$var.job.networkId", + "from": "$var.job.from", + "srcIp": "$var.job.srcIp", + "dstIp": "$var.job.dstIp", + "intent": "$var.job.intent", + "ipProto": "$var.job.ipProto", + "srcPort": "$var.job.srcPort", + "dstPort": "$var.job.dstPort", + "icmpType": "$var.job.icmpType", + "fin": "$var.job.fin", + "syn": "$var.job.syn", + "rst": "$var.job.rst", + "psh": "$var.job.psh", + "ack": "$var.job.ack", + "urg": "$var.job.urg", + "appId": "$var.job.appId", + "userId": "$var.job.userId", + "userGroupId": "$var.job.userGroupId", + "url": "$var.job.url", + "includeTags": "$var.job.includeTags", + "includeNetworkFunctions": "$var.job.includeNetworkFunctions", + "maxCandidates": "$var.job.maxCandidates", + "maxResults": "$var.job.maxResults", + "maxReturnPathResults": "$var.job.maxReturnPathResults", + "maxSeconds": "$var.job.maxSeconds", + "snapshotId": "$var.job.snapshotId", + "adapter_id": "Forward Networks" + }, + "outgoing": { + "response": null + }, + "error": "", + "decorators": [] + }, + "groups": [], + "actor": "Pronghorn", + "scheduled": false, + "nodeLocation": { + "x": 264, + "y": 150 + } + }, + "workflow_end": { + "name": "workflow_end", + "groups": [], + "nodeLocation": { + "x": 264, + "y": 300 + } + } + }, + "transitions": { + "workflow_start": { + "5c86": { + "type": "standard", + "state": "success" + } + }, + "5c86": { + "workflow_end": { + "type": "standard", + "state": "success" + } + }, + "workflow_end": {} + }, + "inputSchema": { + "type": "object", + "properties": { + "networkId": { + "type": "string" + }, + "from": { + "type": "string" + }, + "srcIp": { + "type": "string" + }, + "dstIp": { + "type": "string" + }, + "intent": { + "type": "string" + }, + "ipProto": { + "type": "integer" + }, + "srcPort": { + "type": "string" + }, + "dstPort": { + "type": "string" + }, + "icmpType": { + "type": "integer" + }, + "fin": { + "type": "integer" + }, + "syn": { + "type": "integer" + }, + "rst": { + "type": "integer" + }, + "psh": { + "type": "integer" + }, + "ack": { + "type": "integer" + }, + "urg": { + "type": "integer" + }, + "appId": { + "type": "string" + }, + "userId": { + "type": "string" + }, + "userGroupId": { + "type": "string" + }, + "url": { + "type": "string" + }, + "includeTags": { + "type": "boolean" + }, + "includeNetworkFunctions": { + "type": "boolean" + }, + "maxCandidates": { + "type": "integer" + }, + "maxResults": { + "type": "integer" + }, + "maxReturnPathResults": { + "type": "integer" + }, + "maxSeconds": { + "type": "integer" + }, + "snapshotId": { + "type": "string" + } + }, + "required": [ + "networkId", + "dstIp" + ] + }, + "outputSchema": { + "type": "object", + "properties": { + "response": { + "type": "object", + "description": "Full HTTP response envelope ({ok, url, status, headers, text, body})." + } + } + }, + "scenarios": [], + "canvasVersion": 3, + "tags": [], + "groups": [], + "migrationVersion": 8 + } + }, + { + "iid": 66, + "reference": "d02e99c0-5851-5c04-9fdf-cd9f12461437", + "type": "workflow", + "folder": "/Path Search", + "document": { + "name": "Searches for paths by tracing sets of packets through the network", + "description": "Searches for paths by tracing sets of packets through the network", + "type": "automation", + "font_size": 12, + "tasks": { + "workflow_start": { + "name": "workflow_start", + "groups": [], + "nodeLocation": { + "x": 264, + "y": 0 + } + }, + "17f5": { + "name": "getPathsBulkUsingPOST", + "canvasName": "getPathsBulkUsingPOST", + "summary": "Searches for paths by tracing sets of packets through the network", + "description": "Searches for paths by tracing sets of packets through the network", + "location": "Adapter", + "locationType": "Forward Networks:latest", + "app": "Forward Networks:latest", + "type": "automatic", + "displayName": "Forward Networks", + "variables": { + "incoming": { + "networkId": "$var.job.networkId", + "snapshotId": "$var.job.snapshotId", + "bodyContentType": "application/json", + "requestBodyPayload": "$var.job.body", + "adapter_id": "Forward Networks" + }, + "outgoing": { + "response": null + }, + "error": "", + "decorators": [] + }, + "groups": [], + "actor": "Pronghorn", + "scheduled": false, + "nodeLocation": { + "x": 264, + "y": 150 + } + }, + "workflow_end": { + "name": "workflow_end", + "groups": [], + "nodeLocation": { + "x": 264, + "y": 300 + } + } + }, + "transitions": { + "workflow_start": { + "17f5": { + "type": "standard", + "state": "success" + } + }, + "17f5": { + "workflow_end": { + "type": "standard", + "state": "success" + } + }, + "workflow_end": {} + }, + "inputSchema": { + "type": "object", + "properties": { + "networkId": { + "type": "string" + }, + "snapshotId": { + "type": "string" + }, + "body": { + "type": "object" + } + }, + "required": [ + "networkId", + "body" + ] + }, + "outputSchema": { + "type": "object", + "properties": { + "response": { + "type": "object", + "description": "Full HTTP response envelope ({ok, url, status, headers, text, body})." + } + } + }, + "scenarios": [], + "canvasVersion": 3, + "tags": [], + "groups": [], + "migrationVersion": 8 + } + }, + { + "iid": 67, + "reference": "0885e414-e8a8-50a6-a6bf-03ffe6b827a5", + "type": "workflow", + "folder": "/Network Snapshots", + "document": { + "name": "Lists all Snapshots", + "description": "Lists all Snapshots", + "type": "automation", + "font_size": 12, + "tasks": { + "workflow_start": { + "name": "workflow_start", + "groups": [], + "nodeLocation": { + "x": 264, + "y": 0 + } + }, + "f1b8": { + "name": "listNetworkSnapshotsUsingGET", + "canvasName": "listNetworkSnapshotsUsingGET", + "summary": "Lists all Snapshots", + "description": "Lists all Snapshots", + "location": "Adapter", + "locationType": "Forward Networks:latest", + "app": "Forward Networks:latest", + "type": "automatic", + "displayName": "Forward Networks", + "variables": { + "incoming": { + "networkId": "$var.job.networkId", + "state": "$var.job.state", + "minSuccessfulDevices": "$var.job.minSuccessfulDevices", + "minSuccessfulDevicePct": "$var.job.minSuccessfulDevicePct", + "maxCollectionFailureDevices": "$var.job.maxCollectionFailureDevices", + "maxCollectionFailureDevicePct": "$var.job.maxCollectionFailureDevicePct", + "maxParsingFailureDevices": "$var.job.maxParsingFailureDevices", + "maxParsingFailureDevicePct": "$var.job.maxParsingFailureDevicePct", + "limit": "$var.job.limit", + "includeArchived": "$var.job.includeArchived", + "adapter_id": "Forward Networks" + }, + "outgoing": { + "response": null + }, + "error": "", + "decorators": [] + }, + "groups": [], + "actor": "Pronghorn", + "scheduled": false, + "nodeLocation": { + "x": 264, + "y": 150 + } + }, + "workflow_end": { + "name": "workflow_end", + "groups": [], + "nodeLocation": { + "x": 264, + "y": 300 + } + } + }, + "transitions": { + "workflow_start": { + "f1b8": { + "type": "standard", + "state": "success" + } + }, + "f1b8": { + "workflow_end": { + "type": "standard", + "state": "success" + } + }, + "workflow_end": {} + }, + "inputSchema": { + "type": "object", + "properties": { + "networkId": { + "type": "string" + }, + "state": { + "type": "string" + }, + "minSuccessfulDevices": { + "type": "integer" + }, + "minSuccessfulDevicePct": { + "type": "number" + }, + "maxCollectionFailureDevices": { + "type": "integer" + }, + "maxCollectionFailureDevicePct": { + "type": "number" + }, + "maxParsingFailureDevices": { + "type": "integer" + }, + "maxParsingFailureDevicePct": { + "type": "number" + }, + "limit": { + "type": "integer" + }, + "includeArchived": { + "type": "boolean" + } + }, + "required": [ + "networkId" + ] + }, + "outputSchema": { + "type": "object", + "properties": { + "response": { + "type": "object", + "description": "Full HTTP response envelope ({ok, url, status, headers, text, body})." + } + } + }, + "scenarios": [], + "canvasVersion": 3, + "tags": [], + "groups": [], + "migrationVersion": 8 + } + }, + { + "iid": 68, + "reference": "79398cb1-029f-5ba6-bb24-36c3e4e93003", + "type": "workflow", + "folder": "/Network Snapshots", + "document": { + "name": "Imports a Snapshot", + "description": "Imports a network Snapshot that was previously exported as a .zip file. If multiple Snapshot .zip files are uploaded in a single request, they will be merged. They must not have any devices in common.", + "type": "automation", + "font_size": 12, + "tasks": { + "workflow_start": { + "name": "workflow_start", + "groups": [], + "nodeLocation": { + "x": 264, + "y": 0 + } + }, + "404d": { + "name": "createSnapshotUsingPOST", + "canvasName": "createSnapshotUsingPOST", + "summary": "Imports a Snapshot", + "description": "Imports a network Snapshot that was previously exported as a .zip file. If multiple Snapshot .zip files are uploaded in a single request, they will be merged. They must not have any devices in common.", + "location": "Adapter", + "locationType": "Forward Networks:latest", + "app": "Forward Networks:latest", + "type": "automatic", + "displayName": "Forward Networks", + "variables": { + "incoming": { + "networkId": "$var.job.networkId", + "bodyContentType": "application/json", + "requestBodyPayload": "$var.job.body", + "adapter_id": "Forward Networks" + }, + "outgoing": { + "response": null + }, + "error": "", + "decorators": [] + }, + "groups": [], + "actor": "Pronghorn", + "scheduled": false, + "nodeLocation": { + "x": 264, + "y": 150 + } + }, + "workflow_end": { + "name": "workflow_end", + "groups": [], + "nodeLocation": { + "x": 264, + "y": 300 + } + } + }, + "transitions": { + "workflow_start": { + "404d": { + "type": "standard", + "state": "success" + } + }, + "404d": { + "workflow_end": { + "type": "standard", + "state": "success" + } + }, + "workflow_end": {} + }, + "inputSchema": { + "type": "object", + "properties": { + "networkId": { + "type": "string" + }, + "body": { + "type": "object" + } + }, + "required": [ + "networkId", + "body" + ] + }, + "outputSchema": { + "type": "object", + "properties": { + "response": { + "type": "object", + "description": "Full HTTP response envelope ({ok, url, status, headers, text, body})." + } + } + }, + "scenarios": [], + "canvasVersion": 3, + "tags": [], + "groups": [], + "migrationVersion": 8 + } + }, + { + "iid": 69, + "reference": "d2a85384-dfea-56e8-b2af-224a56c4597b", + "type": "workflow", + "folder": "/Network Snapshots", + "document": { + "name": "Returns the latest processed Snapshot", + "description": "Returns the latest processed Snapshot (the most recent one that's currently prepared for [path searches](#path-search) and [new checks](#checks)). Triggers processing of the latest Snapshot if it's not already underway and the network has no processed Snapshots.", + "type": "automation", + "font_size": 12, + "tasks": { + "workflow_start": { + "name": "workflow_start", + "groups": [], + "nodeLocation": { + "x": 264, + "y": 0 + } + }, + "e0cd": { + "name": "getLatestProcessedSnapshotUsingGET", + "canvasName": "getLatestProcessedSnapshotUsingGET", + "summary": "Returns the latest processed Snapshot", + "description": "Returns the latest processed Snapshot (the most recent one that's currently prepared for [path searches](#path-search) and [new checks](#checks)). Triggers processing of the latest Snapshot if it's not already underway and the network has no processed Snapshots.", + "location": "Adapter", + "locationType": "Forward Networks:latest", + "app": "Forward Networks:latest", + "type": "automatic", + "displayName": "Forward Networks", + "variables": { + "incoming": { + "networkId": "$var.job.networkId", + "adapter_id": "Forward Networks" + }, + "outgoing": { + "response": null + }, + "error": "", + "decorators": [] + }, + "groups": [], + "actor": "Pronghorn", + "scheduled": false, + "nodeLocation": { + "x": 264, + "y": 150 + } + }, + "workflow_end": { + "name": "workflow_end", + "groups": [], + "nodeLocation": { + "x": 264, + "y": 300 + } + } + }, + "transitions": { + "workflow_start": { + "e0cd": { + "type": "standard", + "state": "success" + } + }, + "e0cd": { + "workflow_end": { + "type": "standard", + "state": "success" + } + }, + "workflow_end": {} + }, + "inputSchema": { + "type": "object", + "properties": { + "networkId": { + "type": "string" + } + }, + "required": [ + "networkId" + ] + }, + "outputSchema": { + "type": "object", + "properties": { + "response": { + "type": "object", + "description": "Full HTTP response envelope ({ok, url, status, headers, text, body})." + } + } + }, + "scenarios": [], + "canvasVersion": 3, + "tags": [], + "groups": [], + "migrationVersion": 8 + } + }, + { + "iid": 70, + "reference": "d3a5d4dc-a1c9-56ba-9de3-8c76ba078930", + "type": "workflow", + "folder": "/Vulnerability Analysis", + "document": { + "name": "Gets vulnerabilities and possibly impacted devices", + "description": "Gets vulnerabilities and possibly impacted devices", + "type": "automation", + "font_size": 12, + "tasks": { + "workflow_start": { + "name": "workflow_start", + "groups": [], + "nodeLocation": { + "x": 264, + "y": 0 + } + }, + "3dcd": { + "name": "getVulnerabilitiesUsingGET", + "canvasName": "getVulnerabilitiesUsingGET", + "summary": "Gets vulnerabilities and possibly impacted devices", + "description": "Gets vulnerabilities and possibly impacted devices", + "location": "Adapter", + "locationType": "Forward Networks:latest", + "app": "Forward Networks:latest", + "type": "automatic", + "displayName": "Forward Networks", + "variables": { + "incoming": { + "networkId": "$var.job.networkId", + "snapshotId": "$var.job.snapshotId", + "offset": "$var.job.offset", + "limit": "$var.job.limit", + "adapter_id": "Forward Networks" + }, + "outgoing": { + "response": null + }, + "error": "", + "decorators": [] + }, + "groups": [], + "actor": "Pronghorn", + "scheduled": false, + "nodeLocation": { + "x": 264, + "y": 150 + } + }, + "workflow_end": { + "name": "workflow_end", + "groups": [], + "nodeLocation": { + "x": 264, + "y": 300 + } + } + }, + "transitions": { + "workflow_start": { + "3dcd": { + "type": "standard", + "state": "success" + } + }, + "3dcd": { + "workflow_end": { + "type": "standard", + "state": "success" + } + }, + "workflow_end": {} + }, + "inputSchema": { + "type": "object", + "properties": { + "networkId": { + "type": "string" + }, + "snapshotId": { + "type": "string" + }, + "offset": { + "type": "integer" + }, + "limit": { + "type": "integer" + } + }, + "required": [ + "networkId" + ] + }, + "outputSchema": { + "type": "object", + "properties": { + "response": { + "type": "object", + "description": "Full HTTP response envelope ({ok, url, status, headers, text, body})." + } + } + }, + "scenarios": [], + "canvasVersion": 3, + "tags": [], + "groups": [], + "migrationVersion": 8 + } + } + ], + "folders": [ + { + "nodeType": "folder", + "name": "Networks", + "children": [ + { + "iid": 0, + "nodeType": "component" + }, + { + "iid": 1, + "nodeType": "component" + }, + { + "iid": 2, + "nodeType": "component" + }, + { + "iid": 3, + "nodeType": "component" + } + ] + }, + { + "nodeType": "folder", + "name": "Network Devices", + "children": [ + { + "iid": 4, + "nodeType": "component" + }, + { + "iid": 5, + "nodeType": "component" + }, + { + "iid": 6, + "nodeType": "component" + }, + { + "iid": 7, + "nodeType": "component" + }, + { + "iid": 8, + "nodeType": "component" + } + ] + }, + { + "nodeType": "folder", + "name": "Classic Devices", + "children": [ + { + "iid": 9, + "nodeType": "component" + }, + { + "iid": 10, + "nodeType": "component" + }, + { + "iid": 11, + "nodeType": "component" + }, + { + "iid": 12, + "nodeType": "component" + }, + { + "iid": 13, + "nodeType": "component" + }, + { + "iid": 14, + "nodeType": "component" + }, + { + "iid": 15, + "nodeType": "component" + } + ] + }, + { + "nodeType": "folder", + "name": "Network Endpoints", + "children": [ + { + "iid": 16, + "nodeType": "component" + }, + { + "iid": 17, + "nodeType": "component" + }, + { + "iid": 18, + "nodeType": "component" + }, + { + "iid": 19, + "nodeType": "component" + }, + { + "iid": 20, + "nodeType": "component" + }, + { + "iid": 21, + "nodeType": "component" + }, + { + "iid": 22, + "nodeType": "component" + }, + { + "iid": 23, + "nodeType": "component" + }, + { + "iid": 24, + "nodeType": "component" + }, + { + "iid": 25, + "nodeType": "component" + }, + { + "iid": 26, + "nodeType": "component" + }, + { + "iid": 27, + "nodeType": "component" + }, + { + "iid": 28, + "nodeType": "component" + }, + { + "iid": 29, + "nodeType": "component" + }, + { + "iid": 30, + "nodeType": "component" + }, + { + "iid": 31, + "nodeType": "component" + }, + { + "iid": 32, + "nodeType": "component" + }, + { + "iid": 33, + "nodeType": "component" + } + ] + }, + { + "nodeType": "folder", + "name": "Credentials", + "children": [ + { + "iid": 34, + "nodeType": "component" + }, + { + "iid": 35, + "nodeType": "component" + }, + { + "iid": 36, + "nodeType": "component" + }, + { + "iid": 37, + "nodeType": "component" + }, + { + "iid": 38, + "nodeType": "component" + }, + { + "iid": 39, + "nodeType": "component" + }, + { + "iid": 40, + "nodeType": "component" + }, + { + "iid": 41, + "nodeType": "component" + }, + { + "iid": 42, + "nodeType": "component" + }, + { + "iid": 43, + "nodeType": "component" + }, + { + "iid": 44, + "nodeType": "component" + }, + { + "iid": 45, + "nodeType": "component" + } + ] + }, + { + "nodeType": "folder", + "name": "Jump Servers", + "children": [ + { + "iid": 46, + "nodeType": "component" + }, + { + "iid": 47, + "nodeType": "component" + }, + { + "iid": 48, + "nodeType": "component" + }, + { + "iid": 49, + "nodeType": "component" + } + ] + }, + { + "nodeType": "folder", + "name": "Device Tags", + "children": [ + { + "iid": 50, + "nodeType": "component" + }, + { + "iid": 51, + "nodeType": "component" + }, + { + "iid": 52, + "nodeType": "component" + }, + { + "iid": 53, + "nodeType": "component" + }, + { + "iid": 54, + "nodeType": "component" + } + ] + }, + { + "nodeType": "folder", + "name": "NQE", + "children": [ + { + "iid": 55, + "nodeType": "component" + }, + { + "iid": 56, + "nodeType": "component" + }, + { + "iid": 57, + "nodeType": "component" + } + ] + }, + { + "nodeType": "folder", + "name": "Checks", + "children": [ + { + "iid": 58, + "nodeType": "component" + }, + { + "iid": 59, + "nodeType": "component" + }, + { + "iid": 60, + "nodeType": "component" + }, + { + "iid": 61, + "nodeType": "component" + }, + { + "iid": 62, + "nodeType": "component" + }, + { + "iid": 63, + "nodeType": "component" + } + ] + }, + { + "nodeType": "folder", + "name": "Path Search", + "children": [ + { + "iid": 64, + "nodeType": "component" + }, + { + "iid": 65, + "nodeType": "component" + }, + { + "iid": 66, + "nodeType": "component" + } + ] + }, + { + "nodeType": "folder", + "name": "Network Snapshots", + "children": [ + { + "iid": 67, + "nodeType": "component" + }, + { + "iid": 68, + "nodeType": "component" + }, + { + "iid": 69, + "nodeType": "component" + } + ] + }, + { + "nodeType": "folder", + "name": "Vulnerability Analysis", + "children": [ + { + "iid": 70, + "nodeType": "component" + } + ] + } + ], + "createdBy": { + "provenance": "LDAP", + "username": "admin@itential", + "_id": "bd76cac9a3bf230cfdb5da31" + }, + "lastUpdatedBy": { + "provenance": "LDAP", + "username": "admin@itential", + "_id": "bd76cac9a3bf230cfdb5da31" + }, + "created": "2026-09-16T00:00:00.000Z", + "lastUpdated": "2026-09-16T00:00:00.000Z", + "iid": 71, + "thumbnail": "", + "backgroundColor": "", + "referencedComponentHashes": [] +} diff --git a/README.md b/README.md index 357dea6..a4dd539 100644 --- a/README.md +++ b/README.md @@ -47,6 +47,7 @@ Assets are organized by vendor and product. Each folder may contain one or more | **EfficientIP** | SOLIDserver (DDI) | | **F5** | BIG-IP · BIG-IQ · Insight | | **ForeScout** | Web API (CounterACT / eyeSight) | +| **Forward Networks** | Network digital twin & verification platform | | **Fortinet** | FortiGate · FortiManager | | **GitHub** | GitHub | | **GitLab** | GitLab | From d87f951ec1bc59a8c4784a015b0d95f32640646c Mon Sep 17 00:00:00 2001 From: Michael Elrom Date: Thu, 17 Sep 2026 11:43:52 -0400 Subject: [PATCH 2/2] fix(forward-networks): enrich thin description, add missing Connection Properties The vendor's own spec description was just 'Model and verify networks' -- too thin for the platform GUI, replaced with the README's own descriptive paragraph on the curated spec only (the full dated spec keeps the vendor's original text unmodified). Also added a missing Connection Properties block to the README, needed since the server URL is relative (/api) and users need to know to set base_path explicitly. Re-verified the curated spec's import against a live Itential Platform instance. --- .../OpenAPIs/forward_networks-latest.json | 4 ++-- Forward Networks/README.md | 19 +++++++++++++++++++ 2 files changed, 21 insertions(+), 2 deletions(-) diff --git a/Forward Networks/OpenAPIs/forward_networks-latest.json b/Forward Networks/OpenAPIs/forward_networks-latest.json index 0868335..765876f 100644 --- a/Forward Networks/OpenAPIs/forward_networks-latest.json +++ b/Forward Networks/OpenAPIs/forward_networks-latest.json @@ -2,7 +2,7 @@ "openapi": "3.1.0", "info": { "title": "Forward Networks", - "description": "Model and verify networks", + "description": "Forward Networks builds a continuously updated digital twin of a network from device configuration and state, used for verification, path search, security and compliance checks, and network-wide querying via the Network Query Engine (NQE).", "version": "latest", "x-vendor-api-version": "26.1", "x-itential-curated": "Trimmed to 71 of 181 upstream operations covering network CRUD, classic/endpoint device inventory, credentials, jump servers, device tags, NQE queries, checks, path search, snapshot listing, and vulnerability analysis. See the repo README for the full scope and the full spec." @@ -11152,4 +11152,4 @@ } } } -} +} \ No newline at end of file diff --git a/Forward Networks/README.md b/Forward Networks/README.md index 1488104..ed09d71 100644 --- a/Forward Networks/README.md +++ b/Forward Networks/README.md @@ -7,6 +7,7 @@ Forward Networks builds a continuously updated digital twin of a network from de - [Contents](#contents) - [Requirements](#requirements) - [Integration Configuration](#integration-configuration) + - [Connection Properties](#connection-properties) - [OpenAPIs](#openapis) - [`forward_networks-latest.json`](#forward_networks-latestjson) - [`forward_networks-26.1.json`](#forward_networks-261json) @@ -31,6 +32,24 @@ Forward Networks builds a continuously updated digital twin of a network from de Authentication is HTTP Basic auth, using a Forward Networks API access key as the username and its matching secret as the password on every request. Generate an access key/secret pair in Forward Networks under your user account's API access settings, then configure the Integration's basic-auth credentials in Itential Platform's Admin Essentials with the key as the username and the secret as the password. +### Connection Properties + +```json +{ + "authentication": { + "api_token": { + "username": "", + "password": "" + } + }, + "server": { + "protocol": "https", + "host": "", + "base_path": "/api" + } +} +``` + ## OpenAPIs | Spec | Version | Operations | Description |