{
  "openapi": "3.1.0",
  "info": {
    "title": "Forward Networks: Network Endpoints API",
    "description": "Configure network endpoint profiles and specify the network endpoints to collect from",
    "contact": {
      "email": "support@forwardnetworks.com"
    },
    "license": {
      "name": "MIT",
      "url": "https://spdx.org/licenses/MIT"
    },
    "version": "${apiVersion}"
  },
  "servers": [
    {
      "url": "/"
    }
  ],
  "security": [
    {
      "api_token": []
    }
  ],
  "tags": [
    {
      "name": "Network Endpoints",
      "description": "Configure network endpoint profiles and specify the network endpoints to collect from"
    }
  ],
  "paths": {
    "/api/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"
                }
              }
            }
          }
        }
      }
    },
    "/api/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"
                }
              }
            }
          }
        }
      }
    },
    "/api/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"
                }
              }
            }
          }
        }
      }
    },
    "/api/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"
                }
              }
            }
          }
        }
      }
    },
    "/api/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"
                }
              }
            }
          }
        }
      }
    },
    "/api/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"
                }
              }
            }
          }
        }
      }
    },
    "/api/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"
                }
              }
            }
          }
        }
      }
    },
    "/api/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"
                }
              }
            }
          }
        }
      },
      "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": {}
          }
        }
      }
    },
    "/api/networks/{networkId}/endpoints": {
      "get": {
        "tags": [
          "Network Endpoints"
        ],
        "summary": "Gets a network’s 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"
                }
              }
            }
          }
        }
      },
      "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 to 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": {}
          }
        }
      }
    },
    "/api/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"
                }
              }
            }
          }
        }
      }
    },
    "/api/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"
                }
              }
            }
          }
        }
      }
    },
    "/api/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"
                }
              }
            }
          }
        }
      }
    },
    "/api/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": {}
          }
        }
      }
    },
    "/api/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": {}
          }
        }
      }
    },
    "/api/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": {}
          }
        }
      }
    },
    "/api/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": {}
          }
        }
      }
    },
    "/api/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"
                }
              }
            }
          }
        }
      },
      "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": {}
          }
        }
      }
    },
    "/api/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 change.",
        "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"
                }
              }
            }
          }
        }
      }
    },
    "/api/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 change.",
        "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"
                }
              }
            }
          }
        }
      }
    },
    "/api/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 change.",
        "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"
                }
              }
            }
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "Attribution": {
        "type": "object",
        "properties": {
          "createdById": {
            "type": "string",
            "description": "The ID of the user who created this entity, if known. *Note*: The referenced user account might no longer exist since an administrator can delete accounts.",
            "examples": [
              "456"
            ]
          },
          "createdAt": {
            "type": "string",
            "description": "When this entity was created, if known.",
            "examples": [
              "2021-12-29T16:30:45.111Z"
            ]
          },
          "createdBy": {
            "type": "string",
            "description": "The username of the user who created this entity, if known. Absent if the user account has been deleted.",
            "examples": [
              "me@example.com"
            ]
          },
          "updatedById": {
            "type": "string",
            "description": "The ID of the user who most recently updated this entity, if known. *Note*: The referenced user account might no longer exist since an administrator can delete accounts.",
            "examples": [
              "789"
            ]
          },
          "updatedAt": {
            "type": "string",
            "description": "When this entity was most recently updated, if known.",
            "examples": [
              "2024-10-27T21:44:51.345Z"
            ]
          },
          "updatedBy": {
            "type": "string",
            "description": "The username of the user who most recently updated this entity, if known. Absent if the user account has been deleted.",
            "examples": [
              "you@example.com"
            ]
          }
        }
      },
      "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",
          "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"
        ]
      },
      "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"
          }
        ]
      },
      "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 assigned 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 `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’t 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 detected.",
            "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 after a matched glob pattern is the desired name. If no glob patterns are specified, the first word/token in the `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 matches the end of the prompt, ignoring any trailing whitespace, the Collector will enter the configured `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 to 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’t generate paginated command output or if paging is like the “more” 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 order to proceed. Required if `pagePrompt` is set.",
            "examples": [
              "c"
            ]
          },
          "ptyType": {
            "type": "string",
            "description": "Device’s 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 \"ctrl+c\".",
            "examples": [
              "ctrl+z"
            ]
          },
          "responseTimeoutSec": {
            "type": "integer",
            "format": "int32",
            "description": "Timeout in seconds applied to this profile’s 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 \"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 read-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 assigned to a network endpoint, but not auto-detected. Use `null` to clear. Omit to leave this property alone.",
            "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 `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’t recognize `detectorCommand`. Use `null` to clear. Omit 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 detected. 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 after a matched glob pattern is the desired name. If no glob patterns are specified, the first word/token in the `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 matches the end of the prompt, ignoring any trailing whitespace, the Collector will enter the configured `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 to 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’t generate paginated command output or if paging is like the “more” command, omit this property. Use `null` to clear. 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 order to proceed. Required if `pagePrompt` is set. Use `null` to clear. Omit to leave this property alone.",
            "examples": [
              "c"
            ]
          },
          "ptyType": {
            "type": "string",
            "description": "Device’s terminal type (\"xterm-256color\", \"vt100\", etc.). Use `null` to clear. Omit to leave this property alone.",
            "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 alone.",
            "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 `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’s CLI commands run during discovery and collection. Use `null` to clear. 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 \"ifconfig\", \"netstat -ln\", \"hostname\", and \"uname -a\". Use `null` to clear. Omit to leave this property alone.",
            "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` to 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’s unique (ignoring case) among all of the network’s collection source names. May consist of letters, 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 for 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 configured to allow it if this property is unspecified and collecting from this endpoint requires this kind of 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’s unique (ignoring case) among all of the network’s collection source names. May consist of letters, 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 for 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 clear. 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 property 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 configured to allow it if this property is unspecified and collecting from this endpoint requires this kind of 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 leave 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 property 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. 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 property alone.",
            "examples": [
              true
            ]
          },
          "note": {
            "type": "string",
            "description": "An optional description or note about this network endpoint. Use `null` to clear. Omit to leave this property alone.",
            "examples": [
              "Yada yada yada"
            ]
          }
        }
      },
      "CommandSet": {
        "type": "string",
        "const": "UNIX"
      },
      "ConnectionType": {
        "type": "string",
        "enum": [
          "CLI",
          "SNMP",
          "HTTP"
        ]
      },
      "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"
        ]
      },
      "CustomOid": {
        "type": "object",
        "required": [
          "name",
          "oid"
        ],
        "properties": {
          "name": {
            "type": "string",
            "description": "A concise name for the OID’s value. Used in the name of the file the Collector creates when it retrieves the OID’s 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 Management Protocol (SNMP).",
            "examples": [
              "1.3.6.1.2.1.1.1"
            ]
          }
        }
      },
      "DeviceNames": {
        "type": "object",
        "properties": {
          "names": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        }
      },
      "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"
            }
          }
        }
      },
      "HttpAuthStrategy": {
        "type": "string",
        "enum": [
          "NONE",
          "BASIC_AUTH"
        ]
      },
      "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 response(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’s dataset in parts (pages) using a sequence of requests. Can only be used if this endpoint’s response format is JSON. Absent if this endpoint doesn’t require pagination.",
            "examples": [
              {
                "type": "OFFSET",
                "itemsArrayField": [
                  "managers"
                ],
                "parameterName": "page",
                "offsetIncrementExpression": {
                  "operator": "PLUS_ONE"
                }
              }
            ]
          }
        }
      },
      "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 data. Authentication should be handled separately if required using credentials assigned or discovered on a per-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 of network endpoint. If absent, the profile can be manually assigned to a network endpoint, but not auto-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 device 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 property 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 device of unknown type is of this type. Absent if `detectorUri` is absent. Never empty. Use `null` to clear. Omit 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 of network endpoint. If absent, the profile can be manually assigned to a network endpoint, but not auto-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 property 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 data. Authentication should be handled separately if required using credentials assigned or discovered on a per-device basis. Use `authType` to specify what type of HTTP authentication this device type requires. Use `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’s unique (ignoring case) among all of the network’s collection source names. May consist of letters, 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 for 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’s assigned or discovered profile (see `authType` in HttpEndpointProfileDef). Credential auto-association will be attempted using credentials configured to allow it if this property is unspecified and collecting from this 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’t trusted. Not recommended. 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’s unique (ignoring case) among all of the network’s collection source names. May consist of letters, 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 for 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 clear. 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’s assigned or discovered profile (see `authType` in HttpEndpointProfileDef). Credential auto-association will be attempted using credentials configured to allow it if this property is unspecified and collecting from this 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’t trusted. Not recommended. 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 property alone.",
            "examples": [
              true
            ]
          },
          "note": {
            "type": "string",
            "description": "An optional description or note about this network endpoint. Use `null` to clear. Omit to leave this property 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’s assigned Location (see [Network Locations](#network-locations)). Present only if specifically requested. Defaults to \"default\" (the Unassigned location).",
            "examples": [
              "atl"
            ]
          },
          "testResult": {
            "$ref": "#/components/schemas/SourceConnectivityResult",
            "description": "The endpoint’s most recent connectivity test result. Present only if specifically requested. Absent if the endpoint’s connectivity hasn’t 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"
            }
          }
        }
      },
      "NetworkEndpointsPatch": {
        "type": "object",
        "properties": {
          "type": {
            "$ref": "#/components/schemas/ConnectionType",
            "description": "The desired connection type for the specified network endpoints. Omit to leave this property alone.",
            "examples": [
              "CLI"
            ]
          },
          "profileId": {
            "type": "string",
            "description": "ID of the endpoint profile to use. Auto-detected during connectivity testing if unspecified. Use `null` to clear. 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 property alone.",
            "examples": [
              "SSH"
            ]
          },
          "credentialId": {
            "type": "string",
            "description": "The `id` of a CliCredential of type `LOGIN`. Credential auto-association will be attempted using credentials configured to allow it if this property is unspecified and collecting from this endpoint requires this kind of 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 leave 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 property alone.",
            "examples": [
              true
            ]
          },
          "note": {
            "type": "string",
            "description": "An optional description or note about this network endpoint. Use `null` to clear. Omit to leave this property alone.",
            "examples": [
              "Yada yada yada"
            ]
          }
        }
      },
      "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’s unique (ignoring case) among all of the network’s collection source names. May consist of letters, 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 for 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 configured to allow it if this property is unspecified and collecting from this endpoint requires this kind of 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’s unique (ignoring case) among all of the network’s collection source names. May consist of letters, 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 for 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’s assigned or discovered profile (see `authType` in HttpEndpointProfileDef). Credential auto-association will be attempted using credentials configured to allow it if this property is unspecified and collecting from this 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’t trusted. Not recommended. 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’s unique (ignoring case) among all of the network’s collection source names. May consist of letters, 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 for 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 allow 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"
            ]
          }
        }
      },
      "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 paginated 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 request.",
            "examples": [
              "skip"
            ]
          },
          "offsetIncrementExpression": {
            "$ref": "#/components/schemas/OffsetIncrementExpression",
            "description": "What to add to the previous request’s offset value to get the next request’s offset value. The first request’s 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’s response to the previous request’s offset value. \"LENGTH\" means to add the length of the array at `path` in the previous request’s response to the previous request’s offset value. \"PLUS_ONE\" means to simply add one to the previous request’s offset value.",
            "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 value or array needed to calculate the next offset value. Required if `operator` is \"IDENTITY\" or \"LENGTH\"; absent otherwise.",
            "examples": [
              "- items"
            ]
          }
        }
      },
      "OidSet": {
        "type": "string",
        "const": "STANDARD"
      },
      "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 paginated 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 paginated data array.",
            "examples": [
              "- items"
            ]
          },
          "parameterName": {
            "type": "string",
            "description": "The name of the URL query parameter to populate with the cursor value from the previous response.",
            "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 next page’s cursor value.",
            "examples": [
              "- pagingInfo\n- nextPageCursor"
            ]
          },
          "maxPages": {
            "type": "integer",
            "format": "int32",
            "description": "Maximum number of pages to collect. Defaults to 1000.",
            "examples": [
              100
            ]
          }
        }
      },
      "Protocol": {
        "type": "string",
        "enum": [
          "HTTP",
          "HTTPS",
          "SSH",
          "TELNET",
          "SNMP"
        ]
      },
      "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 a 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 `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 detected.",
            "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 immediately after a matched glob pattern is the desired name. If no glob patterns are specified, the first word/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’s OIDs during discovery or collection. Defaults 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 for 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 file 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 a 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 `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 detected. 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 immediately after a matched glob pattern is the desired name. If no glob patterns are specified, the first word/token in the `nameDetectorOid` value will be used. Use `null` to clear. Omit to leave this property alone.",
            "examples": [
              "- FQDN:*enabled"
            ]
          },
          "responseTimeoutSec": {
            "type": "integer",
            "format": "int32",
            "description": "Timeout in seconds for retrieving the value of one of this profile’s OIDs during discovery or collection. Defaults 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 for system name, system description, TCP info, UDP info, host address, and interface info. Use `null` to clear. 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 file 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’s unique (ignoring case) among all of the network’s collection source names. May consist of letters, 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 for 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 allow 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’s unique (ignoring case) among all of the network’s collection source names. May consist of letters, 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 for 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 clear. 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 allow it if this property is unspecified and collecting from this endpoint requires this kind of credential. Use `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 property alone.",
            "examples": [
              true
            ]
          },
          "note": {
            "type": "string",
            "description": "An optional description or note about this network endpoint. Use `null` to clear. Omit to leave this property alone.",
            "examples": [
              "Yada yada yada"
            ]
          }
        }
      },
      "SourceConnectivityResult": {
        "type": "object",
        "required": [
          "startTime",
          "endTime",
          "savedAt"
        ],
        "properties": {
          "startTime": {
            "type": "string",
            "description": "When this connectivity test began, according to the Collector’s system clock.",
            "examples": [
              "2025-05-28T12:33:00.000Z"
            ]
          },
          "endTime": {
            "type": "string",
            "description": "When this connectivity test ended, according to the Collector’s system clock.",
            "examples": [
              "2025-05-28T12:33:33.333Z"
            ]
          },
          "savedAt": {
            "type": "string",
            "description": "When this connectivity test result was saved to the database, according to the server’s system clock.",
            "examples": [
              "2025-05-28T12:34:56.789Z"
            ]
          },
          "error": {
            "$ref": "#/components/schemas/ConnectivityTestError",
            "description": "The error encountered during the test. Present if the test failed. Absent if the test passed.",
            "examples": [
              "PING_FAILED"
            ]
          },
          "errorPhase": {
            "type": "string",
            "description": "The test phase during which `error` was encountered. Present if `error` is present.",
            "examples": [
              "CONNECTION"
            ],
            "enum": [
              "CONNECTION",
              "AUTHENTICATION",
              "TYPE_DISCOVERY",
              "SETUP",
              "AUTHORIZATION",
              "QUERY"
            ]
          },
          "discoveredType": {
            "$ref": "#/components/schemas/ClassicDeviceType",
            "description": "The device type auto-discovered during the connectivity test.",
            "examples": [
              "arista_eos_ssh"
            ]
          },
          "discoveredCliCredentialId": {
            "type": "string",
            "description": "The `id` of the working CliCredential of type `LOGIN` auto-discovered during the connectivity test. Can only be present for device types collected via SSH.",
            "examples": [
              "L-3"
            ]
          },
          "discoveredCliCredential2Id": {
            "type": "string",
            "description": "The `id` of the working CliCredential of type `PRIVILEGED_MODE` (for Cisco-like and Checkpoint devices) or `SHELL` (for Avi controllers) auto-discovered during the connectivity test. Can only be present for device types collected via SSH or Telnet.",
            "examples": [
              "PM-2"
            ]
          },
          "discoveredCliCredential3Id": {
            "type": "string",
            "description": "The `id` of the working CliCredential of type `EXPERT_MODE` (for Checkpoint devices) auto-discovered during the connectivity test. Can only be present for device types collected via SSH.",
            "examples": [
              "EM-3"
            ]
          },
          "discoveredHttpCredentialId": {
            "type": "string",
            "description": "The `id` of the working HttpCredential of type `LOGIN` or `API_KEY` auto-discovered during the connectivity test. Can only be present for device types collected via HTTPS.",
            "examples": [
              "H-5"
            ]
          },
          "discoveredSnmpCredentialId": {
            "type": "string",
            "description": "The `id` of the working SnmpCredential auto-discovered during the connectivity test.",
            "examples": [
              "S-1"
            ]
          },
          "hostIps": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "The IP addresses to which `host` resolves if it’s a hostname. Contains just `host` itself if it’s an IP address.",
            "examples": [
              "- 10.121.7.13"
            ]
          },
          "unauthorizedCommands": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Commands that failed with an authorization (permission) error during the connectivity test.",
            "examples": [
              "- show config\n- show interfaces status"
            ]
          }
        }
      },
      "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 paginated 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 next page’s URL.",
            "examples": [
              "- pagingInfo\n- nextPageUrl"
            ]
          },
          "maxPages": {
            "type": "integer",
            "format": "int32",
            "description": "Maximum number of pages to collect. Defaults to 1000.",
            "examples": [
              100
            ]
          }
        }
      }
    },
    "securitySchemes": {
      "api_token": {
        "type": "http",
        "scheme": "basic"
      }
    }
  }
}