{
  "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"
        }
      }
    }
  }
}