openapi: 3.1.0
info:
  title: 'Forward Networks: Complete API'
  description: Model and verify networks
  contact:
    email: support@forwardnetworks.com
  license:
    name: MIT
    url: https://spdx.org/licenses/MIT
  version: 25.12
servers:
  - url: /
tags:
  - name: Aliases
    description: Define groups of network infrastructure elements or packet header values
    x-displayName: Aliases
  - name: Checks
    description: Enable or define automated checks that verify network policy and behavior
    x-displayName: Checks
  - name: Classic Devices
    description: Specify the network devices to collect from and model
    x-displayName: Classic Devices
  - name: Credentials
    description: Provide network device credentials needed for network collection
    x-displayName: Credentials
  - name: Current Version
    description: Get current API version information
    x-displayName: Current Version
  - name: Device Tags
    description: List or manage tags associated with network devices and endpoints
    x-displayName: Device Tags
  - name: Jump Servers
    description: Configure jump servers to assist in reaching network devices
    x-displayName: Jump Servers
  - name: Network Collection
    description: Configure configuration and state collection from network devices
    x-displayName: Network Collection
  - name: Network Devices
    description: List the modeled network devices
    x-displayName: Network Devices
  - name: Network Endpoints
    description: >-
      Configure network endpoint profiles and specify the network endpoints to
      collect from
    x-displayName: Network Endpoints
  - name: Network Locations
    description: Get, create, update, or delete a network's user-defined locations
    x-displayName: Network Locations
  - name: Network Snapshots
    description: List or manage the network Snapshots collected from network devices
    x-displayName: Network Snapshots
  - name: Network Topology
    description: >-
      List the links inferred between network devices and override them if
      necessary
    x-displayName: Network Topology
  - name: Networks
    description: Create, list, rename, or delete model networks
    x-displayName: Networks
  - name: NQE
    description: >-
      Ask the Network Query Engine for structured, vendor-agnostic network
      information
    x-displayName: NQE
  - name: Path Search
    description: Trace packets through the network model
    x-displayName: Path Search
  - name: Synthetic Devices
    description: Model a network’s internet connections, L2VPNs, and L3VPNs
    x-displayName: Synthetic Devices
  - name: System Administration
    description: Administer the system, including database backups
    x-displayName: System Administration
  - name: User Accounts
    description: Manage user accounts
    x-displayName: User Accounts
  - name: Vulnerability Analysis
    description: Identify network devices potentially impacted by CVEs
    x-displayName: Vulnerability Analysis
paths:
  /api/snapshots/{snapshotId}/aliases:
    get:
      tags:
        - Aliases
      summary: Gets all Aliases
      operationId: getAllAliasesUsingGET
      parameters:
        - name: snapshotId
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Aliases'
        '409':
          description: >-
            The system is currently processing this Snapshot.


            Note: GET /networks/{networkId}/snapshots/latestProcessed can be
            used to determine when processing of the latest Snapshot is done or
            to identify an alternate Snapshot that has already been processed.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorInfo'
      security:
        - api_token: []
    delete:
      tags:
        - Aliases
      summary: Deletes Aliases
      description: >-
        Use the optional `name` parameter to delete only specific Aliases. It
        can be repeated as in `?name=foo&name=bar`. Omit the `name` parameter to
        delete all Aliases active in the Snapshot.
      operationId: deactivateAliasesUsingDELETE
      parameters:
        - name: snapshotId
          in: path
          required: true
          schema:
            type: string
        - name: name
          in: query
          schema:
            type: array
            items:
              type: string
      responses:
        '200':
          description: OK. The response contains the deleted Aliases.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Aliases'
        '409':
          description: >-
            The system is currently processing this Snapshot.


            Note: GET /networks/{networkId}/snapshots/latestProcessed can be
            used to determine when processing of the latest Snapshot is done or
            to identify an alternate Snapshot that has already been processed.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorInfo'
      security:
        - api_token: []
  /api/snapshots/{snapshotId}/aliases/{name}:
    get:
      tags:
        - Aliases
      summary: Gets an Alias
      operationId: getSingleAliasUsingGET
      parameters:
        - name: snapshotId
          in: path
          required: true
          schema:
            type: string
        - name: name
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AliasAndValue'
        '409':
          description: >-
            The system is currently processing this Snapshot.


            Note: GET /networks/{networkId}/snapshots/latestProcessed can be
            used to determine when processing of the latest Snapshot is done or
            to identify an alternate Snapshot that has already been processed.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorInfo'
      security:
        - api_token: []
    put:
      tags:
        - Aliases
      summary: Creates an Alias
      operationId: createSnapshotAliasUsingPUT
      parameters:
        - name: snapshotId
          in: path
          required: true
          schema:
            type: string
        - name: name
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AliasBuilder'
        required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Alias'
        '409':
          description: >-
            The system is currently processing this Snapshot.


            Note: GET /networks/{networkId}/snapshots/latestProcessed can be
            used to determine when processing of the latest Snapshot is done or
            to identify an alternate Snapshot that has already been processed.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorInfo'
      security:
        - api_token: []
    delete:
      tags:
        - Aliases
      summary: Deletes an Alias
      operationId: deactivateAliasUsingDELETE
      parameters:
        - name: snapshotId
          in: path
          required: true
          schema:
            type: string
        - name: name
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Alias'
      security:
        - api_token: []
  /api/predefinedChecks:
    get:
      tags:
        - Checks
      summary: Gets available Predefined checks
      operationId: getAvailablePredefinedChecksUsingGET
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/AvailablePredefinedCheck'
      security:
        - api_token: []
  /api/snapshots/{snapshotId}/checks:
    get:
      tags:
        - Checks
      summary: Gets checks (with status)
      operationId: getChecksUsingGET
      parameters:
        - name: snapshotId
          in: path
          required: true
          schema:
            type: string
        - name: type
          in: query
          description: >-
            Can be repeated to request multiple types (as in
            `?type=NQE&type=Predefined`) or omitted to request all types.
          schema:
            type: array
            items:
              $ref: '#/components/schemas/CheckType'
        - name: priority
          in: query
          description: >-
            Can be repeated to request multiple priorities (as in
            `?priority=HIGH&priority=LOW`) or omitted to request all priorities.
          schema:
            type: array
            items:
              $ref: '#/components/schemas/CheckPriority'
        - name: status
          in: query
          description: >-
            Can be repeated to request multiple statuses (as in
            `?status=FAIL&status=ERROR`) or omitted to request all statuses.


            **Note:** The response will never contain results with `status` NONE
            or PROCESSING. The server will wait to respond, if necessary, until
            processing finishes or times out.
          schema:
            type: array
            items:
              $ref: '#/components/schemas/CheckStatus'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/NetworkCheckResult'
        '409':
          description: >-
            The system is currently processing this Snapshot.


            Note: GET /networks/{networkId}/snapshots/latestProcessed can be
            used to determine when processing of the latest Snapshot is done or
            to identify an alternate Snapshot that has already been processed.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorInfo'
      security:
        - api_token: []
    post:
      tags:
        - Checks
      summary: Adds a check
      description: >-
        Note that the returned NetworkCheckResult will never have status of type
        NONE or PROCESSING
      operationId: addCheckUsingPOST
      parameters:
        - name: snapshotId
          in: path
          required: true
          schema:
            type: string
        - name: persistent
          in: query
          description: >-
            Whether to associate check with any later snapshots (including
            future snapshots) too
          schema:
            type: boolean
            default: true
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/NewNetworkCheck'
        required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NetworkCheckResult'
        '409':
          description: >-
            The system is currently processing this Snapshot.


            Note: GET /networks/{networkId}/snapshots/latestProcessed can be
            used to determine when processing of the latest Snapshot is done or
            to identify an alternate Snapshot that has already been processed.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorInfo'
      security:
        - api_token: []
    delete:
      tags:
        - Checks
      summary: Deactivates all checks
      operationId: deactivateChecksUsingDELETE
      parameters:
        - name: snapshotId
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
      security:
        - api_token: []
  /api/snapshots/{snapshotId}/checks/{checkId}:
    get:
      tags:
        - Checks
      summary: Gets a check (with status)
      description: >-
        Note that the returned NetworkCheckResults will never have status of
        type NONE or PROCESSING
      operationId: getSingleCheckUsingGET
      parameters:
        - name: snapshotId
          in: path
          required: true
          schema:
            type: string
        - name: checkId
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NetworkCheckResultWithDiagnosis'
        '409':
          description: >-
            The system is currently processing this Snapshot.


            Note: GET /networks/{networkId}/snapshots/latestProcessed can be
            used to determine when processing of the latest Snapshot is done or
            to identify an alternate Snapshot that has already been processed.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorInfo'
      security:
        - api_token: []
    delete:
      tags:
        - Checks
      summary: Deactivates a check
      operationId: deactivateCheckUsingDELETE
      parameters:
        - name: snapshotId
          in: path
          required: true
          schema:
            type: string
        - name: checkId
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
      security:
        - api_token: []
  /api/networks/{networkId}/classic-devices:
    get:
      tags:
        - Classic Devices
      summary: Gets a network’s classic devices
      operationId: getClassicDevicesUsingGET
      parameters:
        - name: networkId
          in: path
          required: true
          schema:
            type: string
        - name: with
          in: query
          schema:
            type: array
            items:
              type: string
              enum:
                - tags
                - locationId
                - testResult
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ClassicDevices'
      security:
        - api_token: []
    post:
      tags:
        - Classic Devices
      summary: Adds a new classic device
      operationId: addClassicDeviceUsingPOST
      parameters:
        - name: networkId
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/NewClassicDevice'
        required: true
      responses:
        '201':
          description: Created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ClassicDevice'
      security:
        - api_token: []
    patch:
      tags:
        - Classic Devices
      summary: Updates specific classic devices
      description: >-
        All JSON properties in the `update` object are optional. Include only
        the properties you wish to change.
      operationId: patchClassicDevicesUsingPATCH
      parameters:
        - name: networkId
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ClassicDevicesPatch'
        required: true
      responses:
        '204':
          description: No Content
          content: {}
      security:
        - api_token: []
  /api/networks/{networkId}/classic-devices?action=addBatch:
    post:
      tags:
        - Classic Devices
      summary: Adds new classic devices
      operationId: addClassicDevicesUsingPOST
      parameters:
        - name: networkId
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: array
              items:
                $ref: '#/components/schemas/NewClassicDevice'
        required: true
      responses:
        '204':
          description: No Content
          content: {}
      security:
        - api_token: []
  /api/networks/{networkId}/classic-devices?action=deleteAll:
    post:
      tags:
        - Classic Devices
      summary: Deletes all of a network’s classic devices
      operationId: deleteAllClassicDevicesUsingPOST
      parameters:
        - name: networkId
          in: path
          required: true
          schema:
            type: string
      responses:
        '204':
          description: No Content
          content: {}
      security:
        - api_token: []
  /api/networks/{networkId}/classic-devices?action=deleteBatch:
    post:
      tags:
        - Classic Devices
      summary: Deletes specific classic devices
      operationId: deleteClassicDevicesUsingPOST
      parameters:
        - name: networkId
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DeviceCriteria'
        required: true
      responses:
        '204':
          description: No Content
          content: {}
      security:
        - api_token: []
  /api/networks/{networkId}/classic-devices?action=getBatch:
    post:
      tags:
        - Classic Devices
      summary: Gets specific classic devices
      operationId: getSpecificClassicDevicesUsingPOST
      parameters:
        - name: networkId
          in: path
          required: true
          schema:
            type: string
        - name: with
          in: query
          schema:
            type: array
            items:
              type: string
              enum:
                - tags
                - locationId
                - testResult
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DeviceNames'
        required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ClassicDevices'
      security:
        - api_token: []
  /api/networks/{networkId}/classic-devices?action=putBatch:
    post:
      tags:
        - Classic Devices
      summary: Adds or updates classic devices
      operationId: putClassicDevicesUsingPOST
      parameters:
        - name: networkId
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: array
              items:
                $ref: '#/components/schemas/NewClassicDevice'
        required: true
      responses:
        '204':
          description: No Content
          content: {}
      security:
        - api_token: []
  /api/networks/{networkId}/classic-devices/{deviceName}:
    get:
      tags:
        - Classic Devices
      summary: Gets a classic device
      operationId: getClassicDeviceUsingGET
      parameters:
        - name: networkId
          in: path
          required: true
          schema:
            type: string
        - name: deviceName
          in: path
          required: true
          schema:
            type: string
        - name: with
          in: query
          schema:
            type: array
            items:
              type: string
              enum:
                - tags
                - locationId
                - testResult
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ClassicDevice'
      security:
        - api_token: []
    put:
      tags:
        - Classic Devices
      summary: Adds or updates a classic device
      operationId: putClassicDeviceUsingPUT
      parameters:
        - name: networkId
          in: path
          required: true
          schema:
            type: string
        - name: deviceName
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/NewClassicDevice'
        required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ClassicDevice'
      security:
        - api_token: []
    delete:
      tags:
        - Classic Devices
      summary: Deletes a classic device
      operationId: deleteClassicDeviceUsingDELETE
      parameters:
        - name: networkId
          in: path
          required: true
          schema:
            type: string
        - name: deviceName
          in: path
          required: true
          schema:
            type: string
      responses:
        '204':
          description: No Content
          content: {}
      security:
        - api_token: []
    patch:
      tags:
        - Classic Devices
      summary: Updates a classic device
      description: >-
        All JSON properties in the request body are optional. Include only the
        properties you wish to change.
      operationId: patchClassicDeviceUsingPATCH
      parameters:
        - name: networkId
          in: path
          required: true
          schema:
            type: string
        - name: deviceName
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ClassicDevicePatch'
        required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ClassicDevice'
      security:
        - api_token: []
  /api/networks/{networkId}/cli-credentials:
    get:
      tags:
        - Credentials
      summary: Lists network device CLI credentials
      description: Substitutes a system-generated identifier for each sensitive `password`.
      operationId: getCliCredentialsUsingGET
      parameters:
        - name: networkId
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/StoredCliCredential'
      security:
        - api_token: []
    post:
      tags:
        - Credentials
      summary: Creates a network device CLI credential
      operationId: createCliCredentialUsingPOST
      parameters:
        - name: networkId
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/NewCliCredential'
        required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CliCredential'
      security:
        - api_token: []
    patch:
      tags:
        - Credentials
      summary: Creates network device CLI credentials
      description: >-
        The response contains the same credentials as the request, in the same
        order.
      operationId: createCliCredentialsUsingPATCH
      parameters:
        - name: networkId
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: array
              items:
                $ref: '#/components/schemas/NewCliCredential'
        required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/StoredCliCredential'
      security:
        - api_token: []
  /api/networks/{networkId}/cli-credentials/{credentialId}:
    get:
      tags:
        - Credentials
      summary: Gets a network device CLI credential
      description: Substitutes a system-generated identifier for the sensitive `password`.
      operationId: getCliCredentialUsingGET
      parameters:
        - name: networkId
          in: path
          required: true
          schema:
            type: string
        - name: credentialId
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StoredCliCredential'
      security:
        - api_token: []
    delete:
      tags:
        - Credentials
      summary: Deletes a network device CLI credential
      operationId: deleteCliCredentialUsingDELETE
      parameters:
        - name: networkId
          in: path
          required: true
          schema:
            type: string
        - name: credentialId
          in: path
          required: true
          schema:
            type: string
      responses:
        '204':
          description: No Content
          content: {}
      security:
        - api_token: []
    patch:
      tags:
        - Credentials
      summary: Updates a network device CLI credential
      description: >-
        All JSON properties in the request body are optional. Include only the
        properties you wish to change.
      operationId: patchCliCredentialUsingPATCH
      parameters:
        - name: networkId
          in: path
          required: true
          schema:
            type: string
        - name: credentialId
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CliCredentialUpdate'
        required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StoredCliCredential'
      security:
        - api_token: []
  /api/networks/{networkId}/http-credentials:
    get:
      tags:
        - Credentials
      summary: Lists network device HTTP credentials
      description: Substitutes a system-generated identifier for each sensitive `password`.
      operationId: getHttpCredentialsUsingGET
      parameters:
        - name: networkId
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/StoredHttpCredential'
      security:
        - api_token: []
    post:
      tags:
        - Credentials
      summary: Creates a network device HTTP credential
      operationId: createHttpCredentialUsingPOST
      parameters:
        - name: networkId
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/NewHttpCredential'
        required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HttpCredential'
      security:
        - api_token: []
    patch:
      tags:
        - Credentials
      summary: Creates network device HTTP credentials
      description: >-
        The response contains the same credentials as the request, in the same
        order.
      operationId: createHttpCredentialsUsingPATCH
      parameters:
        - name: networkId
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: array
              items:
                $ref: '#/components/schemas/NewHttpCredential'
        required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/StoredHttpCredential'
      security:
        - api_token: []
  /api/networks/{networkId}/http-credentials/{credentialId}:
    get:
      tags:
        - Credentials
      summary: Gets a network device HTTP credential
      description: Substitutes a system-generated identifier for the sensitive `password`.
      operationId: getHttpCredentialUsingGET
      parameters:
        - name: networkId
          in: path
          required: true
          schema:
            type: string
        - name: credentialId
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StoredHttpCredential'
      security:
        - api_token: []
    delete:
      tags:
        - Credentials
      summary: Deletes a network device HTTP credential
      operationId: deleteHttpCredentialUsingDELETE
      parameters:
        - name: networkId
          in: path
          required: true
          schema:
            type: string
        - name: credentialId
          in: path
          required: true
          schema:
            type: string
      responses:
        '204':
          description: No Content
          content: {}
      security:
        - api_token: []
    patch:
      tags:
        - Credentials
      summary: Updates a network device HTTP credential
      description: >-
        All JSON properties in the request body are optional. Include only the
        properties you wish to change.
      operationId: patchHttpCredentialUsingPATCH
      parameters:
        - name: networkId
          in: path
          required: true
          schema:
            type: string
        - name: credentialId
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/HttpCredentialUpdate'
        required: true
      responses:
        '204':
          description: No Content
          content: {}
      security:
        - api_token: []
  /api/version:
    get:
      tags:
        - Current Version
      summary: Gets the API’s current version
      operationId: getApiVersionUsingGET
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiVersion'
      security:
        - api_token: []
  /api/networks/{networkId}/device-tags:
    get:
      tags:
        - Device Tags
      summary: Gets all device tags
      operationId: getDeviceTagsUsingGET
      parameters:
        - name: networkId
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DeviceTags'
      security:
        - api_token: []
    post:
      tags:
        - Device Tags
      summary: Creates a device tag
      operationId: addDeviceTagUsingPOST
      parameters:
        - name: networkId
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DeviceTag'
        required: true
      responses:
        '201':
          description: Created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DeviceTag'
      security:
        - api_token: []
  /api/networks/{networkId}/device-tags?with=devices:
    get:
      tags:
        - Device Tags
      summary: Gets all tags with their devices
      description: >-
        If **snapshotId** is specified, the response will include device names
        that were associated with the tag(s) as of the identified network
        Snapshot.
      operationId: getDeviceTagsWithDevicesUsingGET
      parameters:
        - name: networkId
          in: path
          required: true
          schema:
            type: string
        - name: snapshotId
          in: query
          schema:
            type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DeviceTagsWithDevices'
      security:
        - api_token: []
  /api/networks/{networkId}/device-tags?action=addBatch:
    post:
      tags:
        - Device Tags
      summary: Creates device tags
      description: This operation is for creating multiple new device tags all at once.
      operationId: addDeviceTagsBatchUsingPOST
      parameters:
        - name: networkId
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: array
              items:
                $ref: '#/components/schemas/DeviceTag'
        required: true
      responses:
        '204':
          description: No Content
          content: {}
      security:
        - api_token: []
  /api/networks/{networkId}/device-tags?action=addBatchTo:
    post:
      tags:
        - Device Tags
      summary: Adds tags to devices
      description: "If **snapshotId** is specified, the change will take effect starting from the identified network Snapshot, and `devices` in the request body must be the names of devices and/or endpoints in the Snapshot. Otherwise, `devices` must be the names of devices and/or endpoints configured as _collection\_sources_, and the change will take effect in the network’s next Snapshot.\n\nTo skip validation of `devices`, set the query parameter **validateDevices** to **false** in the URL."
      operationId: addDeviceTagsToDevicesUsingPOST
      parameters:
        - name: networkId
          in: path
          required: true
          schema:
            type: string
        - name: snapshotId
          in: query
          schema:
            type: string
        - name: validateDevices
          in: query
          schema:
            type: boolean
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DevicesAndTags'
        required: true
      responses:
        '204':
          description: No Content
          content: {}
      security:
        - api_token: []
  /api/networks/{networkId}/device-tags?action=removeAllFrom:
    post:
      tags:
        - Device Tags
      summary: Removes all tags from devices
      description: "If **snapshotId** is specified, the change will take effect starting from the identified network Snapshot, and `devices` in the request body must be the names of devices and/or endpoints in the Snapshot. Otherwise, `devices` must be the names of devices and/or endpoints configured as _collection\_sources_, and the change will take effect in the network’s next Snapshot.\n\nTo skip validation of `devices`, set the query parameter **validateDevices** to **false** in the URL."
      operationId: removeAllDeviceTagsFromDevicesUsingPOST
      parameters:
        - name: networkId
          in: path
          required: true
          schema:
            type: string
        - name: snapshotId
          in: query
          schema:
            type: string
        - name: validateDevices
          in: query
          schema:
            type: boolean
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DeviceSet'
        required: true
      responses:
        '204':
          description: No Content
          content: {}
      security:
        - api_token: []
  /api/networks/{networkId}/device-tags?action=removeBatchFrom:
    post:
      tags:
        - Device Tags
      summary: Removes tags from devices
      description: "If **snapshotId** is specified, the change will take effect starting from the identified network Snapshot, and `devices` in the request body must be the names of devices and/or endpoints in the Snapshot. Otherwise, `devices` must be the names of devices and/or endpoints configured as _collection\_sources_, and the change will take effect in the network’s next Snapshot.\n\nTo skip validation of `devices`, set the query parameter **validateDevices** to **false** in the URL."
      operationId: removeDeviceTagsFromDevicesUsingPOST
      parameters:
        - name: networkId
          in: path
          required: true
          schema:
            type: string
        - name: snapshotId
          in: query
          schema:
            type: string
        - name: validateDevices
          in: query
          schema:
            type: boolean
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DevicesAndTags'
        required: true
      responses:
        '204':
          description: No Content
          content: {}
      security:
        - api_token: []
  /api/networks/{networkId}/device-tags?action=replaceAllFor:
    post:
      tags:
        - Device Tags
      summary: Replaces all tags for devices
      description: "If **snapshotId** is specified, the change will take effect starting from the identified network Snapshot, and `devices` in the request body must be the names of devices and/or endpoints in the Snapshot. Otherwise, `devices` must be the names of devices and/or endpoints configured as _collection\_sources_, and the change will take effect in the network’s next Snapshot.\n\nTo skip validation of `devices`, set the query parameter **validateDevices** to **false** in the URL."
      operationId: replaceAllDeviceTagsForDevicesUsingPOST
      parameters:
        - name: networkId
          in: path
          required: true
          schema:
            type: string
        - name: snapshotId
          in: query
          schema:
            type: string
        - name: validateDevices
          in: query
          schema:
            type: boolean
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DevicesAndTags'
        required: true
      responses:
        '204':
          description: No Content
          content: {}
      security:
        - api_token: []
  /api/networks/{networkId}/device-tags/{tagName}:
    get:
      tags:
        - Device Tags
      summary: Gets a device tag
      operationId: getDeviceTagUsingGET
      parameters:
        - name: networkId
          in: path
          required: true
          schema:
            type: string
        - name: tagName
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DeviceTag'
      security:
        - api_token: []
    delete:
      tags:
        - Device Tags
      summary: Deletes a device tag
      description: >-
        **Warning:** This operation deletes the device tag from the network
        completely. It removes the tag from all devices and endpoints in all the
        network’s Snapshots.
      operationId: deleteDeviceTagUsingDELETE
      parameters:
        - name: networkId
          in: path
          required: true
          schema:
            type: string
        - name: tagName
          in: path
          required: true
          schema:
            type: string
      responses:
        '204':
          description: No Content
          content: {}
      security:
        - api_token: []
    patch:
      tags:
        - Device Tags
      summary: Updates a device tag
      description: >-
        All JSON properties in the request body are optional. Include only the
        properties you wish to change.
      operationId: updateDeviceTagUsingPATCH
      parameters:
        - name: networkId
          in: path
          required: true
          schema:
            type: string
        - name: tagName
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DeviceTagPatch'
        required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DeviceTag'
      security:
        - api_token: []
  /api/networks/{networkId}/device-tags/{tagName}?with=devices:
    get:
      tags:
        - Device Tags
      summary: Gets a tag with its devices
      description: >-
        If **snapshotId** is specified, the response will include device names
        that were associated with the tag(s) as of the identified network
        Snapshot.
      operationId: getDeviceTagWithDevicesUsingGET
      parameters:
        - name: networkId
          in: path
          required: true
          schema:
            type: string
        - name: tagName
          in: path
          required: true
          schema:
            type: string
        - name: snapshotId
          in: query
          schema:
            type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DeviceTagWithDevices'
      security:
        - api_token: []
  /api/networks/{networkId}/device-tags/{tagName}?action=addTo:
    post:
      tags:
        - Device Tags
      summary: Adds a tag to devices
      description: "If **snapshotId** is specified, the change will take effect starting from the identified network Snapshot, and `devices` in the request body must be the names of devices and/or endpoints in the Snapshot. Otherwise, `devices` must be the names of devices and/or endpoints configured as _collection\_sources_, and the change will take effect in the network’s next Snapshot.\n\nTo skip validation of `devices`, set the query parameter **validateDevices** to **false** in the URL."
      operationId: addDeviceTagToDevicesUsingPOST
      parameters:
        - name: networkId
          in: path
          required: true
          schema:
            type: string
        - name: tagName
          in: path
          required: true
          schema:
            type: string
        - name: snapshotId
          in: query
          schema:
            type: string
        - name: validateDevices
          in: query
          schema:
            type: boolean
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DeviceSet'
        required: true
      responses:
        '204':
          description: No Content
          content: {}
      security:
        - api_token: []
  /api/networks/{networkId}/device-tags/{tagName}?action=removeFrom:
    post:
      tags:
        - Device Tags
      summary: Removes a tag from devices
      description: "If **snapshotId** is specified, the change will take effect starting from the identified network Snapshot, and `devices` in the request body must be the names of devices and/or endpoints in the Snapshot. Otherwise, `devices` must be the names of devices and/or endpoints configured as _collection\_sources_, and the change will take effect in the network’s next Snapshot.\n\nTo skip validation of `devices`, set the query parameter **validateDevices** to **false** in the URL."
      operationId: removeDeviceTagFromDevicesUsingPOST
      parameters:
        - name: networkId
          in: path
          required: true
          schema:
            type: string
        - name: tagName
          in: path
          required: true
          schema:
            type: string
        - name: snapshotId
          in: query
          schema:
            type: string
        - name: validateDevices
          in: query
          schema:
            type: boolean
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DeviceSet'
        required: true
      responses:
        '204':
          description: No Content
          content: {}
      security:
        - api_token: []
  /api/networks/{networkId}/jumpServers:
    get:
      tags:
        - Jump Servers
      summary: Lists a network’s jump servers
      description: >-
        Substitutes a system-generated identifier for each sensitive `password`
        and `sshKey`.
      operationId: getJumpServersUsingGET
      parameters:
        - name: networkId
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/StoredJumpServer'
      security:
        - api_token: []
    post:
      tags:
        - Jump Servers
      summary: Creates a jump server
      operationId: createJumpServerUsingPOST
      parameters:
        - name: networkId
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/NewJumpServer'
        required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/JumpServer'
      security:
        - api_token: []
  /api/networks/{networkId}/jumpServers/{jumpServerId}:
    delete:
      tags:
        - Jump Servers
      summary: Deletes a jump server
      operationId: deleteJumpServerUsingDELETE
      parameters:
        - name: networkId
          in: path
          required: true
          schema:
            type: string
        - name: jumpServerId
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
      security:
        - api_token: []
    patch:
      tags:
        - Jump Servers
      summary: Updates a jump server
      description: >-
        All JSON properties in the request body are optional. Include only the
        properties you wish to change.
      operationId: editJumpServerUsingPATCH
      parameters:
        - name: networkId
          in: path
          required: true
          schema:
            type: string
        - name: jumpServerId
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/JumpServerUpdate'
        required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
      security:
        - api_token: []
  /api/networks/{networkId}/cancelcollection:
    post:
      tags:
        - Network Collection
      summary: Cancels an in-progress network collection
      operationId: cancelCollectUsingPOST
      parameters:
        - name: networkId
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
      security:
        - api_token: []
  /api/networks/{networkId}/collection-schedules:
    get:
      tags:
        - Network Collection
      summary: Gets a network’s collection schedules
      operationId: getCollectionSchedulesUsingGET
      parameters:
        - name: networkId
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CollectionSchedules'
      security:
        - api_token: []
    post:
      tags:
        - Network Collection
      summary: Adds a network collection schedule
      operationId: addCollectionScheduleUsingPOST
      parameters:
        - name: networkId
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CollectionScheduleDefinition'
        required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CollectionSchedule'
      security:
        - api_token: []
  /api/networks/{networkId}/collection-schedules/{scheduleId}:
    get:
      tags:
        - Network Collection
      summary: Gets a network collection schedule
      operationId: getCollectionScheduleUsingGET
      parameters:
        - name: networkId
          in: path
          required: true
          schema:
            type: string
        - name: scheduleId
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CollectionSchedule'
      security:
        - api_token: []
    put:
      tags:
        - Network Collection
      summary: Replaces a network collection schedule
      operationId: replaceCollectionScheduleUsingPUT
      parameters:
        - name: networkId
          in: path
          required: true
          schema:
            type: string
        - name: scheduleId
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CollectionSchedule'
        required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
      security:
        - api_token: []
    delete:
      tags:
        - Network Collection
      summary: Deletes a network collection schedule
      operationId: deleteCollectionScheduleUsingDELETE
      parameters:
        - name: networkId
          in: path
          required: true
          schema:
            type: string
        - name: scheduleId
          in: path
          required: true
          schema:
            type: string
      responses:
        '204':
          description: No Content
          content: {}
      security:
        - api_token: []
  /api/networks/{networkId}/collector/status:
    get:
      tags:
        - Network Collection
      summary: Gets the status of a network’s collector
      operationId: getCollectorStateUsingGET
      parameters:
        - name: networkId
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CollectorState'
      security:
        - api_token: []
  /api/networks/{networkId}/startcollection:
    post:
      tags:
        - Network Collection
      summary: Triggers a network collection
      operationId: collectUsingPOST
      parameters:
        - name: networkId
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
      security:
        - api_token: []
  /api/networks/{networkId}/devices:
    get:
      tags:
        - Network Devices
      summary: Gets a network’s devices
      description: >-
        All glob filter parameters ignore case and support [the common glob
        wildcards](https://en.wikipedia.org/wiki/Glob_(programming)#Syntax)
        (`*`, `?`, `[abc]`, `[a-z]`).
      operationId: getDevicesUsingGET
      parameters:
        - name: networkId
          in: path
          required: true
          schema:
            type: string
        - name: name
          in: query
          description: '`"name"` glob filter'
          schema:
            type: string
        - name: displayName
          in: query
          description: >-
            `"displayName"` glob filter. Use `?displayName=` to request devices
            that have no `"displayName"` property (because it’s the same as
            `"name"`).
          schema:
            type: string
        - name: sourceName
          in: query
          description: >-
            `"sourceName"` glob filter. Use `?sourceName=` to request devices
            that have no `"sourceName"` property (because it’s the same as
            `"name"`).
          schema:
            type: string
        - name: type
          in: query
          description: '`"type"` glob filter'
          schema:
            type: string
        - name: vendor
          in: query
          description: '`"vendor"` glob filter'
          schema:
            type: string
        - name: model
          in: query
          description: >-
            `"model"` glob filter. Use `?model=` to request devices with no
            `"model"` property.
          schema:
            type: string
        - name: platform
          in: query
          description: '`"platform"` glob filter'
          schema:
            type: string
        - name: osVersion
          in: query
          description: >-
            `"osVersion"` glob filter. Use `?osVersion=` to request devices with
            no `"osVersion"` property.
          schema:
            type: string
        - name: collectionError
          in: query
          description: >-
            `"collectionError"` glob filter. Use `?collectionError=` to request
            devices with no `"collectionError"` property (because collection
            succeeded). Use `?collectionError=*` to request devices that had a
            collection error of any kind.
          schema:
            type: string
        - name: processingError
          in: query
          description: >-
            `"processingError"` glob filter. Use `?processingError=` to request
            devices with no `"processingError"` property (because processing
            succeeded). Use `?processingError=*` to request devices that had a
            processing error of any kind.
          schema:
            type: string
        - name: skip
          in: query
          description: Number of devices to skip (for paging)
          schema:
            type: integer
            format: int32
            default: 0
        - name: limit
          in: query
          description: Maximum number of devices desired
          schema:
            type: integer
            format: int32
        - name: with
          in: query
          description: Optional device properties to include
          schema:
            type: array
            items:
              type: string
              const: tags
        - name: snapshotId
          in: query
          description: >-
            An optional Snapshot id. If omitted, the network’s latest processed
            Snapshot is used.
          schema:
            type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Device'
        '409':
          description: >-
            The system is currently processing this Snapshot.


            Note: GET /networks/{networkId}/snapshots/latestProcessed can be
            used to determine when processing of the latest Snapshot is done or
            to identify an alternate Snapshot that has already been processed.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorInfo'
      security:
        - api_token: []
  /api/networks/{networkId}/devices/{deviceName}:
    get:
      tags:
        - Network Devices
      summary: Gets a network device
      operationId: getOneDeviceUsingGET
      parameters:
        - name: networkId
          in: path
          required: true
          schema:
            type: string
        - name: deviceName
          in: path
          required: true
          schema:
            type: string
        - name: with
          in: query
          description: Optional device properties to include
          schema:
            type: array
            items:
              type: string
              const: tags
        - name: snapshotId
          in: query
          description: >-
            An optional Snapshot id. If omitted, the network’s latest processed
            Snapshot is used.
          schema:
            type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Device'
        '409':
          description: >-
            The system is currently processing this Snapshot.


            Note: GET /networks/{networkId}/snapshots/latestProcessed can be
            used to determine when processing of the latest Snapshot is done or
            to identify an alternate Snapshot that has already been processed.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorInfo'
      security:
        - api_token: []
  /api/networks/{networkId}/devices/{deviceName}/files:
    get:
      tags:
        - Network Devices
      summary: Lists a device’s data files
      operationId: getDeviceFilesUsingGET
      parameters:
        - name: networkId
          in: path
          required: true
          schema:
            type: string
        - name: deviceName
          in: path
          required: true
          schema:
            type: string
        - name: snapshotId
          in: query
          description: >-
            An optional Snapshot id. If omitted, the network’s latest processed
            Snapshot is used.
          schema:
            type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DeviceFiles'
        '409':
          description: >-
            The system is currently processing this Snapshot.


            Note: GET /networks/{networkId}/snapshots/latestProcessed can be
            used to determine when processing of the latest Snapshot is done or
            to identify an alternate Snapshot that has already been processed.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorInfo'
      security:
        - api_token: []
  /api/networks/{networkId}/devices/{deviceName}/files/{fileName}:
    get:
      tags:
        - Network Devices
      summary: Gets device data file content
      description: >-
        Most device data files are text files. Some are binary. A file’s
        extension indicates its type.


        For convenience, the .txt file extension is optional (can be omitted).
      operationId: getDeviceFileContentUsingGET
      parameters:
        - name: networkId
          in: path
          required: true
          schema:
            type: string
        - name: deviceName
          in: path
          required: true
          schema:
            type: string
        - name: fileName
          in: path
          required: true
          schema:
            type: string
        - name: snapshotId
          in: query
          description: >-
            An optional Snapshot id. If omitted, the network’s latest processed
            Snapshot is used.
          schema:
            type: string
      responses:
        '200':
          description: OK
          content:
            text/plain;charset=utf-8:
              schema:
                type: string
                format: byte
            application/octet-stream:
              schema:
                type: string
                format: byte
        '409':
          description: >-
            The system is currently processing this Snapshot.


            Note: GET /networks/{networkId}/snapshots/latestProcessed can be
            used to determine when processing of the latest Snapshot is done or
            to identify an alternate Snapshot that has already been processed.
          content:
            text/plain;charset=utf-8:
              schema:
                $ref: '#/components/schemas/ErrorInfo'
            application/octet-stream:
              schema:
                $ref: '#/components/schemas/ErrorInfo'
      security:
        - api_token: []
  /api/networks/{networkId}/missing-devices:
    get:
      tags:
        - Network Devices
      summary: Gets a network’s missing devices
      description: >-
        Returns devices that are listed as CDP, LLDP, iBGP or OSPF neighbors of
        modeled devices but that aren’t yet included in the network model.
      operationId: getMissingDevicesUsingGET
      parameters:
        - name: networkId
          in: path
          required: true
          schema:
            type: string
        - name: snapshotId
          in: query
          description: >-
            An optional Snapshot id. If omitted, the network’s latest processed
            Snapshot is used.
          schema:
            type: string
      responses:
        '200':
          description: >-
            OK. Devices are sorted by number of neighbors (most first) and
            secondarily by name.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MissingDevices'
        '409':
          description: >-
            The system is currently processing this Snapshot.


            Note: GET /networks/{networkId}/snapshots/latestProcessed can be
            used to determine when processing of the latest Snapshot is done or
            to identify an alternate Snapshot that has already been processed.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorInfo'
      security:
        - api_token: []
  /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'
      security:
        - api_token: []
  /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'
      security:
        - api_token: []
  /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'
      security:
        - api_token: []
  /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'
      security:
        - api_token: []
  /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'
      security:
        - api_token: []
  /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'
      security:
        - api_token: []
  /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'
      security:
        - api_token: []
  /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'
      security:
        - api_token: []
    delete:
      tags:
        - Network Endpoints
      summary: Deletes an endpoint profile
      operationId: deleteEndpointProfileUsingDELETE
      parameters:
        - name: profileId
          in: path
          required: true
          schema:
            type: string
      responses:
        '204':
          description: No Content
          content: {}
      security:
        - api_token: []
  /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'
      security:
        - api_token: []
    patch:
      tags:
        - Network Endpoints
      summary: Updates specific network endpoints
      description: >-
        All JSON properties in the `update` object are optional. Include only
        the properties you wish 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: {}
      security:
        - api_token: []
  /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'
      security:
        - api_token: []
  /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'
      security:
        - api_token: []
  /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'
      security:
        - api_token: []
  /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: {}
      security:
        - api_token: []
  /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: {}
      security:
        - api_token: []
  /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: {}
      security:
        - api_token: []
  /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: {}
      security:
        - api_token: []
  /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'
      security:
        - api_token: []
    delete:
      tags:
        - Network Endpoints
      summary: Deletes a network endpoint
      operationId: deleteNetworkEndpointUsingDELETE
      parameters:
        - name: networkId
          in: path
          required: true
          schema:
            type: string
        - name: endpointName
          in: path
          required: true
          schema:
            type: string
      responses:
        '204':
          description: No Content
          content: {}
      security:
        - api_token: []
  /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'
      security:
        - api_token: []
  /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'
      security:
        - api_token: []
  /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'
      security:
        - api_token: []
  /api/networks/{networkId}/atlas:
    get:
      tags:
        - Network Locations
      summary: Gets device locations
      description: >-
        The response is a JSON object that maps device names to their location
        ids.


        Sample response: `{"atl-edge-fw01": "2", "ny-edge-fw2": "1"}`
      operationId: getAtlasUsingGET
      parameters:
        - name: networkId
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                additionalProperties:
                  type: string
      security:
        - api_token: []
    patch:
      tags:
        - Network Locations
      summary: Updates device locations
      description: >-
        The request is a JSON object that maps device names to their new
        location ids.


        Sample request: `{"atl-edge-fw01": "2", "ny-edge-fw2": "1"}`
      operationId: updateAtlasUsingPATCH
      parameters:
        - name: networkId
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              additionalProperties:
                type: string
        required: true
      responses:
        '204':
          description: No Content
          content: {}
      security:
        - api_token: []
  /api/networks/{networkId}/locations:
    get:
      tags:
        - Network Locations
      summary: Gets a network’s locations
      operationId: getLocationsUsingGET
      parameters:
        - name: networkId
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Location'
      security:
        - api_token: []
    post:
      tags:
        - Network Locations
      summary: Creates a network location
      operationId: addLocationUsingPOST
      parameters:
        - name: networkId
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/NewLocation'
        required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Location'
      security:
        - api_token: []
    put:
      tags:
        - Network Locations
      summary: Creates network locations
      description: >-
        Creates multiple locations at once. Can be helpful when first setting up
        a network.


        Fails (as a precautionary measure) with 409 Conflict if the network
        already has any network locations.
      operationId: putLocationsUsingPUT
      parameters:
        - name: networkId
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: array
              items:
                $ref: '#/components/schemas/Location'
        required: true
      responses:
        '204':
          description: No Content
          content: {}
        '409':
          description: >-
            Occurs (as a precautionary measure) if the network already has any
            network locations.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorInfo'
      security:
        - api_token: []
    patch:
      tags:
        - Network Locations
      summary: Creates or updates network locations
      description: >-
        Any patches that specify an existing location’s `id` will update the
        existing location. Any other patches will each create a new location.
        Patches are applied sequentially.
      operationId: patchLocationsUsingPATCH
      parameters:
        - name: networkId
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: array
              items:
                $ref: '#/components/schemas/LocationBulkPatch'
        required: true
      responses:
        '204':
          description: No Content
          content: {}
      security:
        - api_token: []
  /api/networks/{networkId}/locations/{locationId}:
    get:
      tags:
        - Network Locations
      summary: Gets a network location
      operationId: getLocationUsingGET
      parameters:
        - name: networkId
          in: path
          required: true
          schema:
            type: string
        - name: locationId
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Location'
      security:
        - api_token: []
    delete:
      tags:
        - Network Locations
      summary: Deletes a network location
      description: >-
        When a location with devices is deleted, all of its devices will be
        unassigned.
      operationId: deleteLocationUsingDELETE
      parameters:
        - name: networkId
          in: path
          required: true
          schema:
            type: string
        - name: locationId
          in: path
          required: true
          schema:
            type: string
      responses:
        '204':
          description: No Content
          content: {}
      security:
        - api_token: []
    patch:
      tags:
        - Network Locations
      summary: Updates a network location
      description: >-
        All JSON properties in the request body are optional. Include only the
        properties you wish to change.
      operationId: patchLocationUsingPATCH
      parameters:
        - name: networkId
          in: path
          required: true
          schema:
            type: string
        - name: locationId
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/LocationPatch'
        required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Location'
      security:
        - api_token: []
  /api/networks/{networkId}/locations/{locationId}/clusters:
    get:
      tags:
        - Network Locations
      summary: Gets the device clusters at a location
      operationId: getDeviceClustersUsingGET
      parameters:
        - name: networkId
          in: path
          required: true
          schema:
            type: string
        - name: locationId
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/DeviceCluster'
      security:
        - api_token: []
    post:
      tags:
        - Network Locations
      summary: Creates a device cluster at a location
      operationId: addDeviceClusterUsingPOST
      parameters:
        - name: networkId
          in: path
          required: true
          schema:
            type: string
        - name: locationId
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DeviceCluster'
        required: true
      responses:
        '204':
          description: No Content
          content: {}
      security:
        - api_token: []
    put:
      tags:
        - Network Locations
      summary: Replaces all device clusters at a location
      operationId: putDeviceClustersUsingPUT
      parameters:
        - name: networkId
          in: path
          required: true
          schema:
            type: string
        - name: locationId
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: array
              items:
                $ref: '#/components/schemas/DeviceCluster'
        required: true
      responses:
        '204':
          description: No Content
          content: {}
      security:
        - api_token: []
  /api/networks/{networkId}/locations/{locationId}/clusters/{clusterName}:
    get:
      tags:
        - Network Locations
      summary: Gets a device cluster
      operationId: getDeviceClusterUsingGET
      parameters:
        - name: networkId
          in: path
          required: true
          schema:
            type: string
        - name: locationId
          in: path
          required: true
          schema:
            type: string
        - name: clusterName
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DeviceCluster'
      security:
        - api_token: []
    delete:
      tags:
        - Network Locations
      summary: Deletes a device cluster
      operationId: deleteDeviceClusterUsingDELETE
      parameters:
        - name: networkId
          in: path
          required: true
          schema:
            type: string
        - name: locationId
          in: path
          required: true
          schema:
            type: string
        - name: clusterName
          in: path
          required: true
          schema:
            type: string
      responses:
        '204':
          description: No Content
          content: {}
      security:
        - api_token: []
    patch:
      tags:
        - Network Locations
      summary: Updates a device cluster
      description: >-
        All JSON properties in the request body are optional. Include only the
        properties you wish to change.
      operationId: updateDeviceClusterUsingPATCH
      parameters:
        - name: networkId
          in: path
          required: true
          schema:
            type: string
        - name: locationId
          in: path
          required: true
          schema:
            type: string
        - name: clusterName
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DeviceClusterUpdate'
        required: true
      responses:
        '204':
          description: No Content
          content: {}
      security:
        - api_token: []
  /api/networks/{networkId}/snapshots:
    get:
      tags:
        - Network Snapshots
      summary: Lists all Snapshots
      operationId: listNetworkSnapshotsUsingGET
      parameters:
        - name: networkId
          in: path
          required: true
          schema:
            type: string
        - name: state
          in: query
          description: List only Snapshots in this state.
          schema:
            $ref: '#/components/schemas/SnapshotState'
        - name: minSuccessfulDevices
          in: query
          description: >-
            List only Snapshots with at least this many successfully modeled
            devices.
          schema:
            type: integer
            format: int32
        - name: minSuccessfulDevicePct
          in: query
          description: >-
            List only Snapshots with at least this percentage of devices
            successfully modeled.
          schema:
            type: number
            format: double
        - name: maxCollectionFailureDevices
          in: query
          description: >-
            List only Snapshots with no more than this many devices from which
            collection has failed.
          schema:
            type: integer
            format: int32
        - name: maxCollectionFailureDevicePct
          in: query
          description: >-
            List only Snapshots with no more than this percentage of devices
            from which collection has failed.
          schema:
            type: number
            format: double
        - name: maxParsingFailureDevices
          in: query
          description: >-
            List only Snapshots with no more than this many devices for which
            parsing of collected data has failed.
          schema:
            type: integer
            format: int32
        - name: maxParsingFailureDevicePct
          in: query
          description: >-
            List only Snapshots with no more than this percentage of devices for
            which parsing of collected data has failed.
          schema:
            type: number
            format: double
        - name: limit
          in: query
          description: Maximum number of Snapshots desired
          schema:
            type: integer
            format: int32
        - name: includeArchived
          in: query
          description: Also include archived snapshots. Defaults to false if not provided.
          schema:
            type: boolean
            default: false
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NetworkSnapshots'
      security:
        - api_token: []
    post:
      tags:
        - Network Snapshots
      summary: Imports a Snapshot
      description: >-
        Imports a network Snapshot that was previously exported as a .zip file.
        If multiple Snapshot .zip files are uploaded in a single request, they
        will be merged. They must not have any devices in common.
      operationId: createSnapshotUsingPOST
      parameters:
        - name: networkId
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          multipart/form-data:
            schema:
              type: object
              required:
                - file
              properties:
                file:
                  type: array
                  items:
                    type: string
                    format: binary
                note:
                  type: string
        required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SnapshotInfo'
      security:
        - api_token: []
  /api/networks/{networkId}/snapshots/latestProcessed:
    get:
      tags:
        - Network Snapshots
      summary: Returns the latest processed Snapshot
      description: >-
        Returns the latest processed Snapshot (the most recent one that's
        currently prepared for [path searches](#path-search) and [new
        checks](#checks)).


        Triggers processing of the latest Snapshot if it's not already underway
        and the network has no processed Snapshots.
      operationId: getLatestProcessedSnapshotUsingGET
      parameters:
        - name: networkId
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Processing is complete for the identified Snapshot.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SnapshotInfo'
        '404':
          description: The network has no Snapshots.
          content: {}
        '409':
          description: >-
            None of the Snapshots in the network are processed. Processing of
            the latest Snapshot has begun.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorInfo'
      security:
        - api_token: []
  /api/snapshots/{snapshotId}:
    get:
      tags:
        - Network Snapshots
      summary: Exports a Snapshot
      description: Exports a network Snapshot as a .zip file.
      operationId: zipSnapshotUsingGET
      parameters:
        - name: snapshotId
          in: path
          required: true
          schema:
            type: string
        - name: only
          in: query
          description: Use `?only=CONFIG` to include only device configuration files.
          schema:
            type: string
            const: CONFIG
      responses:
        '200':
          description: OK
          content: {}
      security:
        - api_token: []
    post:
      tags:
        - Network Snapshots
      summary: Exports a Snapshot subset, optionally obfuscated
      description: >-
        Exports a network Snapshot as a .zip file, optionally limiting which
        devices are included and optionally
        [obfuscating](/docs/administration/system/obfuscate-snapshot/) sensitive
        data.


        To limit which devices are included, specify either `"includeDevices"`
        or `"excludeDevices"`. To obfuscate, specify an `"obfuscationKey"`.
      operationId: customZipSnapshotUsingPOST
      parameters:
        - name: snapshotId
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SnapshotExportParams'
        required: true
      responses:
        '200':
          description: OK
          content: {}
      security:
        - api_token: []
    delete:
      tags:
        - Network Snapshots
      summary: Deletes a Snapshot
      operationId: deleteSnapshotUsingDELETE
      parameters:
        - name: snapshotId
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
      security:
        - api_token: []
  /api/snapshots/{snapshotId}/metrics:
    get:
      tags:
        - Network Snapshots
      summary: Returns the metrics of a Snapshot
      description: Returns collection and processing health metrics of a Snapshot.
      operationId: getSnapshotMetricsUsingGET
      parameters:
        - name: snapshotId
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Successfully retrieved metrics for the Snapshot.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SnapshotMetrics'
        '404':
          description: >-
            The Snapshot was not found or its metrics were not found; the health
            metrics will be recomputed if the Snapshot is reprocessed.
          content: {}
      security:
        - api_token: []
  /api/snapshots/{snapshotId}/topology:
    get:
      tags:
        - Network Topology
      summary: Gets the network topology
      description: >-
        The links in the response are directed, so they generally appear
        twice—once for each direction.
      operationId: getTopologyUsingGET
      parameters:
        - name: snapshotId
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/TopologyLink'
        '409':
          description: >-
            The system is currently processing this Snapshot.


            Note: GET /networks/{networkId}/snapshots/latestProcessed can be
            used to determine when processing of the latest Snapshot is done or
            to identify an alternate Snapshot that has already been processed.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorInfo'
      security:
        - api_token: []
  /api/snapshots/{snapshotId}/topology/overrides:
    get:
      tags:
        - Network Topology
      summary: Gets the topology overrides
      operationId: getSnapshotTopoOverridesUsingGET
      parameters:
        - name: snapshotId
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LinkOverrides'
        '409':
          description: >-
            The system is currently processing this Snapshot.


            Note: GET /networks/{networkId}/snapshots/latestProcessed can be
            used to determine when processing of the latest Snapshot is done or
            to identify an alternate Snapshot that has already been processed.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorInfo'
      security:
        - api_token: []
    post:
      tags:
        - Network Topology
      summary: Edits the topology overrides
      operationId: postSnapshotTopoOverridesUsingPOST
      parameters:
        - name: snapshotId
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/LinkOverridesEdit'
        required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
        '409':
          description: >-
            The system is currently processing this Snapshot.


            Note: GET /networks/{networkId}/snapshots/latestProcessed can be
            used to determine when processing of the latest Snapshot is done or
            to identify an alternate Snapshot that has already been processed.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorInfo'
      security:
        - api_token: []
    put:
      tags:
        - Network Topology
      summary: Sets the topology overrides
      description: Replaces any topology overrides previously saved for the Snapshot.
      operationId: putSnapshotTopoOverridesUsingPUT
      parameters:
        - name: snapshotId
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/LinkOverrides'
        required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
        '409':
          description: >-
            The system is currently processing this Snapshot.


            Note: GET /networks/{networkId}/snapshots/latestProcessed can be
            used to determine when processing of the latest Snapshot is done or
            to identify an alternate Snapshot that has already been processed.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorInfo'
      security:
        - api_token: []
  /api/networks:
    get:
      tags:
        - Networks
      summary: Lists all networks
      operationId: getNetworksUsingGET
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Network'
      security:
        - api_token: []
    post:
      tags:
        - Networks
      summary: Creates a network
      operationId: createNetworkUsingPOST
      parameters:
        - name: name
          in: query
          required: true
          schema:
            type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Network'
      security:
        - api_token: []
  /api/networks/{networkId}:
    delete:
      tags:
        - Networks
      summary: Deletes a network
      operationId: deleteNetworkUsingDELETE
      parameters:
        - name: networkId
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Network'
      security:
        - api_token: []
    patch:
      tags:
        - Networks
      summary: Updates a network
      description: >-
        All JSON properties in the request body are optional. Include only the
        properties you wish to change.
      operationId: updateNetworkUsingPATCH
      parameters:
        - name: networkId
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/NetworkUpdate'
        required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Network'
      security:
        - api_token: []
  /api/networks/{networkId}/workspaces:
    post:
      tags:
        - Networks
      summary: Creates a Workspace network
      description: >-
        A <a class="fn-external-link" target="_blank"
        href="/docs/enterprise/applications/change-mgmt/workspace_network/">Workspace
        network</a> is a network that collects from only a subset of the devices
        in a large “parent” network. This kind of network can be useful in
        time-sensitive situations like change management windows.
      operationId: createWorkspaceNetworkUsingPOST
      parameters:
        - name: networkId
          in: path
          description: The id of the parent network
          required: true
          schema:
            type: string
      requestBody:
        description: Information about the new Workspace network
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateWorkspaceNetworkRequest'
        required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Network'
      security:
        - api_token: []
  /api/nqe:
    post:
      tags:
        - NQE
      summary: Runs an NQE query on a Snapshot.
      operationId: runNqeQueryUsingPOST
      parameters:
        - name: networkId
          in: query
          description: >-
            The ID of the Network to query. Required unless the `snapshotId`
            parameter is provided.
          schema:
            type: string
        - name: snapshotId
          in: query
          description: >-
            An optional Snapshot id. If omitted, the network’s latest processed
            Snapshot is used.
          schema:
            type: string
      requestBody:
        description: >
          Each property in the example request body is explained here. To see a
          detailed explanation of all properties allowed in the request body,
          switch from the "Example Value" tab to the "Schema" tab.


          - The `query` property contains query source code. Use this to run a
          query directly.

          - The `queryId` property contains the Query ID of a committed query in
          NQE Library. Use `queryId` to run a query identified by its Query ID.

          - The `commitId` property contains a Commit ID of the query identified
          by the `queryId` property. Use `commitId` to run a specific version of
          a committed query.

          - The `queryOptions` property contains refinements of the result set
          and/or specifies the JSON format.
              - The `offset` property specifies the starting row to include in the response. For example, an offset of 200 would return rows starting from the 200th row. If not specified, an `offset` of 0 will be used.
              - The `limit` property specifies the maximum number of rows to include in the response. For example, a limit of 1,000 indicates that up to 1,000 rows starting from the given offset should be included in the response. If not set, a `limit` of 1,000 will be used. The maximum value for `limit` is 10,000.
              - The `sortBy` property specifies which column to sort by. It can be omitted.
              - The `columnFilters` property specifies a collection of conditions on column values. The response will only include rows satisfying all specified column filters.
              - In the sample below, up to 100 rows are requested, starting from row 20, from the result set consisting of all the rows, sorted by the "deviceName" column in ascending order and limited to those rows whose "deviceName" field contains "ATL", rendered with JSON arrays and objects instead of strings.
          - The `parameters` property contains a JSON object providing the
          values for the parameters to use while executing the query for this
          request. The provided parameter values must match the parameter types
          declared in the NQE query. This property can be omitted or the empty
          object if the query has no declared parameters.
              - In the sample below, values for "mtuThreshold" and "ntpServers" are specified. The query must define parameters "mtuThreshold" of type `Integer` and "ntpServers" of type `List<IpAddress>` for these values to be valid.

          Note that the sample JSON object contains both the `query` and
          `queryId` properties and therefore is NOT a legal request. If you use
          this example for testing, make sure to remove one of them.
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/NqeQueryRunRequest'
        required: true
      responses:
        '200':
          description: >-
            The response is an object containing two fields: a `"snapshotId"`
            field, that indicates the Snapshot that the query was run against,
            and an `"items"` field, that contains the query's results.


            The `"items"` field contains an array of objects that resulted from
            the query. Each object in the `"items"` array, is either a "basic"
            value or a list of "basic" values, where a "basic" value is either a
            number, boolean, string, or null.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NqeRunResult'
        '400':
          description: >-
            The query did not complete successfully. For example, the query
            could not be parsed, the column filters were invalid, or the query
            timed out or was cancelled during execution. The response will
            contain `"completionType"`, `"errors"`, and `"snapshotId"` fields
            that provide detailed information onthe errors. See model for more
            information.


            NOTE: A 400 code can also be thrown for other errors, such as a lack
            of permission to execute the query, or a request that specified a
            Query ID for a deleted query without also specifying a Commit ID. In
            such cases, the `"completionType"`, `"errors"`, and `"snapshotId"`
            fields will be omitted from the response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NqeErrorInfo'
      security:
        - api_token: []
  /api/nqe-diffs/{before}/{after}:
    post:
      tags:
        - NQE
      summary: Diffs the results of two NQE queries between two Snapshots.
      operationId: getNqeQueryDiffUsingPOST
      parameters:
        - name: before
          in: path
          description: The ID for the Snapshot to base the diff on.
          required: true
          schema:
            type: string
        - name: after
          in: path
          description: The ID for the Snapshot to diff against the base Snapshot.
          required: true
          schema:
            type: string
      requestBody:
        description: >+
          The `queryId` property contains a Query ID of a query in NQE Library
          (this can be found in the information callout of a query listed in the
          Queries pane). The `commitId` property contains a Commit ID of the
          query identified by `queryId` (this can also be found in either the
          information callout in the Queries pane, or in the callout in the
          Versions view dropdown). Use `commitId` to run a specific version of
          the query.


          The `options` property is optional and can be used to refine the
          result set and/or specify the JSON format. In the sample object below,
          `options` requests up to 100 rows, starting from row 20, from the
          result set consisting of all the rows, sorted by "Name" column in
          ascending order and limited to those rows whose "Name" field contains
          "ATL", rendered with JSON arrays and objects instead of strings. The
          `options` property also allows for sorting and filtering on the diff
          change type column. To do this, set the `columnName` value on either
          the `sortBy` or `columnFilters` field to "ChangeType". It has three
          possible values: "MODIFIED", "ADDED", or "DELETED".


          The `parameters` property can be omitted if the query has no declared
          parameters. If the query declares parameters, the `parameters`
          property should contain a JSON object providing the values for the
          parameters to use while executing the query for this request. The
          provided parameter values must match the parameter types declared in
          the NQE query.

        content:
          application/json:
            schema:
              $ref: '#/components/schemas/NqeDiffRequest'
        required: true
      responses:
        '200':
          description: >-
            The response is an object containing two fields: `totalNumValues`,
            indicating the total number of differences per row that the query
            has across the two given snapshots, and `rows`, containing an array
            of objects indicating the differences between two rows in the query
            result.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NqeDiffResult'
        '400':
          description: >-
            The diff request did not complete successfully. For example, the
            query indicated by `queryId` could be invalid, the `options` for the
            query were invalid, the query and/or diff timed out or was cancelled
            during execution, or the user does not have permission to execute
            the query.
          content: {}
      security:
        - api_token: []
  /api/nqe/queries:
    get:
      tags:
        - NQE
      summary: Lists all NQE queries
      operationId: getNqeQueriesUsingGET
      parameters:
        - name: dir
          in: query
          description: >-
            If specified, include only queries in the given directory. The
            directory must start and end with a forward slash, such as
            `/L3/Advanced/`.
          schema:
            type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/NqeQuery'
      security:
        - api_token: []
  /api/l7-applications:
    get:
      tags:
        - Path Search
      summary: Lists known L7 applications
      operationId: getL7ApplicationsUsingGET
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/L7Application'
      security:
        - api_token: []
  /api/networks/{networkId}/paths:
    get:
      tags:
        - Path Search
      summary: Searches for paths by tracing packets through the network
      operationId: getPathsUsingGET
      parameters:
        - name: networkId
          in: path
          required: true
          schema:
            type: string
        - name: from
          in: query
          description: >-
            the device from which the traffic originates. If this is specified,
            then the srcIp will be considered as a packet header only, else, the
            srcIp will be resolved to specific location(s) and used as the
            source in the path search. Either the source device or srcIp must be
            specified.
          schema:
            type: string
        - name: srcIp
          in: query
          description: >-
            the source IP address or subnet of packets entering the network. For
            multicast (*, G) paths, set srcIp = G (multicast group address).
          schema:
            type: string
        - name: dstIp
          in: query
          description: >-
            the destination IP address or subnet of packets entering the
            network. For multicast (*, G) paths, set dstIp = G (multicast group
            address).
          required: true
          schema:
            type: string
        - name: intent
          in: query
          description: >-
            Specifies the intent for the search. Default PREFER_DELIVERED.

            *PREFER_VIOLATIONS*: Prefer paths that result in the traffic not
            getting delivered, e.g. drops, blackholes, loops. An example usage
            is while trying to evaluate if the specified traffic always gets
            delivered to the destination along all path choices.

            *PREFER_DELIVERED*: Prefer paths that result in the traffic getting
            delivered. An example usage is while trying to evaluate if traffic
            gets delivered to the destination along any path choice.

            *VIOLATIONS_ONLY*: Search for paths where traffic is not delivered
            to the destination.
          schema:
            $ref: '#/components/schemas/SearchIntent'
            default: PREFER_DELIVERED
        - name: ipProto
          in: query
          description: the IP protocol
          schema:
            type: integer
            format: int32
        - name: srcPort
          in: query
          description: the L4 source port, like "80" or a range "8080-8088"
          schema:
            type: string
        - name: dstPort
          in: query
          description: the L4 destination port, like "80" or a range "8080-8088"
          schema:
            type: string
        - name: icmpType
          in: query
          description: the ICMP type. Implies ipProto = 1.
          schema:
            type: integer
            format: int32
        - name: fin
          in: query
          description: the FIN (finish) bit (0 or 1). Implies ipProto = 6.
          schema:
            type: integer
            format: int32
        - name: syn
          in: query
          description: the SYN (synchronize) bit (0 or 1). Implies ipProto = 6.
          schema:
            type: integer
            format: int32
        - name: rst
          in: query
          description: the RST (reset) bit (0 or 1). Implies ipProto = 6.
          schema:
            type: integer
            format: int32
        - name: psh
          in: query
          description: the PSH (push) bit (0 or 1). Implies ipProto = 6.
          schema:
            type: integer
            format: int32
        - name: ack
          in: query
          description: the ACK (acknowledgment) bit (0 or 1). Implies ipProto = 6.
          schema:
            type: integer
            format: int32
        - name: urg
          in: query
          description: the URG (urgent) bit (0 or 1). Implies ipProto = 6.
          schema:
            type: integer
            format: int32
        - name: appId
          in: query
          description: >-
            the L7 app-id or "unidentified" to exclude paths that traverse
            firewall policies with app-id matches. If the system doesn't
            recognize the provided value, it handles the value the same as
            "unidentified" and includes the value in the `unrecognizedValues`
            response field. The applications that are recognized by the model
            can be obtained using GET /api/l7-applications.
          schema:
            type: string
        - name: userId
          in: query
          description: >-
            the L7 user-id or "unidentified" to exclude paths that traverse
            firewall policies with user-id matches. If the system doesn't
            recognize the provided value, it handles the value the same as
            "unidentified" and includes the value in the `unrecognizedValues`
            response field. See [Path Analysis with Layer 7
            User-Group](/docs/enterprise/applications/search/path-analysis/layer7_ugroup/)
            for more info.
          schema:
            type: string
        - name: userGroupId
          in: query
          description: >-
            the L7 user-group-id. If the system doesn't recognize the provided
            value, the search returns 0 results as there are no paths that
            traverse firewall policies with that user-group-id match, and the
            value is included in the `unrecognizedValues` response field. See
            [Path Analysis with Layer 7
            User-Group](/docs/enterprise/applications/search/path-analysis/layer7_ugroup/)
            for more info.
          schema:
            type: string
        - name: url
          in: query
          description: >-
            the L7 URL that traffic of interest is trying to access. Prefix
            wildcards are supported for subdomains. Suffix wildcards are
            supported for top-level domains and URL paths. See [Path Analysis
            with Layer 7
            URL](/docs/enterprise/applications/search/path-analysis/layer7_url/)
            for more policy patterns supported in the model.
          schema:
            type: string
        - name: includeTags
          in: query
          description: If true, the response will include device tags for each hop.
          schema:
            type: boolean
            default: false
        - name: includeNetworkFunctions
          in: query
          description: >-
            If true, the response includes detailed forwarding info for each
            hop.

            Note: Setting this to true increases the API response time.
          schema:
            type: boolean
            default: false
        - name: maxCandidates
          in: query
          description: >-
            the limit on the number of search results computed, before applying
            any ranking criteria. Permitted range = 1 to 10,000. Default 5,000.
          schema:
            type: integer
            format: int32
            default: 5000
        - name: maxResults
          in: query
          description: >-
            the limit on the number of search results returned by the API.
            First, the platform computes up to maxCandidates results that match
            the search criteria. Then they are sorted by various ranking
            criteria. A key ranking factor is path length, preferring longer
            paths (greatest reach) in the network over shorter ones. Finally,
            the API limits the number of returned search results to maxResults.
            Permitted range = 1 to maxCandidates. Default 1.
          schema:
            type: integer
            format: int32
            default: 1
        - name: maxReturnPathResults
          in: query
          description: >-
            the limit on the number of return path search results. Permitted
            range = 0 to 10,000. Default 0. Multicast (*, G) and (S, G) queries
            will always return 0 return path results regardless of this value.
          schema:
            type: integer
            format: int32
            default: 0
        - name: maxSeconds
          in: query
          description: the timeout duration. Permitted range = 1 to 300. Default 30.
          schema:
            type: integer
            format: int32
            default: 30
        - name: snapshotId
          in: query
          description: >-
            An optional Snapshot id. If omitted, the network’s latest processed
            Snapshot is used.
          schema:
            type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PathSearchResponse'
        '409':
          description: >-
            The system is currently processing this Snapshot.


            Note: GET /networks/{networkId}/snapshots/latestProcessed can be
            used to determine when processing of the latest Snapshot is done or
            to identify an alternate Snapshot that has already been processed.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorInfo'
      security:
        - api_token: []
  /api/networks/{networkId}/paths-bulk:
    post:
      tags:
        - Path Search
      summary: Searches for paths by tracing sets of packets through the network
      operationId: getPathsBulkUsingPOST
      parameters:
        - name: networkId
          in: path
          required: true
          schema:
            type: string
        - name: snapshotId
          in: query
          description: >-
            An optional Snapshot id. If omitted, the network’s latest processed
            Snapshot is used.
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PathSearchBulkRequest'
        required: true
      responses:
        '200':
          description: >-
            The response is an array containing a result (a `PathSearchResponse`
            or an error object) for each query in the request, in the same
            order. An error object has an `"error": true` property. Each query
            is evaluated independently.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/PathSearchResponse'
        '400':
          description: >-
            The request failed input validation. For example, a request
            parameter is outside the permitted range or an input path search
            query had an invalid IP protocol and ICMP type combination.
          content: {}
        '409':
          description: >-
            The system is currently processing this Snapshot.


            Note: GET /networks/{networkId}/snapshots/latestProcessed can be
            used to determine when processing of the latest Snapshot is done or
            to identify an alternate Snapshot that has already been processed.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorInfo'
      security:
        - api_token: []
  /api/networks/{networkId}/paths-bulk-seq:
    post:
      tags:
        - Path Search
      summary: Searches for paths by tracing sets of packets through the network
      operationId: getTracePathsBulkSeqUsingPOST
      parameters:
        - name: networkId
          in: path
          required: true
          schema:
            type: string
        - name: snapshotId
          in: query
          description: >-
            An optional Snapshot id. If omitted, the network’s latest processed
            Snapshot is used.
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PathSearchBulkRequest'
        required: true
      responses:
        '200':
          description: >-
            The response is a sequence of a result (a `PathSearchResponse` or an
            error object) for each query in the request, in the same order. Each
            result is prefixed by an ASCII Record Separator (0x1E), and ends
            with an ASCII Line Feed character (0x0A), as described in [RFC 7464:
            JSON Text Sequences](https://tools.ietf.org/html/rfc7464). An error
            object has an `"error": true` property. Each query is evaluated
            independently.
          content:
            application/json-seq:
              schema:
                $ref: '#/components/schemas/PathSearchResponse'
        '400':
          description: >-
            The request failed input validation. For example, a request
            parameter is outside the permitted range or an input path search
            query had an invalid IP protocol and ICMP type combination.
          content: {}
        '409':
          description: >-
            The system is currently processing this Snapshot.


            Note: GET /networks/{networkId}/snapshots/latestProcessed can be
            used to determine when processing of the latest Snapshot is done or
            to identify an alternate Snapshot that has already been processed.
          content:
            application/json-seq:
              schema:
                $ref: '#/components/schemas/ErrorInfo'
      security:
        - api_token: []
  /api/networks/{networkId}/encryptors:
    get:
      tags:
        - Synthetic Devices
      summary: Gets a network's encryptors
      operationId: getEncryptorsUsingGET
      parameters:
        - name: networkId
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EncryptorList'
      security:
        - api_token: []
    put:
      tags:
        - Synthetic Devices
      summary: Replaces all of a network’s encryptors
      operationId: putEncryptorsUsingPUT
      parameters:
        - name: networkId
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/EncryptorList'
        required: true
      responses:
        '204':
          description: No Content
          content: {}
      security:
        - api_token: []
  /api/networks/{networkId}/encryptors/{deviceName}:
    get:
      tags:
        - Synthetic Devices
      summary: Gets an encryptor
      operationId: getEncryptorUsingGET
      parameters:
        - name: networkId
          in: path
          required: true
          schema:
            type: string
        - name: deviceName
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Encryptor'
      security:
        - api_token: []
    put:
      tags:
        - Synthetic Devices
      summary: Adds or replaces an encryptor
      operationId: putEncryptorUsingPUT
      parameters:
        - name: networkId
          in: path
          required: true
          schema:
            type: string
        - name: deviceName
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Encryptor'
        required: true
      responses:
        '204':
          description: No Content
          content: {}
      security:
        - api_token: []
    delete:
      tags:
        - Synthetic Devices
      summary: Removes an encryptor
      operationId: deleteEncryptorUsingDELETE
      parameters:
        - name: networkId
          in: path
          required: true
          schema:
            type: string
        - name: deviceName
          in: path
          required: true
          schema:
            type: string
      responses:
        '204':
          description: No Content
          content: {}
      security:
        - api_token: []
    patch:
      tags:
        - Synthetic Devices
      summary: Updates an encryptor
      description: >-
        All JSON properties in the request body are optional. Include only the
        properties you wish to change.
      operationId: patchEncryptorUsingPATCH
      parameters:
        - name: networkId
          in: path
          required: true
          schema:
            type: string
        - name: deviceName
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/EncryptorPatch'
        required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Encryptor'
      security:
        - api_token: []
  /api/networks/{networkId}/internet-node:
    get:
      tags:
        - Synthetic Devices
      summary: Gets the network’s internet node
      operationId: getInternetNodeUsingGET
      parameters:
        - name: networkId
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InternetNode'
      security:
        - api_token: []
    put:
      tags:
        - Synthetic Devices
      summary: Replaces the network’s internet node
      operationId: putInternetNodeUsingPUT
      parameters:
        - name: networkId
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/InternetNode'
        required: true
      responses:
        '204':
          description: No Content
          content: {}
      security:
        - api_token: []
    patch:
      tags:
        - Synthetic Devices
      summary: Updates the network’s internet node
      description: >-
        All JSON properties in the request body are optional. Include only the
        properties you wish to change.
      operationId: updateInternetNodeUsingPATCH
      parameters:
        - name: networkId
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/InternetNodePatch'
        required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InternetNode'
      security:
        - api_token: []
  /api/networks/{networkId}/internet-node/connections:
    get:
      tags:
        - Synthetic Devices
      summary: Gets some internet node connections
      operationId: getInternetNodeConnectionsUsingGET
      parameters:
        - name: networkId
          in: path
          required: true
          schema:
            type: string
        - name: uplinkDevice
          in: query
          schema:
            type: string
        - name: uplinkPort
          in: query
          schema:
            type: string
        - name: gatewayDevice
          in: query
          schema:
            type: string
        - name: gatewayPort
          in: query
          schema:
            type: string
        - name: vlan
          in: query
          schema:
            type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SyntheticConnections'
      security:
        - api_token: []
    post:
      tags:
        - Synthetic Devices
      summary: Adds a connection to the internet node
      operationId: addInternetNodeConnectionUsingPOST
      parameters:
        - name: networkId
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/InetConnection'
        required: true
      responses:
        '204':
          description: No Content
          content: {}
      security:
        - api_token: []
    delete:
      tags:
        - Synthetic Devices
      summary: Removes internet node connections
      operationId: deleteInternetNodeConnectionsUsingDELETE
      parameters:
        - name: networkId
          in: path
          required: true
          schema:
            type: string
        - name: uplinkDevice
          in: query
          schema:
            type: string
        - name: uplinkPort
          in: query
          schema:
            type: string
        - name: gatewayDevice
          in: query
          schema:
            type: string
        - name: gatewayPort
          in: query
          schema:
            type: string
        - name: vlan
          in: query
          schema:
            type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SyntheticConnections'
      security:
        - api_token: []
  /api/networks/{networkId}/intranet-nodes:
    get:
      tags:
        - Synthetic Devices
      summary: Gets a network’s intranet nodes
      operationId: getIntranetNodesUsingGET
      parameters:
        - name: networkId
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/IntranetNodeList'
      security:
        - api_token: []
    put:
      tags:
        - Synthetic Devices
      summary: Replaces all of a network’s intranet nodes
      operationId: putIntranetNodesUsingPUT
      parameters:
        - name: networkId
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/IntranetNodeList'
        required: true
      responses:
        '204':
          description: No Content
          content: {}
      security:
        - api_token: []
  /api/networks/{networkId}/intranet-nodes/{nodeName}:
    get:
      tags:
        - Synthetic Devices
      summary: Gets an intranet node
      operationId: getIntranetNodeUsingGET
      parameters:
        - name: networkId
          in: path
          required: true
          schema:
            type: string
        - name: nodeName
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/IntranetNode'
      security:
        - api_token: []
    put:
      tags:
        - Synthetic Devices
      summary: Adds or replaces an intranet node
      operationId: putIntranetNodeUsingPUT
      parameters:
        - name: networkId
          in: path
          required: true
          schema:
            type: string
        - name: nodeName
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/IntranetNode'
        required: true
      responses:
        '204':
          description: No Content
          content: {}
      security:
        - api_token: []
    delete:
      tags:
        - Synthetic Devices
      summary: Removes an intranet node
      operationId: deleteIntranetNodeUsingDELETE
      parameters:
        - name: networkId
          in: path
          required: true
          schema:
            type: string
        - name: nodeName
          in: path
          required: true
          schema:
            type: string
      responses:
        '204':
          description: No Content
          content: {}
      security:
        - api_token: []
    patch:
      tags:
        - Synthetic Devices
      summary: Updates an intranet node
      description: >-
        All JSON properties in the request body are optional. Include only the
        properties you wish to change.
      operationId: patchIntranetNodeUsingPATCH
      parameters:
        - name: networkId
          in: path
          required: true
          schema:
            type: string
        - name: nodeName
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/IntranetNodePatch'
        required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/IntranetNode'
      security:
        - api_token: []
  /api/networks/{networkId}/intranet-nodes/{nodeName}/connections:
    get:
      tags:
        - Synthetic Devices
      summary: Gets an intranet node’s connections
      operationId: getIntranetNodeConnectionsUsingGET
      parameters:
        - name: networkId
          in: path
          required: true
          schema:
            type: string
        - name: nodeName
          in: path
          required: true
          schema:
            type: string
        - name: uplinkDevice
          in: query
          schema:
            type: string
        - name: uplinkPort
          in: query
          schema:
            type: string
        - name: gatewayDevice
          in: query
          schema:
            type: string
        - name: gatewayPort
          in: query
          schema:
            type: string
        - name: vlan
          in: query
          schema:
            type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SyntheticConnections'
      security:
        - api_token: []
    post:
      tags:
        - Synthetic Devices
      summary: Adds a connection to an intranet node
      operationId: addIntranetNodeConnectionUsingPOST
      parameters:
        - name: networkId
          in: path
          required: true
          schema:
            type: string
        - name: nodeName
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/InetConnection'
        required: true
      responses:
        '204':
          description: No Content
          content: {}
      security:
        - api_token: []
    delete:
      tags:
        - Synthetic Devices
      summary: Removes an intranet node’s connections
      operationId: deleteIntranetNodeConnectionsUsingDELETE
      parameters:
        - name: networkId
          in: path
          required: true
          schema:
            type: string
        - name: nodeName
          in: path
          required: true
          schema:
            type: string
        - name: uplinkDevice
          in: query
          schema:
            type: string
        - name: uplinkPort
          in: query
          schema:
            type: string
        - name: gatewayDevice
          in: query
          schema:
            type: string
        - name: gatewayPort
          in: query
          schema:
            type: string
        - name: vlan
          in: query
          schema:
            type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SyntheticConnections'
      security:
        - api_token: []
  /api/networks/{networkId}/l2-vpns:
    get:
      tags:
        - Synthetic Devices
      summary: Gets a network’s L2VPNs
      operationId: getL2VpnsUsingGET
      parameters:
        - name: networkId
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/L2VpnList'
      security:
        - api_token: []
    put:
      tags:
        - Synthetic Devices
      summary: Replaces all of a network’s L2VPNs
      operationId: putL2VpnsUsingPUT
      parameters:
        - name: networkId
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/L2VpnList'
        required: true
      responses:
        '204':
          description: No Content
          content: {}
      security:
        - api_token: []
  /api/networks/{networkId}/l2-vpns/{l2VpnName}:
    get:
      tags:
        - Synthetic Devices
      summary: Gets an L2VPN
      operationId: getL2VpnUsingGET
      parameters:
        - name: networkId
          in: path
          required: true
          schema:
            type: string
        - name: l2VpnName
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/L2Vpn'
      security:
        - api_token: []
    put:
      tags:
        - Synthetic Devices
      summary: Adds or replaces an L2VPN
      operationId: putL2VpnUsingPUT
      parameters:
        - name: networkId
          in: path
          required: true
          schema:
            type: string
        - name: l2VpnName
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/L2Vpn'
        required: true
      responses:
        '204':
          description: No Content
          content: {}
      security:
        - api_token: []
    delete:
      tags:
        - Synthetic Devices
      summary: Removes an L2VPN
      operationId: deleteL2VpnUsingDELETE
      parameters:
        - name: networkId
          in: path
          required: true
          schema:
            type: string
        - name: l2VpnName
          in: path
          required: true
          schema:
            type: string
      responses:
        '204':
          description: No Content
          content: {}
      security:
        - api_token: []
    patch:
      tags:
        - Synthetic Devices
      summary: Updates an L2VPN
      description: >-
        All JSON properties in the request body are optional. Include only the
        properties you wish to change.
      operationId: patchL2VpnUsingPATCH
      parameters:
        - name: networkId
          in: path
          required: true
          schema:
            type: string
        - name: l2VpnName
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/L2VpnPatch'
        required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/L2Vpn'
      security:
        - api_token: []
  /api/networks/{networkId}/l2-vpns/{l2VpnName}/connections:
    get:
      tags:
        - Synthetic Devices
      summary: Gets an L2VPN’s connections
      operationId: getL2VpnConnectionsUsingGET
      parameters:
        - name: networkId
          in: path
          required: true
          schema:
            type: string
        - name: l2VpnName
          in: path
          required: true
          schema:
            type: string
        - name: device
          in: query
          schema:
            type: string
        - name: port
          in: query
          schema:
            type: string
        - name: vlan
          in: query
          schema:
            type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SyntheticConnections'
      security:
        - api_token: []
    post:
      tags:
        - Synthetic Devices
      summary: Adds a connection to an L2VPN
      operationId: addL2VpnConnectionUsingPOST
      parameters:
        - name: networkId
          in: path
          required: true
          schema:
            type: string
        - name: l2VpnName
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/L2VpnConnection'
        required: true
      responses:
        '204':
          description: No Content
          content: {}
      security:
        - api_token: []
    delete:
      tags:
        - Synthetic Devices
      summary: Removes an L2VPN’s connections
      operationId: deleteL2VpnConnectionsUsingDELETE
      parameters:
        - name: networkId
          in: path
          required: true
          schema:
            type: string
        - name: l2VpnName
          in: path
          required: true
          schema:
            type: string
        - name: device
          in: query
          schema:
            type: string
        - name: port
          in: query
          schema:
            type: string
        - name: vlan
          in: query
          schema:
            type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SyntheticConnections'
      security:
        - api_token: []
  /api/networks/{networkId}/l3-vpns:
    get:
      tags:
        - Synthetic Devices
      summary: Gets a network’s L3VPNs
      operationId: getL3VpnsUsingGET
      parameters:
        - name: networkId
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/L3VpnList'
      security:
        - api_token: []
    put:
      tags:
        - Synthetic Devices
      summary: Replaces all of a network’s L3VPNs
      operationId: putL3VpnsUsingPUT
      parameters:
        - name: networkId
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/L3VpnList'
        required: true
      responses:
        '204':
          description: No Content
          content: {}
      security:
        - api_token: []
  /api/networks/{networkId}/l3-vpns/{l3VpnName}:
    get:
      tags:
        - Synthetic Devices
      summary: Gets an L3VPN
      operationId: getL3VpnUsingGET
      parameters:
        - name: networkId
          in: path
          required: true
          schema:
            type: string
        - name: l3VpnName
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/L3Vpn'
      security:
        - api_token: []
    put:
      tags:
        - Synthetic Devices
      summary: Adds or replaces an L3VPN
      operationId: putL3VpnUsingPUT
      parameters:
        - name: networkId
          in: path
          required: true
          schema:
            type: string
        - name: l3VpnName
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/L3Vpn'
        required: true
      responses:
        '204':
          description: No Content
          content: {}
      security:
        - api_token: []
    delete:
      tags:
        - Synthetic Devices
      summary: Removes an L3VPN
      operationId: deleteL3VpnUsingDELETE
      parameters:
        - name: networkId
          in: path
          required: true
          schema:
            type: string
        - name: l3VpnName
          in: path
          required: true
          schema:
            type: string
      responses:
        '204':
          description: No Content
          content: {}
      security:
        - api_token: []
    patch:
      tags:
        - Synthetic Devices
      summary: Updates an L3VPN
      description: >-
        All JSON properties in the request body are optional. Include only the
        properties you wish to change.
      operationId: patchL3VpnUsingPATCH
      parameters:
        - name: networkId
          in: path
          required: true
          schema:
            type: string
        - name: l3VpnName
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/L3VpnPatch'
        required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/L3Vpn'
      security:
        - api_token: []
  /api/networks/{networkId}/l3-vpns/{l3VpnName}/connections:
    get:
      tags:
        - Synthetic Devices
      summary: Gets an L3VPN’s connections
      operationId: getL3VpnConnectionsUsingGET
      parameters:
        - name: networkId
          in: path
          required: true
          schema:
            type: string
        - name: l3VpnName
          in: path
          required: true
          schema:
            type: string
        - name: uplinkDevice
          in: query
          schema:
            type: string
        - name: uplinkPort
          in: query
          schema:
            type: string
        - name: gatewayDevice
          in: query
          schema:
            type: string
        - name: gatewayPort
          in: query
          schema:
            type: string
        - name: vlan
          in: query
          schema:
            type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SyntheticConnections'
      security:
        - api_token: []
    post:
      tags:
        - Synthetic Devices
      summary: Adds a connection to an L3VPN
      operationId: addL3VpnConnectionUsingPOST
      parameters:
        - name: networkId
          in: path
          required: true
          schema:
            type: string
        - name: l3VpnName
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/L3VpnConnection'
        required: true
      responses:
        '204':
          description: No Content
          content: {}
      security:
        - api_token: []
    delete:
      tags:
        - Synthetic Devices
      summary: Removes an L3VPN’s connections
      operationId: deleteL3VpnConnectionsUsingDELETE
      parameters:
        - name: networkId
          in: path
          required: true
          schema:
            type: string
        - name: l3VpnName
          in: path
          required: true
          schema:
            type: string
        - name: uplinkDevice
          in: query
          schema:
            type: string
        - name: uplinkPort
          in: query
          schema:
            type: string
        - name: gatewayDevice
          in: query
          schema:
            type: string
        - name: gatewayPort
          in: query
          schema:
            type: string
        - name: vlan
          in: query
          schema:
            type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SyntheticConnections'
      security:
        - api_token: []
  /api/networks/{networkId}/wan-circuits:
    get:
      tags:
        - Synthetic Devices
      summary: Gets a network’s WAN circuits
      operationId: getWanCircuitsUsingGET
      parameters:
        - name: networkId
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WanCircuitList'
      security:
        - api_token: []
    put:
      tags:
        - Synthetic Devices
      summary: Replaces all of a network’s WAN circuits
      operationId: putWanCircuitsUsingPUT
      parameters:
        - name: networkId
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/WanCircuitList'
        required: true
      responses:
        '204':
          description: No Content
          content: {}
      security:
        - api_token: []
  /api/networks/{networkId}/wan-circuits/{wanCircuitName}:
    get:
      tags:
        - Synthetic Devices
      summary: Gets a WAN circuit
      operationId: getWanCircuitUsingGET
      parameters:
        - name: networkId
          in: path
          required: true
          schema:
            type: string
        - name: wanCircuitName
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WanCircuit'
      security:
        - api_token: []
    put:
      tags:
        - Synthetic Devices
      summary: Adds or replaces a WAN circuit
      operationId: putWanCircuitUsingPUT
      parameters:
        - name: networkId
          in: path
          required: true
          schema:
            type: string
        - name: wanCircuitName
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/WanCircuit'
        required: true
      responses:
        '204':
          description: No Content
          content: {}
      security:
        - api_token: []
    delete:
      tags:
        - Synthetic Devices
      summary: Removes a WAN circuit
      operationId: deleteWanCircuitUsingDELETE
      parameters:
        - name: networkId
          in: path
          required: true
          schema:
            type: string
        - name: wanCircuitName
          in: path
          required: true
          schema:
            type: string
      responses:
        '204':
          description: No Content
          content: {}
      security:
        - api_token: []
    patch:
      tags:
        - Synthetic Devices
      summary: Updates a WAN circuit
      description: >-
        All JSON properties in the request body are optional. Include only the
        properties you wish to change.
      operationId: patchWanCircuitUsingPATCH
      parameters:
        - name: networkId
          in: path
          required: true
          schema:
            type: string
        - name: wanCircuitName
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/WanCircuitPatch'
        required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WanCircuit'
      security:
        - api_token: []
  /api/cve-index:
    get:
      tags:
        - System Administration
      summary: Exports the CVE index
      description: >-
        The CVE index is a gzipped binary (.bin.gz) file.


        To download the latest one from fwd.app:


        `curl -vu <user>:<pass> https://fwd.app/api/cve-index -o
        cve-index.bin.gz`


        The response includes a `Digest` header containing the file’s SHA-256
        digest.
      operationId: getCveIndexUsingGET
      responses:
        '200':
          description: OK
          content:
            application/gzip:
              schema:
                type: string
                format: byte
      security:
        - api_token: []
    put:
      tags:
        - System Administration
      summary: Imports a new CVE index
      description: >-
        Replaces the CVE index in use.


        To upload a CVE index gzipped binary (.bin.gz) file downloaded from
        fwd.app:


        `curl -vu <user>:<pass> https://<host>/api/cve-index?sha=<digest> -T
        cve-index.bin.gz`


        The `sha` parameter is optional but recommended. The `<digest>` value
        can be found in the `Digest` response header when a CVE index is
        downloaded from fwd.app.


        **Note:** This operation is for on-premises deployments only.
      operationId: putCveIndexUsingPUT
      parameters:
        - name: sha
          in: query
          description: >-
            Optional SHA-256 digest (consisting of 64 hex digits) to use to
            verify the integrity of the CVE index
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: string
              format: byte
        required: true
      responses:
        '200':
          description: OK
          content: {}
      security:
        - api_token: []
  /api/users:
    get:
      tags:
        - User Accounts
      summary: Gets all user accounts
      operationId: getUsersUsingGET
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Users'
      security:
        - api_token: []
    post:
      tags:
        - User Accounts
      summary: Creates a user account
      description: Creates a new `LOCAL` user account.
      operationId: createUserUsingPOST
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/NewUser'
        required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/User'
      security:
        - api_token: []
  /api/users/{userId}:
    get:
      tags:
        - User Accounts
      summary: Gets a user account
      operationId: getUserUsingGET
      parameters:
        - name: userId
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/User'
      security:
        - api_token: []
    delete:
      tags:
        - User Accounts
      summary: Deletes a user account
      description: '**Warning**: This operation *cannot* be undone.'
      operationId: deleteUserUsingDELETE
      parameters:
        - name: userId
          in: path
          required: true
          schema:
            type: string
      responses:
        '204':
          description: No Content
          content: {}
      security:
        - api_token: []
    patch:
      tags:
        - User Accounts
      summary: Updates a user account
      description: >-
        All JSON properties in the request body are optional. Include only the
        properties you wish to change.
      operationId: updateUserUsingPATCH
      parameters:
        - name: userId
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UserPatch'
        required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/User'
      security:
        - api_token: []
  /api/networks/{networkId}/vulnerabilities:
    get:
      tags:
        - Vulnerability Analysis
      summary: Gets vulnerabilities and possibly impacted devices
      operationId: getVulnerabilitiesUsingGET
      parameters:
        - name: networkId
          in: path
          required: true
          schema:
            type: string
        - name: snapshotId
          in: query
          description: >-
            An optional Snapshot id. If omitted, the network’s latest processed
            Snapshot is used.
          schema:
            type: string
        - name: offset
          in: query
          description: >-
            An optional number of vulnerabilities to skip. Useful for paging.
            Defaults to 0.
          schema:
            type: integer
            format: int32
        - name: limit
          in: query
          description: >-
            An optional maximum number of vulnerabilities desired. Useful for
            paging. Defaults to 1000.
          schema:
            type: integer
            format: int32
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VulnerabilityAnalysis'
        '409':
          description: >-
            The system is currently processing this Snapshot.


            Note: GET /networks/{networkId}/snapshots/latestProcessed can be
            used to determine when processing of the latest Snapshot is done or
            to identify an alternate Snapshot that has already been processed.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorInfo'
      security:
        - api_token: []
components:
  schemas:
    Alias:
      type: object
      required:
        - creationTime
        - creatorId
        - name
        - type
      properties:
        creationTime:
          type: integer
          format: int64
          examples:
            - 1649277285118
        creatorId:
          type: string
        name:
          type: string
        type:
          $ref: '#/components/schemas/AliasType'
    AliasAndValue:
      allOf:
        - $ref: '#/components/schemas/Alias'
    AliasBuilder:
      type: object
      required:
        - type
      properties:
        type:
          type: string
          enum:
            - HOSTS
            - DEVICES
            - INTERFACES
            - HEADERS
            - LOGICAL_NETWORK
      oneOf:
        - $ref: '#/components/schemas/HostsAliasBuilder'
        - $ref: '#/components/schemas/DevicesAliasBuilder'
        - $ref: '#/components/schemas/InterfacesAliasBuilder'
        - $ref: '#/components/schemas/TrafficAliasBuilder'
        - $ref: '#/components/schemas/LogicalNetworkAliasBuilder'
      discriminator:
        propertyName: type
        mapping:
          HOSTS: '#/components/schemas/HostsAliasBuilder'
          HostFilter: '#/components/schemas/HostsAliasBuilder'
          DEVICES: '#/components/schemas/DevicesAliasBuilder'
          DeviceFilter: '#/components/schemas/DevicesAliasBuilder'
          INTERFACES: '#/components/schemas/InterfacesAliasBuilder'
          InterfaceFilter: '#/components/schemas/InterfacesAliasBuilder'
          HEADERS: '#/components/schemas/TrafficAliasBuilder'
          PacketFilter: '#/components/schemas/TrafficAliasBuilder'
          LOGICAL_NETWORK: '#/components/schemas/LogicalNetworkAliasBuilder'
    AliasType:
      type: string
      enum:
        - HOSTS
        - DEVICES
        - INTERFACES
        - HEADERS
        - LOGICAL_NETWORK
    Aliases:
      type: object
      required:
        - aliases
      properties:
        aliases:
          type: array
          items:
            $ref: '#/components/schemas/Alias'
    DevicesAliasBuilder:
      type: object
      required:
        - name
        - type
      properties:
        name:
          type: string
        type:
          $ref: '#/components/schemas/AliasType'
        values:
          type: array
          items:
            type: string
    ErrorInfo:
      type: object
      required:
        - httpMethod
        - apiUrl
        - message
      properties:
        httpMethod:
          type: string
          examples:
            - GET
          enum:
            - GET
            - HEAD
            - POST
            - PUT
            - PATCH
            - DELETE
        apiUrl:
          type: string
          examples:
            - /api/version
        message:
          type: string
          description: A description of the error
        reason:
          type: string
    HostsAliasBuilder:
      type: object
      required:
        - name
        - type
      properties:
        locations:
          type: array
          items:
            type: string
        name:
          type: string
        type:
          $ref: '#/components/schemas/AliasType'
        values:
          type: array
          items:
            type: string
    InterfacesAliasBuilder:
      type: object
      required:
        - name
        - type
      properties:
        isExposurePoint:
          type: boolean
        name:
          type: string
        type:
          $ref: '#/components/schemas/AliasType'
        values:
          type: array
          items:
            type: string
        vlanIds:
          type: array
          items:
            type: string
        vlanIntfTypes:
          type: array
          items:
            type: string
            enum:
              - ACCESS
              - TRUNK
    LogicalNetworkAliasBuilder:
      type: object
      required:
        - name
        - type
      properties:
        devices:
          type: array
          items:
            type: string
        edgeNodes:
          type: array
          items:
            type: string
        name:
          type: string
        type:
          $ref: '#/components/schemas/AliasType'
    TrafficAliasBuilder:
      type: object
      required:
        - name
        - type
      properties:
        name:
          type: string
        type:
          $ref: '#/components/schemas/AliasType'
        values:
          type: object
          additionalProperties:
            type: array
            items:
              type: string
    AvailablePredefinedCheck:
      type: object
      properties:
        description:
          type: string
        name:
          type: string
        predefinedCheckType:
          $ref: '#/components/schemas/PredefinedCheckType'
    BypassFilter:
      type: object
      required:
        - type
      properties:
        type:
          type: string
          enum:
            - DeviceFilter
            - DeviceAliasFilter
      oneOf:
        - $ref: '#/components/schemas/DeviceFilter'
        - $ref: '#/components/schemas/DeviceAliasFilter'
      discriminator:
        propertyName: type
        mapping:
          DeviceFilter: '#/components/schemas/DeviceFilter'
          DeviceAliasFilter: '#/components/schemas/DeviceAliasFilter'
    CheckDefinition:
      type: object
      required:
        - checkType
      properties:
        checkType:
          type: string
          enum:
            - Existential
            - Isolation
            - Reachability
            - QueryStringBased
            - Predefined
            - NQE
      oneOf:
        - $ref: '#/components/schemas/ExistsCheck'
        - $ref: '#/components/schemas/IsolationCheck'
        - $ref: '#/components/schemas/ReachabilityCheck'
        - $ref: '#/components/schemas/QueryStringCheck'
        - $ref: '#/components/schemas/PredefinedCheck'
        - $ref: '#/components/schemas/NqeCheck'
      discriminator:
        propertyName: checkType
        mapping:
          Existential: '#/components/schemas/ExistsCheck'
          Exists: '#/components/schemas/ExistsCheck'
          ExistentialCheck: '#/components/schemas/ExistsCheck'
          Isolation: '#/components/schemas/IsolationCheck'
          IsolationCheck: '#/components/schemas/IsolationCheck'
          Reachability: '#/components/schemas/ReachabilityCheck'
          ReachabilityCheck: '#/components/schemas/ReachabilityCheck'
          QueryStringBased: '#/components/schemas/QueryStringCheck'
          Predefined: '#/components/schemas/PredefinedCheck'
          NQE: '#/components/schemas/NqeCheck'
          NetworkQuery: '#/components/schemas/NqeCheck'
    CheckDiagnosis:
      type: object
      properties:
        details:
          type: array
          items:
            $ref: '#/components/schemas/DiagnosisDetail'
        detailsIncomplete:
          type: boolean
        summary:
          type: string
    CheckPriority:
      type: string
      enum:
        - NOT_SET
        - LOW
        - MEDIUM
        - HIGH
    CheckStatus:
      type: string
      enum:
        - NONE
        - PASS
        - FAIL
        - ERROR
        - TIMEOUT
        - PROCESSING
    CheckType:
      type: string
      enum:
        - Isolation
        - Reachability
        - Existential
        - QueryStringBased
        - Predefined
        - NQE
    DeviceAliasFilter:
      type: object
      required:
        - type
        - value
      properties:
        type:
          type: string
          const: DeviceAliasFilter
        value:
          type: string
          description: A Device Group name
      description: A filter that matches any device in a Device Group
    DeviceFilter:
      type: object
      required:
        - type
        - value
      properties:
        type:
          type: string
          const: DeviceFilter
        value:
          type: string
          examples:
            - nyc-dc01-fw01
      description: >-
        A filter that matches one device by name or all devices (using value
        "*")
    DeviceVrfFilter:
      type: object
      required:
        - type
        - device
        - vrf
      properties:
        type:
          type: string
          const: DeviceVrfFilter
        device:
          type: string
          examples:
            - nyc-dc01-rtr-01
        vrf:
          type: string
          examples:
            - MY VRF
      description: A filter that matches a device’s interfaces by VRF name
    DiagnosisDetail:
      type: object
      properties:
        query:
          type: string
        references:
          type: array
          items:
            $ref: '#/components/schemas/DiagnosisReference'
    DiagnosisReference:
      type: object
      properties:
        key:
          type: string
          description: >-
            A name or identifier associated with the reference, like a device or
            interface name.
          examples:
            - rtr-01 eth0
        value:
          type: string
          description: >-
            The value associated with `key` that’s relevant to this violation,
            such as a link speed, MTU size, VLAN range, or IP address.
          examples:
            - 10.110.4.14
        files:
          type: object
          additionalProperties:
            type: array
            items:
              $ref: '#/components/schemas/LineRange'
          description: Relevant line ranges in files collected from the device.
          examples:
            - rtr-01,configuration,16.txt:
                - start: 6
                  end: 6
                - start: 22
                  end: 29
    EndpointFilter:
      type: object
      required:
        - location
      properties:
        headers:
          type: array
          items:
            $ref: '#/components/schemas/PacketHeaderFilter'
        location:
          $ref: '#/components/schemas/LocationFilter'
        logicalNetwork:
          type: string
    ExistsCheck:
      type: object
      required:
        - checkType
        - filters
      properties:
        checkType:
          type: string
          const: Existential
        filters:
          $ref: '#/components/schemas/PathQuery'
        headerFieldsWithDefaults:
          type: array
          items:
            type: string
            enum:
              - ip_tos
              - tp_src
              - app_id
              - url
              - user_id
          description: >-
            The header fields for which a default value is assumed if no valid
            is specified in the `from` clause. Defaults to `["url"]`.
        noiseTypes:
          type: array
          items:
            $ref: '#/components/schemas/NoiseType'
          description: >-
            The noise types that should be included in the search results.
            Defaults to `[]`.
        returnPath:
          type: string
          enum:
            - ANY
            - SYMMETRIC
    FlowHopFilter:
      type: object
      required:
        - type
      properties:
        type:
          type: string
          enum:
            - HostFilter
            - DeviceFilter
            - InterfaceFilter
            - TunnelInterfaceFilter
            - SecurityZoneFilter
            - DeviceVrfFilter
            - PacketFilter
            - HostAliasFilter
            - DeviceAliasFilter
            - InterfaceAliasFilter
            - PacketAliasFilter
            - SubnetLocationFilter
            - VrfFilter
            - NotFilter
      oneOf:
        - $ref: '#/components/schemas/HostFilter'
        - $ref: '#/components/schemas/DeviceFilter'
        - $ref: '#/components/schemas/InterfaceFilter'
        - $ref: '#/components/schemas/TunnelInterfaceFilter'
        - $ref: '#/components/schemas/SecurityZoneFilter'
        - $ref: '#/components/schemas/DeviceVrfFilter'
        - $ref: '#/components/schemas/PacketFilter'
        - $ref: '#/components/schemas/HostAliasFilter'
        - $ref: '#/components/schemas/DeviceAliasFilter'
        - $ref: '#/components/schemas/InterfaceAliasFilter'
        - $ref: '#/components/schemas/PacketAliasFilter'
        - $ref: '#/components/schemas/SubnetLocationFilter'
        - $ref: '#/components/schemas/VrfFilter'
        - $ref: '#/components/schemas/NotFilter'
      discriminator:
        propertyName: type
        mapping:
          HostFilter: '#/components/schemas/HostFilter'
          DeviceFilter: '#/components/schemas/DeviceFilter'
          InterfaceFilter: '#/components/schemas/InterfaceFilter'
          TunnelInterfaceFilter: '#/components/schemas/TunnelInterfaceFilter'
          SecurityZoneFilter: '#/components/schemas/SecurityZoneFilter'
          DeviceVrfFilter: '#/components/schemas/DeviceVrfFilter'
          PacketFilter: '#/components/schemas/PacketFilter'
          HostAliasFilter: '#/components/schemas/HostAliasFilter'
          DeviceAliasFilter: '#/components/schemas/DeviceAliasFilter'
          InterfaceAliasFilter: '#/components/schemas/InterfaceAliasFilter'
          PacketAliasFilter: '#/components/schemas/PacketAliasFilter'
          SubnetLocationFilter: '#/components/schemas/SubnetLocationFilter'
          VrfFilter: '#/components/schemas/VrfFilter'
          NotFilter: '#/components/schemas/NotFilter'
    HopFilter:
      type: object
      required:
        - location
        - transitType
      properties:
        headers:
          type: array
          items:
            $ref: '#/components/schemas/PacketHeaderFilter'
        location:
          $ref: '#/components/schemas/HopLocationFilter'
        transitType:
          type: string
          enum:
            - through
            - ingress
            - egress
    HopLocationFilter:
      type: object
      required:
        - type
      properties:
        type:
          type: string
          enum:
            - DeviceFilter
            - InterfaceFilter
            - TunnelInterfaceFilter
            - SecurityZoneFilter
            - DeviceVrfFilter
            - DeviceAliasFilter
            - InterfaceAliasFilter
            - VrfFilter
            - NotFilter
      oneOf:
        - $ref: '#/components/schemas/DeviceFilter'
        - $ref: '#/components/schemas/InterfaceFilter'
        - $ref: '#/components/schemas/TunnelInterfaceFilter'
        - $ref: '#/components/schemas/SecurityZoneFilter'
        - $ref: '#/components/schemas/DeviceVrfFilter'
        - $ref: '#/components/schemas/DeviceAliasFilter'
        - $ref: '#/components/schemas/InterfaceAliasFilter'
        - $ref: '#/components/schemas/VrfFilter'
        - $ref: '#/components/schemas/NotFilter'
      discriminator:
        propertyName: type
        mapping:
          DeviceFilter: '#/components/schemas/DeviceFilter'
          InterfaceFilter: '#/components/schemas/InterfaceFilter'
          TunnelInterfaceFilter: '#/components/schemas/TunnelInterfaceFilter'
          SecurityZoneFilter: '#/components/schemas/SecurityZoneFilter'
          DeviceVrfFilter: '#/components/schemas/DeviceVrfFilter'
          DeviceAliasFilter: '#/components/schemas/DeviceAliasFilter'
          InterfaceAliasFilter: '#/components/schemas/InterfaceAliasFilter'
          VrfFilter: '#/components/schemas/VrfFilter'
          NotFilter: '#/components/schemas/NotFilter'
    HostAliasFilter:
      type: object
      required:
        - type
        - value
      properties:
        type:
          type: string
          const: HostAliasFilter
        value:
          type: string
          description: A Host Group name
      description: A filter that matches any host in a Host Group
    HostFilter:
      type: object
      required:
        - type
        - value
      properties:
        type:
          type: string
          const: HostFilter
        value:
          type: string
          examples:
            - 10.10.10.10
      description: >-
        A filter that matches hosts by hostname, IP subnet address, or MAC
        address
    InterfaceAliasFilter:
      type: object
      required:
        - type
        - value
      properties:
        type:
          type: string
          const: InterfaceAliasFilter
        value:
          type: string
          description: An Interface Group name
      description: A filter that matches any device interface in an Interface Group
    InterfaceFilter:
      type: object
      required:
        - type
        - value
      properties:
        type:
          type: string
          const: InterfaceFilter
        value:
          type: string
          examples:
            - nyc-dc01-fw01 eth1
      description: A filter that matches one device interface by name
    IsolationCheck:
      type: object
      required:
        - checkType
        - filters
      properties:
        checkType:
          type: string
          const: Isolation
        filters:
          $ref: '#/components/schemas/PathQuery'
        headerFieldsWithDefaults:
          type: array
          items:
            type: string
            enum:
              - ip_tos
              - tp_src
              - app_id
              - url
              - user_id
          description: >-
            The header fields for which a default value is assumed if no valid
            is specified in the `from` clause. Defaults to `["url"]`.
        noiseTypes:
          type: array
          items:
            $ref: '#/components/schemas/NoiseType'
          description: >-
            The noise types that should be included in the search results.
            Defaults to `[]`.
    LineRange:
      type: object
      properties:
        start:
          type: integer
          format: int32
          description: The 0-based index of the first line in the range.
          examples:
            - 23
        end:
          type: integer
          format: int32
          description: The 0-based index of the last line in the range (inclusive).
          examples:
            - 27
    LocationFilter:
      type: object
      required:
        - type
      properties:
        type:
          type: string
          enum:
            - HostFilter
            - DeviceFilter
            - InterfaceFilter
            - TunnelInterfaceFilter
            - SecurityZoneFilter
            - DeviceVrfFilter
            - HostAliasFilter
            - DeviceAliasFilter
            - InterfaceAliasFilter
            - SubnetLocationFilter
            - VrfFilter
            - NotFilter
      oneOf:
        - $ref: '#/components/schemas/HostFilter'
        - $ref: '#/components/schemas/DeviceFilter'
        - $ref: '#/components/schemas/InterfaceFilter'
        - $ref: '#/components/schemas/TunnelInterfaceFilter'
        - $ref: '#/components/schemas/SecurityZoneFilter'
        - $ref: '#/components/schemas/DeviceVrfFilter'
        - $ref: '#/components/schemas/HostAliasFilter'
        - $ref: '#/components/schemas/DeviceAliasFilter'
        - $ref: '#/components/schemas/InterfaceAliasFilter'
        - $ref: '#/components/schemas/SubnetLocationFilter'
        - $ref: '#/components/schemas/VrfFilter'
        - $ref: '#/components/schemas/NotFilter'
      discriminator:
        propertyName: type
        mapping:
          HostFilter: '#/components/schemas/HostFilter'
          DeviceFilter: '#/components/schemas/DeviceFilter'
          InterfaceFilter: '#/components/schemas/InterfaceFilter'
          TunnelInterfaceFilter: '#/components/schemas/TunnelInterfaceFilter'
          SecurityZoneFilter: '#/components/schemas/SecurityZoneFilter'
          DeviceVrfFilter: '#/components/schemas/DeviceVrfFilter'
          HostAliasFilter: '#/components/schemas/HostAliasFilter'
          DeviceAliasFilter: '#/components/schemas/DeviceAliasFilter'
          InterfaceAliasFilter: '#/components/schemas/InterfaceAliasFilter'
          SubnetLocationFilter: '#/components/schemas/SubnetLocationFilter'
          VrfFilter: '#/components/schemas/VrfFilter'
          NotFilter: '#/components/schemas/NotFilter'
    NetworkCheckResult:
      type: object
      properties:
        creationDateMillis:
          type: integer
          format: int64
          examples:
            - 1649277285118
        creator:
          type: string
          description: >-
            The username of the user who created the check, or null if unknown
            or if the account was deleted
          examples:
            - mary
        creatorId:
          type: string
        definition:
          $ref: '#/components/schemas/CheckDefinition'
        definitionDateMillis:
          type: integer
          format: int64
          examples:
            - 1649277285118
        description:
          type: string
        editDateMillis:
          type: integer
          format: int64
          examples:
            - 1649277285118
        editor:
          type: string
          description: >-
            The username of the user who last edited the check, or null if
            unknown, if the account was deleted, or if the check hasn't been
            edited
          examples:
            - steven
        editorId:
          type: string
        enabled:
          type: boolean
        executionDateMillis:
          type: integer
          format: int64
          examples:
            - 1649277285118
        executionDurationMillis:
          type: integer
          format: int64
        id:
          type: string
        name:
          type: string
        note:
          type: string
        numViolations:
          type: integer
          format: int64
        perfMonitoringEnabled:
          type: boolean
          description: >-
            Whether performance monitoring is enabled for this check. Only
            supported for Existential intent checks. Performance monitoring must
            be independently enabled for each device along the check’s path(s).
        priority:
          $ref: '#/components/schemas/CheckPriority'
        status:
          $ref: '#/components/schemas/CheckStatus'
        tags:
          type: array
          items:
            type: string
    NetworkCheckResultWithDiagnosis:
      allOf:
        - type: object
          properties:
            diagnosis:
              $ref: '#/components/schemas/CheckDiagnosis'
        - $ref: '#/components/schemas/NetworkCheckResult'
    NewNetworkCheck:
      type: object
      required:
        - definition
      properties:
        definition:
          $ref: '#/components/schemas/CheckDefinition'
        enabled:
          type: boolean
        name:
          type: string
        note:
          type: string
        perfMonitoringEnabled:
          type: boolean
          description: >-
            Whether performance monitoring is enabled for this check. Only
            supported for Existential intent checks. Performance monitoring must
            be independently enabled for each device along the check’s path(s).
        priority:
          $ref: '#/components/schemas/CheckPriority'
        tags:
          type: array
          items:
            type: string
    NoiseType:
      type: string
      enum:
        - WRONG_GATEWAY
        - INADMISSIBLE
        - NETWORK_OR_BROADCAST_ADDRESS
        - TO_L2_INTERFACE_MAC
        - GLEAN
    NotFilter:
      type: object
      required:
        - type
      properties:
        clause:
          $ref: '#/components/schemas/FlowHopFilter'
        type:
          type: string
          const: NotFilter
      description: A filter that inverts the filter in its `clause`
    NqeCheck:
      type: object
      required:
        - checkType
        - queryId
      properties:
        checkType:
          type: string
          const: NQE
        queryId:
          type: string
          examples:
            - FQ_6ac3682c92a74b778d98584aea8afa5fe40f2150
        params:
          type: object
          additionalProperties: {}
          description: >-
            Values for each parameter declared in the query. The parameter
            values are specified as a JSON object, with one property per
            parameter, where the property name matches the parameter name. The
            property value is the JSON representation of the parameter value.
            The JSON representation of a parameter value depends on the type of
            the value. For values of type `String`, `IpAddress`, `IpSubnet`, and
            `MacAddress`, the JSON representation is a JSON string. For values
            of type `Number`, the value is an integral JSON number. For values
            of type `Boolean`, the JSON representation is true or false. For
            values of type `List<T>`, the JSON representation is an array of
            JSON values, each of which is a JSON representation for type `T`.
            For record values, the JSON representation is a JSON object with
            corresponding properties whose values are JSON representations
            corresponding to the properties' types. For enumerations, the JSON
            representation is a JSON string with the enum constant name. For
            `oneOf` values that contain data, the JSON representation is a JSON
            object with two properties, `alternative` and `value`, where the
            `alternative` property contains the alternative's name (a string)
            and the `value` property is a JSON representation of the data
            associated with this alternative.
          examples:
            - mtuThreshold: 123
              ntpServers:
                - 10.22.2.3
                - 192.33.4.1
    PacketAliasFilter:
      type: object
      required:
        - type
        - value
      properties:
        direction:
          type: string
          enum:
            - src
            - dst
        type:
          type: string
          const: PacketAliasFilter
        value:
          type: string
          description: A Packet Header Set name
      description: >-
        A filter that matches any combination of packet header values that
        satisfy the criteria in a Header Set
    PacketFilter:
      type: object
      required:
        - type
        - values
      properties:
        type:
          type: string
          const: PacketFilter
        values:
          type: object
          additionalProperties:
            type: array
            items:
              type: string
          examples:
            - ipv4_dst:
                - 10.10.10.0/24
      description: A filter that matches a specific packet header value or range of values
    PacketHeaderFilter:
      type: object
      required:
        - type
      properties:
        type:
          type: string
          enum:
            - PacketFilter
            - PacketAliasFilter
            - NotFilter
      oneOf:
        - $ref: '#/components/schemas/PacketFilter'
        - $ref: '#/components/schemas/PacketAliasFilter'
        - $ref: '#/components/schemas/NotFilter'
      discriminator:
        propertyName: type
        mapping:
          PacketFilter: '#/components/schemas/PacketFilter'
          PacketAliasFilter: '#/components/schemas/PacketAliasFilter'
          NotFilter: '#/components/schemas/NotFilter'
    PathQuery:
      type: object
      properties:
        bypass:
          type: array
          items:
            $ref: '#/components/schemas/BypassFilter'
        chain:
          type: array
          items:
            $ref: '#/components/schemas/HopFilter'
        flowTypes:
          type: array
          items:
            type: string
            enum:
              - VALID
              - LOOP
              - POTENTIAL_LOOP
              - BLACKHOLE
              - DROPPED
              - INADMISSIBLE
              - UNREACHABLE
              - IGNORED
              - UNDELIVERED
        forwardingTypes:
          type: array
          items:
            type: string
            enum:
              - L2
              - L3
              - DIRECT_L2
              - FABRIC_PATH
              - VXLAN
              - MCAST_IP
              - DIRECT_IP
              - MPLS
              - L2_PBR
              - L3_PBR
        from:
          $ref: '#/components/schemas/EndpointFilter'
        mode:
          type: string
          const: PERMIT_ALL
        to:
          $ref: '#/components/schemas/EndpointFilter'
    PredefinedCheck:
      type: object
      required:
        - checkType
      properties:
        checkType:
          type: string
          const: Predefined
        params:
          type: object
        predefinedCheckType:
          $ref: '#/components/schemas/PredefinedCheckType'
    PredefinedCheckType:
      type: string
      enum:
        - BGP_NEIGHBOR_ADJACENCY
        - BGP_ROUTER_ID
        - BGP_ROUTE_CONSISTENCY
        - BGP_VPC_PARAMETER_CONSISTENCY
        - EBGP_SELECTION_OVER_IBGP
        - BGP_COMMUNITY_LIST
        - NEXT_HOP_REACHABILITY
        - NO_LOOP
        - SHORTEST_PATH
        - IP_UNIQUENESS
        - HOSTNAME_CONSISTENCY
        - HOSTNAME_UNIQUENESS
        - VLAN_CONSISTENCY
        - MTU_CONSISTENCY
        - PORT_CHANNEL_CONSISTENCY
        - DUPLEX_CONSISTENCY
        - LINK_SPEED_CONSISTENCY
        - SOFTWARE_VERSION_CONSISTENCY
        - TRUNK_INTERFACE_WHITELIST
        - VLAN_EXISTENCE
        - LEARNED_MAC_CONSISTENCY
        - FHRP_PEERING
        - VPC_PARAMETER_CONSISTENCY
        - VPC_INTERFACE_PARAMETER_CONSISTENCY
        - VPC_DEDICATED_KEEPALIVE_LINK
        - VPC_ROLE_PRIORITY
        - SSH_RSA_KEY_LENGTH
        - VPC_STP_PRIORITY
        - VPC_MST_REGION_CONSISTENCY
    QueryStringCheck:
      type: object
      required:
        - checkType
      properties:
        checkType:
          type: string
          const: QueryStringBased
        forRequest:
          type: string
        value:
          type: string
    ReachabilityCheck:
      type: object
      required:
        - checkType
        - filters
      properties:
        checkType:
          type: string
          const: Reachability
        filters:
          $ref: '#/components/schemas/PathQuery'
        headerFieldsWithDefaults:
          type: array
          items:
            type: string
            enum:
              - ip_tos
              - tp_src
              - app_id
              - url
              - user_id
          description: >-
            The header fields for which a default value is assumed if no valid
            is specified in the `from` clause. Defaults to `["url"]`.
        noiseTypes:
          type: array
          items:
            $ref: '#/components/schemas/NoiseType'
          description: >-
            The noise types that should be included in the search results.
            Defaults to `[]`.
    SecurityZoneFilter:
      type: object
      required:
        - device
        - type
        - value
      properties:
        device:
          type: string
          examples:
            - nyc-dc01-rtr-01
        type:
          type: string
          const: SecurityZoneFilter
        value:
          type: string
          examples:
            - corp-trusted
      description: >-
        A filter that matches one security zone on a firewall by name and can be
        used in the `from` or `to` property of a `PathQuery`
    SubnetLocationFilter:
      type: object
      required:
        - type
        - value
      properties:
        type:
          type: string
          const: SubnetLocationFilter
        value:
          type: string
          examples:
            - 10.10.10.64/30
        host:
          type: string
          description: >-
            The hostname that resolves to the IP in `value` (metadata only; not
            used directly)
          examples:
            - testing.example.com
        device:
          type: string
          description: The device at which the subnet is located
          examples:
            - nyc-dc01-rtr01
      description: >-
        A filter that matches a specific IP address or IP subnet address at a
        specific location in the network. If the IP address is a multicast group
        address, this filter matches on the locations of the corresponding
        multicast Rendezvous Points (RPs) in the network.
    TunnelInterfaceFilter:
      type: object
      required:
        - type
        - value
      properties:
        type:
          type: string
          const: TunnelInterfaceFilter
        value:
          type: string
          examples:
            - nyc-dc01-rtr-01 ge3
      description: >-
        A filter that matches one tunnel interface by name and has underlay
        semantics in the `from` or `to` property of a `PathQuery`
    VrfFilter:
      type: object
      required:
        - type
        - value
      properties:
        type:
          type: string
          const: VrfFilter
        value:
          type: string
          description: A VRF name. Use `DeviceVrfFilter` instead for a (device, VRF) pair.
          examples:
            - MY VRF
      description: A filter that matches device interfaces by VRF name
    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
    ClassicDevice:
      allOf:
        - type: object
          required:
            - name
            - host
          properties:
            name:
              type: string
              description: >-
                A name that’s unique (ignoring case) among all of the network’s
                collection source names. May consist of letters, digits, dots,
                hyphens, and underscores.
              examples:
                - my-router
            type:
              $ref: '#/components/schemas/ClassicDeviceType'
              description: Auto-detected during connectivity testing if unspecified.
              examples:
                - checkpoint_ssh
            host:
              type: string
              description: IP address or hostname used to connect to the device.
              examples:
                - 10.121.7.13
            port:
              type: integer
              format: int32
              minimum: 1
              maximum: 65535
              description: >-
                Port used to connect to the device. The default value depends on
                the collection protocol: 22 for SSH, 443 for HTTPS, etc.
              examples:
                - 22
            cliCredentialId:
              type: string
              description: >-
                The `id` of a CliCredential of type `LOGIN`. Relevant for
                devices collected via SSH or Telnet. Credential auto-association
                will be attempted using credentials configured to allow it if
                this property is unspecified and collecting from this device
                requires this kind of credential.
              examples:
                - L-3
            cliCredential2Id:
              type: string
              description: >-
                The `id` of a CliCredential of type `PRIVILEGED_MODE` (for
                Cisco-like or Checkpoint devices) or `SHELL` (for Avi
                controllers). On Checkpoint, this credential is used for TACACS
                privilege escalation. Credential auto-association will be
                attempted using credentials configured to allow it if this
                property is unspecified and collecting from this device requires
                this kind of credential.
              examples:
                - PM-2
            cliCredential3Id:
              type: string
              description: >-
                The `id` of a CliCredential of type `EXPERT_MODE` (for
                Checkpoint devices). Can be set with or without a
                `PRIVILEGED_MODE` credential for `cliCredential2Id`. Credential
                auto-association will be attempted using credentials configured
                to allow it if this property is unspecified and collecting from
                this device requires this kind of credential.
              examples:
                - EM-6
            httpCredentialId:
              type: string
              description: >-
                The `id` of an HttpCredential of type `LOGIN` or `API_KEY`.
                Relevant for devices collected via HTTPS or HTTP. Credential
                auto-association will be attempted using credentials configured
                to allow it if this property is unspecified and collecting from
                this device requires this kind of credential.
              examples:
                - H-5
            snmpCredentialId:
              type: string
              description: >-
                The `id` of an SnmpCredential. Used to collect performance data
                (counters) if `enableSnmpCollection` is true. Credential
                auto-association will be attempted using credentials configured
                to allow it if this property is unspecified and collecting from
                this device requires this kind of credential.
              examples:
                - S-4
            jumpServerId:
              type: string
              description: >-
                The `id` of the JumpServer that should be used to collect from
                this device.
              examples:
                - J-0
            disableIpv6Collection:
              type: boolean
              description: >-
                Disables collection of any IPv6 forwarding state on the device.
                Defaults to false.
              examples:
                - false
            fullCollectionLog:
              type: boolean
              description: >-
                Enables more detailed logging during collection. Defaults to
                false.
              examples:
                - false
            paginationMode:
              $ref: '#/components/schemas/PaginationMode'
              description: >-
                The pagination mode to use during collection. Relevant for
                devices collected via SSH or Telnet. Defaults to
                `DISABLE_PAGINATION`. Per-command pagination (such as appending
                `| more`) may be used if set to `ENABLE_PAGINATION` for a device
                that doesn’t have a per-session pagination mode setting.
              examples:
                - KEEP_UNCHANGED
            terminalWidth:
              type: integer
              format: int32
              minimum: 80
              maximum: 500
              description: >-
                Width of pseudo-terminal in characters. A high value can prevent
                long lines from wrapping. Defaults to 500. Relevant for devices
                collected via SSH or Telnet.
              examples:
                - 500
            largeRtt:
              type: boolean
              description: >-
                Whether the device has a large round-trip time (requires a
                longer response timeout).
              examples:
                - false
            minBytesReadPerSec:
              type: integer
              format: int64
              description: >-
                The minimum read rate in bytes/sec required to prevent
                collection from failing with a `SLOW_READ_RATE_DETECTED` error.
                Defaults to 500.
              examples:
                - false
            maxConnectionsPerMin:
              type: integer
              format: int32
              description: >-
                The maximum number of connections to this device that should be
                attempted per minute. Setting this property can prevent spurious
                connectivity test failures if the device’s SSH server is
                configured with a connection rate limit.
              examples:
                - 10
            useFileTransferForLargeOutput:
              type: boolean
              description: >-
                Whether to use file transfer instead of printing large command
                output directly to the shell. This is currently only supported
                for Juniper devices when executing routing table commands. The
                primary purpose is to avoid printing large outputs directly to
                the shell, which on Juniper devices can interfere with packet
                forwarding performance. Instead, the command output is written
                to a temporary file on the device and then transferred over a
                separate connection. After the transfer is complete, the
                temporary file is deleted to prevent unnecessary disk usage on
                the device.
              examples:
                - false
            bmpStationHost:
              type: string
              description: >-
                IP address or hostname of the BMP station from which BMP
                collection should be peformed for this device. If set, a jump
                server won’t be used for BMP collection.
              examples:
                - 10.121.7.33
            bgpAndBmpFailureHandling:
              type: string
              description: >-
                How to handle BGP or BMP collection failure. Defaults to
                `FAIL_DEVICE`.
              examples:
                - SWITCH_TO_CLI
              enum:
                - FAIL_DEVICE
                - SWITCH_TO_CLI
                - ALWAYS_USE_CLI
                - ALWAYS_USE_BMP
                - CONTINUE_WITHOUT_BGP_DATA
            collectBgpAdvertisements:
              type: boolean
              description: >-
                Whether BGP advertisements should be collected. Defaults to
                `false` unless advertisement collection is required to model a
                [synthetic device](#synthetic-devices) connected to this device.
              examples:
                - false
            bgpTableType:
              type: string
              description: >-
                The BGP route types to collect. Honored only if
                `collectedBgpAdvertisements` is true. Defaults to `BOTH`.
              examples:
                - BOTH
              enum:
                - BOTH
                - ADJ_RIB_IN
                - ADJ_RIB_OUT
            bgpPeerType:
              type: string
              description: >-
                The BGP peer types from which to collect routes. Honored only if
                `collectedBgpAdvertisements` is true. Defaults to `BOTH`.
              examples:
                - BOTH
              enum:
                - BOTH
                - EBGP
                - IBGP
            bgpSubnetsToCollect:
              type: array
              items:
                type: string
              description: >-
                Restricts collection of BGP advertisements to specific subnets
                if the device supports it. Honored only if
                `collectBgpAdvertisements` is `true`.
              examples:
                - - 123.223.47.0/24
            prompt:
              type: string
              description: >-
                A case-insensitive glob pattern used to identify an interactive
                prompt. When this pattern matches the end of the prompt,
                ignoring any trailing whitespace, the Collector will enter the
                configured `promptResponse`. Relevant for devices collected via
                SSH or Telnet.
              examples:
                - y/n
            promptResponse:
              type: string
              description: >-
                What the Collector should enter in response to a device prompt
                matching `prompt` in order to proceed. Relevant for devices
                collected via SSH or Telnet. Required if `prompt` is set.
              examples:
                - 'y'
            collect:
              type: boolean
              description: Whether to collect from the device. Defaults to true.
              examples:
                - false
            note:
              type: string
              description: An optional description or note about the device.
            enableSnmpCollection:
              type: boolean
              description: >-
                Whether to collect performance data (counters) via SNMP.
                Defaults to false.
              examples:
                - false
            highCpuUsage:
              type: number
              format: float
              minimum: 0.75
              maximum: 1
              description: >-
                Threshold at or above which CPU usage is considered high.
                Defaults to 0.8 (80.0%).
              examples:
                - 0.85
            highMemoryUsage:
              type: number
              format: float
              minimum: 0.75
              maximum: 1
              description: >-
                Threshold at or above which memory usage is considered high.
                Defaults to 0.9 (90.0%).
              examples:
                - 0.92
            highInputUtilization:
              type: number
              format: float
              minimum: 0.75
              maximum: 1
              description: >-
                Threshold at or above which input interface utilization is
                considered high. Defaults to 0.9 (90.0%).
              examples:
                - 0.8
            highOutputUtilization:
              type: number
              format: float
              minimum: 0.75
              maximum: 1
              description: >-
                Threshold at or above which output interface utilization is
                considered high. Defaults to 0.9 (90.0%).
              examples:
                - 0.88
            mediumCpuUsage:
              type: number
              format: float
              minimum: 0.5
              maximum: 1
              description: >-
                Threshold at or above which CPU usage is considered medium high.
                Has no default value.
              examples:
                - 0.7
            mediumMemoryUsage:
              type: number
              format: float
              minimum: 0.5
              maximum: 1
              description: >-
                Threshold at or above which memory usage is considered medium
                high. Has no default value.
              examples:
                - 0.71
            mediumInputUtilization:
              type: number
              format: float
              minimum: 0.5
              maximum: 1
              description: >-
                Threshold at or above which input interface utilization is
                considered medium high. Has no default value.
              examples:
                - 0.72
            mediumOutputUtilization:
              type: number
              format: float
              minimum: 0.5
              maximum: 1
              description: >-
                Threshold at or above which output interface utilization is
                considered medium high. Has no default value.
              examples:
                - 0.73
            cloudLocationId:
              type: string
              description: >-
                ID of the cloud location at which this device was discovered.
                Present for cloud-based virtualized devices only.
              examples:
                - AWS.us-east-1
            cloudSetupId:
              type: string
              description: >-
                Name of the cloud setup associated with this device’s discovery.
                Present for cloud-based virtualized devices only.
              examples:
                - my-aws-setup
            cloudDiscoverySource:
              type: string
              description: >-
                Account name (AWS), Project ID (GCP), or Subscription ID (Azure)
                associated with this device’s discovery. Present for cloud-based
                virtualized devices only.
              examples:
                - main
            tags:
              type: array
              items:
                type: string
              description: >-
                Tags assigned to the device. Present only if specifically
                requested.
            locationId:
              type: string
              description: >-
                The `id` of the device’s assigned Location (see [Network
                Locations](#network-locations)). Present only if specifically
                requested. Defaults to "default" (the Unassigned location).
              examples:
                - atl
            testResult:
              $ref: '#/components/schemas/SourceConnectivityResult'
              description: >-
                The device’s most recent connectivity test result. Present only
                if specifically requested. Absent if the device’s connectivity
                hasn’t been tested since the last substantial edit to the
                device.
        - $ref: '#/components/schemas/Attribution'
    ClassicDevicePatch:
      type: object
      properties:
        name:
          type: string
          description: >-
            A name that’s unique (ignoring case) among all of the network’s
            collection source names. May consist of letters, digits, dots,
            hyphens, and underscores. Use `null` to clear. Omit to leave the
            property alone.
          examples:
            - my-router
        type:
          $ref: '#/components/schemas/ClassicDeviceType'
          description: >-
            Auto-detected during connectivity testing if unspecified. Use `null`
            to clear. Omit to leave the property alone.
          examples:
            - checkpoint_ssh
        host:
          type: string
          description: >-
            IP address or hostname used to connect to the device. Use `null` to
            clear. Omit to leave the property alone.
          examples:
            - 10.121.7.13
        port:
          type: integer
          format: int32
          minimum: 1
          maximum: 65535
          description: >-
            Port used to connect to the device. The default value depends on the
            collection protocol: 22 for SSH, 443 for HTTPS, etc. Use `null` to
            clear. Omit to leave the property alone.
          examples:
            - 22
        cliCredentialId:
          type: string
          description: >-
            The `id` of a CliCredential of type `LOGIN`. Relevant for devices
            collected via SSH or Telnet. Credential auto-association will be
            attempted using credentials configured to allow it if this property
            is unspecified and collecting from this device requires this kind of
            credential. Use `null` to clear. Omit to leave the property alone.
          examples:
            - L-3
        cliCredential2Id:
          type: string
          description: >-
            The `id` of a CliCredential of type `PRIVILEGED_MODE` (for
            Cisco-like or Checkpoint devices) or `SHELL` (for Avi controllers).
            On Checkpoint, this credential is used for TACACS privilege
            escalation. Credential auto-association will be attempted using
            credentials configured to allow it if this property is unspecified
            and collecting from this device requires this kind of credential.
            Use `null` to clear. Omit to leave the property alone.
          examples:
            - PM-2
        cliCredential3Id:
          type: string
          description: >-
            The `id` of a CliCredential of type `EXPERT_MODE` (for Checkpoint
            devices). Can be set with or without a `PRIVILEGED_MODE` credential
            for `cliCredential2Id`. Credential auto-association will be
            attempted using credentials configured to allow it if this property
            is unspecified and collecting from this device requires this kind of
            credential. Use `null` to clear. Omit to leave the property alone.
          examples:
            - EM-6
        httpCredentialId:
          type: string
          description: >-
            The `id` of an HttpCredential of type `LOGIN` or `API_KEY`. Relevant
            for devices collected via HTTPS or HTTP. Credential auto-association
            will be attempted using credentials configured to allow it if this
            property is unspecified and collecting from this device requires
            this kind of credential. Use `null` to clear. Omit to leave the
            property alone.
          examples:
            - H-5
        snmpCredentialId:
          type: string
          description: >-
            The `id` of an SnmpCredential. Used to collect performance data
            (counters) if `enableSnmpCollection` is true. Credential
            auto-association will be attempted using credentials configured to
            allow it if this property is unspecified and collecting from this
            device requires this kind of credential. Use `null` to clear. Omit
            to leave the property alone.
          examples:
            - S-4
        jumpServerId:
          type: string
          description: >-
            The `id` of the JumpServer that should be used to collect from this
            device. Use `null` to clear. Omit to leave the property alone.
          examples:
            - J-0
        disableIpv6Collection:
          type: boolean
          description: >-
            Disables collection of any IPv6 forwarding state on the device.
            Defaults to false. Use `null` to clear. Omit to leave the property
            alone.
          examples:
            - false
        fullCollectionLog:
          type: boolean
          description: >-
            Enables more detailed logging during collection. Defaults to false.
            Use `null` to clear. Omit to leave the property alone.
          examples:
            - false
        paginationMode:
          $ref: '#/components/schemas/PaginationMode'
          description: >-
            The pagination mode to use during collection. Relevant for devices
            collected via SSH or Telnet. Defaults to `DISABLE_PAGINATION`.
            Per-command pagination (such as appending `| more`) may be used if
            set to `ENABLE_PAGINATION` for a device that doesn’t have a
            per-session pagination mode setting. Use `null` to clear. Omit to
            leave the property alone.
          examples:
            - KEEP_UNCHANGED
        terminalWidth:
          type: integer
          format: int32
          minimum: 80
          maximum: 500
          description: >-
            Width of pseudo-terminal in characters. A high value can prevent
            long lines from wrapping. Defaults to 500. Relevant for devices
            collected via SSH or Telnet. Use `null` to clear. Omit to leave the
            property alone.
          examples:
            - 500
        largeRtt:
          type: boolean
          description: >-
            Whether the device has a large round-trip time (requires a longer
            response timeout). Use `null` to clear. Omit to leave the property
            alone.
          examples:
            - false
        minBytesReadPerSec:
          type: integer
          format: int64
          description: >-
            The minimum read rate in bytes/sec required to prevent collection
            from failing with a `SLOW_READ_RATE_DETECTED` error. Defaults to
            500. Use `null` to clear. Omit to leave the property alone.
          examples:
            - false
        maxConnectionsPerMin:
          type: integer
          format: int32
          description: >-
            The maximum number of connections to this device that should be
            attempted per minute. Setting this property can prevent spurious
            connectivity test failures if the device’s SSH server is configured
            with a connection rate limit. Use `null` to clear. Omit to leave the
            property alone.
          examples:
            - 10
        useFileTransferForLargeOutput:
          type: boolean
          description: >-
            Whether to use file transfer instead of printing large command
            output directly to the shell. This is currently only supported for
            Juniper devices when executing routing table commands. The primary
            purpose is to avoid printing large outputs directly to the shell,
            which on Juniper devices can interfere with packet forwarding
            performance. Instead, the command output is written to a temporary
            file on the device and then transferred over a separate connection.
            After the transfer is complete, the temporary file is deleted to
            prevent unnecessary disk usage on the device. Use `null` to clear.
            Omit to leave the property alone.
          examples:
            - false
        bmpStationHost:
          type: string
          description: >-
            IP address or hostname of the BMP station from which BMP collection
            should be peformed for this device. If set, a jump server won’t be
            used for BMP collection. Use `null` to clear. Omit to leave the
            property alone.
          examples:
            - 10.121.7.33
        bgpAndBmpFailureHandling:
          type: string
          description: >-
            How to handle BGP or BMP collection failure. Defaults to
            `FAIL_DEVICE`. Use `null` to clear. Omit to leave the property
            alone.
          examples:
            - SWITCH_TO_CLI
          enum:
            - FAIL_DEVICE
            - SWITCH_TO_CLI
            - ALWAYS_USE_CLI
            - ALWAYS_USE_BMP
            - CONTINUE_WITHOUT_BGP_DATA
        collectBgpAdvertisements:
          type: boolean
          description: >-
            Whether BGP advertisements should be collected. Defaults to `false`
            unless advertisement collection is required to model a [synthetic
            device](#synthetic-devices) connected to this device. Use `null` to
            clear. Omit to leave the property alone.
          examples:
            - false
        bgpTableType:
          type: string
          description: >-
            The BGP route types to collect. Honored only if
            `collectedBgpAdvertisements` is true. Defaults to `BOTH`. Use `null`
            to clear. Omit to leave the property alone.
          examples:
            - BOTH
          enum:
            - BOTH
            - ADJ_RIB_IN
            - ADJ_RIB_OUT
        bgpPeerType:
          type: string
          description: >-
            The BGP peer types from which to collect routes. Honored only if
            `collectedBgpAdvertisements` is true. Defaults to `BOTH`. Use `null`
            to clear. Omit to leave the property alone.
          examples:
            - BOTH
          enum:
            - BOTH
            - EBGP
            - IBGP
        bgpSubnetsToCollect:
          type: array
          items:
            type: string
          description: >-
            Restricts collection of BGP advertisements to specific subnets if
            the device supports it. Honored only if `collectBgpAdvertisements`
            is `true`. Use `null` to clear. Omit to leave the property alone.
          examples:
            - - 123.223.47.0/24
        prompt:
          type: string
          description: >-
            A case-insensitive glob pattern used to identify an interactive
            prompt. When this pattern matches the end of the prompt, ignoring
            any trailing whitespace, the Collector will enter the configured
            `promptResponse`. Relevant for devices collected via SSH or Telnet.
            Use `null` to clear. Omit to leave the property alone.
          examples:
            - y/n
        promptResponse:
          type: string
          description: >-
            What the Collector should enter in response to a device prompt
            matching `prompt` in order to proceed. Relevant for devices
            collected via SSH or Telnet. Required if `prompt` is set. Use `null`
            to clear. Omit to leave the property alone.
          examples:
            - 'y'
        collect:
          type: boolean
          description: >-
            Whether to collect from the device. Defaults to true. Use `null` to
            clear. Omit to leave the property alone.
          examples:
            - false
        note:
          type: string
          description: >-
            An optional description or note about the device. Use `null` to
            clear. Omit to leave the property alone.
        enableSnmpCollection:
          type: boolean
          description: >-
            Whether to collect performance data (counters) via SNMP. Defaults to
            false. Use `null` to clear. Omit to leave the property alone.
          examples:
            - false
        highCpuUsage:
          type: number
          format: float
          minimum: 0.75
          maximum: 1
          description: >-
            Threshold at or above which CPU usage is considered high. Defaults
            to 0.8 (80.0%). Use `null` to clear. Omit to leave the property
            alone.
          examples:
            - 0.85
        highMemoryUsage:
          type: number
          format: float
          minimum: 0.75
          maximum: 1
          description: >-
            Threshold at or above which memory usage is considered high.
            Defaults to 0.9 (90.0%). Use `null` to clear. Omit to leave the
            property alone.
          examples:
            - 0.92
        highInputUtilization:
          type: number
          format: float
          minimum: 0.75
          maximum: 1
          description: >-
            Threshold at or above which input interface utilization is
            considered high. Defaults to 0.9 (90.0%). Use `null` to clear. Omit
            to leave the property alone.
          examples:
            - 0.8
        highOutputUtilization:
          type: number
          format: float
          minimum: 0.75
          maximum: 1
          description: >-
            Threshold at or above which output interface utilization is
            considered high. Defaults to 0.9 (90.0%). Use `null` to clear. Omit
            to leave the property alone.
          examples:
            - 0.88
        mediumCpuUsage:
          type: number
          format: float
          minimum: 0.5
          maximum: 1
          description: >-
            Threshold at or above which CPU usage is considered medium high. Has
            no default value. Use `null` to clear. Omit to leave the property
            alone.
          examples:
            - 0.7
        mediumMemoryUsage:
          type: number
          format: float
          minimum: 0.5
          maximum: 1
          description: >-
            Threshold at or above which memory usage is considered medium high.
            Has no default value. Use `null` to clear. Omit to leave the
            property alone.
          examples:
            - 0.71
        mediumInputUtilization:
          type: number
          format: float
          minimum: 0.5
          maximum: 1
          description: >-
            Threshold at or above which input interface utilization is
            considered medium high. Has no default value. Use `null` to clear.
            Omit to leave the property alone.
          examples:
            - 0.72
        mediumOutputUtilization:
          type: number
          format: float
          minimum: 0.5
          maximum: 1
          description: >-
            Threshold at or above which output interface utilization is
            considered medium high. Has no default value. Use `null` to clear.
            Omit to leave the property alone.
          examples:
            - 0.73
    ClassicDeviceType:
      type: string
      enum:
        - aruba_controller_ssh
        - aruba_switch_ssh
        - aruba_aos_cx_ssh
        - 128t_conductor_full
        - 128t_conductor
        - 128t_router
        - a10_acos_ssh
        - arista_eos_ssh
        - avi_controller_ssh
        - avi_controller_ssh_cli_user
        - avi_controller_ssh_via_host
        - avi_controller_https_api
        - avi_controller_http_api
        - bluecoat_ssh
        - cisco_ios_ssh
        - cisco_ios_telnet
        - cisco_ios_xe_ssh
        - cisco_ios_xe_telnet
        - cisco_ios_xr_ssh
        - cisco_nxos_ssh
        - cisco_nxos_telnet
        - cisco_asa_ssh
        - cisco_asa_telnet
        - cisco_asa_admin_ssh
        - cisco_asa_child_ssh
        - cisco_ftd_ssh
        - cisco_fxos_ssh
        - cisco_nxos_aci_ssh
        - cisco_apic_ssh
        - cisco_apic_api
        - cisco_ndo_api
        - cisco_apic_only_ssh
        - cisco_sg_ssh
        - juniper_junos_ssh
        - juniper_srx_ssh
        - juniper_netscreen_ssh
        - pica8_ovs_ofctl_ssh
        - linux_ovs_ofctl_ssh
        - f5_ssh
        - f5_os_hypervisor_ssh
        - checkpoint_ssh
        - checkpoint_ssh_nonexpert
        - checkpoint_ssh_with_manager
        - checkpoint_mgmt_api
        - fortinet_ssh
        - hp_comware_ssh
        - hp_comware_telnet
        - hp_provision_ssh
        - huawei_switch_ssh
        - panos_ssh
        - viasat_encryptor_snmp3
        - netscaler_ssh
        - cumulus_ssh
        - riverbed_steelhead_ssh
        - riverbed_interceptor_ssh
        - cisco_ucs_ssh
        - avaya_sr_ssh
        - avaya_sr_telnet
        - 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
    ClassicDevices:
      type: object
      properties:
        devices:
          type: array
          items:
            $ref: '#/components/schemas/ClassicDevice'
    ClassicDevicesPatch:
      type: object
      properties:
        names:
          type: array
          items:
            type: string
        update:
          $ref: '#/components/schemas/ClassicDevicePatch'
    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
    DeviceCriteria:
      type: object
      required:
        - names
      properties:
        names:
          type: array
          items:
            type: string
          examples:
            - - router_01
              - router_02
    DeviceNames:
      type: object
      properties:
        names:
          type: array
          items:
            type: string
    NewClassicDevice:
      type: object
      required:
        - name
        - host
      properties:
        name:
          type: string
          description: >-
            A name that’s unique (ignoring case) among all of the network’s
            collection source names. May consist of letters, digits, dots,
            hyphens, and underscores.
          examples:
            - my-router
        type:
          $ref: '#/components/schemas/ClassicDeviceType'
          description: Auto-detected during connectivity testing if unspecified.
          examples:
            - checkpoint_ssh
        host:
          type: string
          description: IP address or hostname used to connect to the device.
          examples:
            - 10.121.7.13
        port:
          type: integer
          format: int32
          minimum: 1
          maximum: 65535
          description: >-
            Port used to connect to the device. The default value depends on the
            collection protocol: 22 for SSH, 443 for HTTPS, etc.
          examples:
            - 22
        cliCredentialId:
          type: string
          description: >-
            The `id` of a CliCredential of type `LOGIN`. Relevant for devices
            collected via SSH or Telnet. Credential auto-association will be
            attempted using credentials configured to allow it if this property
            is unspecified and collecting from this device requires this kind of
            credential.
          examples:
            - L-3
        cliCredential2Id:
          type: string
          description: >-
            The `id` of a CliCredential of type `PRIVILEGED_MODE` (for
            Cisco-like or Checkpoint devices) or `SHELL` (for Avi controllers).
            On Checkpoint, this credential is used for TACACS privilege
            escalation. Credential auto-association will be attempted using
            credentials configured to allow it if this property is unspecified
            and collecting from this device requires this kind of credential.
          examples:
            - PM-2
        cliCredential3Id:
          type: string
          description: >-
            The `id` of a CliCredential of type `EXPERT_MODE` (for Checkpoint
            devices). Can be set with or without a `PRIVILEGED_MODE` credential
            for `cliCredential2Id`. Credential auto-association will be
            attempted using credentials configured to allow it if this property
            is unspecified and collecting from this device requires this kind of
            credential.
          examples:
            - EM-6
        httpCredentialId:
          type: string
          description: >-
            The `id` of an HttpCredential of type `LOGIN` or `API_KEY`. Relevant
            for devices collected via HTTPS or HTTP. Credential auto-association
            will be attempted using credentials configured to allow it if this
            property is unspecified and collecting from this device requires
            this kind of credential.
          examples:
            - H-5
        snmpCredentialId:
          type: string
          description: >-
            The `id` of an SnmpCredential. Used to collect performance data
            (counters) if `enableSnmpCollection` is true. Credential
            auto-association will be attempted using credentials configured to
            allow it if this property is unspecified and collecting from this
            device requires this kind of credential.
          examples:
            - S-4
        jumpServerId:
          type: string
          description: >-
            The `id` of the JumpServer that should be used to collect from this
            device.
          examples:
            - J-0
        disableIpv6Collection:
          type: boolean
          description: >-
            Disables collection of any IPv6 forwarding state on the device.
            Defaults to false.
          examples:
            - false
        fullCollectionLog:
          type: boolean
          description: Enables more detailed logging during collection. Defaults to false.
          examples:
            - false
        paginationMode:
          $ref: '#/components/schemas/PaginationMode'
          description: >-
            The pagination mode to use during collection. Relevant for devices
            collected via SSH or Telnet. Defaults to `DISABLE_PAGINATION`.
            Per-command pagination (such as appending `| more`) may be used if
            set to `ENABLE_PAGINATION` for a device that doesn’t have a
            per-session pagination mode setting.
          examples:
            - KEEP_UNCHANGED
        terminalWidth:
          type: integer
          format: int32
          minimum: 80
          maximum: 500
          description: >-
            Width of pseudo-terminal in characters. A high value can prevent
            long lines from wrapping. Defaults to 500. Relevant for devices
            collected via SSH or Telnet.
          examples:
            - 500
        largeRtt:
          type: boolean
          description: >-
            Whether the device has a large round-trip time (requires a longer
            response timeout).
          examples:
            - false
        minBytesReadPerSec:
          type: integer
          format: int64
          description: >-
            The minimum read rate in bytes/sec required to prevent collection
            from failing with a `SLOW_READ_RATE_DETECTED` error. Defaults to
            500.
          examples:
            - false
        maxConnectionsPerMin:
          type: integer
          format: int32
          description: >-
            The maximum number of connections to this device that should be
            attempted per minute. Setting this property can prevent spurious
            connectivity test failures if the device’s SSH server is configured
            with a connection rate limit.
          examples:
            - 10
        useFileTransferForLargeOutput:
          type: boolean
          description: >-
            Whether to use file transfer instead of printing large command
            output directly to the shell. This is currently only supported for
            Juniper devices when executing routing table commands. The primary
            purpose is to avoid printing large outputs directly to the shell,
            which on Juniper devices can interfere with packet forwarding
            performance. Instead, the command output is written to a temporary
            file on the device and then transferred over a separate connection.
            After the transfer is complete, the temporary file is deleted to
            prevent unnecessary disk usage on the device.
          examples:
            - false
        bmpStationHost:
          type: string
          description: >-
            IP address or hostname of the BMP station from which BMP collection
            should be peformed for this device. If set, a jump server won’t be
            used for BMP collection.
          examples:
            - 10.121.7.33
        bgpAndBmpFailureHandling:
          type: string
          description: >-
            How to handle BGP or BMP collection failure. Defaults to
            `FAIL_DEVICE`.
          examples:
            - SWITCH_TO_CLI
          enum:
            - FAIL_DEVICE
            - SWITCH_TO_CLI
            - ALWAYS_USE_CLI
            - ALWAYS_USE_BMP
            - CONTINUE_WITHOUT_BGP_DATA
        collectBgpAdvertisements:
          type: boolean
          description: >-
            Whether BGP advertisements should be collected. Defaults to `false`
            unless advertisement collection is required to model a [synthetic
            device](#synthetic-devices) connected to this device.
          examples:
            - false
        bgpTableType:
          type: string
          description: >-
            The BGP route types to collect. Honored only if
            `collectedBgpAdvertisements` is true. Defaults to `BOTH`.
          examples:
            - BOTH
          enum:
            - BOTH
            - ADJ_RIB_IN
            - ADJ_RIB_OUT
        bgpPeerType:
          type: string
          description: >-
            The BGP peer types from which to collect routes. Honored only if
            `collectedBgpAdvertisements` is true. Defaults to `BOTH`.
          examples:
            - BOTH
          enum:
            - BOTH
            - EBGP
            - IBGP
        bgpSubnetsToCollect:
          type: array
          items:
            type: string
          description: >-
            Restricts collection of BGP advertisements to specific subnets if
            the device supports it. Honored only if `collectBgpAdvertisements`
            is `true`.
          examples:
            - - 123.223.47.0/24
        prompt:
          type: string
          description: >-
            A case-insensitive glob pattern used to identify an interactive
            prompt. When this pattern matches the end of the prompt, ignoring
            any trailing whitespace, the Collector will enter the configured
            `promptResponse`. Relevant for devices collected via SSH or Telnet.
          examples:
            - y/n
        promptResponse:
          type: string
          description: >-
            What the Collector should enter in response to a device prompt
            matching `prompt` in order to proceed. Relevant for devices
            collected via SSH or Telnet. Required if `prompt` is set.
          examples:
            - 'y'
        collect:
          type: boolean
          description: Whether to collect from the device. Defaults to true.
          examples:
            - false
        note:
          type: string
          description: An optional description or note about the device.
        enableSnmpCollection:
          type: boolean
          description: >-
            Whether to collect performance data (counters) via SNMP. Defaults to
            false.
          examples:
            - false
        highCpuUsage:
          type: number
          format: float
          minimum: 0.75
          maximum: 1
          description: >-
            Threshold at or above which CPU usage is considered high. Defaults
            to 0.8 (80.0%).
          examples:
            - 0.85
        highMemoryUsage:
          type: number
          format: float
          minimum: 0.75
          maximum: 1
          description: >-
            Threshold at or above which memory usage is considered high.
            Defaults to 0.9 (90.0%).
          examples:
            - 0.92
        highInputUtilization:
          type: number
          format: float
          minimum: 0.75
          maximum: 1
          description: >-
            Threshold at or above which input interface utilization is
            considered high. Defaults to 0.9 (90.0%).
          examples:
            - 0.8
        highOutputUtilization:
          type: number
          format: float
          minimum: 0.75
          maximum: 1
          description: >-
            Threshold at or above which output interface utilization is
            considered high. Defaults to 0.9 (90.0%).
          examples:
            - 0.88
        mediumCpuUsage:
          type: number
          format: float
          minimum: 0.5
          maximum: 1
          description: >-
            Threshold at or above which CPU usage is considered medium high. Has
            no default value.
          examples:
            - 0.7
        mediumMemoryUsage:
          type: number
          format: float
          minimum: 0.5
          maximum: 1
          description: >-
            Threshold at or above which memory usage is considered medium high.
            Has no default value.
          examples:
            - 0.71
        mediumInputUtilization:
          type: number
          format: float
          minimum: 0.5
          maximum: 1
          description: >-
            Threshold at or above which input interface utilization is
            considered medium high. Has no default value.
          examples:
            - 0.72
        mediumOutputUtilization:
          type: number
          format: float
          minimum: 0.5
          maximum: 1
          description: >-
            Threshold at or above which output interface utilization is
            considered medium high. Has no default value.
          examples:
            - 0.73
        cloudLocationId:
          type: string
          description: >-
            ID of the cloud location at which this device was discovered.
            Present for cloud-based virtualized devices only.
          examples:
            - AWS.us-east-1
        cloudSetupId:
          type: string
          description: >-
            Name of the cloud setup associated with this device’s discovery.
            Present for cloud-based virtualized devices only.
          examples:
            - my-aws-setup
        cloudDiscoverySource:
          type: string
          description: >-
            Account name (AWS), Project ID (GCP), or Subscription ID (Azure)
            associated with this device’s discovery. Present for cloud-based
            virtualized devices only.
          examples:
            - main
    PaginationMode:
      type: string
      enum:
        - KEEP_UNCHANGED
        - DISABLE_PAGINATION
        - ENABLE_PAGINATION
    SourceConnectivityResult:
      type: object
      required:
        - startTime
        - endTime
        - savedAt
      properties:
        startTime:
          type: string
          description: >-
            When this connectivity test began, according to the Collector’s
            system clock.
          examples:
            - '2025-05-28T12:33:00.000Z'
        endTime:
          type: string
          description: >-
            When this connectivity test ended, according to the Collector’s
            system clock.
          examples:
            - '2025-05-28T12:33:33.333Z'
        savedAt:
          type: string
          description: >-
            When this connectivity test result was saved to the database,
            according to the server’s system clock.
          examples:
            - '2025-05-28T12:34:56.789Z'
        error:
          $ref: '#/components/schemas/ConnectivityTestError'
          description: >-
            The error encountered during the test. Present if the test failed.
            Absent if the test passed.
          examples:
            - PING_FAILED
        errorPhase:
          type: string
          description: >-
            The test phase during which `error` was encountered. Present if
            `error` is present.
          examples:
            - CONNECTION
          enum:
            - CONNECTION
            - AUTHENTICATION
            - TYPE_DISCOVERY
            - SETUP
            - AUTHORIZATION
            - QUERY
        discoveredType:
          $ref: '#/components/schemas/ClassicDeviceType'
          description: The device type auto-discovered during the connectivity test.
          examples:
            - arista_eos_ssh
        discoveredCliCredentialId:
          type: string
          description: >-
            The `id` of the working CliCredential of type `LOGIN`
            auto-discovered during the connectivity test. Can only be present
            for device types collected via SSH.
          examples:
            - L-3
        discoveredCliCredential2Id:
          type: string
          description: >-
            The `id` of the working CliCredential of type `PRIVILEGED_MODE` (for
            Cisco-like and Checkpoint devices) or `SHELL` (for Avi controllers)
            auto-discovered during the connectivity test. Can only be present
            for device types collected via SSH or Telnet.
          examples:
            - PM-2
        discoveredCliCredential3Id:
          type: string
          description: >-
            The `id` of the working CliCredential of type `EXPERT_MODE` (for
            Checkpoint devices) auto-discovered during the connectivity test.
            Can only be present for device types collected via SSH.
          examples:
            - EM-3
        discoveredHttpCredentialId:
          type: string
          description: >-
            The `id` of the working HttpCredential of type `LOGIN` or `API_KEY`
            auto-discovered during the connectivity test. Can only be present
            for device types collected via HTTPS.
          examples:
            - H-5
        discoveredSnmpCredentialId:
          type: string
          description: >-
            The `id` of the working SnmpCredential auto-discovered during the
            connectivity test.
          examples:
            - S-1
        hostIps:
          type: array
          items:
            type: string
          description: >-
            The IP addresses to which `host` resolves if it’s a hostname.
            Contains just `host` itself if it’s an IP address.
          examples:
            - - 10.121.7.13
        unauthorizedCommands:
          type: array
          items:
            type: string
          description: >-
            Commands that failed with an authorization (permission) error during
            the connectivity test.
          examples:
            - - show config
              - show interfaces status
    CliCredential:
      type: object
      required:
        - type
        - name
        - password
      properties:
        id:
          type: string
          examples:
            - L-3
        type:
          $ref: '#/components/schemas/CliCredentialType'
          examples:
            - LOGIN
        name:
          type: string
          description: For display purposes in the application
          examples:
            - admin (sjc)
        username:
          type: string
          description: Required for `LOGIN` and `SHELL` types
          examples:
            - admin
        password:
          type: string
          description: >-
            A system-generated identifier is substituted for the actual password
            in responses.
          examples:
            - my-s3cr3t-p4s$w0rd
        privilegedModePasswordId:
          type: string
          description: >-
            Only valid for `LOGIN` type. If set, only this credential will be
            used on devices that require a privileged mode password during a
            connectivity test or collection. If a privileged mode password is
            specified both here and in a `ClassicDevice`, the one in the
            `ClassicDevice` will be used.
          examples:
            - PM-6
        privilegeLevel:
          type: integer
          format: int32
          description: >-
            Only valid for `PRIVILEGED_MODE` type. On Checkpoint devices, this
            is used as the TACACS privilege level, as in TACP-15. If absent, the
            highest privilege level will be used. Has no effect for other kinds
            of devices.
          examples:
            - 15
        autoAssociate:
          type: boolean
          description: >-
            Whether this credential can be attempted on devices not explicitly
            configured to use it. Defaults to true.
    CliCredentialType:
      type: string
      enum:
        - LOGIN
        - PRIVILEGED_MODE
        - EXPERT_MODE
        - SHELL
    CliCredentialUpdate:
      type: object
      properties:
        name:
          type: string
          description: For display purposes in the application
          examples:
            - admin (sjc)
        username:
          type: string
          description: for `LOGIN` and `SHELL` types
          examples:
            - admin
        password:
          type: string
          examples:
            - my-s3cr3t-p4s$w0rd
        privilegedModePasswordId:
          type: string
          description: >-
            Only valid for `LOGIN` type. If set, only this credential will be
            used on devices that require a privileged mode password during a
            connectivity test or collection. If a privileged mode password is
            specified both here and in a `ClassicDevice`, the one in the
            `ClassicDevice` will be used.
          examples:
            - 31d70f9f-a279-44ac-a621-ab3181966ad8
        privilegeLevel:
          type: integer
          format: int32
          description: >-
            Only valid for `PRIVILEGED_MODE` type. On Checkpoint devices, this
            is used as the TACACS privilege level, as in TACP-15. If absent, the
            highest privilege level will be used. Has no effect for other kinds
            of devices.
          examples:
            - 15
        autoAssociate:
          type: boolean
          description: Only supported for `LOGIN`, `PRIVILEGED_MODE`, and `SHELL` types.
    HttpCredential:
      type: object
      required:
        - type
        - name
        - password
      properties:
        id:
          type: string
          examples:
            - H-3
        type:
          $ref: '#/components/schemas/HttpCredentialType'
          examples:
            - LOGIN
        name:
          type: string
          description: For display purposes in the application
          examples:
            - admin (sjc)
        username:
          type: string
          description: Required for the `LOGIN` type
          examples:
            - admin
        password:
          type: string
          description: >-
            A system-generated identifier is substituted for the actual password
            in responses.
          examples:
            - my-s3cr3t-p4s$w0rd
        loginType:
          $ref: '#/components/schemas/LoginType'
          description: >-
            Required only for a credential of type `LOGIN` used by a Silver Peak
            Orchestrator
          examples:
            - LOCAL
        autoAssociate:
          type: boolean
          description: >-
            Defaults to true for the `LOGIN` type. Not allowed for the `API_KEY`
            type.
          examples:
            - false
    HttpCredentialType:
      type: string
      enum:
        - LOGIN
        - API_KEY
    HttpCredentialUpdate:
      type: object
      required:
        - name
        - password
      properties:
        name:
          type: string
          description: For display purposes in the application
          examples:
            - admin (sjc)
        username:
          type: string
          description: Required for the `LOGIN` type
          examples:
            - admin
        password:
          type: string
          examples:
            - my-s3cr3t-p4s$w0rd
        loginType:
          $ref: '#/components/schemas/LoginType'
          description: >-
            Required only for a credential of type `LOGIN` used by a Silver Peak
            Orchestrator
          examples:
            - LOCAL
        autoAssociate:
          type: boolean
          description: >-
            Defaults to true for the `LOGIN` type. Not allowed for the `API_KEY`
            type.
          examples:
            - false
    LoginType:
      type: string
      enum:
        - LOCAL
        - RADIUS
        - TACACS
        - OAUTH
        - JWT
        - SAML
    NewCliCredential:
      type: object
      required:
        - type
        - name
        - password
      properties:
        type:
          $ref: '#/components/schemas/CliCredentialType'
          examples:
            - LOGIN
        name:
          type: string
          description: For display purposes in the application
          examples:
            - admin (sjc)
        username:
          type: string
          description: Required for `LOGIN` and `SHELL` types
          examples:
            - admin
        password:
          type: string
          examples:
            - my-s3cr3t-p4s$w0rd
        privilegedModePasswordId:
          type: string
          description: >-
            Only valid for `LOGIN` type. If set, only this credential will be
            used on devices that require a privileged mode password during a
            connectivity test or collection. If a privileged mode password is
            specified both here and in a `ClassicDevice`, the one in the
            `ClassicDevice` will be used.
          examples:
            - 31d70f9f-a279-44ac-a621-ab3181966ad8
        privilegeLevel:
          type: integer
          format: int32
          description: >-
            Only valid for `PRIVILEGED_MODE` type. On Checkpoint devices, this
            is used as the TACACS privilege level, as in TACP-15. If absent, the
            highest privilege level will be used. Has no effect for other kinds
            of devices.
          examples:
            - 15
        autoAssociate:
          type: boolean
          description: >-
            Whether this credential can be attempted on devices not explicitly
            configured to use it. Defaults to true.
    NewHttpCredential:
      type: object
      required:
        - type
        - name
        - password
      properties:
        type:
          $ref: '#/components/schemas/HttpCredentialType'
          examples:
            - LOGIN
        name:
          type: string
          description: For display purposes in the application
          examples:
            - admin (sjc)
        username:
          type: string
          description: Required for the `LOGIN` type
          examples:
            - admin
        password:
          type: string
          examples:
            - my-s3cr3t-p4s$w0rd
        loginType:
          $ref: '#/components/schemas/LoginType'
          description: >-
            Required only for a credential of type `LOGIN` used by a Silver Peak
            Orchestrator
          examples:
            - LOCAL
        autoAssociate:
          type: boolean
          description: >-
            Defaults to true for the `LOGIN` type. Not allowed for the `API_KEY`
            type.
          examples:
            - false
    StoredCliCredential:
      allOf:
        - $ref: '#/components/schemas/CliCredential'
        - $ref: '#/components/schemas/Attribution'
    StoredHttpCredential:
      allOf:
        - $ref: '#/components/schemas/HttpCredential'
        - $ref: '#/components/schemas/Attribution'
    ApiVersion:
      type: object
      properties:
        build:
          type: string
          examples:
            - ee9b380
        release:
          type: string
          examples:
            - 21.50.1-03
        version:
          type: string
          examples:
            - 21.50.1
    DeviceSet:
      type: object
      properties:
        devices:
          type: array
          items:
            type: string
          examples:
            - - atl-edge-fw01
              - ny-edge-fw2
    DeviceTag:
      type: object
      required:
        - name
      properties:
        name:
          type: string
          description: The device tag’s name. Case-insensitive. May include spaces.
          examples:
            - SEC
        color:
          type: string
          description: >-
            The device tag’s color in RGB hex format. Used in network topology
            diagrams if specified.
          examples:
            - '#0064a0'
    DeviceTagPatch:
      type: object
      properties:
        name:
          type: string
          description: The device tag’s name. Case-insensitive. May include spaces.
          examples:
            - SEC
        color:
          type: string
          description: >-
            The device tag’s color in RGB hex format. Used in network topology
            diagrams if specified.
          examples:
            - '#0064a0'
    DeviceTagWithDevices:
      allOf:
        - type: object
          properties:
            devices:
              type: array
              items:
                type: string
              description: >-
                The names of network devices and/or endpoints associated with
                this tag.
              examples:
                - - atl-edge-fw01
                  - ny-edge-fw2
        - $ref: '#/components/schemas/DeviceTag'
    DeviceTags:
      type: object
      properties:
        tags:
          type: array
          items:
            $ref: '#/components/schemas/DeviceTag'
    DeviceTagsWithDevices:
      type: object
      properties:
        tags:
          type: array
          items:
            $ref: '#/components/schemas/DeviceTagWithDevices'
    DevicesAndTags:
      type: object
      properties:
        devices:
          type: array
          items:
            type: string
          examples:
            - - atl-edge-fw01
              - ny-edge-fw2
        tags:
          type: array
          items:
            type: string
          examples:
            - - SEC
    JumpServer:
      type: object
      required:
        - host
        - username
      properties:
        id:
          type: string
          examples:
            - 8c4a168e-c6ca-4978-bcc9-c0ec7f64a164
        host:
          type: string
          examples:
            - 10.121.7.14
        port:
          type: integer
          format: int32
          description: defaults to 22
          examples:
            - 23
        username:
          type: string
          examples:
            - admin
        password:
          type: string
          description: >-
            Either this or `sshKey` must be provided in requests. A
            system-generated identifier is substituted for the actual password
            in responses.
          examples:
            - my-s3cr3t-p4s$w0rd
        sshKey:
          type: string
          description: >-
            SSH private key for authentication. Either this or `password` must
            be provided in requests. Requires `supportsPortForwarding` to be
            true. A system-generated identifier is substituted for the actual
            key in responses.
          examples:
            - |-
              -----BEGIN RSA PRIVATE KEY-----
              MIIPIQIBAzCCDtoGCSqGSIb3DQEHAa...
        sshCert:
          type: string
          description: >-
            SSH user certificate for authentication. Applicable only for
            certificate based authentication and requires `sshKey` to be
            provided.
          examples:
            - >-
              ssh-rsa-cert-v01@openssh.com
              AAAAHHNzaC1yc2EtY2VydC12MDFAb3BlbnNzaC5jb20AAA...
        supportsPortForwarding:
          type: boolean
          description: defaults to true
          examples:
            - false
        commandFormat:
          $ref: '#/components/schemas/JumpServerCommandFormat'
          description: applicable when supportsPortForwarding is false, defaults to UNIX
          examples:
            - CISCO_IOS
        vrf:
          type: string
          description: >-
            VRF that this jump server should use to connect to devices. Can be
            set only if `commandFormat` is CISCO_IOS.
          examples:
            - Management-vrf
        authenticationTimeoutSeconds:
          type: integer
          format: int32
          description: >-
            seconds to wait for the jump server authentication response.
            Defaults to 20.
          examples:
            - 20
    JumpServerCommandFormat:
      type: string
      enum:
        - UNIX
        - CISCO_IOS
        - JUNOS
        - PANORAMA
    JumpServerUpdate:
      type: object
      properties:
        host:
          type: string
          examples:
            - 10.121.7.14
        port:
          type: integer
          format: int32
          examples:
            - 23
        username:
          type: string
          examples:
            - admin
        password:
          type: string
          examples:
            - my-s3cr3t-p4s$w0rd
        sshKey:
          type: string
          examples:
            - |-
              -----BEGIN RSA PRIVATE KEY-----
              MIIPIQIBAzCCDtoGCSqGSIb3DQEHAa...
        sshCert:
          type: string
          examples:
            - >-
              ssh-rsa-cert-v01@openssh.com
              AAAAHHNzaC1yc2EtY2VydC12MDFAb3BlbnNzaC5jb20AAA...
        supportsPortForwarding:
          type: boolean
          examples:
            - false
        commandFormat:
          $ref: '#/components/schemas/JumpServerCommandFormat'
          examples:
            - CISCO_IOS
        vrf:
          type: string
          examples:
            - Management-vrf
        authenticationTimeoutSeconds:
          type: integer
          format: int32
          examples:
            - 20
    NewJumpServer:
      type: object
      required:
        - host
        - username
      properties:
        host:
          type: string
          examples:
            - 10.121.7.14
        port:
          type: integer
          format: int32
          description: defaults to 22
          examples:
            - 23
        username:
          type: string
          examples:
            - admin
        password:
          type: string
          description: Either this or `sshKey` is required
          examples:
            - my-s3cr3t-p4s$w0rd
        sshKey:
          type: string
          description: >-
            SSH private key for authentication. Either this or `password` is
            required. Requires `supportsPortForwarding` to be true.
          examples:
            - |-
              -----BEGIN RSA PRIVATE KEY-----
              MIIPIQIBAzCCDtoGCSqGSIb3DQEHAa…
        sshCert:
          type: string
          description: >-
            SSH user certificate for authentication. Applicable only for
            certificate based authentication and requires `sshKey` to be
            provided.
          examples:
            - >-
              ssh-rsa-cert-v01@openssh.com
              AAAAHHNzaC1yc2EtY2VydC12MDFAb3BlbnNzaC5jb20AAA…
        supportsPortForwarding:
          type: boolean
          description: defaults to true
          examples:
            - false
        commandFormat:
          $ref: '#/components/schemas/JumpServerCommandFormat'
          description: applicable when supportsPortForwarding is false, defaults to UNIX
          examples:
            - CISCO_IOS
        vrf:
          type: string
          description: >-
            VRF that this jump server should use to connect to devices. Can be
            set only if `commandFormat` is CISCO_IOS.
          examples:
            - Management-vrf
        authenticationTimeoutSeconds:
          type: integer
          format: int32
          description: >-
            seconds to wait for the jump server authentication response.
            Defaults to 20.
          examples:
            - 20
    StoredJumpServer:
      allOf:
        - $ref: '#/components/schemas/JumpServer'
        - $ref: '#/components/schemas/Attribution'
    CollectionSchedule:
      allOf:
        - type: object
          required:
            - id
          properties:
            id:
              type: string
              description: Network-specific collection schedule identifier
              examples:
                - '1'
        - $ref: '#/components/schemas/CollectionScheduleDefinition'
    CollectionScheduleDefinition:
      type: object
      required:
        - enabled
        - daysOfTheWeek
      properties:
        enabled:
          type: boolean
          description: Whether the schedule is currently in effect
          examples:
            - true
        timeZone:
          $ref: '#/components/schemas/TimeZone'
          description: >-
            The time zone used to identify day boundaries and to interpret
            `times`, `startAt`, and `endAt`. Defaults to the organization’s
            preferred time zone.
          examples:
            - America/Los_Angeles
        daysOfTheWeek:
          type: array
          items:
            type: integer
            format: int32
          description: >-
            The days of the week, Sun (0), Mon (1), …, Sat (6), on which the
            collection schedule is active. Never empty.
          examples:
            - - 0
              - 2
              - 4
              - 6
        times:
          type: array
          items:
            type: string
          description: >-
            Times of the day (in "HH:mm" format) at which network collections
            should start. Either `times` or `periodInSeconds` must be
            specified—not both. Never empty if present.
          examples:
            - - '01:00'
              - '06:00'
              - '11:00'
              - '16:00'
              - '21:00'
        periodInSeconds:
          type: integer
          format: int32
          description: >-
            How many seconds after the start of the most recent collection that
            the next one should begin. Either `times` or `periodInSeconds` must
            be specified—not both. Must be positive.


            **Note**: A Collector can only perform one network collection at a
            time. A scheduled collection will be delayed if it cannot start on
            time due to an earlier collection running long.
          examples:
            - 1800
        startAt:
          type: string
          description: >-
            The time of day (in "HH:mm" format) at which a rate-based collection
            schedule begins. Must be absent if `times` is specified. Defaults to
            the start of the day (00:00).
          examples:
            - '05:30'
        endAt:
          type: string
          description: >-
            The time of day (in "HH:mm" format) at which a rate-based collection
            schedule ends. Must be absent if `times` is specified. Defaults to
            the end of the day.
          examples:
            - '20:00'
    CollectionSchedules:
      type: object
      properties:
        schedules:
          type: array
          items:
            $ref: '#/components/schemas/CollectionSchedule'
    CollectorState:
      type: object
      required:
        - isSet
      properties:
        isSet:
          type: boolean
          description: Whether the network has a Collector assigned
        busyStatus:
          $ref: '#/components/schemas/CollectorStatus'
          description: Absent if the network has no Collector assigned
    CollectorStatus:
      type: string
      enum:
        - OFFLINE
        - IDLE
        - TESTING
        - COLLECTING
        - COLLECTION_QUEUED
        - DISCOVERING
        - UPDATING
    TimeZone:
      type: string
      enum:
        - UTC
        - Africa/Accra
        - Africa/Addis_Ababa
        - Africa/Algiers
        - Africa/Cairo
        - Africa/Dar_es_Salaam
        - Africa/Johannesburg
        - Africa/Khartoum
        - Africa/Kinshasa
        - Africa/Lagos
        - Africa/Luanda
        - Africa/Maputo
        - America/Argentina/Buenos_Aires
        - America/Bogota
        - America/Chicago
        - America/Denver
        - America/Lima
        - America/Los_Angeles
        - America/Mexico_City
        - America/New_York
        - America/Phoenix
        - America/Santiago
        - America/Sao_Paulo
        - America/Toronto
        - Asia/Amman
        - Asia/Baghdad
        - Asia/Bangkok
        - Asia/Beirut
        - Asia/Dhaka
        - Asia/Ho_Chi_Minh
        - Asia/Hong_Kong
        - Asia/Jakarta
        - Asia/Jerusalem
        - Asia/Karachi
        - Asia/Kolkata
        - Asia/Kuala_Lumpur
        - Asia/Manila
        - Asia/Riyadh
        - Asia/Seoul
        - Asia/Shanghai
        - Asia/Singapore
        - Asia/Tehran
        - Asia/Tokyo
        - Asia/Yangon
        - Australia/Adelaide
        - Australia/Eucla
        - Australia/Perth
        - Australia/Sydney
        - Europe/Belgrade
        - Europe/Berlin
        - Europe/Istanbul
        - Europe/London
        - Europe/Madrid
        - Europe/Moscow
        - Europe/Paris
        - Europe/Rome
    Device:
      type: object
      properties:
        name:
          type: string
          description: >-
            The name that uniquely identifies the device in the network. For
            most devices, this is the user-assigned [classic
            device](#network-setup) name. For a virtual context, this is the
            classic device name plus context name. For a cloud device, this is a
            globally unique identifier assigned by the cloud provider.
          examples:
            - nyc-dc01-fw02
        displayName:
          type: string
          description: >-
            The device’s common name, if different from `"name"`. Absent for
            most network devices. For a cloud device, this is the name shown in
            the cloud provider’s console.
          examples:
            - nyc-dc01-fw02
        sourceName:
          type: string
          description: >-
            Name of this device’s [collection source](#network-setup), if
            different from `"name"`. Absent for most network devices. For a
            cloud device, this is the cloud setup ID.
          examples:
            - nyc-dc01-fw02
        type:
          $ref: '#/components/schemas/DeviceType'
          examples:
            - FIREWALL
        vendor:
          $ref: '#/components/schemas/Vendor'
          examples:
            - F5
        model:
          type: string
          description: Absent if the device model name is unknown.
          examples:
            - BIG-IP Virtual Edition
        platform:
          $ref: '#/components/schemas/VendorOs'
          examples:
            - f5
        osVersion:
          type: string
          description: Absent if the OS version is unknown.
          examples:
            - 11.6.1
        managementIps:
          type: array
          items:
            type: string
          description: Absent if no management IP addresses are known.
          examples:
            - - 10.10.10.10
        collectionError:
          $ref: '#/components/schemas/DeviceCollectionError'
          description: >-
            Absent if there was no collection error. "NONE" never occurs and
            will soon be removed from the value list.
          examples:
            - AUTHENTICATION_FAILED
        processingError:
          $ref: '#/components/schemas/DeviceProcessingError'
          description: Absent if there was no processing error.
          examples:
            - LICENSE_EXHAUSTED
        tags:
          type: array
          items:
            type: string
          description: Tags assigned to the device. Present only if specifically requested.
          examples:
            - - SEC
    DeviceCollectionError:
      type: string
      enum:
        - NONE
        - UNKNOWN
        - CONNECTION_TIMEOUT
        - PROMPT_DISCOVERY_FAILED
        - CONNECTION_REFUSED
        - AUTHENTICATION_FAILED
        - KEY_EXCHANGE_FAILED
        - AUTHORIZATION_FAILED
        - TWO_FACTOR_AUTHENTICATION_FAILED
        - AVI_SHELL_AUTH_FAILED
        - AVI_CONTROLLER_WITHOUT_HEALTHY_SERVICE_ENGINES
        - T128_CONDUCTOR_WITHOUT_HEALTHY_ROUTERS
        - T128_CONFIG_ABSENT
        - NETWORK_UNREACHABLE
        - IO_ERROR
        - AUTHENTICATION_FAILED_WITHOUT_COLLECTION_RETRY
        - SESSION_CLOSED
        - SESSION_LIMIT_REACHED
        - STATE_COLLECTION_FAILED
        - PASSWORD_EXPIRED
        - JUMP_SERVER_CONNECTION_TIMEOUT
        - JUMP_SERVER_PASSWORD_AUTH_FAILED
        - JUMP_SERVER_PASSWORD_EXPIRED
        - JUMP_SERVER_CONNECTION_FAILED
        - JUMP_SERVER_KEY_EXCHANGE_FAILED
        - PROXY_SERVER_PING_FAILED
        - PROXY_SERVER_PORT_REACHABILITY_FAILED
        - PROXY_SERVER_CONNECTION_FAILED
        - PROXY_SERVER_AUTHENTICATION_FAILED
        - PRIV_PASSWORD_ERROR
        - EXPERT_PASSWORD_ERROR
        - UNSUPPORTED_VERSION
        - DEVICE_TYPE_UNDETECTED
        - BMP_CONNECTION_FAILED
        - BMP_CONNECTION_TIMEOUT
        - BMP_COLLECTION_FAILED
        - BMP_COLLECTION_TIMEOUT
        - BMP_COLLECTION_REFUSED
        - BMP_NOT_CONFIGURED
        - BMP_CONFIGURED_WITH_LOCAL_IP
        - BMP_SESSION_ALREADY_ESTABLISHED
        - WARN_TYPE_MISMATCH
        - DEVICE_IS_CHILD_CONTEXT
        - MANAGER_COLLECTOR_NOT_FOUND
        - INCOMPLETE_SETUP
        - COLLECTION_NOT_FOUND
        - INFINITE_LOOP_IN_COMMAND_OUTPUT
        - MISSING_FILE
        - UNSUPPORTED_VENDOR
        - COMMAND_DISABLED
        - APIC_CONFIG_COLLECTION_FAILED
        - UNEXPECTED_KEY_EXCHANGE_MESSAGE
        - UNDISCOVERED_ACI_FABRIC
        - SLOW_READ_RATE_DETECTED
        - TRANSIENT_SLOW_READ_RATE_DETECTED
        - COLLECTION_TIMED_OUT
        - COLLECTION_CANCELED
        - OPERATION_TIMED_OUT
        - CERTIFICATE_CHECK_FAILED
        - DEVICE_IN_BAD_STATE
        - API_SERVER_FAILED_TO_RESPOND
        - PROJECT_VIEW_PERMISSION_MISSING
        - NO_SPACE_LEFT_ON_COLLECTOR
        - NO_SPACE_LEFT_ON_COLLECTED_DEVICE
        - UNSUPPORTED_SSL_CONNECTION
        - SOME_OID_FAILED
        - TACACS_SESSION_EXPIRED
        - CONFIG_COLLECTION_UNAUTHORIZED
        - UNRESOLVABLE_HOSTNAME
        - FILE_TRANSFER_FAILED
    DeviceFile:
      type: object
      properties:
        name:
          type: string
          examples:
            - configuration.txt
        bytes:
          type: integer
          format: int64
          examples:
            - 1234
        command:
          type: string
          description: >-
            The custom (user-defined) command that was executed to generate the
            file. Defined only for custom_cli files.
          examples:
            - net show bridge macs
    DeviceFiles:
      type: object
      properties:
        files:
          type: array
          items:
            $ref: '#/components/schemas/DeviceFile'
    DeviceProcessingError:
      type: string
      enum:
        - LICENSE_EXHAUSTED
        - MISSING_SIGNATURE
        - DUPLICATE
        - PARSER_EXCEPTION
        - MODELING_EXCEPTION
        - UNSUPPORTED_VENDOR
    DeviceType:
      type: string
      enum:
        - UNKNOWN
        - ROUTER
        - SWITCH
        - VSWITCH
        - FIREWALL
        - LOADBALANCER
        - BUNDLED_ROUTER
        - CIRCUIT
        - L2_VPN_SERVICE
        - MISSING_PEER
        - MPLS_VPN_SERVICE
        - INTERNET_SERVICE
        - INTRANET_SERVICE
        - SYNTHETIC_ENCRYPTOR
        - HYPERVISOR
        - CONTROLLER
        - WAN_OPTIMIZER
        - OPENFLOW_SWITCH
        - SD_WAN
        - RIVERBED_INTERCEPTOR
        - WIFI_AP
        - ENCRYPTOR
        - DDI
        - NIC
        - AWS_CLOUD
        - AWS_SUBNET
        - AWS_RT
        - AWS_INTERNET_GW
        - AWS_NAT_GW
        - AWS_VPN_GW
        - AWS_LB
        - AWS_GLOBAL_ACCELERATOR
        - AWS_DIRECT_CONNECT_GW
        - AWS_TRANSIT_GW
        - AWS_LOCAL_GW
        - AWS_NETWORK_FIREWALL
        - AWS_GATEWAY_LB
        - AWS_SERVICE_ENDPOINT
        - EDGE_VM
        - AZURE_CLOUD
        - AZURE_SUBNET
        - AZURE_VNET
        - AZURE_VNET_GW
        - AZURE_FIREWALL
        - AZURE_APP_GW
        - AZURE_FRONTDOOR
        - AZURE_LB
        - AZURE_VWAN_HUB
        - AZURE_VPN_GATEWAY
        - AZURE_P2S_VPN_GATEWAY
        - AZURE_EXPRESS_ROUTE_GATEWAY
        - AZURE_VIRTUAL_APPLIANCE
        - AZURE_EXPRESS_ROUTE_CIRCUIT
        - GCP_CLOUD
        - GCP_RT
        - GCP_SUBNET
        - GCP_LB
        - GCP_TRAFFIC_DIRECTOR
        - GCP_VPN_GW
        - GCP_NAT_GW
        - GCP_SERVICE_ATTACHMENT
        - ALKIRA_CLOUD
    MissingDevice:
      type: object
      properties:
        name:
          type: string
          description: >-
            A device name different from the names of all network devices
            already modeled
          examples:
            - nyc-dc01-rtr02
        ipAddresses:
          type: array
          items:
            type: string
          examples:
            - - 10.10.10.10
        type:
          type: string
          description: Detected device type. Absent if undetermined. Never `"unknown"`.
          examples:
            - cisco_ios_ssh
          enum:
            - a10_acos_ssh
            - arista_eos_ssh
            - cisco_ios_ssh
            - cisco_ios_xe_ssh
            - cisco_ios_xr_ssh
            - cisco_nxos_ssh
            - cisco_nxos_aci_ssh
            - juniper_junos_ssh
            - f5_ssh
            - fortinet_ssh
            - hp_comware_ssh
            - hp_provision_ssh
            - panos_ssh
            - esxi_ssh
            - netscaler_ssh
            - cisco_wireless_ap
            - forcepoint_ssh
            - versa_flexvnf_ssh
            - meraki_mx_api
            - meraki_ms_api
            - meraki_mr_api
            - sonic_dell_enterprise_ssh
            - unknown
        possibleTypes:
          type: array
          items:
            type: string
            enum:
              - aruba_controller_ssh
              - aruba_switch_ssh
              - aruba_aos_cx_ssh
              - 128t_conductor_full
              - 128t_conductor
              - 128t_router
              - a10_acos_ssh
              - arista_eos_ssh
              - avi_controller_ssh
              - avi_controller_ssh_cli_user
              - avi_controller_ssh_via_host
              - avi_controller_https_api
              - avi_controller_http_api
              - bluecoat_ssh
              - cisco_ios_ssh
              - cisco_ios_telnet
              - cisco_ios_xe_ssh
              - cisco_ios_xe_telnet
              - cisco_ios_xr_ssh
              - cisco_nxos_ssh
              - cisco_nxos_telnet
              - cisco_asa_ssh
              - cisco_asa_telnet
              - cisco_asa_admin_ssh
              - cisco_asa_child_ssh
              - cisco_ftd_ssh
              - cisco_fxos_ssh
              - cisco_nxos_aci_ssh
              - cisco_apic_ssh
              - cisco_apic_api
              - cisco_ndo_api
              - cisco_apic_only_ssh
              - cisco_sg_ssh
              - juniper_junos_ssh
              - juniper_srx_ssh
              - juniper_netscreen_ssh
              - pica8_ovs_ofctl_ssh
              - f5_ssh
              - f5_os_hypervisor_ssh
              - checkpoint_ssh
              - checkpoint_ssh_nonexpert
              - checkpoint_ssh_with_manager
              - checkpoint_mgmt_api
              - fortinet_ssh
              - hp_comware_ssh
              - hp_comware_telnet
              - hp_provision_ssh
              - huawei_switch_ssh
              - panos_ssh
              - esxi_ssh
              - vcenter_api
              - viasat_encryptor_snmp3
              - netscaler_ssh
              - cumulus_ssh
              - riverbed_steelhead_ssh
              - riverbed_interceptor_ssh
              - cisco_ucs_ssh
              - nsxt_api
              - nsx_api
              - avaya_sr_ssh
              - avaya_sr_telnet
              - silver_peak_edgeconnect_ssh
              - silver_peak_orchestrator_api
              - cisco_wireless_ap
              - prisma_sdwan_ssh
              - prisma_sdwan_api
              - pensando_api
              - cisco_sdwan_ssh
              - cisco_sdwan_vsmart_ssh
              - nokia_ssh
              - brocade_switch_ssh
              - versa_flexvnf_ssh
              - versa_switch_ssh
              - cisco_encs_nfv_ssh
              - extreme_switch_ssh
              - meraki_mx_api
              - meraki_ms_api
              - meraki_mr_api
              - mist_dashboard_api
              - mist_ap_api
              - dell_os6_switch_ssh
              - dell_os6_switch_telnet
              - dell_os9_switch_ssh
              - dell_os9_switch_telnet
              - dell_os10_switch_ssh
              - dell_os10_switch_telnet
              - sonic_dell_enterprise_ssh
              - sonic_edge_core_ssh
          description: >-
            Possible device types if `type` wasn’t determined. Present if and
            only if `type` is absent. Never contains `"unknown"`.
          examples:
            - - cisco_ios_ssh
              - cisco_ios_xr_ssh
        neighbors:
          type: array
          items:
            type: string
          description: >-
            The names of the modeled devices from which this device was
            discovered.
          examples:
            - - nyc-dc01-tor01
              - nyc-dc01-rtr01
        discoveryMethod:
          type: string
          description: The method/protocol via which this device was discovered.
          examples:
            - LLDP_CDP
          enum:
            - LLDP_CDP
            - IBGP
            - OSPF
    MissingDevices:
      type: object
      properties:
        devices:
          type: array
          items:
            $ref: '#/components/schemas/MissingDevice'
    Vendor:
      type: string
      enum:
        - UNKNOWN
        - CISCO
        - JUNIPER
        - ARISTA
        - PICA8
        - F5
        - A10
        - CHECKPOINT
        - HP
        - FORTINET
        - PALO_ALTO_NETWORKS
        - VMWARE
        - CITRIX
        - CUMULUS
        - RIVERBED
        - LINUX_GENERIC
        - AMAZON
        - SYMANTEC
        - AVI_NETWORKS
        - MICROSOFT
        - GOOGLE
        - AVAYA
        - T128
        - ARUBA
        - VIASAT
        - SILVER_PEAK
        - PENSANDO
        - FORCEPOINT
        - BLUECAT
        - NOKIA
        - VERSA
        - BROCADE
        - EXTREME
        - DELL
        - HUAWEI
        - GD
        - ALKIRA
        - EDGE_CORE
        - FORWARD_CUSTOM
    VendorOs:
      type: string
      enum:
        - unknown
        - circuit
        - l2_vpn_service
        - missing_peer
        - mpls_vpn_service
        - internet_service
        - intranet_service
        - encryptor
        - alkira_portal
        - arista_eos
        - avi_vantage
        - bluecoat
        - cisco_ios
        - cisco_ios_xe
        - cisco_ios_xr
        - cisco_nxos
        - cisco_asa
        - cisco_ftd
        - cisco_fxos
        - cisco_nxos_aci
        - cisco_apic
        - cisco_sg
        - cisco_wireless
        - viptela
        - juniper_junos
        - juniper_srx
        - juniper_netscreen
        - linux_ovs_ofctl
        - pica8_ovs_ofctl
        - f5
        - f5_os_hypervisor
        - a10_acos
        - checkpoint
        - hp_provision
        - hp_comware
        - fortinet
        - pan_os
        - esxi
        - citrix_netscaler
        - cumulus
        - riverbed_steelhead
        - riverbed_interceptor
        - 128t
        - aruba_switch
        - aruba_aos_cx
        - aruba_wifi_controller
        - silver_peak_edgeconnect
        - pensando
        - cloud_genix
        - forcepoint
        - aws_cloud
        - aws_subnet
        - aws_rt
        - aws_internet_gw
        - aws_nat_gw
        - aws_vpn_gw
        - aws_direct_connect_gw
        - aws_lb
        - aws_global_accelerator
        - aws_transit_gw
        - aws_local_gw
        - aws_network_firewall
        - aws_gateway_lb
        - aws_service_endpoint
        - azure_cloud
        - azure_subnet
        - azure_vnet
        - azure_vnet_gw
        - azure_firewall
        - azure_app_gw
        - azure_frontdoor
        - azure_lb
        - azure_vwan_hub
        - azure_vpn_gateway
        - azure_p2s_vpn_gateway
        - azure_express_route_gateway
        - azure_virtual_appliance
        - azure_express_route_circuit
        - google_cloud
        - gcp_rt
        - gcp_subnet
        - gcp_lb
        - gcp_traffic_director
        - gcp_vpn_gw
        - gcp_nat_gw
        - gcp_service_attachment
        - avaya_sr
        - viasat_encryptor
        - nokia
        - huawei_switch
        - versa_sase
        - versa_switch
        - brocade_switch
        - cisco_encs_nfv
        - extreme_nos
        - meraki_ms
        - meraki_mr
        - meraki_mx
        - mist_ap
        - dell_os6
        - dell_os9
        - dell_os10
        - dell_sonic
        - gd_encryptor
        - edge_core_sonic
    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
              - '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
              - 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
              - '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
              - 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
    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
    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
              - 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
              - 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
    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
              - nextPageUrl
        maxPages:
          type: integer
          format: int32
          description: Maximum number of pages to collect. Defaults to 1000.
          examples:
            - 100
    DeviceCluster:
      type: object
      required:
        - name
        - devices
      properties:
        name:
          type: string
          examples:
            - atl-edge
        devices:
          type: array
          items:
            type: string
          examples:
            - - atl-edge-fw01
              - atl-edge-fw02
              - atl-isp-edge01
              - atl-isp-edge02
    DeviceClusterUpdate:
      type: object
      properties:
        name:
          type: string
          examples:
            - atl-edge
        devices:
          type: array
          items:
            type: string
          examples:
            - - atl-edge-fw01
              - atl-edge-fw02
              - atl-isp-edge01
              - atl-isp-edge02
    Location:
      type: object
      required:
        - id
        - name
        - lat
        - lng
      properties:
        id:
          type: string
          examples:
            - dyt-a
        name:
          type: string
          examples:
            - Dayton DC
        lat:
          type: number
          format: double
          description: >-
            A latitude (geographic coordinate), specified as an angle from -90
            to +90 degrees
          examples:
            - 39.8113
        lng:
          type: number
          format: double
          description: >-
            A longitude (geographic coordinate), specified as an angle from -180
            to +180 degrees
          examples:
            - -84.2722
        city:
          type: string
          description: >-
            Name of the closest city (for display purposes only). Required if
            `adminDivision` or `country` is specified.
          examples:
            - Dayton
        adminDivision:
          type: string
          description: >-
            Name of the administrative division (district, province, region,
            state, territory, etc.) that `city` is in (for display purposes
            only)
          examples:
            - Ohio
        country:
          type: string
          description: >-
            Name of the country that `city` is located in (for display purposes
            only). Required if `city` is specified.
          examples:
            - United States
    LocationBulkPatch:
      type: object
      properties:
        id:
          type: string
          description: Identifier of the location to update. Required if `name` is absent.
          examples:
            - dyt-a
        name:
          type: string
          description: >-
            Name of the location to update or create. Required if `id` is
            absent.
          examples:
            - Dayton DC
        lat:
          type: number
          format: double
          description: >-
            A latitude (geographic coordinate), specified as an angle from -90
            to +90 degrees
          examples:
            - 39.8113
        lng:
          type: number
          format: double
          description: >-
            A longitude (geographic coordinate), specified as an angle from -180
            to +180 degrees
          examples:
            - -84.2722
        city:
          type: string
          description: Name of the closest city (for display purposes only)
          examples:
            - Dayton
        adminDivision:
          type: string
          description: >-
            Name of the administrative division (district, province, region,
            state, territory, etc.) that `city` is in (for display purposes
            only)
          examples:
            - Ohio
        country:
          type: string
          description: >-
            Name of the country that `city` is located in (for display purposes
            only)
          examples:
            - United States
    LocationPatch:
      type: object
      properties:
        id:
          type: string
          examples:
            - dyt-a
        name:
          type: string
          examples:
            - Dayton DC
        lat:
          type: number
          format: double
          description: >-
            A latitude (geographic coordinate), specified as an angle from -90
            to +90 degrees
          examples:
            - 39.8113
        lng:
          type: number
          format: double
          description: >-
            A longitude (geographic coordinate), specified as an angle from -180
            to +180 degrees
          examples:
            - -84.2722
        city:
          type: string
          description: Name of the closest city (for display purposes only)
          examples:
            - Dayton
        adminDivision:
          type: string
          description: >-
            Name of the administrative division (district, province, region,
            state, territory, etc.) that `city` is in (for display purposes
            only)
          examples:
            - Ohio
        country:
          type: string
          description: >-
            Name of the country that `city` is located in (for display purposes
            only)
          examples:
            - United States
    NewLocation:
      type: object
      required:
        - name
        - lat
        - lng
      properties:
        id:
          type: string
          description: If absent or null, a numeric identifier will be assigned
          examples:
            - dyt-a
        name:
          type: string
          examples:
            - Dayton DC
        lat:
          type: number
          format: double
          description: >-
            A latitude (geographic coordinate), specified as an angle from -90
            to +90 degrees
          examples:
            - 39.8113
        lng:
          type: number
          format: double
          description: >-
            A longitude (geographic coordinate), specified as an angle from -180
            to +180 degrees
          examples:
            - -84.2722
        city:
          type: string
          description: >-
            Name of the closest city (for display purposes only). Required if
            `adminDivision` or `country` is specified.
          examples:
            - Dayton
        adminDivision:
          type: string
          description: >-
            Name of the administrative division (district, province, region,
            state, territory, etc.) that `city` is in (for display purposes
            only)
          examples:
            - Ohio
        country:
          type: string
          description: >-
            Name of the country that `city` is located in (for display purposes
            only). Required if `city` is specified.
          examples:
            - United States
    ComputationStatus:
      type: string
      enum:
        - UNKNOWN
        - FAILURE
        - SUCCESS
        - CANCELED
    Network:
      type: object
      required:
        - id
        - name
        - orgId
      properties:
        id:
          type: string
        parentId:
          type: string
          description: >-
            The network from which this Workspace network was created. Absent if
            this network is not a Workspace.
        name:
          type: string
          examples:
            - My Network
        orgId:
          type: string
        creator:
          type: string
          description: >-
            The username of the user who created the network, or null if the
            account was deleted
          examples:
            - mary
        creatorId:
          type: string
          description: >-
            The id of the user who created the network, or null if the account
            was deleted
          examples:
            - '123'
        createdAt:
          type: integer
          format: int64
          examples:
            - 1649277285118
        note:
          type: string
          description: An optional network description.
        retentionDays:
          type: integer
          format: int32
          minimum: 1
          maximum: 365
          description: >-
            The number of days without any use of this network after which it
            will be automatically deleted. Absent for parent networks and
            permanent Workspace networks.
        secondsToExpiry:
          type: integer
          format: int64
          description: >-
            Number of seconds without use before the network expires. Present
            for temporary Workspace networks only.
    NetworkSnapshots:
      allOf:
        - type: object
          required:
            - snapshots
          properties:
            snapshots:
              type: array
              items:
                $ref: '#/components/schemas/SnapshotInfo'
        - $ref: '#/components/schemas/Network'
    SnapshotExportParams:
      type: object
      properties:
        includeDevices:
          type: array
          items:
            type: string
          description: Must be absent if `"excludeDevices"` is specified.
          examples:
            - - device-1
              - device-2
              - pa*
        excludeDevices:
          type: array
          items:
            type: string
          description: Must be absent if `"includeDevices"` is specified.
          examples:
            - - device-6
              - device-7
              - pa*
        obfuscationKey:
          type: string
          description: >-
            If specified, sensitive data will be
            [obfuscated](/docs/administration/system/obfuscate-snapshot/).
          examples:
            - a-sEcr3t-kEy-th4t-i$-h4rd-to-guE$$
        obfuscateNames:
          type: boolean
          description: >-
            default: `false`. If specified, `"obfuscationKey"` must also be
            specified.
          examples:
            - false
    SnapshotInfo:
      type: object
      properties:
        creationDateMillis:
          type: integer
          format: int64
          examples:
            - 1569001234567
        id:
          type: string
        isDraft:
          type: boolean
          examples:
            - false
        note:
          type: string
        parentSnapshotId:
          type: string
        processedAtMillis:
          type: integer
          format: int64
          examples:
            - 1569003456789
        processingTrigger:
          type: string
          enum:
            - UNKNOWN
            - COLLECTION
            - IMPORT
            - REPROCESS
            - FORK
        restoredAtMillis:
          type: integer
          format: int64
          examples:
            - 1569001234567
        state:
          $ref: '#/components/schemas/SnapshotState'
        favoritedBy:
          type: string
          description: >-
            The username of the user who most recently marked this Snapshot as a
            favorite if it's currently a favorite and the user account hasn’t
            been deleted.
          examples:
            - mary
        favoritedByUserId:
          type: string
          description: >-
            The id of the user who most recently marked this Snapshot as a
            favorite if it’s currently a favorite.
          examples:
            - '1234'
        favoritedAtMillis:
          type: integer
          format: int64
          description: >-
            When this Snapshot was most recently marked as a favorite if it’s
            currently a favorite. A favorite Snapshot will never be
            automatically deleted, regardless of its network's snapshot
            retention policy.
          examples:
            - 1569872939481
    SnapshotMetrics:
      type: object
      properties:
        collectionConcurrency:
          type: integer
          format: int32
          examples:
            - 16
        collectionDuration:
          type: integer
          format: int64
          examples:
            - 1234
        creationDateMillis:
          type: integer
          format: int64
          examples:
            - 1649277285118
        deviceCollectionFailures:
          type: object
          additionalProperties:
            type: integer
            format: int32
          description: >
            Possible device error types during collection

            *UNKNOWN*: Unknown error

            *CONNECTION_TIMEOUT*: Connection to device timed out

            *CONNECTION_REFUSED*: Connection to device refused

            *AUTHENTICATION_FAILED*: Authentication failed

            *KEY_EXCHANGE_FAILED*: Key exchange failed

            *AUTHORIZATION_FAILED*: Authorization failed

            *AVI_SHELL_AUTH_FAILED*: Avi authentication failed

            *AVI_CONTROLLER_WITHOUT_HEALTHY_SERVICE_ENGINES*: No Avi Service
            Engines found

            *NETWORK_UNREACHABLE*: Network not reachable

            *IO_ERROR*: I/O error

            *SESSION_CLOSED*: Session closed unexpectedly

            *STATE_COLLECTION_FAILED*: State collection failed

            *JUMP_SERVER_CONNECTION_TIMEOUT*: Jump server timed out

            *JUMP_SERVER_PASSWORD_AUTH_FAILED*: Jump server auth failed

            *JUMP_SERVER_CONNECTION_FAILED*: Jump server connection refused

            *JUMP_SERVER_KEY_EXCHANGE_FAILED*: Jump server key exchange failed

            *PROXY_SERVER_PING_FAILED*: Proxy ping failed

            *PROXY_SERVER_PORT_REACHABILITY_FAILED*: Proxy port not reachable

            *PROXY_SERVER_CONNECTION_FAILED*: Proxy connection refused

            *PROXY_SERVER_AUTHENTICATION_FAILED*: Proxy authentication failed

            *PRIV_PASSWORD_ERROR*: Privileged password failed

            *UNSUPPORTED_VERSION*: Unsupported version

            *DEVICE_TYPE_UNDETECTED*: Undetected device type

            *WARN_TYPE_MISMATCH*: Device type mismatch

            *DEVICE_IS_CHILD_CONTEXT*: Parent context required

            *MANAGER_COLLECTOR_NOT_FOUND*: Collector manager error

            *INCOMPLETE_SETUP*: Incomplete setup

            *COLLECTION_NOT_FOUND*: Collection not found

            *INFINITE_LOOP_IN_COMMAND_OUTPUT*: Collection stuck in loop

            *MISSING_FILE*: File is missing

            *UNSUPPORTED_VENDOR*: Vendor not supported

            *COMMAND_DISABLED*: Required command is disabled

            *APIC_CONFIG_COLLECTION_FAILED*: APIC config collection failed

            *UNEXPECTED_KEY_EXCHANGE_MESSAGE*: Unexpected Key-Exchange message

            *UNDISCOVERED_ACI_FABRIC*: ACI fabric node was not discovered by
            APIC

            *SLOW_READ_RATE_DETECTED*: Read rate from the remote peer is too low

            *COLLECTION_TIMED_OUT*: Collection timed out

            *COLLECTION_CANCELED*: Collection canceled by user

            *OPERATION_TIMED_OUT*: Operation timed out

            *CERTIFICATE_CHECK_FAILED*: Certificate cannot be verified
        deviceProcessingFailures:
          type: object
          additionalProperties:
            type: integer
            format: int32
          description: |
            Possible error types during processing
            *LICENSE_EXHAUSTED*: License limit exceeded
            *MISSING_SIGNATURE*: Missing signature
            *DUPLICATE*: Duplicate device
            *PARSER_EXCEPTION*: Couldn't be parsed
            *UNSUPPORTED_VENDOR*: Vendor not supported
        endpointCollectionFailures:
          type: object
          additionalProperties:
            type: integer
            format: int32
          description: >
            Possible device error types during collection

            *UNKNOWN*: Unknown error

            *CONNECTION_TIMEOUT*: Connection to device timed out

            *CONNECTION_REFUSED*: Connection to device refused

            *AUTHENTICATION_FAILED*: Authentication failed

            *KEY_EXCHANGE_FAILED*: Key exchange failed

            *AUTHORIZATION_FAILED*: Authorization failed

            *AVI_SHELL_AUTH_FAILED*: Avi authentication failed

            *AVI_CONTROLLER_WITHOUT_HEALTHY_SERVICE_ENGINES*: No Avi Service
            Engines found

            *NETWORK_UNREACHABLE*: Network not reachable

            *IO_ERROR*: I/O error

            *SESSION_CLOSED*: Session closed unexpectedly

            *STATE_COLLECTION_FAILED*: State collection failed

            *JUMP_SERVER_CONNECTION_TIMEOUT*: Jump server timed out

            *JUMP_SERVER_PASSWORD_AUTH_FAILED*: Jump server auth failed

            *JUMP_SERVER_CONNECTION_FAILED*: Jump server connection refused

            *JUMP_SERVER_KEY_EXCHANGE_FAILED*: Jump server key exchange failed

            *PROXY_SERVER_PING_FAILED*: Proxy ping failed

            *PROXY_SERVER_PORT_REACHABILITY_FAILED*: Proxy port not reachable

            *PROXY_SERVER_CONNECTION_FAILED*: Proxy connection refused

            *PROXY_SERVER_AUTHENTICATION_FAILED*: Proxy authentication failed

            *PRIV_PASSWORD_ERROR*: Privileged password failed

            *UNSUPPORTED_VERSION*: Unsupported version

            *DEVICE_TYPE_UNDETECTED*: Undetected device type

            *WARN_TYPE_MISMATCH*: Device type mismatch

            *DEVICE_IS_CHILD_CONTEXT*: Parent context required

            *MANAGER_COLLECTOR_NOT_FOUND*: Collector manager error

            *INCOMPLETE_SETUP*: Incomplete setup

            *COLLECTION_NOT_FOUND*: Collection not found

            *INFINITE_LOOP_IN_COMMAND_OUTPUT*: Collection stuck in loop

            *MISSING_FILE*: File is missing

            *UNSUPPORTED_VENDOR*: Vendor not supported

            *COMMAND_DISABLED*: Required command is disabled

            *APIC_CONFIG_COLLECTION_FAILED*: APIC config collection failed

            *UNEXPECTED_KEY_EXCHANGE_MESSAGE*: Unexpected Key-Exchange message

            *UNDISCOVERED_ACI_FABRIC*: ACI fabric node was not discovered by
            APIC

            *SLOW_READ_RATE_DETECTED*: Read rate from the remote peer is too low

            *COLLECTION_TIMED_OUT*: Collection timed out

            *COLLECTION_CANCELED*: Collection canceled by user

            *OPERATION_TIMED_OUT*: Operation timed out

            *CERTIFICATE_CHECK_FAILED*: Certificate cannot be verified
        endpointProcessingFailures:
          type: object
          additionalProperties:
            type: integer
            format: int32
          description: |
            Possible error types during processing
            *LICENSE_EXHAUSTED*: License limit exceeded
            *MISSING_SIGNATURE*: Missing signature
            *DUPLICATE*: Duplicate device
            *PARSER_EXCEPTION*: Couldn't be parsed
            *UNSUPPORTED_VENDOR*: Vendor not supported
        hostComputationStatus:
          $ref: '#/components/schemas/ComputationStatus'
          description: Host computation status
          examples:
            - SUCCESS
        ipLocationIndexingStatus:
          $ref: '#/components/schemas/ComputationStatus'
          description: IP location indexing status
          examples:
            - SUCCESS
        jumpServerCollectionConcurrency:
          type: integer
          format: int32
        l2IndexingStatus:
          $ref: '#/components/schemas/ComputationStatus'
          description: L2 elements (vlans, LAN segments etc.) indexing status
          examples:
            - SUCCESS
        numCollectionFailureDevices:
          type: integer
          format: int32
        numCollectionFailureEndpoints:
          type: integer
          format: int32
        numProcessingFailureDevices:
          type: integer
          format: int32
        numProcessingFailureEndpoints:
          type: integer
          format: int32
        numSuccessfulDevices:
          type: integer
          format: int32
          examples:
            - 401
        numSuccessfulEndpoints:
          type: integer
          format: int32
          examples:
            - 234
        pathSearchIndexingStatus:
          $ref: '#/components/schemas/ComputationStatus'
          description: End-to-end path indexing status
          examples:
            - SUCCESS
        processingDuration:
          type: integer
          format: int64
          examples:
            - 5678
        searchIndexingStatus:
          $ref: '#/components/schemas/ComputationStatus'
          description: Object search indexing status
          examples:
            - SUCCESS
        snapshotId:
          type: string
        snapshotState:
          $ref: '#/components/schemas/SnapshotState'
          description: Current state of the Snapshot
          examples:
            - PROCESSING
    SnapshotState:
      type: string
      enum:
        - UNPACKING
        - UNPROCESSED
        - PROCESSING
        - PROCESSED
        - FAILED
        - CANCELED
        - TIMED_OUT
        - ARCHIVED
        - RESTORING
        - RESTORE_FAILED
    Link:
      type: object
      properties:
        port1:
          type: string
        port2:
          type: string
    LinkOverrides:
      type: object
      properties:
        absent:
          type: array
          items:
            $ref: '#/components/schemas/Link'
        present:
          type: array
          items:
            $ref: '#/components/schemas/Link'
    LinkOverridesEdit:
      type: object
      properties:
        absentAdditions:
          type: array
          items:
            $ref: '#/components/schemas/Link'
        absentRemovals:
          type: array
          items:
            $ref: '#/components/schemas/Link'
        presentAdditions:
          type: array
          items:
            $ref: '#/components/schemas/Link'
        presentRemovals:
          type: array
          items:
            $ref: '#/components/schemas/Link'
    TopologyLink:
      type: object
      properties:
        sourcePort:
          type: string
        targetPort:
          type: string
    CreateWorkspaceNetworkRequest:
      type: object
      required:
        - name
      properties:
        name:
          type: string
          examples:
            - My Network - Workspace A
        note:
          type: string
          examples:
            - For change window 2021-10-30-ABC
        devices:
          type: array
          items:
            type: string
          description: >-
            Names of the devices to include (`ClassicDevice` names; see [Network
            Setup](#network-setup)). Can be omitted or empty if `cloudAccounts`
            or `vcenters` is nonempty.
          examples:
            - - nyc-dc01-tor01
              - nyc-dc01-rtr01
        cloudAccounts:
          type: array
          items:
            type: string
          description: >-
            Names of the cloud accounts (<a class="fn-external-link"
            target="_blank"
            href="docs/enterprise/getting_started/configure_collection/cloud/aws_setup/">AWS</a>),
            <a class="fn-external-link" target="_blank"
            href="docs/enterprise/getting_started/configure_collection/cloud/gcp_setup/">GCP</a>),
            or <a class="fn-external-link" target="_blank"
            href="docs/enterprise/getting_started/configure_collection/cloud/azure_setup/">Azure</a>)
            to include. Can be omitted or empty if `devices` or `vcenters` is
            nonempty.
          examples:
            - - my-aws-account
              - my-gcp-account
              - my-azure-account
        vcenters:
          type: array
          items:
            type: string
          description: >-
            Names of the <a class="fn-external-link" target="_blank"
            href="docs/enterprise/getting_started/configure_collection/VMware_account/">vCenters</a>)
            to include. Can be omitted or empty if `devices` or `cloudAccounts`
            is nonempty.
          examples:
            - - vcenter-01
        omissions:
          type: array
          items:
            type: string
            enum:
              - CUSTOM_COMMANDS
              - NQE_CHECKS
              - PREDEFINED_CHECKS
              - INTENT_CHECKS
          description: What to omit (not copy) from the parent network
          examples:
            - - CUSTOM_COMMANDS
              - NQE_CHECKS
        retentionDays:
          type: integer
          format: int32
          minimum: 1
          maximum: 365
          description: >-
            Number of days of inactivity after which the Workspace network will
            be deleted. If omitted, the value defaults to 7. If specified as
            null, this network will be considered permanent.
    NetworkUpdate:
      type: object
      properties:
        name:
          type: string
        note:
          type: string
        retentionDays:
          type: integer
          format: int32
    BetweenColumnFilter:
      type: object
      required:
        - columnName
        - operator
      properties:
        columnName:
          type: string
          description: The name of a column to filter on.
          examples:
            - Name
        lowerBound:
          type: string
          description: >-
            A value (in its string representation) to limit on inclusively from
            below. Required if 'upperBound' is omitted.
          examples:
            - '2023-07-30T08:27:16Z'
        operator:
          type: string
          const: IS_BETWEEN
        upperBound:
          type: string
          description: >-
            A value (in its string representation) to limit on inclusively from
            above. Required if 'lowerBound' is omitted.
          examples:
            - '2025-07-30T08:27:16Z'
    CellValue:
      type: object
    ColumnFilter:
      type: object
      required:
        - operator
      properties:
        operator:
          type: string
          enum:
            - DEFAULT
            - IS_BETWEEN
      oneOf:
        - $ref: '#/components/schemas/DefaultColumnFilter'
        - $ref: '#/components/schemas/BetweenColumnFilter'
      discriminator:
        propertyName: operator
        mapping:
          DEFAULT: '#/components/schemas/DefaultColumnFilter'
          IS_BETWEEN: '#/components/schemas/BetweenColumnFilter'
    DefaultColumnFilter:
      type: object
      required:
        - columnName
      properties:
        columnName:
          type: string
          description: The name of a column to filter on.
          examples:
            - Name
        operator:
          type: string
          const: DEFAULT
        value:
          type: string
          description: A value (in its string representation) to match on.
          examples:
            - ATL
    NqeDiffEntry:
      type: object
      properties:
        after:
          $ref: '#/components/schemas/NqeRecord'
          description: >-
            The record returned by the query against the 'after' snapshot. Not
            present if `type` is "DELETED".
        before:
          $ref: '#/components/schemas/NqeRecord'
          description: >-
            The record returned by the query against the 'before' snapshot. Not
            present if `type` is "ADDED".
        type:
          type: string
          description: >-
            Describes the type of difference between `before` and `after`:

            * If "MODIFIED", then both `before` and `after` will be present, but
            will differ in at least one field;

            * If "ADDED", then only `after` will be present;

            * If "DELETED", then only `before` will be present.
          enum:
            - ADDED
            - DELETED
            - MODIFIED
      description: >-
        Represents a diff entry between two records returned by the same NQE
        query.
    NqeDiffRequest:
      type: object
      required:
        - queryId
      properties:
        queryId:
          type: string
          description: >-
            The query identifier of the query to run, referenced by its NQE
            Library Query ID.
          examples:
            - FQ_ac651cb2901b067fe7dbfb511613ab44776d8029
        commitId:
          type: string
          description: >-
            Version of the query identified by `queryId` to run. Omit to run the
            latest version. Required if the query identified by `queryId` has
            been deleted.
          examples:
            - 84f84b0c0a0a1805ddff0ca5451c2c55c58605e5
        options:
          $ref: '#/components/schemas/NqeQueryOptions'
    NqeDiffResult:
      type: object
      properties:
        rows:
          type: array
          items:
            $ref: '#/components/schemas/NqeDiffEntry'
          description: >-
            The NQE query diff's rows, as a list of objects. Each object
            represents either an added row, a deleted row, or a modified row. In
            the case of a modified row, the before and after rows are matched up
            by their values on the key columns for the before and after tables.
            In particular, the key columns are the smallest set of left-most
            columns that uniquely identify rows within the before table and the
            after table.
        totalNumRows:
          type: integer
          format: int32
          description: >-
            The number of diff rows that would be present if there was no limit.

            If there are column filters, then it should be the number of rows
            that satisfy the column filters (if there were no limit).
    NqeErrorInfo:
      type: object
      required:
        - httpMethod
        - apiUrl
        - message
      properties:
        completionType:
          type: string
          enum:
            - FINISHED
            - CANCELED
            - TIMED_OUT
        errors:
          type: array
          items:
            $ref: '#/components/schemas/NqeQueryError'
        snapshotId:
          type: string
          description: The ID of the Snapshot the query was run against.
          examples:
            - '101'
        httpMethod:
          type: string
          examples:
            - GET
          enum:
            - GET
            - HEAD
            - POST
            - PUT
            - PATCH
            - DELETE
        apiUrl:
          type: string
          examples:
            - /api/version
        message:
          type: string
          description: A description of the error
        reason:
          type: string
    NqeQuery:
      type: object
      properties:
        queryId:
          type: string
          description: The ID of the query
          examples:
            - FQ_ac651cb2901b067fe7dbfb511613ab44776d8029
        repository:
          type: string
          examples:
            - ORG
          enum:
            - FWD
            - ORG
        path:
          type: string
          description: >-
            The unique path of the query, including its name, in the latest
            commit
          examples:
            - /L2/MtuConsistency
        intent:
          type: string
          description: The intent of the query in the latest commit
    NqeQueryError:
      type: object
      properties:
        location:
          $ref: '#/components/schemas/TextRegion'
          description: The region in the original query that caused the error.
        message:
          type: string
          description: The error's message.
    NqeQueryOptions:
      type: object
      properties:
        offset:
          type: integer
          format: int32
          description: >-
            (optional) The number of initial records to skip. Defaults to 0.
            Cannot be negative.
          examples:
            - 20
        limit:
          type: integer
          format: int32
          description: >-
            (optional) The maximum number of records to return. Defaults to
            1000. Must be positive and must not exceed 10000.
          examples:
            - 100
        sortBy:
          $ref: '#/components/schemas/SortOrder'
          description: (optional) An object specifying how results should be sorted.
        columnFilters:
          type: array
          items:
            $ref: '#/components/schemas/ColumnFilter'
          description: >-
            (optional) Result filters. Only records that match all filters are
            returned. A record matches the array of `columnFilters` if the
            record matches all of the `columnFilters`, in which case it is kept
            in the results.
          examples:
            - - columnName: Name
                value: MyDeviceName
        itemFormat:
          type: string
          description: >-
            (optional) Specifies how each row in the result should be rendered.
            If set to LEGACY (the default), complex values in the row are
            rendered as strings. If set to JSON, complex values are rendered as
            JSON arrays and records. A complex value is one that is not a scalar
            (such as a number, string, enum value, date, etc.), or is not a list
            of scalar values.
          examples:
            - JSON
          enum:
            - JSON
            - LEGACY
    NqeQueryRunRequest:
      type: object
      properties:
        query:
          type: string
          description: >-
            The source code of the query to run. Exactly one of `queryId` or
            `query` must be provided.
          examples:
            - 'foreach d in network.devices select { Name: d.name }'
        queryId:
          type: string
          description: >-
            The query identifier of the query to run, referenced by its NQE
            Library Query ID. Exactly one of `queryId` or `query` must be
            provided. This identifier can be found in the information callout in
            the Queries pane or the Versions view dropdown.
          examples:
            - FQ_ac651cb2901b067fe7dbfb511613ab44776d8029
        commitId:
          type: string
          description: >-
            Version of the query identified by `queryId` to run. Omit to run the
            latest version. Required if the query identified by `queryId` has
            been deleted. This identifier can be found in the information
            callout in the Queries pane or the Versions view dropdown.
          examples:
            - 84f84b0c0a0a1805ddff0ca5451c2c55c58605e5
        queryOptions:
          $ref: '#/components/schemas/NqeQueryOptions'
        parameters:
          type: object
          additionalProperties: {}
          description: >-
            Values for each parameter declared in the query. The parameter
            values are specified as a JSON object, with one property per
            parameter, where the property name matches the parameter name. The
            property value is the JSON representation of the parameter value.
            The JSON representation of a parameter value depends on the type of
            the value. For values of type `String`, `IpAddress`, `IpSubnet`, and
            `MacAddress`, the JSON representation is a JSON string. For values
            of type `Number`, the value is an integral JSON number. For values
            of type `Boolean`, the JSON representation is true or false. For
            values of type `List<T>`, the JSON representation is an array of
            JSON values, each of which is a JSON representation for type `T`.
            For record values, the JSON representation is a JSON object with
            corresponding properties whose values are JSON representations
            corresponding to the properties' types. For enumerations, the JSON
            representation is a JSON string with the enum constant name. For
            `oneOf` values that contain data, the JSON representation is a JSON
            object with two properties, `alternative` and `value`, where the
            `alternative` property contains the alternative's name (a string)
            and the `value` property is a JSON representation of the data
            associated with this alternative.
          examples:
            - mtuThreshold: 123
              ntpServers:
                - 10.22.2.3
                - 192.33.4.1
    NqeRecord:
      type: object
      properties:
        fields:
          type: object
          additionalProperties:
            $ref: '#/components/schemas/CellValue'
    NqeRunResult:
      type: object
      properties:
        snapshotId:
          type: string
          description: The ID of the Snapshot that the query was run against.
          examples:
            - '101'
        items:
          type: array
          items:
            $ref: '#/components/schemas/NqeRecord'
          description: >-
            The query's results, as a list of objects. Each object corresponds
            to a record returned by the query, and is an object with fields of
            simple values, where a simple value is either a basic value or a
            list of basic values. A basic value is either a number, boolean,
            string, or null.
          examples:
            - - boolField: true
                numField: 1
                nullField: null
                stringField: string
                listField:
                  - 1
                  - 2
                  - 3
        totalNumItems:
          type: integer
          format: int64
          description: >-
            The total number of items in the query result. This number could be
            different than the length of `items` if a filter is used or if the
            total size of the rows would exceed the maximum page size of 400MB.
    SortOrder:
      type: object
      required:
        - columnName
      properties:
        columnName:
          type: string
          description: The name of a column to sort on.
          examples:
            - Name
        order:
          type: string
          description: >-
            (optional) Either "ASC" or "DESC" to sort ascending or descending,
            respectively. Defaults to "ASC".
          examples:
            - ASC
          enum:
            - ASC
            - DESC
    TextPosition:
      type: object
      properties:
        character:
          type: integer
          format: int32
          description: Position on the line (by number of characters, starting at 0)
        line:
          type: integer
          format: int32
          description: Line number (starting at 0)
    TextRegion:
      type: object
      properties:
        start:
          $ref: '#/components/schemas/TextPosition'
          description: The region's starting position (starting at (0, 0)).
        end:
          $ref: '#/components/schemas/TextPosition'
          description: The region's ending position.
    AclFunction:
      type: object
      properties:
        name:
          type: string
          description: the name of the ACL that is applied to traffic
        context:
          type: string
          description: the context in which the ACL function is applied
          enum:
            - INPUT
            - OUTPUT
        action:
          type: string
          description: the action taken by the ACL function
          enum:
            - PERMIT
            - DENY
    InterfaceFunction:
      type: object
      properties:
        l2:
          $ref: '#/components/schemas/InterfaceFunctionL2Info'
        l3:
          $ref: '#/components/schemas/InterfaceFunctionL3Info'
        securityZone:
          type: string
    InterfaceFunctionL2Info:
      type: object
      properties:
        interfaceName:
          type: string
    InterfaceFunctionL3Info:
      type: object
      properties:
        interfaceName:
          type: string
        vrf:
          type: string
          description: Null if the interface does not belong to any VRF
    L7Application:
      type: object
      properties:
        id:
          type: string
    NetworkFunctions:
      type: object
      properties:
        acl:
          type: array
          items:
            $ref: '#/components/schemas/AclFunction'
        egress:
          $ref: '#/components/schemas/InterfaceFunction'
        ingress:
          $ref: '#/components/schemas/InterfaceFunction'
      description: Detailed forwarding info
    Path:
      type: object
      properties:
        forwardingOutcome:
          type: string
          description: >-
            Specifies the traffic forwarding outcome along a path.

            *DELIVERED*: Traffic was delivered to destination IP’s discovered
            location(s).

            *DELIVERED_TO_INCORRECT_LOCATION*: Traffic was delivered out of some
            edge ports. However, traffic did not reach the expected delivery
            locations based on destination IP’s discovered locations. One
            scenario where this occurs is when a device in the middle of the
            actual path from source IP to destination IP is not configured for
            collection in the Forward platform. For example, suppose the actual
            device path is A -> B -> C, and only devices A and C are part of the
            snapshot in the Forward platform. In this case, the path would show
            traffic exiting device A at some edge port, but since destination IP
            is discovered to reside at device C, traffic is delivered to an
            incorrect location.

            *BLACKHOLE*: Traffic was implicitly dropped at the last hop, since
            the device had no matching rule. For example, if a router does not
            have a default route, traffic to any IP that is not in the routing
            table gets blackholed.

            *DROPPED*: Traffic was explicitly dropped at the last hop, e.g. by a
            null route.

            *INADMISSIBLE*: Traffic was not admitted into the network. The first
            hop interface does not accept the traffic, e.g. incoming traffic had
            a vlan tag 10 while the ingress interface is an access interface
            that only permits traffic with vlan tag 20.

            *UNREACHABLE*: ARP/NDP resolution failed along the path resulting in
            traffic not getting delivered to the intended destination.

            *LOOP*: Traffic entered a forwarding loop.
          enum:
            - DELIVERED
            - DELIVERED_TO_INCORRECT_LOCATION
            - DROPPED
            - LOOP
            - INADMISSIBLE
            - BLACKHOLE
            - UNREACHABLE
        securityOutcome:
          type: string
          description: >-
            Specifies whether traffic is denied by ACL rules at any hop along
            the path.

            *PERMITTED*: All ACLs along the path permitted traffic to flow
            through.

            *DENIED*: Traffic was dropped by ACLs at some hop along the path.
            Note that the ACL drop may not always occur at the last hop since
            search results are computed in permit all mode.
          enum:
            - PERMITTED
            - DENIED
        hops:
          type: array
          items:
            $ref: '#/components/schemas/PathHop'
    PathHop:
      type: object
      properties:
        deviceName:
          type: string
        displayName:
          type: string
          description: >-
            Alternate device name that might be more recognizable but isn’t
            necessarily unique in the network. For cloud devices, this is the
            name configured in the cloud provider’s console.
        deviceType:
          $ref: '#/components/schemas/DeviceType'
        tags:
          type: array
          items:
            type: string
          description: present only if device tags are specifically requested
        parseError:
          type: boolean
          description: >-
            `true` indicates that this device’s behavior model might not be
            reliable
        ingressInterface:
          type: string
          description: the physical interface name, where traffic entered the device
        egressInterface:
          type: string
          description: |-
            the physical interface name, where traffic exited the device.
            Absent if this is the last hop and traffic did not exit the device.
        behaviors:
          type: array
          items:
            type: string
            enum:
              - L2
              - L3
              - NAT
              - PBR
              - ACL_PERMIT
              - ACL_DENY
          description: >-
            Specifies the forwarding behaviors experienced by traffic at the
            device.

            *L2*: Forwarded at layer 2.

            *L3*: Routed at layer 3.

            *NAT*: NAT transformations applied.

            *PBR*: Forwarded using Policy-Based Routing.

            *ACL_PERMIT*: ACLs were applied to traffic at the device and the
            traffic was permitted.

            *ACL_DENY*: ACLs were applied to traffic at the device and the
            traffic was dropped.
        networkFunctions:
          $ref: '#/components/schemas/NetworkFunctions'
        backfilledFrom:
          type: string
          description: the collection instant from which the device was backfilled
    PathInfo:
      type: object
      properties:
        paths:
          type: array
          items:
            $ref: '#/components/schemas/Path'
        totalHits:
          $ref: '#/components/schemas/TotalHits'
    PathSearchBulkRequest:
      type: object
      required:
        - queries
      properties:
        queries:
          type: array
          items:
            $ref: '#/components/schemas/PathSearchQuery'
        intent:
          $ref: '#/components/schemas/SearchIntent'
          description: >-
            Specifies the intent for the search. Default PREFER_DELIVERED.

            *PREFER_VIOLATIONS*: Prefer paths that result in the traffic not
            getting delivered, e.g. drops, blackholes, loops. An example usage
            is while trying to evaluate if the specified traffic always gets
            delivered to the destination along all path choices.

            *PREFER_DELIVERED*: Prefer paths that result in the traffic getting
            delivered. An example usage is while trying to evaluate if traffic
            gets delivered to the destination along any path choice.

            *VIOLATIONS_ONLY*: Search for paths where traffic is not delivered
            to the destination.
          examples:
            - PREFER_DELIVERED
          default: PREFER_DELIVERED
        maxCandidates:
          type: integer
          format: int32
          description: >-
            the limit on the number of search results computed, before applying
            any ranking criteria. Permitted range = 1 to 10,000. Default 5,000.
          examples:
            - 5000
        maxResults:
          type: integer
          format: int32
          description: >-
            the limit on the number of search results returned by the API.
            First, the platform computes up to maxCandidates results that match
            the search criteria. Then they are sorted by various ranking
            criteria. A key ranking factor is path length, preferring longer
            paths (greatest reach) in the network over shorter ones. Finally,
            the API limits the number of returned search results to maxResults.
            Permitted range = 1 to maxCandidates. Default 1.
          examples:
            - 1
        maxReturnPathResults:
          type: integer
          format: int32
          description: >-
            the limit on the number of return path search results. Permitted
            range = 0 to 10,000. Default 0. Multicast (*, G) and (S, G) queries
            will always return 0 return path results regardless of this value.
          examples:
            - 0
        maxSeconds:
          type: integer
          format: int32
          description: >-
            the timeout duration per search query. Permitted range = 1 to 300.
            Default 30.
          examples:
            - 30
        maxOverallSeconds:
          type: integer
          format: int32
          description: >-
            the overall timeout duration. Permitted range = 1 to 7,200. Default
            equal to the timeout duration for a single query.
          examples:
            - 300
        includeTags:
          type: boolean
          description: If true, the response will include device tags for each hop.
          examples:
            - false
        includeNetworkFunctions:
          type: boolean
          description: >-
            If true, the response includes detailed forwarding info for each
            hop.

            Note: Setting this to true increases the API response time.
          examples:
            - false
    PathSearchQuery:
      type: object
      required:
        - dstIp
      properties:
        from:
          type: string
          description: >-
            the device from which the traffic originates. If this is specified,
            then the srcIp will be considered as a packet header only, else, the
            srcIp will be resolved to specific location(s) and used as the
            source in the path search. Either the source device or srcIp must be
            specified.
        srcIp:
          type: string
          description: >-
            the source IP address or subnet of packets entering the network. For
            multicast (*, G) paths, set srcIp = G (multicast group address).
          examples:
            - 10.10.10.10
        dstIp:
          type: string
          description: >-
            the destination IP address or subnet of packets entering the
            network. For multicast (*, G) paths, set dstIp = G (multicast group
            address).
          examples:
            - 10.10.10.64/28
        ipProto:
          type: integer
          format: int32
          minimum: 0
          maximum: 255
          description: the IP protocol
          examples:
            - 6
        srcPort:
          type: string
          description: the L4 source port, like "80" or a range "8080-8088"
          examples:
            - '80'
        dstPort:
          type: string
          description: the L4 destination port, like "80" or a range "8080-8088"
          examples:
            - 8080-8088
        icmpType:
          type: integer
          format: int32
          minimum: 0
          maximum: 255
          description: the ICMP type. Implies ipProto = 1.
        fin:
          type: integer
          format: int32
          minimum: 0
          maximum: 1
          description: the FIN (finish) bit (0 or 1). Implies ipProto = 6.
          examples:
            - 1
        syn:
          type: integer
          format: int32
          minimum: 0
          maximum: 1
          description: the SYN (synchronize) bit (0 or 1). Implies ipProto = 6.
          examples:
            - 1
        rst:
          type: integer
          format: int32
          minimum: 0
          maximum: 1
          description: the RST (reset) bit (0 or 1). Implies ipProto = 6.
          examples:
            - 1
        psh:
          type: integer
          format: int32
          minimum: 0
          maximum: 1
          description: the PSH (push) bit (0 or 1). Implies ipProto = 6.
          examples:
            - 1
        ack:
          type: integer
          format: int32
          minimum: 0
          maximum: 1
          description: the ACK (acknowledgment) bit (0 or 1). Implies ipProto = 6.
          examples:
            - 1
        urg:
          type: integer
          format: int32
          minimum: 0
          maximum: 1
          description: the URG (urgent) bit (0 or 1). Implies ipProto = 6.
          examples:
            - 1
        appId:
          type: string
          description: >-
            the L7 app-id or "unidentified" to exclude paths that traverse
            firewall policies with app-id matches. If the system doesn't
            recognize the provided value, it handles the value the same as
            "unidentified" and includes the value in the `unrecognizedValues`
            response field. The applications that are recognized by the model
            can be obtained using GET /api/l7-applications.
          examples:
            - ssh
        userId:
          type: string
          description: >-
            the L7 user-id or "unidentified" to exclude paths that traverse
            firewall policies with user-id matches. If the system doesn't
            recognize the provided value, it handles the value the same as
            "unidentified" and includes the value in the `unrecognizedValues`
            response field. See [Path Analysis with Layer 7
            User-Group](/docs/enterprise/applications/search/path-analysis/layer7_ugroup/)
            for more info.
          examples:
            - user1
        userGroupId:
          type: string
          description: >-
            the L7 user-group-id. If the system doesn't recognize the provided
            value, the search returns 0 results as there are no paths that
            traverse firewall policies with that user-group-id match, and the
            value is included in the `unrecognizedValues` response field. See
            [Path Analysis with Layer 7
            User-Group](/docs/enterprise/applications/search/path-analysis/layer7_ugroup/)
            for more info.
          examples:
            - group1
        url:
          type: string
          description: >-
            the L7 URL that traffic of interest is trying to access. Prefix
            wildcards are supported for subdomains. Suffix wildcards are
            supported for top-level domains and URL paths. See [Path Analysis
            with Layer 7
            URL](/docs/enterprise/applications/search/path-analysis/layer7_url/)
            for more policy patterns supported in the model.
          examples:
            - '*.example.com'
    PathSearchResponse:
      type: object
      properties:
        srcIpLocationType:
          type: string
          description: >-
            Specifies the location discovery method for source IP.

            The enum values are ordered from most precise to least precise
            discovery method.

            *INTERFACE*: The IP is a configured IP address of one or more device
            interfaces.

            *HOST*: The IP corresponds to discovered host(s).

            *SNAT* : The IP is used as the post-translated IP of a Source NAT
            function in the network and is assumed to be located on the gateway
            device(s) performing this translation.

            *CO_LOCATED*: The IP is configured on a gateway device as a /32 or
            /128 route whose next hop is a known host.

            *INTERFACE_ATTACHED_SUBNET*: The IP falls within the attached subnet
            of L3 interface(s).

            *INTERNET*: The IP is in the public internet and was located at the
            network's Internet Node. This discovery method is only applicable
            when an Internet Node is configured in the network.

            *ROUTE*: The IP was located based on injected routes in the network.

            *MULTICAST*: The IP is a multicast group address. This discovery
            method is used to locate the rendezvous points of the multicast
            group and use their IP addresses as IP source.
          enum:
            - INTERFACE
            - HOST
            - SNAT
            - CO_LOCATED
            - INTERFACE_ATTACHED_SUBNET
            - INTERNET
            - ROUTE
            - MULTICAST
        dstIpLocationType:
          type: string
          description: >-
            Specifies the location discovery method for destination IP.

            The enum values are ordered from most precise to least precise
            discovery method.

            *INTERFACE*: The IP is a configured IP address of one or more device
            interfaces.

            *HOST*: The IP corresponds to discovered host(s).

            *DNAT*: The IP gets DNAT'd in the network. The IP may either
            correspond directly to a VIP on a load balancer or a DNAT'd IP on
            other devices such as routers. This discovery method is only used to
            locate destination IP addresses. DNAT’d IP addresses are recursively
            resolved to determine where traffic to a given destination IP must
            be delivered in the network.

            *CO_LOCATED*: The IP is configured on a gateway device as a /32 or
            /128 route whose next hop is a known host.

            *INTERFACE_ATTACHED_SUBNET*: The IP falls within the attached subnet
            of L3 interface(s).

            *INTERNET*: The IP is in the public internet and was located at the
            network's Internet Node. This discovery method is only applicable
            when an Internet Node is configured in the network.

            *ROUTE*: The IP was located based on injected routes in the network.

            *MULTICAST*: The IP is a multicast group address.
          enum:
            - INTERFACE
            - HOST
            - DNAT
            - CO_LOCATED
            - INTERFACE_ATTACHED_SUBNET
            - INTERNET
            - ROUTE
            - MULTICAST
        info:
          $ref: '#/components/schemas/PathInfo'
        returnPathInfo:
          $ref: '#/components/schemas/PathInfo'
        timedOut:
          type: boolean
        queryUrl:
          type: string
          description: >-
            A Forward application URL at which this path search can be explored
            or refined interactively
        unrecognizedValues:
          $ref: '#/components/schemas/UnrecognizedValues'
          description: L7 values from the request that were unrecognized by the system
    SearchIntent:
      type: string
      enum:
        - PREFER_VIOLATIONS
        - PREFER_DELIVERED
        - VIOLATIONS_ONLY
    TotalHits:
      type: object
      properties:
        type:
          type: string
          description: >-
            Specifies the type of total hits.

            *LOWER_BOUND*: There may be additional hits that were not included
            in the results either because the requested number of hits were
            found, or the request timed out.

            *EXACT*: There are exactly this many hits.
          enum:
            - LOWER_BOUND
            - EXACT
        value:
          type: integer
          format: int64
      description: >-
        Number of ways in which traffic matching the search criteria is
        forwarded in the network. Multiple ECMP path choices for traffic lead to
        separate results. In addition, depending on the scope of query terms,
        there might be multiple results along a single path. For example a
        search without IP protocol or destination port restrictions can result
        in multiple results along a single device path if there are different
        ACLs that permit or deny traffic to different destination ports.
    UnrecognizedValues:
      type: object
      properties:
        appId:
          type: array
          items:
            type: string
        userGroupId:
          type: array
          items:
            type: string
        userId:
          type: array
          items:
            type: string
    AutoDiscoverySource:
      type: string
      enum:
        - NONE
        - IP_ROUTES
        - BGP_ROUTES
        - INTERFACE_ADDRESSES
    DevicePort:
      type: object
      properties:
        device:
          type: string
        port:
          type: string
    Encryptor:
      type: object
      required:
        - name
        - siteConnection
        - tunnels
      properties:
        name:
          type: string
          examples:
            - encryptor
        siteConnection:
          $ref: '#/components/schemas/EncryptorConnection'
          description: A connection to a high site
        underlayConnection:
          $ref: '#/components/schemas/EncryptorConnection'
          description: A connection to the underlay network (a low site)
        tunnels:
          type: array
          items:
            $ref: '#/components/schemas/EncryptorTunnel'
          description: >-
            Tunnels to other encryptor devices. A tunnel source address is
            modeled as residing on this device and the destination addresses on
            another encryptor device. A source address may be reused on an
            encryptor. Each destination address must match the source address of
            the tunnel on another encryptor, and vice-versa
        subnets:
          type: array
          items:
            type: string
          description: >-
            Subnets to route to the high site, in addition to the source
            addresses of tunnels on the `siteConnection` gateway device
    EncryptorConnection:
      type: object
      required:
        - uplinkPort
      properties:
        uplinkPort:
          $ref: '#/components/schemas/DevicePort'
          description: The physical uplink port on the edge device.
          examples:
            - device: nyc-rtr-01
              port: eth1/1
        gatewayPort:
          $ref: '#/components/schemas/DevicePort'
          description: The virtual gateway port, if different than `uplinkPort`.
          examples:
            - device: nyc-rtr-01
              port: vlan100
        vlan:
          type: integer
          format: int32
          description: The VLAN of traffic from `uplinkPort`, if tagged.
          examples:
            - 100
        name:
          type: string
          description: >-
            An optional name for this connection, which will be used as the
            interface name created on the synthetic device that links to the
            physical edge port.
    EncryptorList:
      type: object
      required:
        - encryptors
      properties:
        encryptors:
          type: array
          items:
            $ref: '#/components/schemas/Encryptor'
    EncryptorPatch:
      type: object
      properties:
        name:
          type: string
        siteConnection:
          $ref: '#/components/schemas/EncryptorConnection'
        underlayConnection:
          $ref: '#/components/schemas/EncryptorConnection'
        tunnels:
          type: array
          items:
            $ref: '#/components/schemas/EncryptorTunnel'
          description: >-
            If specified, this list will **replace** all existing tunnels on the
            encryptor.
        subnets:
          type: array
          items:
            type: string
          description: >-
            If specified, this set will **replace** all existing subnets on the
            encryptor.
    EncryptorTunnel:
      type: object
      required:
        - source
        - destination
      properties:
        source:
          type: string
          description: Source IP address of an encryptor tunnel
          examples:
            - 1.1.1.1
        destination:
          type: string
          description: Destination IP address of an encryptor tunnel
          examples:
            - 2.2.2.2
    InetConnection:
      type: object
      required:
        - uplinkPort
      properties:
        uplinkPort:
          $ref: '#/components/schemas/DevicePort'
          description: The physical uplink port on the edge device.
          examples:
            - device: nyc-rtr-01
              port: eth1/1
        gatewayPort:
          $ref: '#/components/schemas/DevicePort'
          description: The virtual gateway port, if different than `uplinkPort`.
          examples:
            - device: nyc-rtr-01
              port: vlan100
        vlan:
          type: integer
          format: int32
          description: The VLAN of traffic from `uplinkPort`, if tagged.
          examples:
            - 100
        name:
          type: string
          description: >-
            An optional name for this connection, which will be used as the
            interface name created on the synthetic device that links to the
            physical edge port.
        site:
          type: string
          description: >-
            An optional name for the site in which this connection's gateway
            device resides. A site is a collection of devices that redistribute
            routes learned from an L3VPN to each other. Grouping connections
            together into a single site enables more accurate site subnet
            autodiscovery when using `IP_ROUTES` or `BGP_ROUTES`.
        subnets:
          type: array
          items:
            type: string
          description: >-
            Site subnets. Routes for these subnets are always created on the
            node. Required (and must not be empty) if `subnetAutoDiscovery` is
            `NONE`.
          examples:
            - - 123.223.47.0/24
        subnetAutoDiscovery:
          $ref: '#/components/schemas/AutoDiscoverySource'
          description: >-
            The source from which site subnets are automatically inferred from
            the gateway device. Defaults to `NONE`. If `INTERFACE_ADDRESSES`,
            the gateway port's IP address is used as this connection's site
            subnet. If `IP_ROUTES`, subnets are inferred from the gateway
            device's RIB. If `BGP_ROUTES`, subnets are inferred from the gateway
            device's Adj-RIB-Out.


            Note: If not `NONE`, routes are created on the node for both
            autodiscovered subnets and any subnets specified in `subnets`.


            Note: Using `BGP_ROUTES` will automatically enable collection of
            Adj-RIB-Out from the gateway device in future network collections.
          examples:
            - NONE
        peerIps:
          type: array
          items:
            type: string
          description: >-
            IP addresses of BGP peers to which this connection’s site subnets
            are advertised. If empty, routes advertised to all BGP peers are
            examined.


            Note: This set is only used if `subnetAutoDiscovery` is
            `BGP_ROUTES`.
          examples:
            - - 1.1.1.1
        backdoorLinkPorts:
          type: array
          items:
            $ref: '#/components/schemas/DevicePort'
          description: L3 interfaces that provide backdoor connectivity between sites.
        advertisesDefaultRoute:
          type: boolean
          description: >-
            Whether this connection's gateway device advertises the default
            route. Defaults to `false`.


            Note: This property is only used if `subnetAutoDiscovery` is
            `IP_ROUTES`.
    InternetNode:
      type: object
      required:
        - name
        - connections
      properties:
        name:
          type: string
          examples:
            - inet
        connections:
          type: array
          items:
            $ref: '#/components/schemas/InetConnection'
        translations:
          type: array
          items:
            $ref: '#/components/schemas/SyntheticNatEntry'
        subnetsToExclude:
          type: array
          items:
            type: string
          description: Public subnets that should not be located at this device.
    InternetNodePatch:
      type: object
      properties:
        connections:
          type: array
          items:
            $ref: '#/components/schemas/InetConnection'
          description: >-
            If specified, this list will **replace** all existing connections on
            the internet node.
        name:
          type: string
        translations:
          type: array
          items:
            $ref: '#/components/schemas/SyntheticNatEntry'
          description: >-
            If specified, this list will **replace** all existing translations
            on the internet node.
        subnetsToExclude:
          type: array
          items:
            type: string
          description: >-
            If specified, this list will **replace** all existing excluded
            subnets on the internet node.
    IntranetNode:
      type: object
      required:
        - name
        - connections
      properties:
        name:
          type: string
          examples:
            - inet
        connections:
          type: array
          items:
            $ref: '#/components/schemas/InetConnection'
    IntranetNodeList:
      type: object
      required:
        - intranetNodes
      properties:
        intranetNodes:
          type: array
          items:
            $ref: '#/components/schemas/IntranetNode'
    IntranetNodePatch:
      type: object
      properties:
        connections:
          type: array
          items:
            $ref: '#/components/schemas/InetConnection'
          description: >-
            If specified, this list will **replace** all existing connections on
            the intranet node.
        name:
          type: string
    L2Vpn:
      type: object
      required:
        - name
        - connections
      properties:
        name:
          type: string
          examples:
            - l2vpn
        connections:
          type: array
          items:
            $ref: '#/components/schemas/L2VpnConnection'
    L2VpnConnection:
      type: object
      required:
        - device
        - port
      properties:
        device:
          type: string
          description: The customer edge device.
        port:
          type: string
          description: The physical edge port on the customer edge device.
          examples:
            - eth1/1
        vlan:
          type: integer
          format: int32
          examples:
            - 100
        name:
          type: string
          description: >-
            An optional name for this connection, which will be used as the
            interface name created on the synthetic device that links to the
            customer edge device.
    L2VpnList:
      type: object
      required:
        - l2Vpns
      properties:
        l2Vpns:
          type: array
          items:
            $ref: '#/components/schemas/L2Vpn'
    L2VpnPatch:
      type: object
      properties:
        connections:
          type: array
          items:
            $ref: '#/components/schemas/L2VpnConnection'
          description: >-
            If specified, this list will **replace** all existing connections on
            the L2 VPN node.
        name:
          type: string
    L3Vpn:
      type: object
      required:
        - name
        - connections
      properties:
        name:
          type: string
          examples:
            - l3vpn
        connections:
          type: array
          items:
            $ref: '#/components/schemas/L3VpnConnection'
    L3VpnConnection:
      type: object
      required:
        - uplinkPort
      properties:
        uplinkPort:
          $ref: '#/components/schemas/DevicePort'
          description: The physical uplink port on the edge device.
          examples:
            - device: nyc-rtr-01
              port: eth1/1
        gatewayPort:
          $ref: '#/components/schemas/DevicePort'
          description: The virtual gateway port, if different than `uplinkPort`.
          examples:
            - device: nyc-rtr-01
              port: vlan100
        vrf:
          type: string
          description: >-
            An optional name for the VRF on the synthetic L3VPN device under
            which this connection resides.
        vlan:
          type: integer
          format: int32
          description: The VLAN of traffic from `uplinkPort`, if tagged.
          examples:
            - 100
        name:
          type: string
          description: >-
            An optional name for this connection, which will be used as the
            interface name created on the synthetic device that links to the
            physical edge port.
        site:
          type: string
          description: >-
            An optional name for the site in which this connection's gateway
            device resides. A site is a collection of devices that redistribute
            routes learned from an L3VPN to each other. Grouping connections
            together into a single site enables more accurate site subnet
            autodiscovery when using `IP_ROUTES` or `BGP_ROUTES`.
        subnets:
          type: array
          items:
            type: string
          description: >-
            Advertised subnets. Routes for these subnets are created on the
            L3VPN if received by another CE. Required (and must not be empty) if
            `subnetAutoDiscovery` is `NONE`.
          examples:
            - - 123.223.47.0/24
        subnetAutoDiscovery:
          $ref: '#/components/schemas/AutoDiscoverySource'
          description: >-
            The types of routes from which advertised subnets are automatically
            inferred in the gateway device’s routing table. Defaults to `NONE`.
            If `INTERFACE_ADDRESSES`, the gateway port’s IP address is used. If
            `IP_ROUTES`, subnets are inferred from the gateway device’s RIB. If
            `BGP_ROUTES`, subnets are inferred from the gateway device’s
            Adj-RIB-Out.


            Note: If not `NONE`, routes are created on the L3VPN for both
            autodiscovered subnets, as well any subnets specified in `subnets`,
            that are received by another CE.


            Note: Using `BGP_ROUTES` will automatically enable collection of
            Adj-RIB-Out from the gateway device in future network collections.
          examples:
            - NONE
        peerIps:
          type: array
          items:
            type: string
          description: >-
            IP addresses of the provider edge devices to which this connection's
            edge device sends and receives L3VPN routes. If empty, routes
            advertised to all BGP peers are examined.
          examples:
            - - 1.1.1.1
        backdoorLinkPorts:
          type: array
          items:
            $ref: '#/components/schemas/DevicePort'
          description: L3 interfaces that provide backdoor connectivity between sites.
        advertisesDefaultRoute:
          type: boolean
          description: >-
            Whether the CE advertises the default route. Defaults to `false`.


            Note: This property is only used if `subnetAutoDiscovery` is
            `IP_ROUTES`, which should be the case when BGP collection is not
            enabled on the CE. If the Adj-RIB-Out is not collected, the RIB is
            examined and a default route forwarded out `gatewayPort` is skipped
            if this property is false.
    L3VpnList:
      type: object
      required:
        - l3Vpns
      properties:
        l3Vpns:
          type: array
          items:
            $ref: '#/components/schemas/L3Vpn'
    L3VpnPatch:
      type: object
      properties:
        name:
          type: string
        connections:
          type: array
          items:
            $ref: '#/components/schemas/L3VpnConnection'
          description: >-
            If specified, this list will **replace** all existing connections on
            the L3 VPN node.
    SyntheticConnection:
      type: object
      properties:
        name:
          type: string
    SyntheticConnections:
      type: object
      properties:
        connections:
          type: array
          items:
            $ref: '#/components/schemas/SyntheticConnection'
    SyntheticNatEntry:
      type: object
      required:
        - insideAddress
        - outsideAddress
      properties:
        insideAddress:
          type: string
          examples:
            - 10.0.0.1
        outsideAddress:
          type: string
          description: A public (non-RFC1918) address
          examples:
            - 1.1.1.1
    WanCircuit:
      type: object
      required:
        - name
        - connection1
        - connection2
      properties:
        name:
          type: string
          examples:
            - wan-circuit-01
        connection1:
          $ref: '#/components/schemas/WanCircuitConnection'
        connection2:
          $ref: '#/components/schemas/WanCircuitConnection'
    WanCircuitConnection:
      type: object
      required:
        - device
        - port
      properties:
        device:
          type: string
          description: A customer edge device name
        port:
          type: string
          description: The name of the connected port on `device`
        vlan:
          type: integer
          format: int32
          description: The VLAN of traffic from `port`, if tagged
          examples:
            - 100
        name:
          type: string
          description: >-
            An optional name for this connection, which will be used as the
            interface name created on the synthetic device that links to the
            edge device.
    WanCircuitList:
      type: object
      properties:
        wanCircuits:
          type: array
          items:
            $ref: '#/components/schemas/WanCircuit'
    WanCircuitPatch:
      type: object
      properties:
        name:
          type: string
          examples:
            - wan-circuit-01
        connection1:
          $ref: '#/components/schemas/WanCircuitConnection'
        connection2:
          $ref: '#/components/schemas/WanCircuitConnection'
    NewUser:
      type: object
      required:
        - email
        - password
      properties:
        email:
          type: string
          examples:
            - me@example.com
        username:
          type: string
          description: Defaults to the value of `email`
          examples:
            - me@example.com
        password:
          type: string
          examples:
            - zF4H+K;5]qE~%9G=nbAk
        isSupport:
          type: boolean
          description: Defaults to `false`
          examples:
            - false
        enabled:
          type: boolean
          description: Defaults to `true`
          examples:
            - true
    User:
      type: object
      required:
        - id
        - username
        - enabled
        - authSource
      properties:
        id:
          type: string
          description: >-
            A system-generated identifier that can be used in API requests to
            manage this account
          examples:
            - '55555'
        username:
          type: string
          description: The identifier used to authenticate (log in) with this account
          examples:
            - me@example.com
        email:
          type: string
          description: >-
            The email address at which this user wishes to receive
            system-generated emails
          examples:
            - me@example.com
        enabled:
          type: boolean
          description: >-
            Whether authentication (login and API use) is currently permitted
            for this user account
        authSource:
          type: string
          description: >-
            How this user authenticates. `LOCAL` accounts exist only in the
            Forward Platform.
          examples:
            - SAML
          enum:
            - LOCAL
            - TACACS
            - SAML
            - LDAP
        externalGroups:
          type: array
          items:
            type: string
          description: >-
            The names of any LDAP or SSO (SAML) groups to which this account
            belongs. Updated each time this user authenticates.
          examples:
            - - netops
        isSupport:
          type: boolean
          description: >-
            Whether this account belongs to Forward Networks support staff.
            `true` excludes the account from statistics shown on the Engagement
            dashboard.
        lastActive:
          type: string
          description: >-
            The approximate time of the most recent authenticated request from
            this account
          examples:
            - '2024-12-31T23:59:59.789Z'
    UserPatch:
      type: object
      properties:
        email:
          type: string
          examples:
            - me@example.com
        username:
          type: string
          description: Changes the username of a user whose `authSource` is "LOCAL"
          examples:
            - me@example.com
        password:
          type: string
          description: >-
            Assigns a new temporary password to a user whose `authSource` is
            "LOCAL". The user will be prompted to choose a new password when
            they log in with this password.
          examples:
            - zF4H+K;5]qE~%9G=nbAk
        isSupport:
          type: boolean
          examples:
            - false
        enabled:
          type: boolean
          examples:
            - true
    Users:
      type: object
      properties:
        users:
          type: array
          items:
            $ref: '#/components/schemas/User'
    Vulnerability:
      type: object
      required:
        - id
        - severity
        - vendor
        - os
        - osVersions
        - dependsOnConfig
        - detectionMethod
      properties:
        id:
          type: string
          description: >-
            The Common Vulnerabilities and Exposures
            ([CVE](https://www.cve.org)) ID assigned to this vulnerability in
            the National Vulnerability Database ([NVD](https://nvd.nist.gov))
          examples:
            - CVE-2019-0201
        description:
          type: string
          examples:
            - >-
              An issue is present in Apache ZooKeeper 1.0.0 to 3.4.13 and
              3.5.0-alpha to 3.5.4-beta. ZooKeeper’s getACL() command…
        severity:
          type: string
          examples:
            - MEDIUM
          enum:
            - NONE
            - LOW
            - MEDIUM
            - HIGH
            - CRITICAL
        url:
          type: string
          description: >-
            URL of this vulnerability’s vendor advisory, if available, or else
            the URL of the best source of information about the vulnerability
            that’s currently available
          examples:
            - >-
              https://www.a10networks.com/blog/cve-2016-0270-gcm-nonce-vulnerability
        publishedDate:
          type: string
          examples:
            - '2023-12-31'
        v2Score:
          type: number
          format: double
          description: >-
            Score assigned by the Common Vulnerability Scoring System
            ([CVSS](https://nvd.nist.gov/vuln-metrics/cvss)) v2.0 standard
          examples:
            - 6.1
        v3Score:
          type: number
          format: double
          description: >-
            Score assigned by the Common Vulnerability Scoring System
            ([CVSS](https://nvd.nist.gov/vuln-metrics/cvss)) v3.x standard
          examples:
            - 9.8
        v4Score:
          type: number
          format: double
          description: >-
            Score assigned by the Common Vulnerability Scoring System
            ([CVSS](https://www.first.org/cvss/v4.0/specification-document))
            v4.0 standard
          examples:
            - 8.4
        knownExploitSource:
          type: string
          description: >-
            `CISA` if the vulnerability is in the Cybersecurity and
            Infrastructure Security Agency’s Known Exploited Vulnerabilities
            ([KEV](https://www.cisa.gov/known-exploited-vulnerabilities-catalog))
            catalog. `VENDOR` if the vendor advisory (the page at `url`)
            indicates that the vulnerability has a known exploit. Absent
            otherwise.
          examples:
            - CISA
          enum:
            - CISA
            - VENDOR
        weaknesses:
          type: array
          items:
            type: string
          description: >-
            Common Weakness Enumeration
            ([CWE](https://cwe.mitre.org/about/new_to_cwe.html)) IDs associated
            with this CVE
          examples:
            - - CWE-123
        vendor:
          $ref: '#/components/schemas/VulnerabilityVendor'
          examples:
            - ARISTA
        os:
          $ref: '#/components/schemas/VulnerabilityVendorOs'
          examples:
            - arista_eos
        osVersions:
          type: array
          items:
            type: string
          examples:
            - - 4.15.0F
        dependsOnConfig:
          type: boolean
          description: >-
            Whether the CVE depends on configuration for this OS. Null if
            unknown.
          examples:
            - true
        detectionMethod:
          type: string
          description: >-
            How the set of possibly matching devices was constructed. `CONFIG`
            means that the analysis was more thorough than using just the OS
            version. The `CONFIG` method yields fewer false positives.
          examples:
            - OS_VERSION
          enum:
            - OS_VERSION
            - CONFIG
        devices:
          type: array
          items:
            type: string
          description: >-
            Possibly impacted devices. Present when `detectionMethod` is
            "OS_VERSION".
          examples:
            - - dev01
              - dev02
        deviceResults:
          type: array
          items:
            $ref: '#/components/schemas/VulnerabilityDetectionResult'
          description: >-
            Results of device configuration analysis for this vulnerability.
            Present when `detectionMethod` is "CONFIG".
    VulnerabilityAnalysis:
      type: object
      required:
        - vulnerabilities
        - offset
        - total
        - indexCreatedAt
      properties:
        vulnerabilities:
          type: array
          items:
            $ref: '#/components/schemas/Vulnerability'
        offset:
          type: integer
          format: int32
          description: >-
            The number of vulnerabilities dropped from the front of
            `vulnerabilities` due to paging.
          examples:
            - 200
        total:
          type: integer
          format: int32
          description: >-
            The total number of vulnerabilities available in the analysis. This
            number can be larger than `offset` plus the length of
            `vulnerabilities` if some have been dropped from the back of
            `vulnerabilities` due to paging.
          examples:
            - 1234
        indexCreatedAt:
          type: string
          description: >-
            When the CVE index used for analysis was created (epoch
            milliseconds)
          examples:
            - '2025-06-01T12:34:56.789Z'
        indexUploadedAt:
          type: string
          description: >-
            When the CVE index used for analysis was uploaded to the server
            (epoch milliseconds)
          examples:
            - '2025-06-03T04:05:06.007Z'
        indexUploadedBy:
          type: string
          description: The id of the `User` who uploaded the CVE index used for analysis
          examples:
            - '345'
    VulnerabilityDetectionResult:
      type: object
      required:
        - device
        - vulnerable
      properties:
        device:
          type: string
          examples:
            - dev01
        vulnerable:
          type: boolean
          description: Absent if an error prevented analysis from completing
          examples:
            - false
        fileLines:
          type: object
          additionalProperties:
            type: array
            items:
              $ref: '#/components/schemas/LineRange'
          description: Relevant source file lines for the device and CVE
          examples:
            - dev01,configuration.txt:
                - start: 117
                  end: 119
    VulnerabilityVendor:
      type: string
      enum:
        - CISCO
        - JUNIPER
        - ARISTA
        - PICA8
        - F5
        - A10
        - CHECKPOINT
        - HP
        - FORTINET
        - PALO_ALTO_NETWORKS
        - VMWARE
        - CITRIX
        - CUMULUS
        - RIVERBED
        - LINUX_GENERIC
        - SYMANTEC
        - AVI_NETWORKS
        - AVAYA
        - T128
        - ARUBA
        - VIASAT
        - SILVER_PEAK
        - PENSANDO
        - FORCEPOINT
        - NOKIA
        - VERSA
        - BROCADE
        - EXTREME
        - DELL
        - HUAWEI
        - GD
        - EDGE_CORE
    VulnerabilityVendorOs:
      type: string
      enum:
        - arista_eos
        - avi_vantage
        - bluecoat
        - cisco_ios
        - cisco_ios_xe
        - cisco_ios_xr
        - cisco_nxos
        - cisco_asa
        - cisco_ftd
        - cisco_fxos
        - cisco_nxos_aci
        - cisco_apic
        - cisco_sg
        - cisco_wireless
        - viptela
        - juniper_junos
        - juniper_srx
        - juniper_netscreen
        - linux_ovs_ofctl
        - pica8_ovs_ofctl
        - f5
        - f5_os_hypervisor
        - a10_acos
        - checkpoint
        - hp_provision
        - hp_comware
        - fortinet
        - pan_os
        - esxi
        - citrix_netscaler
        - cumulus
        - riverbed_steelhead
        - riverbed_interceptor
        - 128t
        - aruba_switch
        - aruba_aos_cx
        - aruba_wifi_controller
        - silver_peak_edgeconnect
        - pensando
        - cloud_genix
        - forcepoint
        - avaya_sr
        - viasat_encryptor
        - nokia
        - huawei_switch
        - versa_sase
        - versa_switch
        - brocade_switch
        - cisco_encs_nfv
        - extreme_nos
        - meraki_ms
        - meraki_mr
        - meraki_mx
        - mist_ap
        - dell_os6
        - dell_os9
        - dell_os10
        - dell_sonic
        - gd_encryptor
        - edge_core_sonic
  securitySchemes:
    api_token:
      type: http
      scheme: basic
