Forward Networks Checks API

Enable or define automated checks that verify network policy and behavior

OpenAPI Specification

forward-networks-checks-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: 'Forward Networks: Complete Aliases Checks API'
  description: Model and verify networks
  contact:
    email: support@forwardnetworks.com
  license:
    name: MIT
    url: https://spdx.org/licenses/MIT
  version: '26.6'
servers:
- url: /api
tags:
- name: Checks
  description: Enable or define automated checks that verify network policy and behavior
  summary: Checks
paths:
  /predefinedChecks:
    get:
      tags:
      - Checks
      summary: Get available Predefined checks
      operationId: getAvailablePredefinedChecks
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/AvailablePredefinedCheck'
      security:
      - api_token: []
  /snapshots/{snapshotId}/checks:
    get:
      tags:
      - Checks
      summary: Get checks (with status)
      operationId: getChecks
      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: Add a check
      description: Note that the returned NetworkCheckResult will never have status of type NONE or PROCESSING
      operationId: addCheck
      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: Deactivate all checks
      operationId: deactivateChecks
      parameters:
      - name: snapshotId
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
      security:
      - api_token: []
  /snapshots/{snapshotId}/checks/{checkId}:
    get:
      tags:
      - Checks
      summary: Get a check (with status)
      description: Note that the returned NetworkCheckResults will never have status of type NONE or PROCESSING
      operationId: getCheck
      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: Deactivate a check
      operationId: deactivateCheck
      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: []
components:
  schemas:
    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 "*")
    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.'
    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 `[]`.
    CheckPriority:
      type: string
      enum:
      - NOT_SET
      - LOW
      - MEDIUM
      - HIGH
    CheckType:
      type: string
      enum:
      - Isolation
      - Reachability
      - Existential
      - QueryStringBased
      - Predefined
      - NQE
    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`'
    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
    CheckStatus:
      type: string
      enum:
      - NONE
      - PASS
      - FAIL
      - ERROR
      - TIMEOUT
      - PROCESSING
      - REQUIRES_ADDITIONAL_SNAPSHOT_PROCESSING
    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'
          Isolation: '#/components/schemas/IsolationCheck'
          Reachability: '#/components/schemas/ReachabilityCheck'
          QueryStringBased: '#/components/schemas/QueryStringCheck'
          Predefined: '#/components/schemas/PredefinedCheck'
          NQE: '#/components/schemas/NqeCheck'
    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'
    NotFilter:
      type: object
      required:
      - type
      properties:
        clause:
          type: object
          description: A filter that would be permitted in the place of this NotFilter. Cannot be another NotFilter.
        type:
          type: string
          const: NotFilter
      description: A filter that inverts the filter in its `clause`
    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
    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
    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
    PredefinedCheck:
      type: object
      required:
      - checkType
      properties:
        checkType:
          type: string
          const: Predefined
        params:
          type: object
        predefinedCheckType:
          $ref: '#/components/schemas/PredefinedCheckType'
    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
    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
    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
    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'
    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
    DiagnosisDetail:
      type: object
      properties:
        query:
          type: string
        references:
          type: array
          items:
            $ref: '#/components/schemas/DiagnosisReference'
    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
    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
    NqeCheck:
      type: object
      required:
      - checkType
      - queryId
      properties:
        checkType:
          type: string
          const: NQE
        queryId:
          type: string
          examples:
          - FQ_6ac3682c92a74b778d98584aea8afa5fe40f2150
        params:
          type: object
          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
    NetworkCheckResultWithDiagnosis:
      allOf:
      - $ref: '#/components/schemas/NetworkCheckResult'
      - type: object
        properties:
          diagnosis:
            $ref: '#/components/schemas/CheckDiagnosis'
    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
    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`'
    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'
    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
    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
    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 `[]`.
    CheckDiagnosis:
      type: object
      properties:
        details:
          type: array
          items:
            $ref: '#/components/schemas/DiagnosisDetail'
        detailsIncomplete:
          type: boolean
        summary:
          type: string
    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'
    NoiseType:
      type: string
      enum:
      - WRONG_GATEWAY
      - INADMISSIBLE
      - NETWORK_OR_BROADCAST_ADDRESS
      - TO_L2_INTERFACE_MAC
      - GLEAN
    EndpointFilter:
      type: object
      required:
      - location
      properties:
        headers:
          type: array
          items:
            $ref: '#/components/schemas/PacketHeaderFilter'
        location:
          $ref: '#/components/schemas/LocationFilter'
        logicalNetwork:
          type: string
    NetworkCheckResult:
      type: object
      properties:
        createdAt:
          type: string
          examples:
          - '2022-04-06T20:34:45.118Z'
        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'
        definedAt:
          type: string
          examples:
          - '2022-04-06T20:34:45.118Z'
        description:
          type: string
        editedAt:
          type: string
          examples:
          - '2022-04-06T20:34:45.118Z'
        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
        executedAt:
          type: string
          examples:
          - '2022-04-06T20:34:45.118Z'
        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'
          description: 'Status of this check. `REQUIRES_ADDITIONAL_SNAPSHOT_PROCESSING` indicates that this check requires additional

            Snapshot processing, such as advanced reachability computation, which can be triggered using [Trigger advanced

            reachability computation](https://docs.fwd.app/latest/api/network-snapshots/compute-advanced-reachability/).'
        tags:
          type: array
          items:
            type: string
    PathQuery:
      type: object
      properties:
        bypass:
          type: array
          items:
            $ref: '#/components/schemas/BypassFilter'
        chain:
          type: array
          items:
            $ref: '#/components/schemas/HopFilter'
        flowTypes:
          type: array
          items:
            type: string
            enum:
            - VALID
            - LOOP
            - POTENTIAL_LOOP
            - BLACKHOLE
            - DROPPED
            - INADMISSIBLE
            - UNREACHABLE
            - IGNORED
            - UNDELIVERED
        forwardingTypes:
          type: array
          items:
            type: string
            enum:
            - L2
            - L3
            - DIRECT_L2
            - FABRIC_PATH
            - VXLAN
            - MCAST_IP
            - DIRECT_IP
            - MPLS
            - L2_PBR
            - L3_PBR
        from:
          $ref: '#/components/schemas/EndpointFilter'
        mode:
          type: string
          const: PERMIT_ALL
        to:
          $ref: '#/components/schemas/EndpointFilter'
    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
    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
    AvailablePredefinedCheck:
      type: object
      properties:
        description:
          type: string
        name:
          type: string
        predefinedCheckType:
          $ref: '#/components/schemas/PredefinedCheckType'
    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'
    QueryStringCheck:
      type: object
      required:
      - checkType
      properties:
        checkType:
          type: string
          const: QueryStringBased
        forRequest:
          type: string
        value:
          type: string
  securitySchemes:
    api_token:
      type: http
      scheme: basic