{
  "openapi": "3.0.0",
  "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": "2019-07-01",
    "x-jentic-source-url": "https://raw.githubusercontent.com/Azure/azure-rest-api-specs/master/specification/network/resource-manager/Microsoft.Network/stable/2019-07-01/expressRouteGateway.json"
  },
  "servers": [
    {
      "url": "https://management.azure.com/"
    }
  ],
  "paths": {
    "/subscriptions/{subscriptionId}/providers/Microsoft.Network/expressRouteGateways": {
      "get": {
        "parameters": [
          {
            "$ref": "./network.json#/components/parameters/ApiVersionParameter"
          },
          {
            "$ref": "./network.json#/components/parameters/SubscriptionIdParameter"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExpressRouteGatewayList"
                }
              }
            },
            "description": "Request successful."
          }
        },
        "tags": [
          "ExpressRouteGateways"
        ],
        "description": "Lists ExpressRoute gateways under a given subscription.",
        "operationId": "ExpressRouteGateways_ListBySubscription",
        "x-ms-examples": {
          "ExpressRouteGatewayListBySubscription": {
            "$ref": "./examples/ExpressRouteGatewayListBySubscription.json"
          }
        }
      }
    },
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRouteGateways": {
      "get": {
        "parameters": [
          {
            "description": "The name of the resource group.",
            "in": "path",
            "name": "resourceGroupName",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "./network.json#/components/parameters/ApiVersionParameter"
          },
          {
            "$ref": "./network.json#/components/parameters/SubscriptionIdParameter"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExpressRouteGatewayList"
                }
              }
            },
            "description": "Operation successful."
          }
        },
        "tags": [
          "ExpressRouteGateways"
        ],
        "description": "Lists ExpressRoute gateways in a given resource group.",
        "operationId": "ExpressRouteGateways_ListByResourceGroup",
        "x-ms-examples": {
          "ExpressRouteGatewayListByResourceGroup": {
            "$ref": "./examples/ExpressRouteGatewayListByResourceGroup.json"
          }
        }
      }
    },
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRouteGateways/{expressRouteGatewayName}": {
      "delete": {
        "parameters": [
          {
            "description": "The name of the resource group.",
            "in": "path",
            "name": "resourceGroupName",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The name of the ExpressRoute gateway.",
            "in": "path",
            "name": "expressRouteGatewayName",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "./network.json#/components/parameters/ApiVersionParameter"
          },
          {
            "$ref": "./network.json#/components/parameters/SubscriptionIdParameter"
          }
        ],
        "responses": {
          "200": {
            "description": "Delete successful."
          },
          "202": {
            "description": "Accepted and the operation will complete asynchronously."
          },
          "204": {
            "description": "Delete successful."
          }
        },
        "tags": [
          "ExpressRouteGateways"
        ],
        "description": "Deletes the specified ExpressRoute gateway in a resource group. An ExpressRoute gateway resource can only be deleted when there are no connection subresources.",
        "operationId": "ExpressRouteGateways_Delete",
        "x-ms-examples": {
          "ExpressRouteGatewayDelete": {
            "$ref": "./examples/ExpressRouteGatewayDelete.json"
          }
        },
        "x-ms-long-running-operation": true,
        "x-ms-long-running-operation-options": {
          "final-state-via": "location"
        }
      },
      "get": {
        "parameters": [
          {
            "description": "The name of the resource group.",
            "in": "path",
            "name": "resourceGroupName",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The name of the ExpressRoute gateway.",
            "in": "path",
            "name": "expressRouteGatewayName",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "./network.json#/components/parameters/ApiVersionParameter"
          },
          {
            "$ref": "./network.json#/components/parameters/SubscriptionIdParameter"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExpressRouteGateway"
                }
              }
            },
            "description": "Operation succeeded. The operation returns the ExpressRoute gateway."
          }
        },
        "tags": [
          "ExpressRouteGateways"
        ],
        "description": "Fetches the details of a ExpressRoute gateway in a resource group.",
        "operationId": "ExpressRouteGateways_Get",
        "x-ms-examples": {
          "ExpressRouteGatewayGet": {
            "$ref": "./examples/ExpressRouteGatewayGet.json"
          }
        }
      },
      "put": {
        "parameters": [
          {
            "description": "The name of the resource group.",
            "in": "path",
            "name": "resourceGroupName",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The name of the ExpressRoute gateway.",
            "in": "path",
            "name": "expressRouteGatewayName",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "./network.json#/components/parameters/ApiVersionParameter"
          },
          {
            "$ref": "./network.json#/components/parameters/SubscriptionIdParameter"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExpressRouteGateway"
                }
              }
            },
            "description": "Update successful. The operation returns the resulting ExpressRoute gateway resource."
          },
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExpressRouteGateway"
                }
              }
            },
            "description": "Create successful. The operation returns the resulting ExpressRoute gateway resource."
          }
        },
        "tags": [
          "ExpressRouteGateways"
        ],
        "description": "Creates or updates a ExpressRoute gateway in a specified resource group.",
        "operationId": "ExpressRouteGateways_CreateOrUpdate",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ExpressRouteGateway"
              }
            }
          },
          "description": "Parameters required in an ExpressRoute gateway PUT operation.",
          "required": true
        },
        "x-ms-examples": {
          "ExpressRouteGatewayCreate": {
            "$ref": "./examples/ExpressRouteGatewayCreate.json"
          }
        },
        "x-ms-long-running-operation": true,
        "x-ms-long-running-operation-options": {
          "final-state-via": "azure-async-operation"
        }
      }
    },
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRouteGateways/{expressRouteGatewayName}/expressRouteConnections": {
      "get": {
        "parameters": [
          {
            "description": "The name of the resource group.",
            "in": "path",
            "name": "resourceGroupName",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The name of the ExpressRoute gateway.",
            "in": "path",
            "name": "expressRouteGatewayName",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "./network.json#/components/parameters/ApiVersionParameter"
          },
          {
            "$ref": "./network.json#/components/parameters/SubscriptionIdParameter"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExpressRouteConnectionList"
                }
              }
            },
            "description": "Request successful."
          }
        },
        "tags": [
          "ExpressRouteConnections"
        ],
        "description": "Lists ExpressRouteConnections.",
        "operationId": "ExpressRouteConnections_List",
        "x-ms-examples": {
          "ExpressRouteConnectionList": {
            "$ref": "./examples/ExpressRouteConnectionList.json"
          }
        }
      }
    },
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRouteGateways/{expressRouteGatewayName}/expressRouteConnections/{connectionName}": {
      "delete": {
        "parameters": [
          {
            "description": "The name of the resource group.",
            "in": "path",
            "name": "resourceGroupName",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The name of the ExpressRoute gateway.",
            "in": "path",
            "name": "expressRouteGatewayName",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The name of the connection subresource.",
            "in": "path",
            "name": "connectionName",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "./network.json#/components/parameters/ApiVersionParameter"
          },
          {
            "$ref": "./network.json#/components/parameters/SubscriptionIdParameter"
          }
        ],
        "responses": {
          "200": {
            "description": "Delete successful."
          },
          "202": {
            "description": "Accepted, and the operation will continue asynchronously."
          },
          "204": {
            "description": "Delete successful."
          }
        },
        "tags": [
          "ExpressRouteConnections"
        ],
        "description": "Deletes a connection to a ExpressRoute circuit.",
        "operationId": "ExpressRouteConnections_Delete",
        "x-ms-examples": {
          "ExpressRouteConnectionDelete": {
            "$ref": "./examples/ExpressRouteConnectionDelete.json"
          }
        },
        "x-ms-long-running-operation": true,
        "x-ms-long-running-operation-options": {
          "final-state-via": "location"
        }
      },
      "get": {
        "parameters": [
          {
            "description": "The name of the resource group.",
            "in": "path",
            "name": "resourceGroupName",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The name of the ExpressRoute gateway.",
            "in": "path",
            "name": "expressRouteGatewayName",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The name of the ExpressRoute connection.",
            "in": "path",
            "name": "connectionName",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "./network.json#/components/parameters/ApiVersionParameter"
          },
          {
            "$ref": "./network.json#/components/parameters/SubscriptionIdParameter"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExpressRouteConnection"
                }
              }
            },
            "description": "Request successful. The operation returns the ExpressRouteConnection."
          }
        },
        "tags": [
          "ExpressRouteConnections"
        ],
        "description": "Gets the specified ExpressRouteConnection.",
        "operationId": "ExpressRouteConnections_Get",
        "x-ms-examples": {
          "ExpressRouteConnectionGet": {
            "$ref": "./examples/ExpressRouteConnectionGet.json"
          }
        }
      },
      "put": {
        "parameters": [
          {
            "description": "The name of the resource group.",
            "in": "path",
            "name": "resourceGroupName",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The name of the ExpressRoute gateway.",
            "in": "path",
            "name": "expressRouteGatewayName",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The name of the connection subresource.",
            "in": "path",
            "name": "connectionName",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "./network.json#/components/parameters/ApiVersionParameter"
          },
          {
            "$ref": "./network.json#/components/parameters/SubscriptionIdParameter"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExpressRouteConnection"
                }
              }
            },
            "description": "Update successful. The operation returns the ExpressRouteConnection."
          },
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExpressRouteConnection"
                }
              }
            },
            "description": "Create successful. The operation returns the ExpressRouteConnection."
          }
        },
        "tags": [
          "ExpressRouteConnections"
        ],
        "description": "Creates a connection between an ExpressRoute gateway and an ExpressRoute circuit.",
        "operationId": "ExpressRouteConnections_CreateOrUpdate",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ExpressRouteConnection"
              }
            }
          },
          "description": "Parameters required in an ExpressRouteConnection PUT operation.",
          "required": true
        },
        "x-ms-examples": {
          "ExpressRouteConnectionCreate": {
            "$ref": "./examples/ExpressRouteConnectionCreate.json"
          }
        },
        "x-ms-long-running-operation": true,
        "x-ms-long-running-operation-options": {
          "final-state-via": "azure-async-operation"
        }
      }
    }
  },
  "components": {
    "schemas": {
      "ExpressRouteCircuitPeeringId": {
        "description": "ExpressRoute circuit peering identifier.",
        "properties": {
          "id": {
            "description": "The ID of the ExpressRoute circuit peering.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "ExpressRouteConnection": {
        "allOf": [
          {
            "$ref": "./network.json#/definitions/SubResource"
          }
        ],
        "description": "ExpressRouteConnection resource.",
        "properties": {
          "name": {
            "description": "The name of the resource.",
            "type": "string"
          },
          "properties": {
            "$ref": "#/components/schemas/ExpressRouteConnectionProperties",
            "description": "Properties of the express route connection.",
            "x-ms-client-flatten": true
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "ExpressRouteConnectionId": {
        "description": "The ID of the ExpressRouteConnection.",
        "properties": {
          "id": {
            "description": "The ID of the ExpressRouteConnection.",
            "readOnly": true,
            "type": "string"
          }
        },
        "type": "object"
      },
      "ExpressRouteConnectionList": {
        "description": "ExpressRouteConnection list.",
        "properties": {
          "value": {
            "description": "The list of ExpressRoute connections.",
            "items": {
              "$ref": "#/components/schemas/ExpressRouteConnection"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "ExpressRouteConnectionProperties": {
        "description": "Properties of the ExpressRouteConnection subresource.",
        "properties": {
          "authorizationKey": {
            "description": "Authorization key to establish the connection.",
            "type": "string"
          },
          "expressRouteCircuitPeering": {
            "$ref": "#/components/schemas/ExpressRouteCircuitPeeringId",
            "description": "The ExpressRoute circuit peering."
          },
          "provisioningState": {
            "$ref": "./network.json#/definitions/ProvisioningState",
            "description": "The provisioning state of the express route connection resource."
          },
          "routingWeight": {
            "description": "The routing weight associated to the connection.",
            "type": "integer"
          }
        },
        "required": [
          "expressRouteCircuitPeering"
        ],
        "type": "object"
      },
      "ExpressRouteGateway": {
        "allOf": [
          {
            "$ref": "./network.json#/definitions/Resource"
          }
        ],
        "description": "ExpressRoute gateway resource.",
        "properties": {
          "etag": {
            "description": "A unique read-only string that changes whenever the resource is updated.",
            "readOnly": true,
            "type": "string"
          },
          "properties": {
            "$ref": "#/components/schemas/ExpressRouteGatewayProperties",
            "description": "Properties of the express route gateway.",
            "x-ms-client-flatten": true
          }
        },
        "type": "object"
      },
      "ExpressRouteGatewayList": {
        "description": "List of ExpressRoute gateways.",
        "properties": {
          "value": {
            "description": "List of ExpressRoute gateways.",
            "items": {
              "$ref": "#/components/schemas/ExpressRouteGateway"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "ExpressRouteGatewayProperties": {
        "description": "ExpressRoute gateway resource properties.",
        "properties": {
          "autoScaleConfiguration": {
            "description": "Configuration for auto scaling.",
            "properties": {
              "bounds": {
                "description": "Minimum and maximum number of scale units to deploy.",
                "properties": {
                  "max": {
                    "description": "Maximum number of scale units deployed for ExpressRoute gateway.",
                    "type": "integer"
                  },
                  "min": {
                    "description": "Minimum number of scale units deployed for ExpressRoute gateway.",
                    "type": "integer"
                  }
                },
                "type": "object"
              }
            },
            "type": "object"
          },
          "expressRouteConnections": {
            "description": "List of ExpressRoute connections to the ExpressRoute gateway.",
            "items": {
              "$ref": "#/components/schemas/ExpressRouteConnection"
            },
            "readOnly": true,
            "type": "array"
          },
          "provisioningState": {
            "$ref": "./network.json#/definitions/ProvisioningState",
            "description": "The provisioning state of the express route gateway resource."
          },
          "virtualHub": {
            "$ref": "#/components/schemas/VirtualHubId",
            "description": "The Virtual Hub where the ExpressRoute gateway is or will be deployed."
          }
        },
        "required": [
          "virtualHub"
        ],
        "type": "object"
      },
      "VirtualHubId": {
        "description": "Virtual Hub identifier.",
        "properties": {
          "id": {
            "description": "The resource URI for the Virtual Hub where the ExpressRoute gateway is or will be deployed. The Virtual Hub resource and the ExpressRoute gateway resource reside in the same subscription.",
            "type": "string"
          }
        },
        "type": "object"
      }
    },
    "securitySchemes": {
      "azure_auth": {
        "description": "Azure Active Directory OAuth2 Flow.",
        "flows": {
          "implicit": {
            "authorizationUrl": "https://login.microsoftonline.com/common/oauth2/authorize",
            "scopes": {
              "user_impersonation": "impersonate your user account"
            }
          }
        },
        "type": "oauth2"
      }
    }
  },
  "security": [
    {
      "azure_auth": [
        "user_impersonation"
      ]
    }
  ]
}