swagger: "2.0"
schemes:
  - https
host: management.azure.com
info:
  description: The Microsoft Azure Network management API provides a RESTful set of web services that interact with Microsoft Azure Networks service to manage your network resources. The API has entities that capture the relationship between an end user and the Microsoft Azure Networks service.
  title: NetworkManagementClient
  version: 2016-09-01
  x-apisguru-categories:
    - cloud
  x-logo:
    url: https://api.apis.guru/v2/cache/logo/https_assets.onestore.ms_cdnfiles_onestorerolling-1606-01000_shell_v3_images_logo_microsoft.png
  x-origin:
    - format: swagger
      url: https://raw.githubusercontent.com/Azure/azure-rest-api-specs/master/specification/network/resource-manager/Microsoft.Network/stable/2016-09-01/networkWatcher.json
      version: "2.0"
  x-preferred: false
  x-providerName: azure.com
  x-serviceName: network-networkWatcher
  x-tags:
    - Azure
    - Microsoft
consumes:
  - application/json
  - text/json
produces:
  - application/json
  - text/json
securityDefinitions:
  azure_auth:
    authorizationUrl: https://login.microsoftonline.com/common/oauth2/authorize
    description: Azure Active Directory OAuth2 Flow
    flow: implicit
    scopes:
      user_impersonation: impersonate your user account
    type: oauth2
security:
  - azure_auth:
      - user_impersonation
parameters:
  ApiVersionParameter:
    description: Client API version.
    in: query
    name: api-version
    required: true
    type: string
  SubscriptionIdParameter:
    description: The subscription credentials which uniquely identify the Microsoft Azure subscription. The subscription ID forms part of the URI for every service call.
    in: path
    name: subscriptionId
    required: true
    type: string
paths:
  "/subscriptions/{subscriptionId}/providers/Microsoft.Network/networkWatchers":
    get:
      description: Gets all network watchers by subscription.
      operationId: NetworkWatchers_ListAll
      parameters:
        - $ref: "#/parameters/ApiVersionParameter"
        - $ref: "#/parameters/SubscriptionIdParameter"
      responses:
        "200":
          description: Request successful. The operation returns a list of network watcher resources.
          schema:
            $ref: "#/definitions/NetworkWatcherListResult"
      tags:
        - NetworkWatchers
      x-ms-pageable:
        nextLinkName: null
  "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkWatchers":
    get:
      description: Gets all network watchers by resource group.
      operationId: NetworkWatchers_List
      parameters:
        - description: The name of the resource group.
          in: path
          name: resourceGroupName
          required: true
          type: string
        - $ref: "#/parameters/ApiVersionParameter"
        - $ref: "#/parameters/SubscriptionIdParameter"
      responses:
        "200":
          description: Request successful. The operation returns a list of network watcher resources.
          schema:
            $ref: "#/definitions/NetworkWatcherListResult"
      tags:
        - NetworkWatchers
      x-ms-pageable:
        nextLinkName: null
  "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkWatchers/{networkWatcherName}":
    delete:
      description: Deletes the specified network watcher resource.
      operationId: NetworkWatchers_Delete
      parameters:
        - description: The name of the resource group.
          in: path
          name: resourceGroupName
          required: true
          type: string
        - description: The name of the network watcher.
          in: path
          name: networkWatcherName
          required: true
          type: string
        - $ref: "#/parameters/ApiVersionParameter"
        - $ref: "#/parameters/SubscriptionIdParameter"
      responses:
        "202":
          description: Accepted and the operation will complete asynchronously.
        "204":
          description: Delete successful.
      tags:
        - NetworkWatchers
      x-ms-long-running-operation: true
    get:
      description: Gets the specified network watcher by resource group.
      operationId: NetworkWatchers_Get
      parameters:
        - description: The name of the resource group.
          in: path
          name: resourceGroupName
          required: true
          type: string
        - description: The name of the network watcher.
          in: path
          name: networkWatcherName
          required: true
          type: string
        - $ref: "#/parameters/ApiVersionParameter"
        - $ref: "#/parameters/SubscriptionIdParameter"
      responses:
        "200":
          description: Request successful. The operation returns a network watcher resource.
          schema:
            $ref: "#/definitions/NetworkWatcher"
      tags:
        - NetworkWatchers
    put:
      description: Creates or updates a network watcher in the specified resource group.
      operationId: NetworkWatchers_CreateOrUpdate
      parameters:
        - description: The name of the resource group.
          in: path
          name: resourceGroupName
          required: true
          type: string
        - description: The name of the network watcher.
          in: path
          name: networkWatcherName
          required: true
          type: string
        - description: Parameters that define the network watcher resource.
          in: body
          name: parameters
          required: true
          schema:
            $ref: "#/definitions/NetworkWatcher"
        - $ref: "#/parameters/ApiVersionParameter"
        - $ref: "#/parameters/SubscriptionIdParameter"
      responses:
        "200":
          description: Update successful. The operation returns the resulting network watcher resource.
          schema:
            $ref: "#/definitions/NetworkWatcher"
        "201":
          description: Create successful. The operation returns the resulting network watcher resource.
          schema:
            $ref: "#/definitions/NetworkWatcher"
      tags:
        - NetworkWatchers
  "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkWatchers/{networkWatcherName}/configureFlowLog":
    post:
      description: Configures flow log on a specified resource.
      operationId: NetworkWatchers_SetFlowLogConfiguration
      parameters:
        - description: The name of the network watcher resource group.
          in: path
          name: resourceGroupName
          required: true
          type: string
        - description: The name of the network watcher resource.
          in: path
          name: networkWatcherName
          required: true
          type: string
        - description: Parameters that define the configuration of flow log.
          in: body
          name: parameters
          required: true
          schema:
            $ref: "#/definitions/FlowLogInformation"
        - $ref: "#/parameters/ApiVersionParameter"
        - $ref: "#/parameters/SubscriptionIdParameter"
      responses:
        "200":
          description: Successful request for setting flow log configuration.
          schema:
            $ref: "#/definitions/FlowLogInformation"
        "202":
          description: Accepted and the operation will complete asynchronously.
          schema:
            $ref: "#/definitions/FlowLogInformation"
      tags:
        - NetworkWatchers
      x-ms-long-running-operation: true
  "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkWatchers/{networkWatcherName}/ipFlowVerify":
    post:
      description: Verify IP flow from the specified VM to a location given the currently configured NSG rules.
      operationId: NetworkWatchers_VerifyIPFlow
      parameters:
        - description: The name of the resource group.
          in: path
          name: resourceGroupName
          required: true
          type: string
        - description: The name of the network watcher.
          in: path
          name: networkWatcherName
          required: true
          type: string
        - description: Parameters that define the IP flow to be verified.
          in: body
          name: parameters
          required: true
          schema:
            $ref: "#/definitions/VerificationIPFlowParameters"
        - $ref: "#/parameters/ApiVersionParameter"
        - $ref: "#/parameters/SubscriptionIdParameter"
      responses:
        "200":
          description: Request successful. The operation returns the result of IP flow verification.
          schema:
            $ref: "#/definitions/VerificationIPFlowResult"
        "202":
          description: Accepted and the operation will complete asynchronously.
          schema:
            $ref: "#/definitions/VerificationIPFlowResult"
      tags:
        - NetworkWatchers
      x-ms-long-running-operation: true
  "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkWatchers/{networkWatcherName}/nextHop":
    post:
      description: Gets the next hop from the specified VM.
      operationId: NetworkWatchers_GetNextHop
      parameters:
        - description: The name of the resource group.
          in: path
          name: resourceGroupName
          required: true
          type: string
        - description: The name of the network watcher.
          in: path
          name: networkWatcherName
          required: true
          type: string
        - description: Parameters that define the source and destination endpoint.
          in: body
          name: parameters
          required: true
          schema:
            $ref: "#/definitions/NextHopParameters"
        - $ref: "#/parameters/ApiVersionParameter"
        - $ref: "#/parameters/SubscriptionIdParameter"
      responses:
        "200":
          description: Request successful. The operation returns the next hop from the VM.
          schema:
            $ref: "#/definitions/NextHopResult"
        "202":
          description: Accepted and the operation will complete asynchronously.
          schema:
            $ref: "#/definitions/NextHopResult"
      tags:
        - NetworkWatchers
      x-ms-long-running-operation: true
  "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkWatchers/{networkWatcherName}/packetCaptures":
    get:
      description: Lists all packet capture sessions within the specified resource group.
      operationId: PacketCaptures_List
      parameters:
        - description: The name of the resource group.
          in: path
          name: resourceGroupName
          required: true
          type: string
        - description: The name of the Network Watcher resource.
          in: path
          name: networkWatcherName
          required: true
          type: string
        - $ref: "#/parameters/ApiVersionParameter"
        - $ref: "#/parameters/SubscriptionIdParameter"
      responses:
        "200":
          description: Successful packet capture enumeration request.
          schema:
            $ref: "#/definitions/PacketCaptureListResult"
      tags:
        - PacketCaptures
      x-ms-pageable:
        nextLinkName: null
  "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkWatchers/{networkWatcherName}/packetCaptures/{packetCaptureName}":
    delete:
      description: Deletes the specified packet capture session.
      operationId: PacketCaptures_Delete
      parameters:
        - description: The name of the resource group.
          in: path
          name: resourceGroupName
          required: true
          type: string
        - description: The name of the network watcher.
          in: path
          name: networkWatcherName
          required: true
          type: string
        - description: The name of the packet capture session.
          in: path
          name: packetCaptureName
          required: true
          type: string
        - $ref: "#/parameters/ApiVersionParameter"
        - $ref: "#/parameters/SubscriptionIdParameter"
      responses:
        "202":
          description: Accepted and the operation will complete asynchronously.
        "204":
          description: Delete successful.
      tags:
        - PacketCaptures
      x-ms-long-running-operation: true
    get:
      description: Gets a packet capture session by name.
      operationId: PacketCaptures_Get
      parameters:
        - description: The name of the resource group.
          in: path
          name: resourceGroupName
          required: true
          type: string
        - description: The name of the network watcher.
          in: path
          name: networkWatcherName
          required: true
          type: string
        - description: The name of the packet capture session.
          in: path
          name: packetCaptureName
          required: true
          type: string
        - $ref: "#/parameters/ApiVersionParameter"
        - $ref: "#/parameters/SubscriptionIdParameter"
      responses:
        "200":
          description: Request successful. The operation returns a packet capture session.
          schema:
            $ref: "#/definitions/PacketCaptureResult"
      tags:
        - PacketCaptures
    put:
      description: Create and start a packet capture on the specified VM.
      operationId: PacketCaptures_Create
      parameters:
        - description: The name of the resource group.
          in: path
          name: resourceGroupName
          required: true
          type: string
        - description: The name of the network watcher.
          in: path
          name: networkWatcherName
          required: true
          type: string
        - description: The name of the packet capture session.
          in: path
          name: packetCaptureName
          required: true
          type: string
        - description: Parameters that define the create packet capture operation.
          in: body
          name: parameters
          required: true
          schema:
            $ref: "#/definitions/PacketCapture"
        - $ref: "#/parameters/ApiVersionParameter"
        - $ref: "#/parameters/SubscriptionIdParameter"
      responses:
        "201":
          description: Request successful. The operation returns the resulting packet capture session.
          schema:
            $ref: "#/definitions/PacketCaptureResult"
      tags:
        - PacketCaptures
      x-ms-long-running-operation: true
  "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkWatchers/{networkWatcherName}/packetCaptures/{packetCaptureName}/queryStatus":
    post:
      description: Query the status of a running packet capture session.
      operationId: PacketCaptures_GetStatus
      parameters:
        - description: The name of the resource group.
          in: path
          name: resourceGroupName
          required: true
          type: string
        - description: The name of the Network Watcher resource.
          in: path
          name: networkWatcherName
          required: true
          type: string
        - description: The name given to the packet capture session.
          in: path
          name: packetCaptureName
          required: true
          type: string
        - $ref: "#/parameters/ApiVersionParameter"
        - $ref: "#/parameters/SubscriptionIdParameter"
      responses:
        "200":
          description: Successful query of packet capture status.
          schema:
            $ref: "#/definitions/PacketCaptureQueryStatusResult"
        "202":
          description: Accepted query status of packet capture.
          schema:
            $ref: "#/definitions/PacketCaptureQueryStatusResult"
      tags:
        - PacketCaptures
      x-ms-long-running-operation: true
      x-ms-long-running-operation-options:
        final-state-via: location
  "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkWatchers/{networkWatcherName}/packetCaptures/{packetCaptureName}/stop":
    post:
      description: Stops a specified packet capture session.
      operationId: PacketCaptures_Stop
      parameters:
        - description: The name of the resource group.
          in: path
          name: resourceGroupName
          required: true
          type: string
        - description: The name of the network watcher.
          in: path
          name: networkWatcherName
          required: true
          type: string
        - description: The name of the packet capture session.
          in: path
          name: packetCaptureName
          required: true
          type: string
        - $ref: "#/parameters/ApiVersionParameter"
        - $ref: "#/parameters/SubscriptionIdParameter"
      responses:
        "200":
          description: Request successful. The operation stops the packet capture session.
        "202":
          description: Accepted and the operation will complete asynchronously.
      tags:
        - PacketCaptures
      x-ms-long-running-operation: true
  "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkWatchers/{networkWatcherName}/queryFlowLogStatus":
    post:
      description: Queries status of flow log on a specified resource.
      operationId: NetworkWatchers_GetFlowLogStatus
      parameters:
        - description: The name of the network watcher resource group.
          in: path
          name: resourceGroupName
          required: true
          type: string
        - description: The name of the network watcher resource.
          in: path
          name: networkWatcherName
          required: true
          type: string
        - description: Parameters that define a resource to query flow log status.
          in: body
          name: parameters
          required: true
          schema:
            $ref: "#/definitions/FlowLogStatusParameters"
        - $ref: "#/parameters/ApiVersionParameter"
        - $ref: "#/parameters/SubscriptionIdParameter"
      responses:
        "200":
          description: Successful request for query flow log status.
          schema:
            $ref: "#/definitions/FlowLogInformation"
        "202":
          description: Accepted and the operation will complete asynchronously.
          schema:
            $ref: "#/definitions/FlowLogInformation"
      tags:
        - NetworkWatchers
      x-ms-long-running-operation: true
  "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkWatchers/{networkWatcherName}/queryTroubleshootResult":
    post:
      description: Get the last completed troubleshooting result on a specified resource
      operationId: NetworkWatchers_GetTroubleshootingResult
      parameters:
        - description: The name of the resource group.
          in: path
          name: resourceGroupName
          required: true
          type: string
        - description: The name of the network watcher resource.
          in: path
          name: networkWatcherName
          required: true
          type: string
        - description: Parameters that define the resource to query the troubleshooting result.
          in: body
          name: parameters
          required: true
          schema:
            $ref: "#/definitions/QueryTroubleshootingParameters"
        - $ref: "#/parameters/ApiVersionParameter"
        - $ref: "#/parameters/SubscriptionIdParameter"
      responses:
        "200":
          description: Successful get troubleshooting result request
          schema:
            $ref: "#/definitions/TroubleshootingResult"
        "202":
          description: Accepted get troubleshooting result request.
          schema:
            $ref: "#/definitions/TroubleshootingResult"
      tags:
        - NetworkWatchers
      x-ms-long-running-operation: true
  "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkWatchers/{networkWatcherName}/securityGroupView":
    post:
      description: Gets the configured and effective security group rules on the specified VM.
      operationId: NetworkWatchers_GetVMSecurityRules
      parameters:
        - description: The name of the resource group.
          in: path
          name: resourceGroupName
          required: true
          type: string
        - description: The name of the network watcher.
          in: path
          name: networkWatcherName
          required: true
          type: string
        - description: Parameters that define the VM to check security groups for.
          in: body
          name: parameters
          required: true
          schema:
            $ref: "#/definitions/SecurityGroupViewParameters"
        - $ref: "#/parameters/ApiVersionParameter"
        - $ref: "#/parameters/SubscriptionIdParameter"
      responses:
        "200":
          description: Request successful. The operation returns security group rules on the VM.
          schema:
            $ref: "#/definitions/SecurityGroupViewResult"
        "202":
          description: Accepted and the operation will complete asynchronously.
          schema:
            $ref: "#/definitions/SecurityGroupViewResult"
      tags:
        - NetworkWatchers
      x-ms-long-running-operation: true
  "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkWatchers/{networkWatcherName}/topology":
    post:
      description: Gets the current network topology by resource group.
      operationId: NetworkWatchers_GetTopology
      parameters:
        - description: The name of the resource group.
          in: path
          name: resourceGroupName
          required: true
          type: string
        - description: The name of the network watcher.
          in: path
          name: networkWatcherName
          required: true
          type: string
        - description: Parameters that define the representation of topology.
          in: body
          name: parameters
          required: true
          schema:
            $ref: "#/definitions/TopologyParameters"
        - $ref: "#/parameters/ApiVersionParameter"
        - $ref: "#/parameters/SubscriptionIdParameter"
      responses:
        "200":
          description: Request successful. The operation returns the topology of resource group.
          schema:
            $ref: "#/definitions/Topology"
      tags:
        - NetworkWatchers
  "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkWatchers/{networkWatcherName}/troubleshoot":
    post:
      description: Initiate troubleshooting on a specified resource
      operationId: NetworkWatchers_GetTroubleshooting
      parameters:
        - description: The name of the resource group.
          in: path
          name: resourceGroupName
          required: true
          type: string
        - description: The name of the network watcher resource.
          in: path
          name: networkWatcherName
          required: true
          type: string
        - description: Parameters that define the resource to troubleshoot.
          in: body
          name: parameters
          required: true
          schema:
            $ref: "#/definitions/TroubleshootingParameters"
        - $ref: "#/parameters/ApiVersionParameter"
        - $ref: "#/parameters/SubscriptionIdParameter"
      responses:
        "200":
          description: Successful troubleshooting request
          schema:
            $ref: "#/definitions/TroubleshootingResult"
        "202":
          description: Accepted get troubleshooting request.
          schema:
            $ref: "#/definitions/TroubleshootingResult"
      tags:
        - NetworkWatchers
      x-ms-long-running-operation: true
definitions:
  FlowLogInformation:
    description: Information on the configuration of flow log.
    properties:
      properties:
        $ref: "#/definitions/FlowLogProperties"
        x-ms-client-flatten: true
      targetResourceId:
        description: The ID of the resource to configure for flow logging.
        type: string
    required:
      - targetResourceId
      - properties
  FlowLogProperties:
    description: Parameters that define the configuration of flow log.
    properties:
      enabled:
        description: Flag to enable/disable flow logging.
        type: boolean
      retentionPolicy:
        $ref: "#/definitions/RetentionPolicyParameters"
      storageId:
        description: ID of the storage account which is used to store the flow log.
        type: string
    required:
      - storageId
      - enabled
  FlowLogStatusParameters:
    description: Parameters that define a resource to query flow log status.
    properties:
      targetResourceId:
        description: The target resource where getting the flow logging status.
        type: string
    required:
      - targetResourceId
  NetworkInterfaceAssociation:
    description: Network interface and its custom security rules.
    properties:
      id:
        description: Network interface ID.
        readOnly: true
        type: string
      securityRules:
        description: Collection of custom security rules.
        items:
          allOf:
            - properties:
                id:
                  description: Resource ID.
                  type: string
              x-ms-azure-resource: true
          description: Network security rule.
          properties:
            etag:
              description: A unique read-only string that changes whenever the resource is updated.
              type: string
            name:
              description: The name of the resource that is unique within a resource group. This name can be used to access the resource.
              type: string
            properties:
              properties:
                access:
                  description: "The network traffic is allowed or denied. Possible values are: 'Allow' and 'Deny'."
                  enum:
                    - Allow
                    - Deny
                  type: string
                  x-ms-enum:
                    modelAsString: true
                    name: SecurityRuleAccess
                description:
                  description: A description for this rule. Restricted to 140 chars.
                  type: string
                destinationAddressPrefix:
                  description: The destination address prefix. CIDR or source IP range. Asterisk '*' can also be used to match all source IPs. Default tags such as 'VirtualNetwork', 'AzureLoadBalancer' and 'Internet' can also be used.
                  type: string
                destinationPortRange:
                  description: The destination port or range. Integer or range between 0 and 65535. Asterisk '*' can also be used to match all ports.
                  type: string
                direction:
                  description: "The direction of the rule. The direction specifies if rule will be evaluated on incoming or outgoing traffic. Possible values are: 'Inbound' and 'Outbound'."
                  enum:
                    - Inbound
                    - Outbound
                  type: string
                  x-ms-enum:
                    modelAsString: true
                    name: SecurityRuleDirection
                priority:
                  description: The priority of the rule. The value can be between 100 and 4096. The priority number must be unique for each rule in the collection. The lower the priority number, the higher the priority of the rule.
                  format: int32
                  type: integer
                protocol:
                  description: Network protocol this rule applies to. Possible values are 'Tcp', 'Udp', and '*'.
                  enum:
                    - Tcp
                    - Udp
                    - "*"
                  type: string
                  x-ms-enum:
                    modelAsString: true
                    name: SecurityRuleProtocol
                provisioningState:
                  description: "The provisioning state of the public IP resource. Possible values are: 'Updating', 'Deleting', and 'Failed'."
                  type: string
                sourceAddressPrefix:
                  description: "The CIDR or source IP range. Asterisk '*' can also be used to match all source IPs. Default tags such as 'VirtualNetwork', 'AzureLoadBalancer' and 'Internet' can also be used. If this is an ingress rule, specifies where network traffic originates from. "
                  type: string
                sourcePortRange:
                  description: The source port or range. Integer or range between 0 and 65535. Asterisk '*' can also be used to match all ports.
                  type: string
              required:
                - protocol
                - sourceAddressPrefix
                - destinationAddressPrefix
                - access
                - direction
        type: array
  NetworkWatcher:
    allOf:
      - properties:
          id:
            description: Resource ID.
            type: string
          location:
            description: Resource location.
            type: string
          name:
            description: Resource name.
            readOnly: true
            type: string
          tags:
            additionalProperties:
              type: string
            description: Resource tags.
            type: object
          type:
            description: Resource type.
            readOnly: true
            type: string
        x-ms-azure-resource: true
    description: Network watcher in a resource group.
    properties:
      etag:
        description: A unique read-only string that changes whenever the resource is updated.
        type: string
      properties:
        $ref: "#/definitions/NetworkWatcherPropertiesFormat"
        x-ms-client-flatten: true
  NetworkWatcherListResult:
    description: List of network watcher resources.
    properties:
      value:
        items:
          $ref: "#/definitions/NetworkWatcher"
        type: array
  NetworkWatcherPropertiesFormat:
    description: The network watcher properties.
    properties:
      provisioningState:
        description: The provisioning state of the resource.
        enum:
          - Succeeded
          - Updating
          - Deleting
          - Failed
        readOnly: true
        type: string
        x-ms-enum:
          modelAsString: true
          name: ProvisioningState
  NextHopParameters:
    description: Parameters that define the source and destination endpoint.
    properties:
      destinationIPAddress:
        description: The destination IP address.
        type: string
      sourceIPAddress:
        description: The source IP address.
        type: string
      targetNicResourceId:
        description: The NIC ID. (If VM has multiple NICs and IP forwarding is enabled on any of the nics, then this parameter must be specified. Otherwise optional).
        type: string
      targetResourceId:
        description: The resource identifier of the target resource against which the action is to be performed.
        type: string
    required:
      - targetResourceId
      - sourceIPAddress
      - destinationIPAddress
  NextHopResult:
    description: The information about next hop from the specified VM.
    properties:
      nextHopIpAddress:
        description: Next hop IP Address
        type: string
      nextHopType:
        description: Next hop type.
        enum:
          - Internet
          - VirtualAppliance
          - VirtualNetworkGateway
          - VnetLocal
          - HyperNetGateway
          - None
        type: string
        x-ms-enum:
          modelAsString: true
          name: NextHopType
      routeTableId:
        description: The resource identifier for the route table associated with the route being returned. If the route being returned does not correspond to any user created routes then this field will be the string 'System Route'.
        type: string
  PacketCapture:
    description: Parameters that define the create packet capture operation.
    properties:
      properties:
        $ref: "#/definitions/PacketCaptureParameters"
        x-ms-client-flatten: true
    required:
      - properties
  PacketCaptureFilter:
    description: Filter that is applied to packet capture request. Multiple filters can be applied.
    properties:
      localIPAddress:
        description: 'Local IP Address to be filtered on. Notation: "127.0.0.1" for single address entry. "127.0.0.1-127.0.0.255" for range. "127.0.0.1;127.0.0.5"? for multiple entries. Multiple ranges not currently supported. Mixing ranges with multiple entries not currently supported. Default = null.'
        type: string
      localPort:
        description: 'Local port to be filtered on. Notation: "80" for single port entry."80-85" for range. "80;443;" for multiple entries. Multiple ranges not currently supported. Mixing ranges with multiple entries not currently supported. Default = null.'
        type: string
      protocol:
        default: Any
        description: Protocol to be filtered on.
        enum:
          - TCP
          - UDP
          - Any
        type: string
        x-ms-enum:
          modelAsString: true
          name: PcProtocol
      remoteIPAddress:
        description: 'Local IP Address to be filtered on. Notation: "127.0.0.1" for single address entry. "127.0.0.1-127.0.0.255" for range. "127.0.0.1;127.0.0.5;" for multiple entries. Multiple ranges not currently supported. Mixing ranges with multiple entries not currently supported. Default = null.'
        type: string
      remotePort:
        description: 'Remote port to be filtered on. Notation: "80" for single port entry."80-85" for range. "80;443;" for multiple entries. Multiple ranges not currently supported. Mixing ranges with multiple entries not currently supported. Default = null.'
        type: string
  PacketCaptureListResult:
    description: List of packet capture sessions.
    properties:
      value:
        description: Information about packet capture sessions.
        items:
          $ref: "#/definitions/PacketCaptureResult"
        type: array
  PacketCaptureParameters:
    description: Parameters that define the create packet capture operation.
    properties:
      bytesToCapturePerPacket:
        default: 0
        description: Number of bytes captured per packet, the remaining bytes are truncated.
        type: integer
      filters:
        items:
          $ref: "#/definitions/PacketCaptureFilter"
        type: array
      storageLocation:
        $ref: "#/definitions/PacketCaptureStorageLocation"
      target:
        description: The ID of the targeted resource, only VM is currently supported.
        type: string
      timeLimitInSeconds:
        default: 18000
        description: Maximum duration of the capture session in seconds.
        type: integer
      totalBytesPerSession:
        default: 1073741824
        description: Maximum size of the capture output.
        type: integer
    required:
      - target
      - storageLocation
  PacketCaptureQueryStatusResult:
    description: Status of packet capture session.
    properties:
      captureStartTime:
        description: The start time of the packet capture session.
        format: date-time
        type: string
      id:
        description: The ID of the packet capture resource.
        type: string
      name:
        description: The name of the packet capture resource.
        type: string
      packetCaptureError:
        description: List of errors of packet capture session.
        items:
          enum:
            - InternalError
            - AgentStopped
            - CaptureFailed
            - LocalFileFailed
            - StorageFailed
          type: string
          x-ms-enum:
            modelAsString: true
            name: PcError
        type: array
      packetCaptureStatus:
        description: The status of the packet capture session.
        enum:
          - NotStarted
          - Running
          - Stopped
          - Error
          - Unknown
        type: string
        x-ms-enum:
          modelAsString: true
          name: PcStatus
      stopReason:
        description: The reason the current packet capture session was stopped.
        type: string
  PacketCaptureResult:
    description: Information about packet capture session.
    properties:
      etag:
        default: A unique read-only string that changes whenever the resource is updated.
        type: string
      id:
        description: ID of the packet capture operation.
        readOnly: true
        type: string
      name:
        description: Name of the packet capture session.
        readOnly: true
        type: string
      properties:
        $ref: "#/definitions/PacketCaptureResultProperties"
        x-ms-client-flatten: true
  PacketCaptureResultProperties:
    allOf:
      - $ref: "#/definitions/PacketCaptureParameters"
    description: Describes the properties of a packet capture session.
    properties:
      provisioningState:
        description: The provisioning state of the packet capture session.
        enum:
          - Succeeded
          - Updating
          - Deleting
          - Failed
        type: string
        x-ms-enum:
          modelAsString: true
          name: ProvisioningState
  PacketCaptureStorageLocation:
    description: Describes the storage location for a packet capture session.
    properties:
      filePath:
        description: A valid local path on the targeting VM. Must include the name of the capture file (*.cap). For linux virtual machine it must start with /var/captures. Required if no storage ID is provided, otherwise optional.
        type: string
      storageId:
        description: The ID of the storage account to save the packet capture session. Required if no local file path is provided.
        type: string
      storagePath:
        description: The URI of the storage path to save the packet capture. Must be a well-formed URI describing the location to save the packet capture.
        type: string
  QueryTroubleshootingParameters:
    description: Parameters that define the resource to query the troubleshooting result.
    properties:
      targetResourceId:
        description: The target resource ID to query the troubleshooting result.
        type: string
    required:
      - targetResourceId
  RetentionPolicyParameters:
    description: Parameters that define the retention policy for flow log.
    properties:
      days:
        default: 0
        description: Number of days to retain flow log records.
        type: integer
      enabled:
        default: false
        description: Flag to enable/disable retention.
        type: boolean
  SecurityGroupNetworkInterface:
    description: Network interface and all its associated security rules.
    properties:
      id:
        description: ID of the network interface.
        type: string
      securityRuleAssociations:
        $ref: "#/definitions/SecurityRuleAssociations"
  SecurityGroupViewParameters:
    description: Parameters that define the VM to check security groups for.
    properties:
      targetResourceId:
        description: ID of the target VM.
        type: string
    required:
      - targetResourceId
  SecurityGroupViewResult:
    description: The information about security rules applied to the specified VM.
    properties:
      networkInterfaces:
        description: List of network interfaces on the specified VM.
        items:
          $ref: "#/definitions/SecurityGroupNetworkInterface"
        type: array
  SecurityRuleAssociations:
    description: All security rules associated with the network interface.
    properties:
      defaultSecurityRules:
        description: Collection of default security rules of the network security group.
        items:
          allOf:
            - properties:
                id:
                  description: Resource ID.
                  type: string
              x-ms-azure-resource: true
          description: Network security rule.
          properties:
            etag:
              description: A unique read-only string that changes whenever the resource is updated.
              type: string
            name:
              description: The name of the resource that is unique within a resource group. This name can be used to access the resource.
              type: string
            properties:
              properties:
                access:
                  description: "The network traffic is allowed or denied. Possible values are: 'Allow' and 'Deny'."
                  enum:
                    - Allow
                    - Deny
                  type: string
                  x-ms-enum:
                    modelAsString: true
                    name: SecurityRuleAccess
                description:
                  description: A description for this rule. Restricted to 140 chars.
                  type: string
                destinationAddressPrefix:
                  description: The destination address prefix. CIDR or source IP range. Asterisk '*' can also be used to match all source IPs. Default tags such as 'VirtualNetwork', 'AzureLoadBalancer' and 'Internet' can also be used.
                  type: string
                destinationPortRange:
                  description: The destination port or range. Integer or range between 0 and 65535. Asterisk '*' can also be used to match all ports.
                  type: string
                direction:
                  description: "The direction of the rule. The direction specifies if rule will be evaluated on incoming or outgoing traffic. Possible values are: 'Inbound' and 'Outbound'."
                  enum:
                    - Inbound
                    - Outbound
                  type: string
                  x-ms-enum:
                    modelAsString: true
                    name: SecurityRuleDirection
                priority:
                  description: The priority of the rule. The value can be between 100 and 4096. The priority number must be unique for each rule in the collection. The lower the priority number, the higher the priority of the rule.
                  format: int32
                  type: integer
                protocol:
                  description: Network protocol this rule applies to. Possible values are 'Tcp', 'Udp', and '*'.
                  enum:
                    - Tcp
                    - Udp
                    - "*"
                  type: string
                  x-ms-enum:
                    modelAsString: true
                    name: SecurityRuleProtocol
                provisioningState:
                  description: "The provisioning state of the public IP resource. Possible values are: 'Updating', 'Deleting', and 'Failed'."
                  type: string
                sourceAddressPrefix:
                  description: "The CIDR or source IP range. Asterisk '*' can also be used to match all source IPs. Default tags such as 'VirtualNetwork', 'AzureLoadBalancer' and 'Internet' can also be used. If this is an ingress rule, specifies where network traffic originates from. "
                  type: string
                sourcePortRange:
                  description: The source port or range. Integer or range between 0 and 65535. Asterisk '*' can also be used to match all ports.
                  type: string
              required:
                - protocol
                - sourceAddressPrefix
                - destinationAddressPrefix
                - access
                - direction
        type: array
      effectiveSecurityRules:
        description: Collection of effective security rules.
        items:
          description: Effective network security rules.
          properties:
            access:
              description: "Whether network traffic is allowed or denied. Possible values are: 'Allow' and 'Deny'."
              enum:
                - Allow
                - Deny
              type: string
              x-ms-enum:
                modelAsString: true
                name: SecurityRuleAccess
            destinationAddressPrefix:
              description: The destination address prefix.
              type: string
            destinationPortRange:
              description: The destination port or range.
              type: string
            direction:
              description: "The direction of the rule. Possible values are: 'Inbound and Outbound'."
              enum:
                - Inbound
                - Outbound
              type: string
              x-ms-enum:
                modelAsString: true
                name: SecurityRuleDirection
            expandedDestinationAddressPrefix:
              description: Expanded destination address prefix.
              items:
                type: string
              type: array
            expandedSourceAddressPrefix:
              description: The expanded source address prefix.
              items:
                type: string
              type: array
            name:
              description: The name of the security rule specified by the user (if created by the user).
              type: string
            priority:
              description: The priority of the rule.
              format: int32
              type: integer
            protocol:
              description: "The network protocol this rule applies to. Possible values are: 'Tcp', 'Udp', and '*'."
              enum:
                - Tcp
                - Udp
                - "*"
              type: string
              x-ms-enum:
                modelAsString: true
                name: SecurityRuleProtocol
            sourceAddressPrefix:
              description: The source address prefix.
              type: string
            sourcePortRange:
              description: The source port or range.
              type: string
        type: array
      networkInterfaceAssociation:
        $ref: "#/definitions/NetworkInterfaceAssociation"
      subnetAssociation:
        $ref: "#/definitions/SubnetAssociation"
  SubnetAssociation:
    description: Network interface and its custom security rules.
    properties:
      id:
        description: Subnet ID.
        readOnly: true
        type: string
      securityRules:
        description: Collection of custom security rules.
        items:
          allOf:
            - properties:
                id:
                  description: Resource ID.
                  type: string
              x-ms-azure-resource: true
          description: Network security rule.
          properties:
            etag:
              description: A unique read-only string that changes whenever the resource is updated.
              type: string
            name:
              description: The name of the resource that is unique within a resource group. This name can be used to access the resource.
              type: string
            properties:
              properties:
                access:
                  description: "The network traffic is allowed or denied. Possible values are: 'Allow' and 'Deny'."
                  enum:
                    - Allow
                    - Deny
                  type: string
                  x-ms-enum:
                    modelAsString: true
                    name: SecurityRuleAccess
                description:
                  description: A description for this rule. Restricted to 140 chars.
                  type: string
                destinationAddressPrefix:
                  description: The destination address prefix. CIDR or source IP range. Asterisk '*' can also be used to match all source IPs. Default tags such as 'VirtualNetwork', 'AzureLoadBalancer' and 'Internet' can also be used.
                  type: string
                destinationPortRange:
                  description: The destination port or range. Integer or range between 0 and 65535. Asterisk '*' can also be used to match all ports.
                  type: string
                direction:
                  description: "The direction of the rule. The direction specifies if rule will be evaluated on incoming or outgoing traffic. Possible values are: 'Inbound' and 'Outbound'."
                  enum:
                    - Inbound
                    - Outbound
                  type: string
                  x-ms-enum:
                    modelAsString: true
                    name: SecurityRuleDirection
                priority:
                  description: The priority of the rule. The value can be between 100 and 4096. The priority number must be unique for each rule in the collection. The lower the priority number, the higher the priority of the rule.
                  format: int32
                  type: integer
                protocol:
                  description: Network protocol this rule applies to. Possible values are 'Tcp', 'Udp', and '*'.
                  enum:
                    - Tcp
                    - Udp
                    - "*"
                  type: string
                  x-ms-enum:
                    modelAsString: true
                    name: SecurityRuleProtocol
                provisioningState:
                  description: "The provisioning state of the public IP resource. Possible values are: 'Updating', 'Deleting', and 'Failed'."
                  type: string
                sourceAddressPrefix:
                  description: "The CIDR or source IP range. Asterisk '*' can also be used to match all source IPs. Default tags such as 'VirtualNetwork', 'AzureLoadBalancer' and 'Internet' can also be used. If this is an ingress rule, specifies where network traffic originates from. "
                  type: string
                sourcePortRange:
                  description: The source port or range. Integer or range between 0 and 65535. Asterisk '*' can also be used to match all ports.
                  type: string
              required:
                - protocol
                - sourceAddressPrefix
                - destinationAddressPrefix
                - access
                - direction
        type: array
  Topology:
    description: Topology of the specified resource group.
    properties:
      createdDateTime:
        description: The datetime when the topology was initially created for the resource group.
        format: date-time
        readOnly: true
        type: string
      id:
        description: GUID representing the operation id.
        readOnly: true
        type: string
      lastModified:
        description: The datetime when the topology was last modified.
        format: date-time
        readOnly: true
        type: string
      resources:
        items:
          $ref: "#/definitions/TopologyResource"
        type: array
  TopologyAssociation:
    description: Resources that have an association with the parent resource.
    properties:
      associationType:
        description: The association type of the child resource to the parent resource.
        enum:
          - Associated
          - Contains
        type: string
        x-ms-enum:
          modelAsString: true
          name: AssociationType
      name:
        description: The name of the resource that is associated with the parent resource.
        type: string
      resourceId:
        description: The ID of the resource that is associated with the parent resource.
        type: string
  TopologyParameters:
    description: Parameters that define the representation of topology.
    properties:
      targetResourceGroupName:
        description: The name of the target resource group to perform topology on.
        type: string
    required:
      - targetResourceGroupName
  TopologyResource:
    description: The network resource topology information for the given resource group.
    properties:
      associations:
        description: Holds the associations the resource has with other resources in the resource group.
        items:
          $ref: "#/definitions/TopologyAssociation"
        type: array
      id:
        description: ID of the resource.
        type: string
      location:
        description: Resource location.
        type: string
      name:
        description: Name of the resource.
        type: string
  TroubleshootingDetails:
    description: Information gained from troubleshooting of specified resource.
    properties:
      detail:
        description: Details on troubleshooting results.
        type: string
      id:
        description: The id of the get troubleshoot operation.
        type: string
      reasonType:
        description: Reason type of failure.
        type: string
      recommendedActions:
        description: List of recommended actions.
        items:
          $ref: "#/definitions/TroubleshootingRecommendedActions"
        type: array
      summary:
        description: A summary of troubleshooting.
        type: string
  TroubleshootingParameters:
    description: Parameters that define the resource to troubleshoot.
    properties:
      properties:
        $ref: "#/definitions/TroubleshootingProperties"
        x-ms-client-flatten: true
      targetResourceId:
        description: The target resource to troubleshoot.
        type: string
    required:
      - targetResourceId
      - properties
  TroubleshootingProperties:
    description: Storage location provided for troubleshoot.
    properties:
      storageId:
        description: The ID for the storage account to save the troubleshoot result.
        type: string
      storagePath:
        description: The path to the blob to save the troubleshoot result in.
        type: string
    required:
      - storageId
      - storagePath
  TroubleshootingRecommendedActions:
    description: Recommended actions based on discovered issues.
    properties:
      actionId:
        description: ID of the recommended action.
        type: string
      actionText:
        description: Description of recommended actions.
        type: string
      actionUri:
        description: The uri linking to a documentation for the recommended troubleshooting actions.
        type: string
      actionUriText:
        description: The information from the URI for the recommended troubleshooting actions.
        type: string
  TroubleshootingResult:
    description: Troubleshooting information gained from specified resource.
    properties:
      code:
        description: The result code of the troubleshooting.
        type: string
      endTime:
        description: The end time of the troubleshooting.
        format: date-time
        type: string
      results:
        description: Information from troubleshooting.
        items:
          $ref: "#/definitions/TroubleshootingDetails"
        type: array
      startTime:
        description: The start time of the troubleshooting.
        format: date-time
        type: string
  VerificationIPFlowParameters:
    description: Parameters that define the IP flow to be verified.
    properties:
      direction:
        description: The direction of the packet represented as a 5-tuple.
        enum:
          - Inbound
          - Outbound
        type: string
        x-ms-enum:
          modelAsString: true
          name: Direction
      localIPAddress:
        description: The local IP address. Acceptable values are valid IPv4 addresses.
        type: string
      localPort:
        description: The local port. Acceptable values are a single integer in the range (0-65535). Support for * for the source port, which depends on the direction.
        type: string
      protocol:
        description: Protocol to be verified on.
        enum:
          - TCP
          - UDP
        type: string
        x-ms-enum:
          modelAsString: true
          name: Protocol
      remoteIPAddress:
        description: The remote IP address. Acceptable values are valid IPv4 addresses.
        type: string
      remotePort:
        description: The remote port. Acceptable values are a single integer in the range (0-65535). Support for * for the source port, which depends on the direction.
        type: string
      targetNicResourceId:
        description: The NIC ID. (If VM has multiple NICs and IP forwarding is enabled on any of them, then this parameter must be specified. Otherwise optional).
        type: string
      targetResourceId:
        description: The ID of the target resource to perform next-hop on.
        type: string
    required:
      - targetResourceId
      - direction
      - protocol
      - localPort
      - remotePort
      - localIPAddress
      - remoteIPAddress
  VerificationIPFlowResult:
    description: Results of IP flow verification on the target resource.
    properties:
      access:
        description: Indicates whether the traffic is allowed or denied.
        enum:
          - Allow
          - Deny
        type: string
        x-ms-enum:
          modelAsString: true
          name: Access
      ruleName:
        description: Name of the rule. If input is not matched against any security rule, it is not displayed.
        type: string
