6.15.2 GET schema

 {
   "$schema": "http://json-schema.org/draft-04/schema#",
   "title": "GET JSON Schema for VirtualGateways",
   "definitions": {
     "GUID": {
       "type": "string",
       "pattern": "^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$"
     },
     "resourceMetadata": {
       "properties": {
         "client": {
           "type": "string"
         },
         "tenantId": {
           "type": "string"
         },
         "groupId": {
           "type": "string"
         },
         "resourceName": {
           "type": "string"
         },
         "originalHref": {
           "type": "string"
         }
       }
     },
     "provisioningState": {
       "enum": [ "Succeeded", "Updating", "Deleting", "Failed" ]
     }
   },
   "type": "object",
   "properties": {
     "resourceRef": {
       "type": "string"
     },
     "resourceId": {
       "type": "string"
     },
     "etag": {
       "type": "string"
     },
     "instanceId": {
       "$ref": "#/definitions/GUID"
     },
     "properties": {
       "type": "object",
       "properties": {
         "provisioningState": {
           "$ref": "#/definitions/provisioningState"
         },
         "networkConnections": {
           "type": "array",
           "items": {
             "type": "object",
             "properties": {
               "resourceRef": {
                 "type": "string"
               },
               "resourceId": {
                 "type": "string"
               },
               "etag": {
                 "type": "string"
               },
               "instanceId": {
                 "$ref": "#/definitions/GUID"
               },
               "properties": {
                 "type": "object",
                 "properties": {
                   "provisioningState": {
                     "$ref": "#/definitions/provisioningState"
                   },
                   "connectionType": {
                     "enum": [ "IPSec", "GRE", "L3" ]
                   },
                   "outboundKiloBitsPerSecond": {
                     "type": "integer"
                   },
                   "inboundKiloBitsPerSecond": {
                     "type": "integer"
                   },
                   "ipSecConfiguration": {
                     "type": "object",
                     "properties": {
                       "authenticationMethod": {
                         "enum": [ "Certificates", "PSK" ]
                       },
                       "quickMode": {
                         "type": "object",
                         "properties": {
                           "perfectForwardSecrecy": {
                             "enum": [ "None", "PFS1", "PFS2", "PFS2048", "ECP256", "ECP384", "PFSMM", "PFS24" ]
                           },
                           "cipherTransformationConstant": {
                             "enum": [ "DES", "DES3", "AES128", "AES192", "AES256", "GCMAES128", "GCMAES192", "GCMAES256" ]
                           },
                           "authenticationTransformationConstant": {
                             "enum": [ "MD596", "SHA196", "SHA256128", "GCMAES128", "GCMAES192", "GCMAES256", "None" ]
                           },
                           "idleDisconnectSeconds": {
                             "type": "integer"
                           },
                           "saLifeTimeSeconds": {
                             "type": "integer"
                           },
                           "saLifeTimeKiloBytes": {
                             "type": "integer"
                           }
                         },
                         "required": [
                           "perfectForwardSecrecy",
                           "cipherTransformationConstant",
                           "authenticationTransformationConstant",
                           "idleDisconnectSeconds",
                           "saLifeTimeSeconds",
                           "saLifeTimeKiloBytes"
                         ]
                       },
                       "mainMode": {
                         "type": "object",
                         "properties": {
                           "diffieHellmanGroup": {
                             "enum": [ "Group1", "Group2", "Group14", "ECP258", "ECP384" ]
                           },
                           "encryptionAlgorithm": {
                             "enum": [ "DES", "DES3", "AES128", "AES192", "AES256" ]
                           },
                           "integrityAlgorithm": {
                             "enum": [ "MD5", "SHA1", "SHA256", "SHA384" ]
                           },
                           "saLifeTimeSeconds": {
                             "type": "integer"
                           },
                           "saLifeTimeKiloBytes": {
                             "type": "integer"
                           }
                         },
                         "required": [
                           "diffieHellmanGroup",
                           "encryptionAlgorithm",
                           "integrityAlgorithm",
                           "saLifeTimeSeconds",
                           "saLifeTimeKiloBytes"
                         ]
                       },
                       "localVpnTrafficSelector": {
                         "type": "array",
                         "items": 
                           {
                             "type": "string"
                           }
                       },
                       "remoteVpnTrafficSelector": {
                         "type": "array",
                         "items": 
                           {
                             "type": "string"
                           }
                       }
                     }
                   },
                   "greConfiguration": {
                     "type": "object",
                     "properties": {
                       "greKey": {
                         "type": "string"
                       }
                     }
                   },
                   "l3Configuration": {
                     "type": "object",
                     "properties": {
                       "vlanSubnet": {
                         "type": "object",
                         "properties": {
                           "resourceRef": {
                             "type": "string"
                           }
                         }
                       }
                     }
                   },
                   "ipAddresses": {
                     "type": "array",
                     "items": {
                       "type": "object",
                       "properties": {
                         "ipAddress": {
                           "type": "string"
                         },
                         "prefixLength": {
                           "type": "integer"
                         }
                       },
                       "required": [
                         "ipAddress",
                         "prefixLength"
                       ]
                     }
                   },
                   "peerIPAddresses": {
                     "type": "array",
                     "items": {
                       "type": "string"
                     }
                   },
                   "routes": {
                     "type": "array",
                     "items": {
                       "type": "object",
                       "properties": {
                         "destinationPrefix": {
                           "type": "string"
                         },
                         "nextHop": {
                           "type": "string"
                         },
                         "metric": {
                           "type": "integer"
                         },
                         "protocol": {
                           "type": "string"
                         }
                       },
                       "required": [
                         "destinationPrefix",
                         "nextHop",
                         "metric",
                         "protocol"
                       ]
                     }
                   },
                   "connectionStatus": {
                     "type": "string"
                   },
                   "connectionState": {
                     "type": "string"
                   },
                   "connectionUpTime": {
                     "type": "string"
                   },
                   "connectionErrorReason": {
                     "type": "string"
                   },
                   "unreachabilityReason": {
                     "type": "string"
                   },
                   "statistics": {
                     "type": "object",
                     "properties": {
                       "outboundBytes": {
                         "type": "integer"
                       },
                       "inboundBytes": {
                         "type": "integer"
                       },
                       "rxTotalPacketsDropped": {
                         "type": "integer"
                       },
                       "txTotalPacketsDropped": {
                         "type": "integer"
                       },
                       "txRateKbps": {
                         "type": "integer"
                       },
                       "rxRateKbps": {
                         "type": "integer"
                       },
                       "txRateLimitedPacketsDropped": {
                         "type": "integer"
                       },
                       "rxRateLimitedPacketsDropped": {
                         "type": "integer"
                       },
                       "lastUpdated": {
                         "type": "string"
                       }
                     },
                     "required": [
                       "outboundBytes",
                       "inboundBytes",
                       "rxTotalPacketsDropped",
                       "txTotalPacketsDropped",
                       "txRateKbps",
                       "rxRateKbps",
                       "txRateLimitedPacketsDropped",
                       "rxRateLimitedPacketsDropped",
                       "lastUpdated"
                     ]
                   },
                   "configurationState": {
                     "type": "object",
                     "properties": {
                       "status": {
                         "type": "string"
                       },
                       "lastUpdatedTime": {
                         "type": "string"
                       }
                     },
                     "required": [
                       "status",
                       "lastUpdatedTime"
                     ]
                   },
                   "gateway": {
                     "type": "object",
                     "properties": {
                       "resourceRef": {
                         "type": "string"
                       }
                     },
                     "required": [
                       "resourceRef"
                     ]
                   }
                 },
                 "required": [
                   "provisioningState",
                   "connectionType",
                   "outboundKiloBitsPerSecond",
                   "inboundKiloBitsPerSecond",
                   "ipAddresses",
                   "routes",
                   "connectionStatus",
                   "connectionState",
                   "connectionUpTime",
                   "statistics",
                   "configurationState",
                   "gateway"
                 ]
               }
             },
             "required": [
               "resourceRef",
               "resourceId",
               "etag",
               "instanceId",
               "properties"
             ]
           }
         },
         "bgpRouters": {
           "type": "array",
           "items": {
             "type": "object",
             "properties": {
               "resourceRef": {
                 "type": "string"
               },
               "resourceId": {
                 "type": "string"
               },
               "etag": {
                 "type": "string"
               },
               "instanceId": {
                 "$ref": "#/definitions/GUID"
               },
               "properties": {
                 "type": "object",
                 "properties": {
                   "provisioningState": {
                     "$ref": "#/definitions/provisioningState"
                   },
                   "isEnabled": {
                     "type": "boolean"
                   },
                   "requireIgpSync": {
                     "type": "boolean"
                   },
                   "extAsNumber": {
                     "type": "string"
                   },
                   "routerId": {
                     "type": "string"
                   },
                   "routerIP": {
                     "type": "array",
                     "items": {
                       "type": "string"
                     }
                   },
                   "isGenerated": {
                     "type": "boolean"
                   },
                   "bgpPeers": {
                     "type": "array",
                     "items": {
                       "type": "object",
                       "properties": {
                         "resourceRef": {
                           "type": "string"
                         },
                         "resourceId": {
                           "type": "string"
                         },
                         "etag": {
                           "type": "string"
                         },
                         "instanceId": {
                           "$ref": "#/definitions/GUID"
                         },
                         "properties": {
                           "type": "object",
                           "properties": {
                             "provisioningState": {
                               "$ref": "#/definitions/provisioningState"
                             },
                             "asNumber": {
                               "type": "string"
                             },
                             "extAsNumber": {
                               "type": "string"
                             },
                             "peerIpAddress": {
                               "type": "string"
                             },
                             "connectionState": {
                               "type": "string"
                             },
                             "statistics": {
                               "type": "object",
                               "properties": {
                                 "tcpConnectionClosed": {
                                   "type": "string"
                                 },
                                 "openMessageStats": {
                                   "type": "object",
                                   "properties": {
                                     "sentCount": {
                                       "type": "integer"
                                     },
                                     "receivedCount": {
                                       "type": "integer"
                                     }
                                   },
                                   "required": [
                                     "sentCount",
                                     "receivedCount"
                                   ]
                                 },
                                 "notificationMessageStats": {
                                   "type": "object",
                                   "properties": {
                                     "sentCount": {
                                       "type": "integer"
                                     },
                                     "receivedCount": {
                                       "type": "integer"
                                     }
                                   },
                                   "required": [
                                     "sentCount",
                                     "receivedCount"
                                   ]
                                 },
                                 "keepAliveMessageStats": {
                                   "type": "object",
                                   "properties": {
                                     "sentCount": {
                                       "type": "integer"
                                     },
                                     "receivedCount": {
                                       "type": "integer"
                                     }
                                   },
                                   "required": [
                                     "sentCount",
                                     "receivedCount"
                                   ]
                                 },
                                 "routeRefreshMessageStats": {
                                   "type": "object",
                                   "properties": {
                                     "sentCount": {
                                       "type": "integer"
                                     },
                                     "receivedCount": {
                                       "type": "integer"
                                     }
                                   },
                                   "required": [
                                     "sentCount",
                                     "receivedCount"
                                   ]
                                 },
                                 "updateMessageStats": {
                                   "type": "object",
                                   "properties": {
                                     "sentCount": {
                                       "type": "integer"
                                     },
                                     "receivedCount": {
                                       "type": "integer"
                                     }
                                   },
                                   "required": [
                                     "sentCount",
                                     "receivedCount"
                                   ]
                                 },
                                 "ipv4Route": {
                                   "type": "object",
                                   "properties": {
                                     "updateSentCount": {
                                       "type": "integer"
                                     },
                                     "updateReceivedCount": {
                                       "type": "integer"
                                     },
                                     "withdrawlSentCount": {
                                       "type": "integer"
                                     },
                                     "withdrawlReceivedCount": {
                                       "type": "integer"
                                     }
                                   },
                                   "required": [
                                     "updateSentCount",
                                     "updateReceivedCount",
                                     "withdrawlSentCount",
                                     "withdrawlReceivedCount"
                                   ]
                                 },
                                 "ipv6Route": {
                                   "type": "object",
                                   "properties": {
                                     "updateSentCount": {
                                       "type": "integer"
                                     },
                                     "updateReceivedCount": {
                                       "type": "integer"
                                     },
                                     "withdrawlSentCount": {
                                       "type": "integer"
                                     },
                                     "withdrawlReceivedCount": {
                                       "type": "integer"
                                     }
                                   },
                                   "required": [
                                     "updateSentCount",
                                     "updateReceivedCount",
                                     "withdrawlSentCount",
                                     "withdrawlReceivedCount"
                                   ]
                                 },
                                 "lastUpdated": {
                                   "type": "string"
                                 }
                               },
                               "required": [
                                 "tcpConnectionClosed",
                                 "openMessageStats",
                                 "notificationMessageStats",
                                 "keepAliveMessageStats",
                                 "routeRefreshMessageStats",
                                 "updateMessageStats",
                                 "ipv4Route",
                                 "ipv6Route",
                                 "lastUpdated"
                               ]
                             },
                             "isGenerated": {
                               "type": "boolean"
                             }
                           },
                           "required": [
                             "provisioningState",
                             "asNumber",
                             "extAsNumber",
                             "peerIpAddress",
                             "connectionState",
                             "statistics",
                             "isGenerated"
                           ]
                         }
                       },
                       "required": [
                         "resourceRef",
                         "resourceId",
                         "etag",
                         "instanceId",
                         "properties"
                       ]
                     }
                   },
                   "configurationState": {
                     "type": "object",
                     "properties": {
                       "status": {
                         "type": "string"
                       },
                       "lastUpdatedTime": {
                         "type": "string"
                       }
                     },
                     "required": [
                       "status",
                       "lastUpdatedTime"
                     ]
                   }
                 },
                 "required": [
                   "provisioningState",
                   "configurationState"
                 ]
               }
             },
             "required": [
               "resourceRef",
               "resourceId",
               "etag",
               "instanceId",
               "properties"
             ]
           }
         },
         "policyMaps": {
           "type": "array",
           "items": {
             "type": "object",
             "properties": {
               "resourceRef": {
                 "type": "string"
               },
               "resourceId": {
                 "type": "string"
               },
               "etag": {
                 "type": "string"
               },
               "instanceId": {
                 "$ref": "#/definitions/GUID"
               },
               "properties": {
                 "type": "object",
                 "properties": {
                   "provisioningState": {
                     "$ref": "#/definitions/provisioningState"
                   },
                   "bgpPeersWithPolicyMapIn": {
                     "type": "array",
                     "items": {}
                   },
                   "bgpPeersWithPolicyMapOut": {
                     "type": "array",
                     "items": {}
                   },
                   "policyMapEntryList": {
                     "type": "array",
                     "items": {
                       "type": "object",
                       "properties": {
                         "action": {
                           "type": "string"
                         },
                         "matchCriteria": {
                           "type": "array",
                           "items": {
                             "type": "object",
                             "properties": {
                               "property": {
                                 "type": "string"
                               },
                               "value": {
                                 "type": "array",
                                 "items": {
                                   "type": "string"
                                 }
                               }
                             },
                             "required": [
                               "property",
                               "value"
                             ]
                           }
                         },
                         "setActions": {
                           "type": "array",
                           "items": {}
                         }
                       },
                       "required": [
                         "action",
                         "matchCriteria",
                         "setActions"
                       ]
                     }
                   }
                 },
                 "required": [
                   "provisioningState",
                   "bgpPeersWithPolicyMapIn",
                   "bgpPeersWithPolicyMapOut",
                   "policyMapEntryList"
                 ]
               }
             },
             "required": [
               "resourceRef",
               "resourceId",
               "etag",
               "instanceId",
               "properties"
             ]
           }
         },
         "routingType": {
           "type": "string"
         },
         "GatewayPools": {
           "type": "array",
           "items": {
             "type": "object",
             "properties": {
               "resourceRef": {
                 "type": "string"
               }
             },
             "required": [
               "resourceRef"
             ]
           }
         },
         "configurationState": {
           "type": "object",
           "properties": {
             "status": {
               "type": "string"
             },
             "lastUpdatedTime": {
               "type": "string"
             }
           },
           "required": [
             "status",
             "lastUpdatedTime"
           ]
         },
         "gatewaySubnets": {
           "type": "array",
           "items": {
             "type": "object",
             "properties": {
               "resourceRef": {
                 "type": "string"
               }
             },
             "required": [
               "resourceRef"
             ]
           }
         }
       },
       "required": [
         "provisioningState",
         "networkConnections",
         "bgpRouters",
         "routingType",
         "GatewayPools",
         "configurationState",
         "gatewaySubnets"
       ]
     }
   },
   "required": [
     "resourceRef",
     "resourceId",
     "etag",
     "instanceId",
     "properties"
   ]
 }