diff --git a/specification/frontdoor/resource-manager/Microsoft.Network/stable/2020-05-01/assets/frontdoor.svg b/specification/frontdoor/resource-manager/Microsoft.Network/stable/2020-05-01/assets/frontdoor.svg new file mode 100644 index 000000000000..2806bba823df --- /dev/null +++ b/specification/frontdoor/resource-manager/Microsoft.Network/stable/2020-05-01/assets/frontdoor.svg @@ -0,0 +1,668 @@ + + + + + + +G + + + +A0 + +Frontdoor + +-properties:FrontdoorProperties + + + +A2 + +FrontdoorProperties + +-resourceState:ResourceState +-provisioningState:string +-cname:string + + + +A0->A2 + + + + + +A1 + +FrontdoorUpdateParameters + +-friendlyName:string +-routingRules:Array<RoutingRule> +-loadBalancingSettings:Array<LoadBalancingSettingsModel> +-healthProbeSettings:Array<HealthProbeSettingsModel> +-backendPools:Array<BackendPool> +-frontendEndpoints:Array<FrontendEndpoint> +-enabledState:string + + + +A1->A2 + + +allOf + + + +A5 + +RoutingRule + +-properties:RoutingRuleProperties +-name:string +-type:string + + + +A1->A5 + + + + + +A10 + +LoadBalancingSettingsModel + +-properties:LoadBalancingSettingsProperties +-name:string +-type:string + + + +A1->A10 + + + + + +A14 + +HealthProbeSettingsModel + +-properties:HealthProbeSettingsProperties +-name:string +-type:string + + + +A1->A14 + + + + + +A18 + +BackendPool + +-properties:BackendPoolProperties +-name:string +-type:string + + + +A1->A18 + + + + + +A26 + +FrontendEndpoint + +-properties:FrontendEndpointProperties +-name:string +-type:string + + + +A1->A26 + + + + + +A30 + +ResourceState + + + +A2->A30 + + + + + +A3 + +FrontdoorListResult + +-value:Array<Frontdoor> +-nextLink:string + + + +A3->A0 + + + + + +A4 + +PurgeParameters + +-contentPaths:Array<string> + + + +A6 + +RoutingRuleProperties + +-resourceState:ResourceState + + + +A5->A6 + + + + + +A6->A30 + + + + + +A7 + +RoutingRuleListResult + +-value:Array<RoutingRule> +-nextLink:string + + + +A7->A5 + + + + + +A8 + +RoutingRuleUpdateParameters + +-frontendEndpoints:Array<SubResource> +-acceptedProtocols:Array<string> +-patternsToMatch:Array<string> +-customForwardingPath:string +-forwardingProtocol:string +-cacheConfiguration:CacheConfiguration +-backendPool:SubResource +-enabledState:string + + + +A8->A6 + + +allOf + + + +A22 + +CacheConfiguration + +-queryParameterStripDirective:string +-dynamicCompression:string + + + +A8->A22 + + + + + +A38 + +SubResource + +-id:string + + + +A8->A38 + + + + + +A8->A38 + + + + + +A9 + +Backend + +-address:string +-httpPort: +-httpsPort: +-enabledState:string +-priority: +-weight: +-backendHostHeader:string + + + +A11 + +LoadBalancingSettingsProperties + +-resourceState:ResourceState + + + +A10->A11 + + + + + +A11->A30 + + + + + +A12 + +LoadBalancingSettingsListResult + +-value:Array<LoadBalancingSettingsModel> +-nextLink:string + + + +A12->A10 + + + + + +A13 + +LoadBalancingSettingsUpdateParameters + +-sampleSize: +-successfulSamplesRequired: +-additionalLatencyMilliseconds: + + + +A13->A11 + + +allOf + + + +A15 + +HealthProbeSettingsProperties + +-resourceState:ResourceState + + + +A14->A15 + + + + + +A15->A30 + + + + + +A16 + +HealthProbeSettingsListResult + +-value:Array<HealthProbeSettingsModel> +-nextLink:string + + + +A16->A14 + + + + + +A17 + +HealthProbeSettingsUpdateParameters + +-path:string +-protocol:string +-intervalInSeconds: + + + +A17->A15 + + +allOf + + + +A20 + +BackendPoolProperties + +-resourceState:ResourceState + + + +A18->A20 + + + + + +A19 + +BackendPoolUpdateParameters + +-backends:Array<Backend> +-loadBalancingSettings:SubResource +-healthProbeSettings:SubResource + + + +A19->A9 + + + + + +A19->A20 + + +allOf + + + +A19->A38 + + + + + +A19->A38 + + + + + +A20->A30 + + + + + +A21 + +BackendPoolListResult + +-value:Array<BackendPool> +-nextLink:string + + + +A21->A18 + + + + + +A23 + +KeyVaultCertificateSourceParameters + +-vault:Object +-secretName:string +-secretVersion:string + + + +A24 + +FrontdoorCertificateSourceParameters + +-certificateType:string + + + +A25 + +CustomHttpsConfiguration + +-certificateSource:string +-protocolType:string +-keyVaultCertificateSourceParameters:KeyVaultCertificateSourceParameters +-frontdoorCertificateSourceParameters:FrontdoorCertificateSourceParameters + + + +A25->A23 + + + + + +A25->A24 + + + + + +A27 + +FrontendEndpointProperties + +-resourceState:ResourceState +-customHttpsProvisioningState:string +-customHttpsProvisioningSubstate:string +-customHttpsConfiguration:CustomHttpsConfiguration + + + +A26->A27 + + + + + +A27->A25 + + + + + +A27->A30 + + + + + +A28 + +FrontendEndpointUpdateParameters + +-hostName:string +-sessionAffinityEnabledState:string +-sessionAffinityTtlSeconds: +-webApplicationFirewallPolicyLink:Object + + + +A28->A27 + + +allOf + + + +A29 + +FrontendEndpointsListResult + +-value:Array<FrontendEndpoint> +-nextLink:string + + + +A29->A26 + + + + + +A31 + +ValidateCustomDomainInput + +-hostName:string + + + +A32 + +ValidateCustomDomainOutput + +-customDomainValidated:boolean +-reason:string +-message:string + + + +A33 + +ErrorResponse + +-code:string +-message:string + + + +A34 + +CheckNameAvailabilityInput + +-name:string +-type:ResourceType + + + +A36 + +ResourceType + + + +A34->A36 + + + + + +A35 + +CheckNameAvailabilityOutput + +-nameAvailability:string +-reason:string +-message:string + + + +A37 + +Resource + +-id:string +-name:string +-type:string +-location:string +-tags:Dictionary<string> + + + +A37->A0 + + +allOf + + + +A38->A5 + + +allOf + + + +A38->A10 + + +allOf + + + +A38->A14 + + +allOf + + + +A38->A18 + + +allOf + + + +A38->A26 + + +allOf + + + diff --git a/specification/frontdoor/resource-manager/Microsoft.Network/stable/2020-05-01/examples/CheckFrontdoorNameAvailability.json b/specification/frontdoor/resource-manager/Microsoft.Network/stable/2020-05-01/examples/CheckFrontdoorNameAvailability.json new file mode 100644 index 000000000000..92b426753a32 --- /dev/null +++ b/specification/frontdoor/resource-manager/Microsoft.Network/stable/2020-05-01/examples/CheckFrontdoorNameAvailability.json @@ -0,0 +1,18 @@ +{ + "parameters": { + "api-version": "2020-05-01", + "checkFrontDoorNameAvailabilityInput": { + "name": "sampleName", + "type": "Microsoft.Network/frontDoors" + } + }, + "responses": { + "200": { + "body": { + "nameAvailability": "Unavailable", + "reason": "Name is already in use", + "message": "Name not available" + } + } + } +} diff --git a/specification/frontdoor/resource-manager/Microsoft.Network/stable/2020-05-01/examples/CheckFrontdoorNameAvailabilityWithSubscription.json b/specification/frontdoor/resource-manager/Microsoft.Network/stable/2020-05-01/examples/CheckFrontdoorNameAvailabilityWithSubscription.json new file mode 100644 index 000000000000..6ddae076c2d2 --- /dev/null +++ b/specification/frontdoor/resource-manager/Microsoft.Network/stable/2020-05-01/examples/CheckFrontdoorNameAvailabilityWithSubscription.json @@ -0,0 +1,19 @@ +{ + "parameters": { + "api-version": "2020-05-01", + "subscriptionId": "subid", + "checkFrontDoorNameAvailabilityInput": { + "name": "sampleName", + "type": "Microsoft.Network/frontDoors/frontendEndpoints" + } + }, + "responses": { + "200": { + "body": { + "nameAvailability": "Unavailable", + "reason": "Name is already in use", + "message": "Name not available" + } + } + } +} diff --git a/specification/frontdoor/resource-manager/Microsoft.Network/stable/2020-05-01/examples/FrontdoorCreate.json b/specification/frontdoor/resource-manager/Microsoft.Network/stable/2020-05-01/examples/FrontdoorCreate.json new file mode 100644 index 000000000000..5957738fe115 --- /dev/null +++ b/specification/frontdoor/resource-manager/Microsoft.Network/stable/2020-05-01/examples/FrontdoorCreate.json @@ -0,0 +1,571 @@ +{ + "parameters": { + "api-version": "2020-05-01", + "subscriptionId": "subid", + "resourceGroupName": "rg1", + "frontDoorName": "frontDoor1", + "frontDoorParameters": { + "location": "westus", + "tags": { + "tag1": "value1", + "tag2": "value2" + }, + "properties": { + "routingRules": [ + { + "name": "routingRule1", + "properties": { + "frontendEndpoints": [ + { + "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoors/frontDoor1/frontendEndpoints/frontendEndpoint1" + }, + { + "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoors/frontDoor1/frontendEndpoints/default" + } + ], + "acceptedProtocols": [ + "Http" + ], + "patternsToMatch": [ + "/*" + ], + "routeConfiguration": { + "@odata.type": "#Microsoft.Azure.FrontDoor.Models.FrontdoorForwardingConfiguration", + "backendPool": { + "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoors/frontDoor1/backendPools/backendPool1" + } + }, + "rulesEngine": { + "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoors/frontDoor1/rulesEngines/rulesEngine1" + }, + "enabledState": "Enabled" + } + } + ], + "healthProbeSettings": [ + { + "name": "healthProbeSettings1", + "properties": { + "path": "/", + "protocol": "Http", + "intervalInSeconds": 120, + "enabledState": "Enabled", + "healthProbeMethod": "HEAD" + } + } + ], + "loadBalancingSettings": [ + { + "name": "loadBalancingSettings1", + "properties": { + "sampleSize": 4, + "successfulSamplesRequired": 2 + } + } + ], + "backendPools": [ + { + "name": "backendPool1", + "properties": { + "backends": [ + { + "address": "w3.contoso.com", + "httpPort": 80, + "httpsPort": 443, + "weight": 1, + "priority": 2 + }, + { + "privateLinkResourceId": "/subscriptions/subid/resourcegroups/rg1/providers/Microsoft.Network/privateLinkServices/pls1", + "privateLinkLocation": "eastus", + "privateLinkApprovalMessage": "Please approve the connection request for this Private Link", + "address": "contoso.com.website-us-west-2.othercloud.net", + "httpPort": 80, + "httpsPort": 443, + "weight": 2, + "priority": 1 + }, + { + "privateLinkAlias": "APPSERVER.d84e61f0-0870-4d24-9746-7438fa0019d1.westus2.azure.privatelinkservice", + "privateLinkApprovalMessage": "Please approve this request to connect to the Private Link", + "address": "10.0.1.5", + "httpPort": 80, + "httpsPort": 443, + "weight": 1, + "priority": 1 + } + ], + "loadBalancingSettings": { + "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoors/frontDoor1/loadBalancingSettings/loadBalancingSettings1" + }, + "healthProbeSettings": { + "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoors/frontDoor1/healthProbeSettings/healthProbeSettings1" + } + } + } + ], + "frontendEndpoints": [ + { + "name": "frontendEndpoint1", + "properties": { + "hostName": "www.contoso.com", + "sessionAffinityEnabledState": "Enabled", + "sessionAffinityTtlSeconds": 60, + "webApplicationFirewallPolicyLink": { + "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoorWebApplicationFirewallPolicies/policy1" + } + } + }, + { + "name": "default", + "properties": { + "hostName": "frontDoor1.azurefd.net" + } + } + ], + "backendPoolsSettings": { + "enforceCertificateNameCheck": "Enabled", + "sendRecvTimeoutSeconds": 60 + }, + "enabledState": "Enabled" + } + } + }, + "responses": { + "200": { + "body": { + "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoors/frontDoor1", + "name": "frontDoor1", + "type": "Microsoft.Network/frontDoor", + "location": "westus", + "tags": { + "tag1": "value1", + "tag2": "value2" + }, + "properties": { + "routingRules": [ + { + "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoors/frontDoor1/routingRules/routingRule1", + "name": "routingRule1", + "properties": { + "frontendEndpoints": [ + { + "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoors/frontDoor1/frontendEndpoints/frontendEndpoint1" + }, + { + "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoors/frontDoor1/frontendEndpoints/default" + } + ], + "acceptedProtocols": [ + "Http" + ], + "patternsToMatch": [ + "/*" + ], + "routeConfiguration": { + "@odata.type": "#Microsoft.Azure.FrontDoor.Models.FrontdoorForwardingConfiguration", + "customForwardingPath": "", + "forwardingProtocol": "MatchRequest", + "backendPool": { + "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoors/frontDoor1/backendPools/backendPool1" + } + }, + "rulesEngine": { + "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoors/frontDoor1/rulesEngines/rulesEngine1" + }, + "enabledState": "Enabled" + } + } + ], + "healthProbeSettings": [ + { + "name": "healthProbeSettings1", + "properties": { + "path": "/", + "protocol": "Http", + "intervalInSeconds": 120, + "enabledState": "Enabled", + "healthProbeMethod": "HEAD" + } + } + ], + "loadBalancingSettings": [ + { + "name": "loadBalancingSettings1", + "properties": { + "sampleSize": 4, + "successfulSamplesRequired": 2 + } + } + ], + "backendPools": [ + { + "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoors/frontDoor1/backendPools/backendPool1", + "name": "backendPool1", + "properties": { + "backends": [ + { + "address": "w3.contoso.com", + "httpPort": 80, + "httpsPort": 443, + "enabledState": "Enabled", + "weight": 1, + "priority": 2 + }, + { + "privateLinkResourceId": "/subscriptions/subid/resourcegroups/rg1/providers/Microsoft.Network/privateLinkServices/pls1", + "privateLinkLocation": "eastus", + "privateEndpointStatus": "Approved", + "privateLinkApprovalMessage": "Please approve the connection request for this Private Link", + "address": "contoso.com.website-us-west-2.othercloud.net", + "httpPort": 80, + "httpsPort": 443, + "enabledState": "Enabled", + "weight": 2, + "priority": 1 + }, + { + "privateLinkAlias": "APPSERVER.d84e61f0-0870-4d24-9746-7438fa0019d1.westus2.azure.privatelinkservice", + "privateEndpointStatus": "Approved", + "privateLinkApprovalMessage": "Please approve the connection request for this Private Link", + "address": "10.0.1.5", + "httpPort": 80, + "httpsPort": 443, + "enabledState": "Enabled", + "weight": 1, + "priority": 1 + } + ], + "loadBalancingSettings": { + "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoors/frontDoor1/loadBalancingSettings/loadBalancingSettings1" + }, + "healthProbeSettings": { + "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoors/frontDoor1/healthProbeSettings/healthProbeSettings1" + } + } + } + ], + "frontendEndpoints": [ + { + "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoors/frontDoor1/frontendEndpoints/frontendEndpoint1", + "name": "frontendEndpoint1", + "properties": { + "hostName": "www.contoso.com", + "sessionAffinityEnabledState": "Enabled", + "sessionAffinityTtlSeconds": 60, + "webApplicationFirewallPolicyLink": { + "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoorWebApplicationFirewallPolicies/policy1" + } + } + }, + { + "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoors/frontDoor1/frontendEndpoints/default", + "name": "default", + "properties": { + "hostName": "frontDoor1.azurefd.net" + } + } + ], + "backendPoolsSettings": { + "enforceCertificateNameCheck": "Enabled", + "sendRecvTimeoutSeconds": 60 + }, + "enabledState": "Enabled", + "resourceState": "Creating", + "provisioningState": "Succeeded", + "cname": "frontDoor1.azurefd.net" + } + } + }, + "201": { + "body": { + "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoors/frontDoor1", + "name": "frontDoor1", + "type": "Microsoft.Network/frontDoor", + "location": "westus", + "tags": { + "tag1": "value1", + "tag2": "value2" + }, + "properties": { + "routingRules": [ + { + "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoors/frontDoor1/routingRules/routingRule1", + "name": "routingRule1", + "properties": { + "frontendEndpoints": [ + { + "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoors/frontDoor1/frontendEndpoints/frontendEndpoint1" + }, + { + "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoors/frontDoor1/frontendEndpoints/default" + } + ], + "acceptedProtocols": [ + "Http" + ], + "patternsToMatch": [ + "/*" + ], + "routeConfiguration": { + "@odata.type": "#Microsoft.Azure.FrontDoor.Models.FrontdoorForwardingConfiguration", + "customForwardingPath": "", + "forwardingProtocol": "MatchRequest", + "backendPool": { + "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoors/frontDoor1/backendPools/backendPool1" + } + }, + "rulesEngine": { + "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoors/frontDoor1/rulesEngines/rulesEngine1" + }, + "enabledState": "Enabled" + } + } + ], + "healthProbeSettings": [ + { + "name": "healthProbeSettings1", + "properties": { + "path": "/", + "protocol": "Http", + "intervalInSeconds": 120, + "enabledState": "Enabled", + "healthProbeMethod": "HEAD" + } + } + ], + "loadBalancingSettings": [ + { + "name": "loadBalancingSettings1", + "properties": { + "sampleSize": 4, + "successfulSamplesRequired": 2 + } + } + ], + "backendPools": [ + { + "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoors/frontDoor1/backendPools/backendPool1", + "name": "backendPool1", + "properties": { + "backends": [ + { + "address": "w3.contoso.com", + "httpPort": 80, + "httpsPort": 443, + "enabledState": "Enabled", + "weight": 1, + "priority": 2 + }, + { + "privateLinkResourceId": "/subscriptions/subid/resourcegroups/rg1/providers/Microsoft.Network/privateLinkServices/pls1", + "privateLinkLocation": "eastus", + "privateEndpointStatus": "Approved", + "privateLinkApprovalMessage": "Please approve the connection request for this Private Link", + "address": "contoso.com.website-us-west-2.othercloud.net", + "httpPort": 80, + "httpsPort": 443, + "enabledState": "Enabled", + "weight": 2, + "priority": 1 + }, + { + "privateLinkAlias": "APPSERVER.d84e61f0-0870-4d24-9746-7438fa0019d1.westus2.azure.privatelinkservice", + "privateEndpointStatus": "Approved", + "privateLinkApprovalMessage": "Please approve the connection request for this Private Link", + "address": "10.0.1.5", + "httpPort": 80, + "httpsPort": 443, + "enabledState": "Enabled", + "weight": 1, + "priority": 1 + } + ], + "loadBalancingSettings": { + "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoors/frontDoor1/loadBalancingSettings/loadBalancingSettings1" + }, + "healthProbeSettings": { + "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoors/frontDoor1/healthProbeSettings/healthProbeSettings1" + } + } + } + ], + "frontendEndpoints": [ + { + "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoors/frontDoor1/frontendEndpoints/frontendEndpoint1", + "name": "frontendEndpoint1", + "properties": { + "hostName": "www.contoso.com", + "sessionAffinityEnabledState": "Enabled", + "sessionAffinityTtlSeconds": 60, + "webApplicationFirewallPolicyLink": { + "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoorWebApplicationFirewallPolicies/policy1" + } + } + }, + { + "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoors/frontDoor1/frontendEndpoints/default", + "name": "default", + "properties": { + "hostName": "frontDoor1.azurefd.net" + } + } + ], + "backendPoolsSettings": { + "enforceCertificateNameCheck": "Enabled", + "sendRecvTimeoutSeconds": 60 + }, + "enabledState": "Enabled", + "resourceState": "Creating", + "provisioningState": "Provisioning", + "cname": "frontDoor1.azurefd.net" + } + } + }, + "202": { + "body": { + "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoors/frontDoor1", + "name": "frontDoor1", + "type": "Microsoft.Network/frontDoor", + "location": "westus", + "tags": { + "tag1": "value1", + "tag2": "value2" + }, + "properties": { + "routingRules": [ + { + "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoors/frontDoor1/routingRules/routingRule1", + "name": "routingRule1", + "properties": { + "frontendEndpoints": [ + { + "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoors/frontDoor1/frontendEndpoints/frontendEndpoint1" + }, + { + "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoors/frontDoor1/frontendEndpoints/default" + } + ], + "acceptedProtocols": [ + "Http" + ], + "patternsToMatch": [ + "/*" + ], + "routeConfiguration": { + "@odata.type": "#Microsoft.Azure.FrontDoor.Models.FrontdoorForwardingConfiguration", + "customForwardingPath": "", + "forwardingProtocol": "MatchRequest", + "backendPool": { + "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoors/frontDoor1/backendPools/backendPool1" + } + }, + "rulesEngine": { + "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoors/frontDoor1/rulesEngines/rulesEngine1" + }, + "enabledState": "Enabled" + } + } + ], + "healthProbeSettings": [ + { + "name": "healthProbeSettings1", + "properties": { + "path": "/", + "protocol": "Http", + "intervalInSeconds": 120, + "enabledState": "Enabled", + "healthProbeMethod": "HEAD" + } + } + ], + "loadBalancingSettings": [ + { + "name": "loadBalancingSettings1", + "properties": { + "sampleSize": 4, + "successfulSamplesRequired": 2 + } + } + ], + "backendPools": [ + { + "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoors/frontDoor1/backendPools/backendPool1", + "name": "backendPool1", + "properties": { + "backends": [ + { + "address": "w3.contoso.com", + "httpPort": 80, + "httpsPort": 443, + "enabledState": "Enabled", + "weight": 1, + "priority": 2 + }, + { + "privateLinkResourceId": "/subscriptions/subid/resourcegroups/rg1/providers/Microsoft.Network/privateLinkServices/pls1", + "privateLinkLocation": "eastus", + "privateEndpointStatus": "Approved", + "privateLinkApprovalMessage": "Please approve the connection request for this Private Link", + "address": "contoso.com.website-us-west-2.othercloud.net", + "httpPort": 80, + "httpsPort": 443, + "enabledState": "Enabled", + "weight": 2, + "priority": 1 + }, + { + "privateLinkAlias": "APPSERVER.d84e61f0-0870-4d24-9746-7438fa0019d1.westus2.azure.privatelinkservice", + "privateEndpointStatus": "Approved", + "privateLinkApprovalMessage": "Please approve the connection request for this Private Link", + "address": "10.0.1.5", + "httpPort": 80, + "httpsPort": 443, + "enabledState": "Enabled", + "weight": 1, + "priority": 1 + } + ], + "loadBalancingSettings": { + "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoors/frontDoor1/loadBalancingSettings/loadBalancingSettings1" + }, + "healthProbeSettings": { + "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoors/frontDoor1/healthProbeSettings/healthProbeSettings1" + } + } + } + ], + "frontendEndpoints": [ + { + "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoors/frontDoor1/frontendEndpoints/frontendEndpoint1", + "name": "frontendEndpoint1", + "properties": { + "hostName": "www.contoso.com", + "sessionAffinityEnabledState": "Enabled", + "sessionAffinityTtlSeconds": 60, + "webApplicationFirewallPolicyLink": { + "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoorWebApplicationFirewallPolicies/policy1" + } + } + }, + { + "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoors/frontDoor1/frontendEndpoints/default", + "name": "default", + "properties": { + "hostName": "frontDoor1.azurefd.net" + } + } + ], + "backendPoolsSettings": { + "enforceCertificateNameCheck": "Enabled", + "sendRecvTimeoutSeconds": 60 + }, + "enabledState": "Enabled", + "resourceState": "Creating", + "provisioningState": "Provisioning", + "cname": "frontDoor1.azurefd.net" + } + } + } + } +} diff --git a/specification/frontdoor/resource-manager/Microsoft.Network/stable/2020-05-01/examples/FrontdoorDelete.json b/specification/frontdoor/resource-manager/Microsoft.Network/stable/2020-05-01/examples/FrontdoorDelete.json new file mode 100644 index 000000000000..cc564a2f408e --- /dev/null +++ b/specification/frontdoor/resource-manager/Microsoft.Network/stable/2020-05-01/examples/FrontdoorDelete.json @@ -0,0 +1,12 @@ +{ + "parameters": { + "api-version": "2020-05-01", + "subscriptionId": "subid", + "resourceGroupName": "rg1", + "frontDoorName": "frontDoor1" + }, + "responses": { + "202": {}, + "204": {} + } +} diff --git a/specification/frontdoor/resource-manager/Microsoft.Network/stable/2020-05-01/examples/FrontdoorDisableHttps.json b/specification/frontdoor/resource-manager/Microsoft.Network/stable/2020-05-01/examples/FrontdoorDisableHttps.json new file mode 100644 index 000000000000..3fea12eda99c --- /dev/null +++ b/specification/frontdoor/resource-manager/Microsoft.Network/stable/2020-05-01/examples/FrontdoorDisableHttps.json @@ -0,0 +1,13 @@ +{ + "parameters": { + "api-version": "2020-05-01", + "subscriptionId": "subid", + "resourceGroupName": "rg1", + "frontDoorName": "frontDoor1", + "frontendEndpointName": "frontendEndpoint1" + }, + "responses": { + "200": {}, + "202": {} + } +} diff --git a/specification/frontdoor/resource-manager/Microsoft.Network/stable/2020-05-01/examples/FrontdoorEnableHttps.json b/specification/frontdoor/resource-manager/Microsoft.Network/stable/2020-05-01/examples/FrontdoorEnableHttps.json new file mode 100644 index 000000000000..a965ad10d819 --- /dev/null +++ b/specification/frontdoor/resource-manager/Microsoft.Network/stable/2020-05-01/examples/FrontdoorEnableHttps.json @@ -0,0 +1,25 @@ +{ + "parameters": { + "api-version": "2020-05-01", + "subscriptionId": "subid", + "resourceGroupName": "rg1", + "frontDoorName": "frontDoor1", + "frontendEndpointName": "frontendEndpoint1", + "customHttpsConfiguration": { + "certificateSource": "AzureKeyVault", + "protocolType": "ServerNameIndication", + "minimumTlsVersion": "1.0", + "keyVaultCertificateSourceParameters": { + "vault": { + "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.KeyVault/vaults/vault1" + }, + "secretName": "secret1", + "secretVersion": "00000000-0000-0000-0000-000000000000" + } + } + }, + "responses": { + "200": {}, + "202": {} + } +} diff --git a/specification/frontdoor/resource-manager/Microsoft.Network/stable/2020-05-01/examples/FrontdoorFrontendEndpointGet.json b/specification/frontdoor/resource-manager/Microsoft.Network/stable/2020-05-01/examples/FrontdoorFrontendEndpointGet.json new file mode 100644 index 000000000000..bdc67b0f3404 --- /dev/null +++ b/specification/frontdoor/resource-manager/Microsoft.Network/stable/2020-05-01/examples/FrontdoorFrontendEndpointGet.json @@ -0,0 +1,25 @@ +{ + "parameters": { + "api-version": "2020-05-01", + "subscriptionId": "subid", + "resourceGroupName": "rg1", + "frontDoorName": "frontDoor1", + "frontendEndpointName": "frontendEndpoint1" + }, + "responses": { + "200": { + "body": { + "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoors/frontDoor1/frontendEndpoints/frontendEndpoint1", + "name": "frontendEndpoint1", + "properties": { + "hostName": "www.contoso.com", + "sessionAffinityEnabledState": "Enabled", + "sessionAffinityTtlSeconds": 60, + "webApplicationFirewallPolicyLink": { + "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoorWebApplicationFirewallPolicies/policy1" + } + } + } + } + } +} diff --git a/specification/frontdoor/resource-manager/Microsoft.Network/stable/2020-05-01/examples/FrontdoorFrontendEndpointList.json b/specification/frontdoor/resource-manager/Microsoft.Network/stable/2020-05-01/examples/FrontdoorFrontendEndpointList.json new file mode 100644 index 000000000000..dda4a2e5d4ab --- /dev/null +++ b/specification/frontdoor/resource-manager/Microsoft.Network/stable/2020-05-01/examples/FrontdoorFrontendEndpointList.json @@ -0,0 +1,28 @@ +{ + "parameters": { + "api-version": "2020-05-01", + "subscriptionId": "subid", + "resourceGroupName": "rg1", + "frontDoorName": "frontDoor1" + }, + "responses": { + "200": { + "body": { + "value": [ + { + "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoors/frontDoor1/frontendEndpoints/frontendEndpoint1", + "name": "frontendEndpoint1", + "properties": { + "hostName": "www.contoso.com", + "sessionAffinityEnabledState": "Enabled", + "sessionAffinityTtlSeconds": 60, + "webApplicationFirewallPolicyLink": { + "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoorWebApplicationFirewallPolicies/policy1" + } + } + } + ] + } + } + } +} diff --git a/specification/frontdoor/resource-manager/Microsoft.Network/stable/2020-05-01/examples/FrontdoorGet.json b/specification/frontdoor/resource-manager/Microsoft.Network/stable/2020-05-01/examples/FrontdoorGet.json new file mode 100644 index 000000000000..64b071212fd3 --- /dev/null +++ b/specification/frontdoor/resource-manager/Microsoft.Network/stable/2020-05-01/examples/FrontdoorGet.json @@ -0,0 +1,215 @@ +{ + "parameters": { + "api-version": "2020-05-01", + "subscriptionId": "subid", + "resourceGroupName": "rg1", + "frontDoorName": "frontDoor1" + }, + "responses": { + "200": { + "body": { + "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoors/frontDoor1", + "name": "frontDoor1", + "type": "Microsoft.Network/frontDoor", + "location": "westus", + "tags": { + "tag1": "value1", + "tag2": "value2" + }, + "properties": { + "routingRules": [ + { + "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoors/frontDoor1/routingRules/routingRule1", + "name": "routingRule1", + "properties": { + "frontendEndpoints": [ + { + "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoors/frontDoor1/frontendEndpoints/frontendEndpoint1" + }, + { + "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoors/frontDoor1/frontendEndpoints/default" + } + ], + "acceptedProtocols": [ + "Http" + ], + "patternsToMatch": [ + "/*" + ], + "routeConfiguration": { + "@odata.type": "#Microsoft.Azure.FrontDoor.Models.FrontdoorForwardingConfiguration", + "customForwardingPath": "", + "forwardingProtocol": "MatchRequest", + "backendPool": { + "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoors/frontDoor1/backendPools/backendPool1" + } + }, + "rulesEngine": { + "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoors/frontDoor1/rulesEngines/rulesEngine1" + }, + "enabledState": "Enabled" + } + } + ], + "healthProbeSettings": [ + { + "name": "healthProbeSettings1", + "properties": { + "path": "/", + "protocol": "Http", + "intervalInSeconds": 120, + "enabledState": "Enabled", + "healthProbeMethod": "HEAD" + } + } + ], + "loadBalancingSettings": [ + { + "name": "loadBalancingSettings1", + "properties": { + "sampleSize": 4, + "successfulSamplesRequired": 2 + } + } + ], + "backendPools": [ + { + "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoors/frontDoor1/backendPools/backendPool1", + "name": "backendPool1", + "properties": { + "backends": [ + { + "address": "w3.contoso.com", + "httpPort": 80, + "httpsPort": 443, + "enabledState": "Enabled", + "weight": 1, + "priority": 2 + }, + { + "privateLinkResourceId": "/subscriptions/subid/resourcegroups/rg1/providers/Microsoft.Network/privateLinkServices/pls1", + "privateLinkLocation": "eastus", + "privateEndpointStatus": "Approved", + "privateLinkApprovalMessage": "Please approve the connection request for this Private Link", + "address": "contoso.com.website-us-west-2.othercloud.net", + "httpPort": 80, + "httpsPort": 443, + "enabledState": "Enabled", + "weight": 2, + "priority": 1 + }, + { + "privateLinkAlias": "APPSERVER.d84e61f0-0870-4d24-9746-7438fa0019d1.westus2.azure.privatelinkservice", + "privateEndpointStatus": "Approved", + "privateLinkApprovalMessage": "Please approve the connection request for this Private Link", + "address": "10.0.1.5", + "httpPort": 80, + "httpsPort": 443, + "enabledState": "Enabled", + "weight": 1, + "priority": 1 + } + ], + "loadBalancingSettings": { + "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoors/frontDoor1/loadBalancingSettings/loadBalancingSettings1" + }, + "healthProbeSettings": { + "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoors/frontDoor1/healthProbeSettings/healthProbeSettings1" + } + } + } + ], + "frontendEndpoints": [ + { + "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoors/frontDoor1/frontendEndpoints/frontendEndpoint1", + "name": "frontendEndpoint1", + "properties": { + "hostName": "www.contoso.com", + "sessionAffinityEnabledState": "Enabled", + "sessionAffinityTtlSeconds": 60, + "webApplicationFirewallPolicyLink": { + "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoorWebApplicationFirewallPolicies/policy1" + } + } + }, + { + "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoors/frontDoor1/frontendEndpoints/default", + "name": "default", + "properties": { + "hostName": "frontDoor1.azurefd.net" + } + } + ], + "rulesEngines": [ + { + "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoors/frontDoor1/rulesEngines/rulesEngine1", + "name": "rulesEngine1", + "properties": { + "rules": [ + { + "name": "Rule1", + "priority": 1, + "action": { + "routeConfigurationOverride": { + "@odata.type": "#Microsoft.Azure.FrontDoor.Models.FrontdoorRedirectConfiguration", + "redirectType": "Moved", + "redirectProtocol": "HttpsOnly", + "customHost": "www.bing.com", + "customPath": "/api", + "customFragment": "fragment", + "customQueryString": "a=b" + } + }, + "matchConditions": [ + { + "rulesEngineMatchVariable": "RemoteAddr", + "rulesEngineOperator": "GeoMatch", + "rulesEngineMatchValue": [ + "CH" + ] + } + ], + "matchProcessingBehavior": "Stop" + }, + { + "name": "Rule2", + "priority": 2, + "action": { + "responseHeaderActions": [ + { + "headerActionType": "Overwrite", + "headerName": "Cache-Control", + "value": "public, max-age=31536000" + } + ] + }, + "matchConditions": [ + { + "rulesEngineMatchVariable": "FilenameExtension", + "rulesEngineOperator": "Equal", + "rulesEngineMatchValue": [ + "jpg" + ], + "transforms": [ + "Lowercase" + ] + } + ] + } + ] + } + } + ], + "backendPoolsSettings": { + "enforceCertificateNameCheck": "Enabled", + "sendRecvTimeoutSeconds": 60 + }, + "enabledState": "Enabled", + "resourceState": "Enabled", + "provisioningState": "Succeeded", + "cname": "frontDoor1.azurefd.net" + } + } + } + } +} diff --git a/specification/frontdoor/resource-manager/Microsoft.Network/stable/2020-05-01/examples/FrontdoorList.json b/specification/frontdoor/resource-manager/Microsoft.Network/stable/2020-05-01/examples/FrontdoorList.json new file mode 100644 index 000000000000..f52102336d9c --- /dev/null +++ b/specification/frontdoor/resource-manager/Microsoft.Network/stable/2020-05-01/examples/FrontdoorList.json @@ -0,0 +1,218 @@ +{ + "parameters": { + "api-version": "2020-05-01", + "subscriptionId": "subid", + "resourceGroupName": "rg1" + }, + "responses": { + "200": { + "body": { + "value": [ + { + "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoors/frontDoor1", + "name": "frontDoor1", + "type": "Microsoft.Network/frontDoor", + "location": "westus", + "tags": { + "tag1": "value1", + "tag2": "value2" + }, + "properties": { + "routingRules": [ + { + "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoors/frontDoor1/routingRules/routingRule1", + "name": "routingRule1", + "properties": { + "frontendEndpoints": [ + { + "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoors/frontDoor1/frontendEndpoints/frontendEndpoint1" + }, + { + "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoors/frontDoor1/frontendEndpoints/default" + } + ], + "acceptedProtocols": [ + "Http" + ], + "patternsToMatch": [ + "/*" + ], + "routeConfiguration": { + "@odata.type": "#Microsoft.Azure.FrontDoor.Models.FrontdoorForwardingConfiguration", + "customForwardingPath": "", + "forwardingProtocol": "MatchRequest", + "backendPool": { + "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoors/frontDoor1/backendPools/backendPool1" + } + }, + "rulesEngine": { + "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoors/frontDoor1/rulesEngines/rulesEngine1" + }, + "enabledState": "Enabled" + } + } + ], + "healthProbeSettings": [ + { + "name": "healthProbeSettings1", + "properties": { + "path": "/", + "protocol": "Http", + "intervalInSeconds": 120, + "enabledState": "Enabled", + "healthProbeMethod": "HEAD" + } + } + ], + "loadBalancingSettings": [ + { + "name": "loadBalancingSettings1", + "properties": { + "sampleSize": 4, + "successfulSamplesRequired": 2 + } + } + ], + "backendPools": [ + { + "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoors/frontDoor1/backendPools/backendPool1", + "name": "backendPool1", + "properties": { + "backends": [ + { + "address": "w3.contoso.com", + "httpPort": 80, + "httpsPort": 443, + "enabledState": "Enabled", + "weight": 1, + "priority": 2 + }, + { + "privateLinkResourceId": "/subscriptions/subid/resourcegroups/rg1/providers/Microsoft.Network/privateLinkServices/pls1", + "privateLinkLocation": "eastus", + "privateEndpointStatus": "Approved", + "privateLinkApprovalMessage": "Please approve the connection request for this Private Link", + "address": "contoso.com.website-us-west-2.othercloud.net", + "httpPort": 80, + "httpsPort": 443, + "enabledState": "Enabled", + "weight": 2, + "priority": 1 + }, + { + "privateLinkAlias": "APPSERVER.d84e61f0-0870-4d24-9746-7438fa0019d1.westus2.azure.privatelinkservice", + "privateEndpointStatus": "Approved", + "privateLinkApprovalMessage": "Please approve the connection request for this Private Link", + "address": "10.0.1.5", + "httpPort": 80, + "httpsPort": 443, + "enabledState": "Enabled", + "weight": 1, + "priority": 1 + } + ], + "loadBalancingSettings": { + "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoors/frontDoor1/loadBalancingSettings/loadBalancingSettings1" + }, + "healthProbeSettings": { + "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoors/frontDoor1/healthProbeSettings/healthProbeSettings1" + } + } + } + ], + "frontendEndpoints": [ + { + "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoors/frontDoor1/frontendEndpoints/frontendEndpoint1", + "name": "frontendEndpoint1", + "properties": { + "hostName": "www.contoso.com", + "sessionAffinityEnabledState": "Enabled", + "sessionAffinityTtlSeconds": 60, + "webApplicationFirewallPolicyLink": { + "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoorWebApplicationFirewallPolicies/policy1" + } + } + }, + { + "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoors/frontDoor1/frontendEndpoints/default", + "name": "default", + "properties": { + "hostName": "frontDoor1.azurefd.net" + } + } + ], + "rulesEngines": [ + { + "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoors/frontDoor1/routingRules/rulesEngine1", + "name": "rulesEngine1", + "properties": { + "rules": [ + { + "name": "Rule1", + "priority": 1, + "action": { + "routeConfigurationOverride": { + "@odata.type": "#Microsoft.Azure.FrontDoor.Models.FrontdoorRedirectConfiguration", + "redirectType": "Moved", + "redirectProtocol": "HttpsOnly", + "customHost": "www.bing.com", + "customPath": "/api", + "customFragment": "fragment", + "customQueryString": "a=b" + } + }, + "matchConditions": [ + { + "rulesEngineMatchVariable": "RemoteAddr", + "rulesEngineOperator": "GeoMatch", + "rulesEngineMatchValue": [ + "CH" + ] + } + ], + "matchProcessingBehavior": "Stop" + }, + { + "name": "Rule2", + "priority": 2, + "action": { + "responseHeaderActions": [ + { + "headerActionType": "Overwrite", + "headerName": "Cache-Control", + "value": "public, max-age=31536000" + } + ] + }, + "matchConditions": [ + { + "rulesEngineMatchVariable": "FilenameExtension", + "rulesEngineOperator": "Equal", + "rulesEngineMatchValue": [ + "jpg" + ], + "transforms": [ + "Lowercase" + ] + } + ] + } + ] + } + } + ], + "backendPoolsSettings": { + "enforceCertificateNameCheck": "Enabled", + "sendRecvTimeoutSeconds": 60 + }, + "enabledState": "Enabled", + "resourceState": "Enabled", + "provisioningState": "Succeeded", + "cname": "frontDoor1.azurefd.net" + } + } + ] + } + } + } +} diff --git a/specification/frontdoor/resource-manager/Microsoft.Network/stable/2020-05-01/examples/FrontdoorListAll.json b/specification/frontdoor/resource-manager/Microsoft.Network/stable/2020-05-01/examples/FrontdoorListAll.json new file mode 100644 index 000000000000..418a3edbe906 --- /dev/null +++ b/specification/frontdoor/resource-manager/Microsoft.Network/stable/2020-05-01/examples/FrontdoorListAll.json @@ -0,0 +1,216 @@ +{ + "parameters": { + "api-version": "2020-05-01", + "subscriptionId": "subid" + }, + "responses": { + "200": { + "body": { + "value": [ + { + "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoors/frontDoor1", + "name": "frontDoor1", + "type": "Microsoft.Network/frontDoor", + "location": "westus", + "tags": { + "tag1": "value1", + "tag2": "value2" + }, + "properties": { + "routingRules": [ + { + "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoors/frontDoor1/routingRules/routingRule1", + "name": "routingRule1", + "properties": { + "frontendEndpoints": [ + { + "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoors/frontDoor1/frontendEndpoints/frontendEndpoint1" + }, + { + "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoors/frontDoor1/frontendEndpoints/default" + } + ], + "acceptedProtocols": [ + "Http" + ], + "patternsToMatch": [ + "/*" + ], + "routeConfiguration": { + "@odata.type": "#Microsoft.Azure.FrontDoor.Models.FrontdoorForwardingConfiguration", + "customForwardingPath": "", + "forwardingProtocol": "MatchRequest", + "backendPool": { + "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoors/frontDoor1/backendPools/backendPool1" + } + }, + "rulesEngine": { + "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoors/frontDoor1/rulesEngines/rulesEngine1" + }, + "enabledState": "Enabled" + } + } + ], + "healthProbeSettings": [ + { + "name": "healthProbeSettings1", + "properties": { + "path": "/", + "protocol": "Http", + "intervalInSeconds": 120, + "enabledState": "Enabled", + "healthProbeMethod": "HEAD" + } + } + ], + "loadBalancingSettings": [ + { + "name": "loadBalancingSettings1", + "properties": { + "sampleSize": 4, + "successfulSamplesRequired": 2 + } + } + ], + "backendPools": [ + { + "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoors/frontDoor1/backendPools/backendPool1", + "name": "backendPool1", + "properties": { + "backends": [ + { + "address": "w3.contoso.com", + "httpPort": 80, + "httpsPort": 443, + "enabledState": "Enabled", + "weight": 1, + "priority": 2 + }, + { + "privateLinkResourceId": "/subscriptions/subid/resourcegroups/rg1/providers/Microsoft.Network/privateLinkServices/pls1", + "privateLinkLocation": "eastus", + "privateEndpointStatus": "Approved", + "privateLinkApprovalMessage": "Please approve the connection request for this Private Link", + "address": "contoso.com.website-us-west-2.othercloud.net", + "httpPort": 80, + "httpsPort": 443, + "enabledState": "Enabled", + "weight": 2, + "priority": 1 + }, + { + "privateLinkAlias": "APPSERVER.d84e61f0-0870-4d24-9746-7438fa0019d1.westus2.azure.privatelinkservice", + "privateEndpointStatus": "Approved", + "privateLinkApprovalMessage": "Please approve the connection request for this Private Link", + "address": "10.0.1.5", + "httpPort": 80, + "httpsPort": 443, + "enabledState": "Enabled", + "weight": 1, + "priority": 1 + } + ], + "loadBalancingSettings": { + "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoors/frontDoor1/loadBalancingSettings/loadBalancingSettings1" + }, + "healthProbeSettings": { + "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoors/frontDoor1/healthProbeSettings/healthProbeSettings1" + } + } + } + ], + "frontendEndpoints": [ + { + "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoors/frontDoor1/frontendEndpoints/frontendEndpoint1", + "name": "frontendEndpoint1", + "properties": { + "hostName": "www.contoso.com", + "sessionAffinityEnabledState": "Enabled", + "sessionAffinityTtlSeconds": 60, + "webApplicationFirewallPolicyLink": { + "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoorWebApplicationFirewallPolicies/policy1" + } + } + }, + { + "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoors/frontDoor1/frontendEndpoints/default", + "name": "default", + "properties": { + "hostName": "frontDoor1.azurefd.net" + } + } + ], + "rulesEngines": [ + { + "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoors/frontDoor1/routingRules/rulesEngine1", + "name": "rulesEngine1", + "properties": { + "rules": [ + { + "name": "Rule1", + "priority": 1, + "action": { + "routeConfigurationOverride": { + "@odata.type": "#Microsoft.Azure.FrontDoor.Models.FrontdoorRedirectConfiguration", + "redirectType": "Moved", + "redirectProtocol": "HttpsOnly", + "customHost": "www.bing.com", + "customPath": "/api", + "customFragment": "fragment", + "customQueryString": "a=b" + } + }, + "matchConditions": [ + { + "rulesEngineMatchVariable": "RemoteAddr", + "rulesEngineOperator": "GeoMatch", + "rulesEngineMatchValue": [ + "CH" + ] + } + ], + "matchProcessingBehavior": "Stop" + }, + { + "name": "Rule2", + "priority": 2, + "action": { + "responseHeaderActions": [ + { + "headerActionType": "Overwrite", + "headerName": "Cache-Control", + "value": "public, max-age=31536000" + } + ] + }, + "matchConditions": [ + { + "rulesEngineMatchVariable": "FilenameExtension", + "rulesEngineOperator": "Equal", + "rulesEngineMatchValue": [ + "jpg" + ], + "transforms": [ + "Lowercase" + ] + } + ] + } + ] + } + } + ], + "backendPoolsSettings": { + "enforceCertificateNameCheck": "Enabled" + }, + "enabledState": "Enabled", + "resourceState": "Enabled", + "provisioningState": "Succeeded", + "cname": "frontDoor1.azurefd.net" + } + } + ] + } + } + } +} diff --git a/specification/frontdoor/resource-manager/Microsoft.Network/stable/2020-05-01/examples/FrontdoorPurgeContent.json b/specification/frontdoor/resource-manager/Microsoft.Network/stable/2020-05-01/examples/FrontdoorPurgeContent.json new file mode 100644 index 000000000000..5c1826bc06d6 --- /dev/null +++ b/specification/frontdoor/resource-manager/Microsoft.Network/stable/2020-05-01/examples/FrontdoorPurgeContent.json @@ -0,0 +1,18 @@ +{ + "parameters": { + "api-version": "2020-05-01", + "subscriptionId": "subid", + "resourceGroupName": "rg1", + "frontDoorName": "frontDoor1", + "contentFilePaths": { + "contentPaths": [ + "/pictures.aspx", + "/pictures/*" + ] + } + }, + "responses": { + "200": {}, + "202": {} + } +} diff --git a/specification/frontdoor/resource-manager/Microsoft.Network/stable/2020-05-01/examples/FrontdoorRulesEngineCreate.json b/specification/frontdoor/resource-manager/Microsoft.Network/stable/2020-05-01/examples/FrontdoorRulesEngineCreate.json new file mode 100644 index 000000000000..b5aaea3d3d0b --- /dev/null +++ b/specification/frontdoor/resource-manager/Microsoft.Network/stable/2020-05-01/examples/FrontdoorRulesEngineCreate.json @@ -0,0 +1,281 @@ +{ + "parameters": { + "api-version": "2020-05-01", + "subscriptionId": "subid", + "resourceGroupName": "rg1", + "frontDoorName": "frontDoor1", + "rulesEngineName": "rulesEngine1", + "rulesEngineParameters": { + "properties": { + "rules": [ + { + "name": "Rule1", + "priority": 1, + "action": { + "routeConfigurationOverride": { + "@odata.type": "#Microsoft.Azure.FrontDoor.Models.FrontdoorRedirectConfiguration", + "redirectType": "Moved", + "redirectProtocol": "HttpsOnly", + "customHost": "www.bing.com", + "customPath": "/api", + "customFragment": "fragment", + "customQueryString": "a=b" + } + }, + "matchConditions": [ + { + "rulesEngineMatchVariable": "RemoteAddr", + "rulesEngineOperator": "GeoMatch", + "rulesEngineMatchValue": [ + "CH" + ] + } + ], + "matchProcessingBehavior": "Stop" + }, + { + "name": "Rule2", + "priority": 2, + "action": { + "responseHeaderActions": [ + { + "headerActionType": "Overwrite", + "headerName": "Cache-Control", + "value": "public, max-age=31536000" + } + ] + }, + "matchConditions": [ + { + "rulesEngineMatchVariable": "RequestFilenameExtension", + "rulesEngineOperator": "Equal", + "rulesEngineMatchValue": [ + "jpg" + ], + "transforms": [ + "Lowercase" + ] + } + ] + }, + { + "name": "Rule3", + "priority": 3, + "action": { + "routeConfigurationOverride": { + "@odata.type": "#Microsoft.Azure.FrontDoor.Models.FrontdoorForwardingConfiguration", + "customForwardingPath": null, + "forwardingProtocol": "HttpsOnly", + "cacheConfiguration": { + "queryParameterStripDirective": "StripOnly", + "queryParameters": "a=b,p=q", + "dynamicCompression": "Disabled", + "cacheDuration": "P1DT12H20M30S" + }, + "backendPool": { + "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoors/frontDoor1/backendPools/backendPool1" + } + } + }, + "matchConditions": [ + { + "rulesEngineMatchVariable": "RequestHeader", + "rulesEngineOperator": "Equal", + "rulesEngineMatchValue": [ + "allowoverride" + ], + "transforms": [ + "Lowercase" + ], + "negateCondition": false, + "selector": "Rules-Engine-Route-Forward" + } + ] + } + ] + } + } + }, + "responses": { + "200": { + "body": { + "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoors/frontDoor1/rulesEngines/rulesEngine1", + "name": "rulesEngine1", + "properties": { + "rules": [ + { + "name": "Rule1", + "priority": 1, + "action": { + "routeConfigurationOverride": { + "@odata.type": "#Microsoft.Azure.FrontDoor.Models.FrontdoorRedirectConfiguration", + "redirectType": "Moved", + "redirectProtocol": "HttpsOnly", + "customHost": "www.bing.com", + "customPath": "/api", + "customFragment": "fragment", + "customQueryString": "a=b" + } + }, + "matchConditions": [ + { + "rulesEngineMatchVariable": "RemoteAddr", + "rulesEngineOperator": "GeoMatch", + "rulesEngineMatchValue": [ + "CH" + ] + } + ], + "matchProcessingBehavior": "Stop" + }, + { + "name": "Rule2", + "priority": 2, + "action": { + "responseHeaderActions": [ + { + "headerActionType": "Overwrite", + "headerName": "Cache-Control", + "value": "public, max-age=31536000" + } + ] + }, + "matchConditions": [ + { + "rulesEngineMatchVariable": "RequestFilenameExtension", + "rulesEngineOperator": "Equal", + "rulesEngineMatchValue": [ + "jpg" + ], + "transforms": [ + "Lowercase" + ] + } + ] + } + ] + } + } + }, + "201": { + "body": { + "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoors/frontDoor1/rulesEngines/rulesEngine1", + "name": "rulesEngine1", + "properties": { + "rules": [ + { + "name": "Rule1", + "priority": 1, + "action": { + "routeConfigurationOverride": { + "@odata.type": "#Microsoft.Azure.FrontDoor.Models.FrontdoorRedirectConfiguration", + "redirectType": "Moved", + "redirectProtocol": "HttpsOnly", + "customHost": "www.bing.com", + "customPath": "/api", + "customFragment": "fragment", + "customQueryString": "a=b" + } + }, + "matchConditions": [ + { + "rulesEngineMatchVariable": "RemoteAddr", + "rulesEngineOperator": "GeoMatch", + "rulesEngineMatchValue": [ + "CH" + ] + } + ], + "matchProcessingBehavior": "Stop" + }, + { + "name": "Rule2", + "priority": 2, + "action": { + "responseHeaderActions": [ + { + "headerActionType": "Overwrite", + "headerName": "Cache-Control", + "value": "public, max-age=31536000" + } + ] + }, + "matchConditions": [ + { + "rulesEngineMatchVariable": "RequestFilenameExtension", + "rulesEngineOperator": "Equal", + "rulesEngineMatchValue": [ + "jpg" + ], + "transforms": [ + "Lowercase" + ] + } + ] + } + ] + } + } + }, + "202": { + "body": { + "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoors/frontDoor1/rulesEngines/rulesEngine1", + "name": "rulesEngine1", + "properties": { + "rules": [ + { + "name": "Rule1", + "priority": 1, + "action": { + "routeConfigurationOverride": { + "@odata.type": "#Microsoft.Azure.FrontDoor.Models.FrontdoorRedirectConfiguration", + "redirectType": "Moved", + "redirectProtocol": "HttpsOnly", + "customHost": "www.bing.com", + "customPath": "/api", + "customFragment": "fragment", + "customQueryString": "a=b" + } + }, + "matchConditions": [ + { + "rulesEngineMatchVariable": "RemoteAddr", + "rulesEngineOperator": "GeoMatch", + "rulesEngineMatchValue": [ + "CH" + ] + } + ], + "matchProcessingBehavior": "Stop" + }, + { + "name": "Rule2", + "priority": 2, + "action": { + "responseHeaderActions": [ + { + "headerActionType": "Overwrite", + "headerName": "Cache-Control", + "value": "public, max-age=31536000" + } + ] + }, + "matchConditions": [ + { + "rulesEngineMatchVariable": "FilenameExtension", + "rulesEngineOperator": "Equal", + "rulesEngineMatchValue": [ + "jpg" + ], + "transforms": [ + "Lowercase" + ] + } + ] + } + ] + } + } + } + } +} diff --git a/specification/frontdoor/resource-manager/Microsoft.Network/stable/2020-05-01/examples/FrontdoorRulesEngineDelete.json b/specification/frontdoor/resource-manager/Microsoft.Network/stable/2020-05-01/examples/FrontdoorRulesEngineDelete.json new file mode 100644 index 000000000000..ada2d76a427e --- /dev/null +++ b/specification/frontdoor/resource-manager/Microsoft.Network/stable/2020-05-01/examples/FrontdoorRulesEngineDelete.json @@ -0,0 +1,13 @@ +{ + "parameters": { + "api-version": "2020-05-01", + "subscriptionId": "subid", + "resourceGroupName": "rg1", + "frontDoorName": "frontDoor1", + "rulesEngineName": "rulesEngine1" + }, + "responses": { + "202": {}, + "204": {} + } +} diff --git a/specification/frontdoor/resource-manager/Microsoft.Network/stable/2020-05-01/examples/FrontdoorRulesEngineGet.json b/specification/frontdoor/resource-manager/Microsoft.Network/stable/2020-05-01/examples/FrontdoorRulesEngineGet.json new file mode 100644 index 000000000000..8bf5357d954c --- /dev/null +++ b/specification/frontdoor/resource-manager/Microsoft.Network/stable/2020-05-01/examples/FrontdoorRulesEngineGet.json @@ -0,0 +1,105 @@ +{ + "parameters": { + "api-version": "2020-05-01", + "subscriptionId": "subid", + "resourceGroupName": "rg1", + "frontDoorName": "frontDoor1", + "rulesEngineName": "rulesEngine1" + }, + "responses": { + "200": { + "body": { + "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoors/frontDoor1/rulesEngines/rulesEngine1", + "name": "rulesEngine1", + "properties": { + "rules": [ + { + "name": "Rule1", + "priority": 1, + "action": { + "routeConfigurationOverride": { + "@odata.type": "#Microsoft.Azure.FrontDoor.Models.FrontdoorRedirectConfiguration", + "redirectType": "Moved", + "redirectProtocol": "HttpsOnly", + "customHost": "www.bing.com", + "customPath": "/api", + "customFragment": "fragment", + "customQueryString": "a=b" + } + }, + "matchConditions": [ + { + "rulesEngineMatchVariable": "RemoteAddr", + "rulesEngineOperator": "GeoMatch", + "rulesEngineMatchValue": [ + "CH" + ] + } + ], + "matchProcessingBehavior": "Stop" + }, + { + "name": "Rule2", + "priority": 2, + "action": { + "responseHeaderActions": [ + { + "headerActionType": "Overwrite", + "headerName": "Cache-Control", + "value": "public, max-age=31536000" + } + ] + }, + "matchConditions": [ + { + "rulesEngineMatchVariable": "RequestFilenameExtension", + "rulesEngineOperator": "Equal", + "rulesEngineMatchValue": [ + "jpg" + ], + "transforms": [ + "Lowercase" + ] + } + ] + }, + { + "name": "Rule3", + "priority": 3, + "action": { + "routeConfigurationOverride": { + "@odata.type": "#Microsoft.Azure.FrontDoor.Models.FrontdoorForwardingConfiguration", + "customForwardingPath": null, + "forwardingProtocol": "HttpsOnly", + "cacheConfiguration": { + "queryParameterStripDirective": "StripOnly", + "queryParameters": "a=b,p=q", + "dynamicCompression": "Disabled", + "cacheDuration": "P1DT12H20M30S" + }, + "backendPool": { + "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoors/frontDoor1/backendPools/backendPool1" + } + } + }, + "matchConditions": [ + { + "rulesEngineMatchVariable": "RequestHeader", + "rulesEngineOperator": "Equal", + "rulesEngineMatchValue": [ + "allowoverride" + ], + "transforms": [ + "Lowercase" + ], + "negateCondition": false, + "selector": "Rules-Engine-Route-Forward" + } + ] + } + ] + } + } + } + } +} diff --git a/specification/frontdoor/resource-manager/Microsoft.Network/stable/2020-05-01/examples/FrontdoorRulesEngineList.json b/specification/frontdoor/resource-manager/Microsoft.Network/stable/2020-05-01/examples/FrontdoorRulesEngineList.json new file mode 100644 index 000000000000..367abe9f1440 --- /dev/null +++ b/specification/frontdoor/resource-manager/Microsoft.Network/stable/2020-05-01/examples/FrontdoorRulesEngineList.json @@ -0,0 +1,108 @@ +{ + "parameters": { + "api-version": "2020-05-01", + "subscriptionId": "subid", + "resourceGroupName": "rg1", + "frontDoorName": "frontDoor1" + }, + "responses": { + "200": { + "body": { + "value": [ + { + "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoors/frontDoor1/rulesEngines/rulesEngine1", + "name": "rulesEngine1", + "properties": { + "rules": [ + { + "name": "Rule1", + "priority": 1, + "action": { + "routeConfigurationOverride": { + "@odata.type": "#Microsoft.Azure.FrontDoor.Models.FrontdoorRedirectConfiguration", + "redirectType": "Moved", + "redirectProtocol": "HttpsOnly", + "customHost": "www.bing.com", + "customPath": "/api", + "customFragment": "fragment", + "customQueryString": "a=b" + } + }, + "matchConditions": [ + { + "rulesEngineMatchVariable": "RemoteAddr", + "rulesEngineOperator": "GeoMatch", + "rulesEngineMatchValue": [ + "CH" + ] + } + ], + "matchProcessingBehavior": "Stop" + }, + { + "name": "Rule2", + "priority": 2, + "action": { + "responseHeaderActions": [ + { + "headerActionType": "Overwrite", + "headerName": "Cache-Control", + "value": "public, max-age=31536000" + } + ] + }, + "matchConditions": [ + { + "rulesEngineMatchVariable": "RequestFilenameExtension", + "rulesEngineOperator": "Equal", + "rulesEngineMatchValue": [ + "jpg" + ], + "transforms": [ + "Lowercase" + ] + } + ] + }, + { + "name": "Rule3", + "priority": 3, + "action": { + "routeConfigurationOverride": { + "@odata.type": "#Microsoft.Azure.FrontDoor.Models.FrontdoorForwardingConfiguration", + "customForwardingPath": null, + "forwardingProtocol": "HttpsOnly", + "cacheConfiguration": { + "queryParameterStripDirective": "StripOnly", + "queryParameters": "a=b,p=q", + "dynamicCompression": "Disabled", + "cacheDuration": "P1DT12H20M30S" + }, + "backendPool": { + "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoors/frontDoor1/backendPools/backendPool1" + } + } + }, + "matchConditions": [ + { + "rulesEngineMatchVariable": "RequestHeader", + "rulesEngineOperator": "Equal", + "rulesEngineMatchValue": [ + "allowoverride" + ], + "transforms": [ + "Lowercase" + ], + "negateCondition": false, + "selector": "Rules-Engine-Route-Forward" + } + ] + } + ] + } + } + ] + } + } + } +} diff --git a/specification/frontdoor/resource-manager/Microsoft.Network/stable/2020-05-01/examples/FrontdoorValidateCustomDomain.json b/specification/frontdoor/resource-manager/Microsoft.Network/stable/2020-05-01/examples/FrontdoorValidateCustomDomain.json new file mode 100644 index 000000000000..e1146b680bc3 --- /dev/null +++ b/specification/frontdoor/resource-manager/Microsoft.Network/stable/2020-05-01/examples/FrontdoorValidateCustomDomain.json @@ -0,0 +1,20 @@ +{ + "parameters": { + "api-version": "2020-05-01", + "subscriptionId": "subid", + "resourceGroupName": "rg1", + "frontDoorName": "frontDoor1", + "customDomainProperties": { + "hostName": "www.someDomain.com" + } + }, + "responses": { + "200": { + "body": { + "customDomainValidated": true, + "message": null, + "reason": null + } + } + } +} diff --git a/specification/frontdoor/resource-manager/Microsoft.Network/stable/2020-05-01/frontdoor.json b/specification/frontdoor/resource-manager/Microsoft.Network/stable/2020-05-01/frontdoor.json new file mode 100644 index 000000000000..9358ce717d11 --- /dev/null +++ b/specification/frontdoor/resource-manager/Microsoft.Network/stable/2020-05-01/frontdoor.json @@ -0,0 +1,2348 @@ +{ + "swagger": "2.0", + "info": { + "version": "2020-05-01", + "title": "FrontDoorManagementClient", + "description": "Use these APIs to manage Azure Front Door resources through the Azure Resource Manager. You must make sure that requests made to these resources are secure." + }, + "host": "management.azure.com", + "schemes": [ + "https" + ], + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "security": [ + { + "azure_auth": [ + "user_impersonation" + ] + } + ], + "securityDefinitions": { + "azure_auth": { + "type": "oauth2", + "authorizationUrl": "https://login.microsoftonline.com/common/oauth2/authorize", + "flow": "implicit", + "description": "Azure Active Directory OAuth2 Flow", + "scopes": { + "user_impersonation": "impersonate your user account" + } + } + }, + "paths": { + "/providers/Microsoft.Network/checkFrontDoorNameAvailability": { + "post": { + "tags": [ + "CheckFrontDoorNameAvailability" + ], + "description": "Check the availability of a Front Door resource name.", + "operationId": "FrontDoorNameAvailability_Check", + "x-ms-examples": { + "CheckNameAvailability": { + "$ref": "./examples/CheckFrontdoorNameAvailability.json" + } + }, + "parameters": [ + { + "name": "checkFrontDoorNameAvailabilityInput", + "in": "body", + "description": "Input to check.", + "required": true, + "schema": { + "$ref": "#/definitions/CheckNameAvailabilityInput" + } + }, + { + "$ref": "./network.json#/parameters/ApiVersionParameter" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/CheckNameAvailabilityOutput" + } + }, + "default": { + "description": "Front Door error response describing why the operation failed.", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + } + } + } + }, + "/subscriptions/{subscriptionId}/providers/Microsoft.Network/checkFrontDoorNameAvailability": { + "post": { + "tags": [ + "CheckFrontDoorNameAvailabilityWithSubscription" + ], + "description": "Check the availability of a Front Door subdomain.", + "operationId": "FrontDoorNameAvailabilityWithSubscription_Check", + "x-ms-examples": { + "CheckNameAvailabilityWithSubscription": { + "$ref": "./examples/CheckFrontdoorNameAvailabilityWithSubscription.json" + } + }, + "parameters": [ + { + "name": "checkFrontDoorNameAvailabilityInput", + "in": "body", + "description": "Input to check.", + "required": true, + "schema": { + "$ref": "#/definitions/CheckNameAvailabilityInput" + } + }, + { + "$ref": "./network.json#/parameters/SubscriptionIdParameter" + }, + { + "$ref": "./network.json#/parameters/ApiVersionParameter" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/CheckNameAvailabilityOutput" + } + }, + "default": { + "description": "Front Door error response describing why the operation failed.", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + } + } + } + }, + "/subscriptions/{subscriptionId}/providers/Microsoft.Network/frontDoors": { + "get": { + "tags": [ + "FrontDoors" + ], + "description": "Lists all of the Front Doors within an Azure subscription.", + "operationId": "FrontDoors_List", + "parameters": [ + { + "$ref": "./network.json#/parameters/SubscriptionIdParameter" + }, + { + "$ref": "./network.json#/parameters/ApiVersionParameter" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/FrontDoorListResult" + } + }, + "default": { + "description": "Front Door error response describing why the operation failed.", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + } + }, + "x-ms-pageable": { + "nextLinkName": "nextLink" + }, + "x-ms-examples": { + "List all Front Doors": { + "$ref": "./examples/FrontdoorListAll.json" + } + } + } + }, + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/frontDoors": { + "get": { + "tags": [ + "FrontDoors" + ], + "description": "Lists all of the Front Doors within a resource group under a subscription.", + "operationId": "FrontDoors_ListByResourceGroup", + "parameters": [ + { + "$ref": "./network.json#/parameters/SubscriptionIdParameter" + }, + { + "$ref": "#/parameters/resourceGroupNameParameter" + }, + { + "$ref": "./network.json#/parameters/ApiVersionParameter" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/FrontDoorListResult" + } + }, + "default": { + "description": "Front Door error response describing why the operation failed.", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + } + }, + "x-ms-pageable": { + "nextLinkName": "nextLink" + }, + "x-ms-examples": { + "List Front Doors in a Resource Group": { + "$ref": "./examples/FrontdoorList.json" + } + } + } + }, + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/frontDoors/{frontDoorName}": { + "get": { + "tags": [ + "FrontDoors" + ], + "description": "Gets a Front Door with the specified Front Door name under the specified subscription and resource group.", + "operationId": "FrontDoors_Get", + "parameters": [ + { + "$ref": "./network.json#/parameters/SubscriptionIdParameter" + }, + { + "$ref": "#/parameters/resourceGroupNameParameter" + }, + { + "$ref": "#/parameters/frontDoorNameParameter" + }, + { + "$ref": "./network.json#/parameters/ApiVersionParameter" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/FrontDoor" + } + }, + "default": { + "description": "Front Door error response describing why the operation failed.", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + } + }, + "x-ms-examples": { + "Get Front Door": { + "$ref": "./examples/FrontdoorGet.json" + } + } + }, + "put": { + "tags": [ + "FrontDoors" + ], + "description": "Creates a new Front Door with a Front Door name under the specified subscription and resource group.", + "operationId": "FrontDoors_CreateOrUpdate", + "parameters": [ + { + "$ref": "./network.json#/parameters/SubscriptionIdParameter" + }, + { + "$ref": "#/parameters/resourceGroupNameParameter" + }, + { + "$ref": "#/parameters/frontDoorNameParameter" + }, + { + "description": "Front Door properties needed to create a new Front Door.", + "in": "body", + "name": "frontDoorParameters", + "required": true, + "schema": { + "$ref": "#/definitions/FrontDoor" + } + }, + { + "$ref": "./network.json#/parameters/ApiVersionParameter" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/FrontDoor" + } + }, + "201": { + "description": "Created", + "schema": { + "$ref": "#/definitions/FrontDoor" + } + }, + "202": { + "description": "Accepted", + "schema": { + "$ref": "#/definitions/FrontDoor" + } + }, + "default": { + "description": "Front Door error response describing why the operation failed.", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + } + }, + "x-ms-examples": { + "Create or update specific Front Door": { + "$ref": "./examples/FrontdoorCreate.json" + } + }, + "x-ms-long-running-operation": true, + "x-ms-long-running-operation-options": { + "final-state-via": "azure-async-operation" + } + }, + "delete": { + "tags": [ + "FrontDoors" + ], + "description": "Deletes an existing Front Door with the specified parameters.", + "operationId": "FrontDoors_Delete", + "parameters": [ + { + "$ref": "./network.json#/parameters/SubscriptionIdParameter" + }, + { + "$ref": "#/parameters/resourceGroupNameParameter" + }, + { + "$ref": "#/parameters/frontDoorNameParameter" + }, + { + "$ref": "./network.json#/parameters/ApiVersionParameter" + } + ], + "responses": { + "202": { + "description": "Accepted" + }, + "204": { + "description": "No Content" + }, + "default": { + "description": "Front Door error response describing why the operation failed.", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + } + }, + "x-ms-examples": { + "Delete Front Door": { + "$ref": "./examples/FrontdoorDelete.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/frontDoors/{frontDoorName}/frontendEndpoints": { + "get": { + "tags": [ + "FrontDoors" + ], + "description": "Lists all of the frontend endpoints within a Front Door.", + "operationId": "FrontendEndpoints_ListByFrontDoor", + "parameters": [ + { + "$ref": "./network.json#/parameters/SubscriptionIdParameter" + }, + { + "$ref": "#/parameters/resourceGroupNameParameter" + }, + { + "$ref": "#/parameters/frontDoorNameParameter" + }, + { + "$ref": "./network.json#/parameters/ApiVersionParameter" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/FrontendEndpointsListResult" + } + }, + "default": { + "description": "Front Door error response describing why the operation failed.", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + } + }, + "x-ms-pageable": { + "nextLinkName": "nextLink" + }, + "x-ms-examples": { + "List Frontend endpoints in a Front Door": { + "$ref": "./examples/FrontdoorFrontendEndpointList.json" + } + } + } + }, + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/frontDoors/{frontDoorName}/frontendEndpoints/{frontendEndpointName}": { + "get": { + "tags": [ + "FrontDoors" + ], + "description": "Gets a Frontend endpoint with the specified name within the specified Front Door.", + "operationId": "FrontendEndpoints_Get", + "parameters": [ + { + "$ref": "./network.json#/parameters/SubscriptionIdParameter" + }, + { + "$ref": "#/parameters/resourceGroupNameParameter" + }, + { + "$ref": "#/parameters/frontDoorNameParameter" + }, + { + "$ref": "#/parameters/frontendEndpointNameParameter" + }, + { + "$ref": "./network.json#/parameters/ApiVersionParameter" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/FrontendEndpoint" + } + }, + "default": { + "description": "Front Door error response describing why the operation failed.", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + } + }, + "x-ms-examples": { + "Get Frontend Endpoint": { + "$ref": "./examples/FrontdoorFrontendEndpointGet.json" + } + } + } + }, + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/frontDoors/{frontDoorName}/purge": { + "post": { + "tags": [ + "FrontDoors" + ], + "description": "Removes a content from Front Door.", + "operationId": "Endpoints_PurgeContent", + "parameters": [ + { + "$ref": "./network.json#/parameters/SubscriptionIdParameter" + }, + { + "$ref": "#/parameters/resourceGroupNameParameter" + }, + { + "$ref": "#/parameters/frontDoorNameParameter" + }, + { + "name": "contentFilePaths", + "in": "body", + "description": "The path to the content to be purged. Path can be a full URL, e.g. '/pictures/city.png' which removes a single file, or a directory with a wildcard, e.g. '/pictures/*' which removes all folders and files in the directory.", + "required": true, + "schema": { + "$ref": "#/definitions/PurgeParameters" + } + }, + { + "$ref": "./network.json#/parameters/ApiVersionParameter" + } + ], + "responses": { + "200": { + "description": "OK" + }, + "202": { + "description": "Accepted" + }, + "default": { + "description": "Front Door error response describing why the operation failed.", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + } + }, + "x-ms-examples": { + "Purge content from Front Door": { + "$ref": "./examples/FrontdoorPurgeContent.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/frontDoors/{frontDoorName}/frontendEndpoints/{frontendEndpointName}/enableHttps": { + "post": { + "tags": [ + "FrontDoors" + ], + "description": "Enables a frontendEndpoint for HTTPS traffic", + "operationId": "FrontendEndpoints_EnableHttps", + "x-ms-examples": { + "FrontendEndpoints_EnableHttps": { + "$ref": "./examples/FrontdoorEnableHttps.json" + } + }, + "parameters": [ + { + "$ref": "./network.json#/parameters/SubscriptionIdParameter" + }, + { + "$ref": "#/parameters/resourceGroupNameParameter" + }, + { + "$ref": "#/parameters/frontDoorNameParameter" + }, + { + "$ref": "#/parameters/frontendEndpointNameParameter" + }, + { + "name": "customHttpsConfiguration", + "in": "body", + "description": "The configuration specifying how to enable HTTPS", + "required": true, + "schema": { + "$ref": "#/definitions/CustomHttpsConfiguration" + } + }, + { + "$ref": "./network.json#/parameters/ApiVersionParameter" + } + ], + "responses": { + "200": { + "description": "OK" + }, + "202": { + "description": "Accepted" + }, + "default": { + "description": "Front Door error response describing why the operation failed.", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + } + }, + "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/frontDoors/{frontDoorName}/frontendEndpoints/{frontendEndpointName}/disableHttps": { + "post": { + "tags": [ + "FrontDoors" + ], + "description": "Disables a frontendEndpoint for HTTPS traffic", + "operationId": "FrontendEndpoints_DisableHttps", + "x-ms-examples": { + "FrontendEndpoints_DisableHttps": { + "$ref": "./examples/FrontdoorDisableHttps.json" + } + }, + "parameters": [ + { + "$ref": "./network.json#/parameters/SubscriptionIdParameter" + }, + { + "$ref": "#/parameters/resourceGroupNameParameter" + }, + { + "$ref": "#/parameters/frontDoorNameParameter" + }, + { + "$ref": "#/parameters/frontendEndpointNameParameter" + }, + { + "$ref": "./network.json#/parameters/ApiVersionParameter" + } + ], + "responses": { + "200": { + "description": "OK" + }, + "202": { + "description": "Accepted" + }, + "default": { + "description": "Front Door error response describing why the operation failed.", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + } + }, + "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/frontDoors/{frontDoorName}/validateCustomDomain": { + "post": { + "tags": [ + "FrontDoors" + ], + "description": "Validates the custom domain mapping to ensure it maps to the correct Front Door endpoint in DNS.", + "operationId": "FrontDoors_ValidateCustomDomain", + "x-ms-examples": { + "FrontDoor_ValidateCustomDomain": { + "$ref": "./examples/FrontdoorValidateCustomDomain.json" + } + }, + "parameters": [ + { + "$ref": "./network.json#/parameters/SubscriptionIdParameter" + }, + { + "$ref": "#/parameters/resourceGroupNameParameter" + }, + { + "$ref": "#/parameters/frontDoorNameParameter" + }, + { + "$ref": "./network.json#/parameters/ApiVersionParameter" + }, + { + "name": "customDomainProperties", + "in": "body", + "description": "Custom domain to be validated.", + "required": true, + "schema": { + "$ref": "#/definitions/ValidateCustomDomainInput" + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/ValidateCustomDomainOutput" + } + }, + "default": { + "description": "Front Door error response describing why the operation failed.", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + } + } + } + }, + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/frontDoors/{frontDoorName}/rulesEngines": { + "get": { + "tags": [ + "FrontDoors" + ], + "description": "Lists all of the Rules Engine Configurations within a Front Door.", + "operationId": "RulesEngines_ListByFrontDoor", + "parameters": [ + { + "$ref": "./network.json#/parameters/SubscriptionIdParameter" + }, + { + "$ref": "#/parameters/resourceGroupNameParameter" + }, + { + "$ref": "#/parameters/frontDoorNameParameter" + }, + { + "$ref": "./network.json#/parameters/ApiVersionParameter" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/RulesEngineListResult" + } + }, + "default": { + "description": "Front Door error response describing why the operation failed.", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + } + }, + "x-ms-pageable": { + "nextLinkName": "nextLink" + }, + "x-ms-examples": { + "List Rules Engine Configurations in a Front Door": { + "$ref": "./examples/FrontdoorRulesEngineList.json" + } + } + } + }, + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/frontDoors/{frontDoorName}/rulesEngines/{rulesEngineName}": { + "get": { + "tags": [ + "FrontDoors" + ], + "description": "Gets a Rules Engine Configuration with the specified name within the specified Front Door.", + "operationId": "RulesEngines_Get", + "parameters": [ + { + "$ref": "./network.json#/parameters/SubscriptionIdParameter" + }, + { + "$ref": "#/parameters/resourceGroupNameParameter" + }, + { + "$ref": "#/parameters/frontDoorNameParameter" + }, + { + "$ref": "#/parameters/rulesEngineNameParameter" + }, + { + "$ref": "./network.json#/parameters/ApiVersionParameter" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/RulesEngine" + } + }, + "default": { + "description": "Front Door error response describing why the operation failed.", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + } + }, + "x-ms-examples": { + "Get Rules Engine Configuration": { + "$ref": "./examples/FrontdoorRulesEngineGet.json" + } + } + }, + "put": { + "tags": [ + "FrontDoors" + ], + "description": "Creates a new Rules Engine Configuration with the specified name within the specified Front Door.", + "operationId": "RulesEngines_CreateOrUpdate", + "parameters": [ + { + "$ref": "./network.json#/parameters/SubscriptionIdParameter" + }, + { + "$ref": "#/parameters/resourceGroupNameParameter" + }, + { + "$ref": "#/parameters/frontDoorNameParameter" + }, + { + "$ref": "#/parameters/rulesEngineNameParameter" + }, + { + "description": "Rules Engine Configuration properties needed to create a new Rules Engine Configuration.", + "in": "body", + "name": "rulesEngineParameters", + "required": true, + "schema": { + "$ref": "#/definitions/RulesEngine" + } + }, + { + "$ref": "./network.json#/parameters/ApiVersionParameter" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/RulesEngine" + } + }, + "201": { + "description": "Created", + "schema": { + "$ref": "#/definitions/RulesEngine" + } + }, + "202": { + "description": "Accepted", + "schema": { + "$ref": "#/definitions/RulesEngine" + } + }, + "default": { + "description": "Front Door error response describing why the operation failed.", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + } + }, + "x-ms-examples": { + "Create or update a specific Rules Engine Configuration": { + "$ref": "./examples/FrontdoorRulesEngineCreate.json" + } + }, + "x-ms-long-running-operation": true, + "x-ms-long-running-operation-options": { + "final-state-via": "azure-async-operation" + } + }, + "delete": { + "tags": [ + "FrontDoors" + ], + "description": "Deletes an existing Rules Engine Configuration with the specified parameters.", + "operationId": "RulesEngines_Delete", + "parameters": [ + { + "$ref": "./network.json#/parameters/SubscriptionIdParameter" + }, + { + "$ref": "#/parameters/resourceGroupNameParameter" + }, + { + "$ref": "#/parameters/frontDoorNameParameter" + }, + { + "$ref": "#/parameters/rulesEngineNameParameter" + }, + { + "$ref": "./network.json#/parameters/ApiVersionParameter" + } + ], + "responses": { + "202": { + "description": "Accepted" + }, + "204": { + "description": "No Content" + }, + "default": { + "description": "Front Door error response describing why the operation failed.", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + } + }, + "x-ms-examples": { + "Delete Rules Engine Configuration": { + "$ref": "./examples/FrontdoorRulesEngineDelete.json" + } + }, + "x-ms-long-running-operation": true, + "x-ms-long-running-operation-options": { + "final-state-via": "azure-async-operation" + } + } + } + }, + "definitions": { + "FrontDoor": { + "properties": { + "properties": { + "description": "Properties of the Front Door Load Balancer", + "x-ms-client-flatten": true, + "$ref": "#/definitions/FrontDoorProperties" + } + }, + "allOf": [ + { + "$ref": "./network.json#/definitions/Resource" + } + ], + "description": "Front Door represents a collection of backend endpoints to route traffic to along with rules that specify how traffic is sent there." + }, + "FrontDoorUpdateParameters": { + "description": "The properties needed to update a Front Door", + "properties": { + "friendlyName": { + "description": "A friendly name for the frontDoor", + "type": "string" + }, + "routingRules": { + "description": "Routing rules associated with this Front Door.", + "type": "array", + "items": { + "description": "A routing rule", + "$ref": "#/definitions/RoutingRule" + } + }, + "loadBalancingSettings": { + "description": "Load balancing settings associated with this Front Door instance.", + "type": "array", + "items": { + "description": "A load balancing settings", + "$ref": "#/definitions/LoadBalancingSettingsModel" + } + }, + "healthProbeSettings": { + "description": "Health probe settings associated with this Front Door instance.", + "type": "array", + "items": { + "description": "A health probe settings", + "$ref": "#/definitions/HealthProbeSettingsModel" + } + }, + "backendPools": { + "description": "Backend pools available to routing rules.", + "type": "array", + "items": { + "description": "A backend pool", + "$ref": "#/definitions/BackendPool" + } + }, + "frontendEndpoints": { + "description": "Frontend endpoints available to routing rules.", + "type": "array", + "items": { + "description": "A frontend endpoint", + "$ref": "#/definitions/FrontendEndpoint" + } + }, + "backendPoolsSettings": { + "description": "Settings for all backendPools", + "$ref": "#/definitions/BackendPoolsSettings" + }, + "enabledState": { + "description": "Operational status of the Front Door load balancer. Permitted values are 'Enabled' or 'Disabled'", + "enum": [ + "Enabled", + "Disabled" + ], + "type": "string", + "x-ms-enum": { + "name": "FrontDoorEnabledState", + "modelAsString": true + } + } + } + }, + "FrontDoorProperties": { + "description": "The JSON object that contains the properties required to create an endpoint.", + "allOf": [ + { + "$ref": "#/definitions/FrontDoorUpdateParameters" + } + ], + "properties": { + "resourceState": { + "description": "Resource status of the Front Door.", + "$ref": "#/definitions/ResourceState" + }, + "provisioningState": { + "readOnly": true, + "type": "string", + "description": "Provisioning state of the Front Door." + }, + "cname": { + "readOnly": true, + "type": "string", + "description": "The host that each frontendEndpoint must CNAME to." + }, + "frontdoorId": { + "readOnly": true, + "type": "string", + "description": "The Id of the frontdoor." + }, + "rulesEngines": { + "readOnly": true, + "description": "Rules Engine Configurations available to routing rules.", + "type": "array", + "items": { + "description": "A rules engine configuration.", + "$ref": "#/definitions/RulesEngine" + } + } + } + }, + "FrontDoorListResult": { + "description": "Result of the request to list Front Doors. It contains a list of Front Door objects and a URL link to get the next set of results.", + "properties": { + "value": { + "type": "array", + "readOnly": true, + "items": { + "$ref": "#/definitions/FrontDoor" + }, + "description": "List of Front Doors within a resource group." + }, + "nextLink": { + "type": "string", + "description": "URL to get the next set of Front Door objects if there are any." + } + } + }, + "PurgeParameters": { + "type": "object", + "description": "Parameters required for content purge.", + "required": [ + "contentPaths" + ], + "properties": { + "contentPaths": { + "description": "The path to the content to be purged. Can describe a file path or a wild card directory.", + "type": "array", + "items": { + "type": "string" + } + } + } + }, + "RoutingRule": { + "properties": { + "properties": { + "description": "Properties of the Front Door Routing Rule", + "x-ms-client-flatten": true, + "$ref": "#/definitions/RoutingRuleProperties" + }, + "name": { + "type": "string", + "description": "Resource name." + }, + "type": { + "type": "string", + "readOnly": true, + "description": "Resource type." + } + }, + "allOf": [ + { + "$ref": "./network.json#/definitions/SubResource" + } + ], + "description": "A routing rule represents a specification for traffic to treat and where to send it, along with health probe information." + }, + "RoutingRuleProperties": { + "description": "The JSON object that contains the properties required to create a routing rule.", + "allOf": [ + { + "$ref": "#/definitions/RoutingRuleUpdateParameters" + } + ], + "properties": { + "resourceState": { + "description": "Resource status.", + "$ref": "#/definitions/ResourceState" + } + } + }, + "RoutingRuleListResult": { + "description": "Result of the request to list Routing Rules. It contains a list of Routing Rule objects and a URL link to get the next set of results.", + "properties": { + "value": { + "type": "array", + "readOnly": true, + "items": { + "$ref": "#/definitions/RoutingRule" + }, + "description": "List of Routing Rules within a Front Door." + }, + "nextLink": { + "type": "string", + "description": "URL to get the next set of RoutingRule objects if there are any." + } + } + }, + "RoutingRuleUpdateParameters": { + "description": "Routing rules to apply to an endpoint", + "type": "object", + "properties": { + "frontendEndpoints": { + "description": "Frontend endpoints associated with this rule", + "type": "array", + "items": { + "description": "A reference to a frontend endpoint", + "$ref": "./network.json#/definitions/SubResource" + } + }, + "acceptedProtocols": { + "description": "Protocol schemes to match for this rule", + "type": "array", + "items": { + "type": "string", + "description": "Accepted protocol schemes.", + "enum": [ + "Http", + "Https" + ], + "x-ms-enum": { + "name": "FrontDoorProtocol", + "modelAsString": true + } + } + }, + "patternsToMatch": { + "description": "The route patterns of the rule.", + "type": "array", + "items": { + "type": "string", + "description": "A route pattern of the rule. Must not have any * except possibly after the final / at the end of the path." + } + }, + "enabledState": { + "description": "Whether to enable use of this rule. Permitted values are 'Enabled' or 'Disabled'", + "enum": [ + "Enabled", + "Disabled" + ], + "type": "string", + "x-ms-enum": { + "name": "routingRuleEnabledState", + "modelAsString": true + } + }, + "routeConfiguration": { + "description": "A reference to the routing configuration.", + "$ref": "#/definitions/RouteConfiguration" + }, + "rulesEngine": { + "description": "A reference to a specific Rules Engine Configuration to apply to this route.", + "$ref": "./network.json#/definitions/SubResource" + } + } + }, + "RouteConfiguration": { + "discriminator": "@odata.type", + "description": "Base class for all types of Route.", + "properties": { + "@odata.type": { + "type": "string" + } + }, + "required": [ + "@odata.type" + ] + }, + "ForwardingConfiguration": { + "description": "Describes Forwarding Route.", + "x-ms-discriminator-value": "#Microsoft.Azure.FrontDoor.Models.FrontdoorForwardingConfiguration", + "properties": { + "customForwardingPath": { + "description": "A custom path used to rewrite resource paths matched by this rule. Leave empty to use incoming path.", + "type": "string" + }, + "forwardingProtocol": { + "description": "Protocol this rule will use when forwarding traffic to backends.", + "type": "string", + "enum": [ + "HttpOnly", + "HttpsOnly", + "MatchRequest" + ], + "x-ms-enum": { + "name": "FrontDoorForwardingProtocol", + "modelAsString": true + } + }, + "cacheConfiguration": { + "description": "The caching configuration associated with this rule.", + "$ref": "#/definitions/CacheConfiguration" + }, + "backendPool": { + "description": "A reference to the BackendPool which this rule routes to.", + "$ref": "./network.json#/definitions/SubResource" + } + }, + "allOf": [ + { + "$ref": "#/definitions/RouteConfiguration" + } + ] + }, + "RedirectConfiguration": { + "description": "Describes Redirect Route.", + "x-ms-discriminator-value": "#Microsoft.Azure.FrontDoor.Models.FrontdoorRedirectConfiguration", + "properties": { + "redirectType": { + "description": "The redirect type the rule will use when redirecting traffic.", + "type": "string", + "enum": [ + "Moved", + "Found", + "TemporaryRedirect", + "PermanentRedirect" + ], + "x-ms-enum": { + "name": "FrontDoorRedirectType", + "modelAsString": true + } + }, + "redirectProtocol": { + "description": "The protocol of the destination to where the traffic is redirected", + "type": "string", + "enum": [ + "HttpOnly", + "HttpsOnly", + "MatchRequest" + ], + "x-ms-enum": { + "name": "FrontDoorRedirectProtocol", + "modelAsString": true + } + }, + "customHost": { + "type": "string", + "description": "Host to redirect. Leave empty to use the incoming host as the destination host." + }, + "customPath": { + "type": "string", + "description": "The full path to redirect. Path cannot be empty and must start with /. Leave empty to use the incoming path as destination path." + }, + "customFragment": { + "type": "string", + "description": "Fragment to add to the redirect URL. Fragment is the part of the URL that comes after #. Do not include the #." + }, + "customQueryString": { + "description": "The set of query strings to be placed in the redirect URL. Setting this value would replace any existing query string; leave empty to preserve the incoming query string. Query string must be in = format. The first ? and & will be added automatically so do not include them in the front, but do separate multiple query strings with &.", + "type": "string" + } + }, + "allOf": [ + { + "$ref": "#/definitions/RouteConfiguration" + } + ] + }, + "Backend": { + "description": "Backend address of a frontDoor load balancer.", + "type": "object", + "properties": { + "address": { + "description": "Location of the backend (IP address or FQDN)", + "type": "string" + }, + "privateLinkAlias": { + "description": "The Alias of the Private Link resource. Populating this optional field indicates that this backend is 'Private'", + "type": "string" + }, + "privateLinkResourceId": { + "description": "The Resource Id of the Private Link resource. Populating this optional field indicates that this backend is 'Private'", + "type": "string" + }, + "privateLinkLocation": { + "description": "The location of the Private Link resource. Required only if 'privateLinkResourceId' is populated", + "type": "string" + }, + "privateEndpointStatus": { + "description": "The Approval status for the connection to the Private Link", + "type": "string", + "readOnly": true, + "enum": [ + "Pending", + "Approved", + "Rejected", + "Disconnected", + "Timeout" + ], + "x-ms-enum": { + "name": "PrivateEndpointStatus", + "modelAsString": false + } + }, + "privateLinkApprovalMessage": { + "description": "A custom message to be included in the approval request to connect to the Private Link", + "type": "string" + }, + "httpPort": { + "description": "The HTTP TCP port number. Must be between 1 and 65535.", + "type": "integer", + "maximum": 65535, + "exclusiveMaximum": false, + "minimum": 1, + "exclusiveMinimum": false + }, + "httpsPort": { + "description": "The HTTPS TCP port number. Must be between 1 and 65535.", + "type": "integer", + "maximum": 65535, + "exclusiveMaximum": false, + "minimum": 1, + "exclusiveMinimum": false + }, + "enabledState": { + "description": "Whether to enable use of this backend. Permitted values are 'Enabled' or 'Disabled'", + "enum": [ + "Enabled", + "Disabled" + ], + "type": "string", + "x-ms-enum": { + "name": "backendEnabledState", + "modelAsString": true + } + }, + "priority": { + "description": "Priority to use for load balancing. Higher priorities will not be used for load balancing if any lower priority backend is healthy.", + "type": "integer", + "maximum": 5, + "minimum": 1 + }, + "weight": { + "description": "Weight of this endpoint for load balancing purposes.", + "type": "integer", + "maximum": 1000, + "minimum": 1 + }, + "backendHostHeader": { + "description": "The value to use as the host header sent to the backend. If blank or unspecified, this defaults to the incoming host.", + "type": "string" + } + } + }, + "LoadBalancingSettingsModel": { + "properties": { + "properties": { + "description": "Properties of the load balancing settings", + "x-ms-client-flatten": true, + "$ref": "#/definitions/LoadBalancingSettingsProperties" + }, + "name": { + "type": "string", + "description": "Resource name." + }, + "type": { + "type": "string", + "readOnly": true, + "description": "Resource type." + } + }, + "allOf": [ + { + "$ref": "./network.json#/definitions/SubResource" + } + ], + "description": "Load balancing settings for a backend pool" + }, + "LoadBalancingSettingsProperties": { + "description": "The JSON object that contains the properties required to create load balancing settings", + "allOf": [ + { + "$ref": "#/definitions/LoadBalancingSettingsUpdateParameters" + } + ], + "properties": { + "resourceState": { + "description": "Resource status.", + "$ref": "#/definitions/ResourceState" + } + } + }, + "LoadBalancingSettingsListResult": { + "description": "Result of the request to list load balancing settings. It contains a list of load balancing settings objects and a URL link to get the next set of results.", + "properties": { + "value": { + "type": "array", + "readOnly": true, + "items": { + "$ref": "#/definitions/LoadBalancingSettingsModel" + }, + "description": "List of Backend Pools within a Front Door." + }, + "nextLink": { + "type": "string", + "description": "URL to get the next set of LoadBalancingSettings objects if there are any." + } + } + }, + "LoadBalancingSettingsUpdateParameters": { + "description": "Round-Robin load balancing settings for a backend pool", + "type": "object", + "properties": { + "sampleSize": { + "description": "The number of samples to consider for load balancing decisions", + "type": "integer" + }, + "successfulSamplesRequired": { + "description": "The number of samples within the sample period that must succeed", + "type": "integer" + }, + "additionalLatencyMilliseconds": { + "description": "The additional latency in milliseconds for probes to fall into the lowest latency bucket", + "type": "integer" + } + } + }, + "HealthProbeSettingsModel": { + "properties": { + "properties": { + "description": "Properties of the health probe settings", + "x-ms-client-flatten": true, + "$ref": "#/definitions/HealthProbeSettingsProperties" + }, + "name": { + "type": "string", + "description": "Resource name." + }, + "type": { + "type": "string", + "readOnly": true, + "description": "Resource type." + } + }, + "allOf": [ + { + "$ref": "./network.json#/definitions/SubResource" + } + ], + "description": "Load balancing settings for a backend pool" + }, + "HealthProbeSettingsProperties": { + "description": "The JSON object that contains the properties required to create a health probe settings.", + "allOf": [ + { + "$ref": "#/definitions/HealthProbeSettingsUpdateParameters" + } + ], + "properties": { + "resourceState": { + "description": "Resource status.", + "$ref": "#/definitions/ResourceState" + } + } + }, + "HealthProbeSettingsListResult": { + "description": "Result of the request to list HealthProbeSettings. It contains a list of HealthProbeSettings objects and a URL link to get the next set of results.", + "properties": { + "value": { + "type": "array", + "readOnly": true, + "items": { + "$ref": "#/definitions/HealthProbeSettingsModel" + }, + "description": "List of HealthProbeSettings within a Front Door." + }, + "nextLink": { + "type": "string", + "description": "URL to get the next set of HealthProbeSettings objects if there are any." + } + } + }, + "HealthProbeSettingsUpdateParameters": { + "description": "L7 health probe settings for a backend pool", + "type": "object", + "properties": { + "path": { + "description": "The path to use for the health probe. Default is /", + "type": "string" + }, + "protocol": { + "description": "Protocol scheme to use for this probe", + "type": "string", + "enum": [ + "Http", + "Https" + ], + "x-ms-enum": { + "name": "FrontDoorProtocol", + "modelAsString": true + } + }, + "intervalInSeconds": { + "description": "The number of seconds between health probes.", + "type": "integer" + }, + "healthProbeMethod": { + "description": "Configures which HTTP method to use to probe the backends defined under backendPools.", + "type": "string", + "enum": [ + "GET", + "HEAD" + ], + "x-ms-enum": { + "name": "FrontDoorHealthProbeMethod", + "modelAsString": true + }, + "default": "HEAD" + }, + "enabledState": { + "description": "Whether to enable health probes to be made against backends defined under backendPools. Health probes can only be disabled if there is a single enabled backend in single enabled backend pool.", + "type": "string", + "enum": [ + "Enabled", + "Disabled" + ], + "x-ms-enum": { + "name": "HealthProbeEnabled", + "modelAsString": true + } + } + } + }, + "BackendPool": { + "properties": { + "properties": { + "description": "Properties of the Front Door Backend Pool", + "x-ms-client-flatten": true, + "$ref": "#/definitions/BackendPoolProperties" + }, + "name": { + "type": "string", + "description": "Resource name." + }, + "type": { + "type": "string", + "readOnly": true, + "description": "Resource type." + } + }, + "allOf": [ + { + "$ref": "./network.json#/definitions/SubResource" + } + ], + "description": "A backend pool is a collection of backends that can be routed to." + }, + "BackendPoolUpdateParameters": { + "description": "A collection of backends that can be routed to.", + "type": "object", + "properties": { + "backends": { + "description": "The set of backends for this pool", + "type": "array", + "items": { + "$ref": "#/definitions/Backend" + } + }, + "loadBalancingSettings": { + "description": "Load balancing settings for a backend pool", + "$ref": "./network.json#/definitions/SubResource" + }, + "healthProbeSettings": { + "description": "L7 health probe settings for a backend pool", + "$ref": "./network.json#/definitions/SubResource" + } + } + }, + "BackendPoolProperties": { + "description": "The JSON object that contains the properties required to create a Backend Pool.", + "allOf": [ + { + "$ref": "#/definitions/BackendPoolUpdateParameters" + } + ], + "properties": { + "resourceState": { + "description": "Resource status.", + "$ref": "#/definitions/ResourceState" + } + } + }, + "BackendPoolListResult": { + "description": "Result of the request to list Backend Pools. It contains a list of Backend Pools objects and a URL link to get the next set of results.", + "properties": { + "value": { + "type": "array", + "readOnly": true, + "items": { + "$ref": "#/definitions/BackendPool" + }, + "description": "List of Backend Pools within a Front Door." + }, + "nextLink": { + "type": "string", + "description": "URL to get the next set of BackendPool objects if there are any." + } + } + }, + "CacheConfiguration": { + "description": "Caching settings for a caching-type route. To disable caching, do not provide a cacheConfiguration object.", + "type": "object", + "properties": { + "queryParameterStripDirective": { + "description": "Treatment of URL query terms when forming the cache key.", + "enum": [ + "StripNone", + "StripAll", + "StripOnly", + "StripAllExcept" + ], + "type": "string", + "x-ms-enum": { + "name": "FrontDoorQuery", + "modelAsString": true + } + }, + "queryParameters": { + "description": "query parameters to include or exclude (comma separated).", + "type": "string" + }, + "dynamicCompression": { + "description": "Whether to use dynamic compression for cached content", + "enum": [ + "Enabled", + "Disabled" + ], + "type": "string", + "x-ms-enum": { + "name": "DynamicCompressionEnabled", + "modelAsString": true + } + }, + "cacheDuration": { + "description": "The duration for which the content needs to be cached. Allowed format is in ISO 8601 format (http://en.wikipedia.org/wiki/ISO_8601#Durations). HTTP requires the value to be no more than a year", + "type": "string", + "format": "duration" + } + } + }, + "KeyVaultCertificateSourceParameters": { + "description": "Parameters required for bring-your-own-certification via Key Vault", + "type": "object", + "properties": { + "vault": { + "description": "The Key Vault containing the SSL certificate", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "Resource ID." + } + } + }, + "secretName": { + "type": "string", + "description": "The name of the Key Vault secret representing the full certificate PFX" + }, + "secretVersion": { + "type": "string", + "description": "The version of the Key Vault secret representing the full certificate PFX" + } + } + }, + "FrontDoorCertificateSourceParameters": { + "description": "Parameters required for enabling SSL with Front Door-managed certificates", + "type": "object", + "properties": { + "certificateType": { + "description": "Defines the type of the certificate used for secure connections to a frontendEndpoint", + "enum": [ + "Dedicated" + ], + "type": "string", + "x-ms-enum": { + "name": "FrontDoorCertificateType", + "modelAsString": true + } + } + } + }, + "CustomHttpsConfiguration": { + "description": "Https settings for a domain", + "type": "object", + "required": [ + "minimumTlsVersion", + "certificateSource", + "protocolType" + ], + "properties": { + "certificateSource": { + "description": "Defines the source of the SSL certificate", + "enum": [ + "AzureKeyVault", + "FrontDoor" + ], + "type": "string", + "x-ms-enum": { + "name": "FrontDoorCertificateSource", + "modelAsString": true + } + }, + "protocolType": { + "description": "Defines the TLS extension protocol that is used for secure delivery", + "enum": [ + "ServerNameIndication" + ], + "type": "string", + "x-ms-enum": { + "name": "FrontDoorTlsProtocolType", + "modelAsString": true + } + }, + "minimumTlsVersion": { + "description": "The minimum TLS version required from the clients to establish an SSL handshake with Front Door.", + "enum": [ + "1.0", + "1.2" + ], + "type": "string", + "x-ms-enum": { + "name": "MinimumTLSVersion", + "modelAsString": true + } + }, + "keyVaultCertificateSourceParameters": { + "description": "KeyVault certificate source parameters (if certificateSource=AzureKeyVault)", + "x-ms-client-flatten": true, + "$ref": "#/definitions/KeyVaultCertificateSourceParameters" + }, + "frontDoorCertificateSourceParameters": { + "description": "Parameters required for enabling SSL with Front Door-managed certificates (if certificateSource=FrontDoor)", + "x-ms-client-flatten": true, + "$ref": "#/definitions/FrontDoorCertificateSourceParameters" + } + } + }, + "FrontendEndpoint": { + "properties": { + "properties": { + "description": "Properties of the Frontend endpoint", + "x-ms-client-flatten": true, + "$ref": "#/definitions/FrontendEndpointProperties" + }, + "name": { + "type": "string", + "description": "Resource name." + }, + "type": { + "type": "string", + "readOnly": true, + "description": "Resource type." + } + }, + "allOf": [ + { + "$ref": "./network.json#/definitions/SubResource" + } + ], + "description": "A frontend endpoint used for routing." + }, + "FrontendEndpointProperties": { + "description": "The JSON object that contains the properties required to create a frontend endpoint.", + "allOf": [ + { + "$ref": "#/definitions/FrontendEndpointUpdateParameters" + } + ], + "properties": { + "resourceState": { + "description": "Resource status.", + "$ref": "#/definitions/ResourceState" + }, + "customHttpsProvisioningState": { + "description": "Provisioning status of Custom Https of the frontendEndpoint.", + "readOnly": true, + "enum": [ + "Enabling", + "Enabled", + "Disabling", + "Disabled", + "Failed" + ], + "type": "string", + "x-ms-enum": { + "name": "CustomHttpsProvisioningState", + "modelAsString": true + } + }, + "customHttpsProvisioningSubstate": { + "description": "Provisioning substate shows the progress of custom HTTPS enabling/disabling process step by step.", + "readOnly": true, + "enum": [ + "SubmittingDomainControlValidationRequest", + "PendingDomainControlValidationREquestApproval", + "DomainControlValidationRequestApproved", + "DomainControlValidationRequestRejected", + "DomainControlValidationRequestTimedOut", + "IssuingCertificate", + "DeployingCertificate", + "CertificateDeployed", + "DeletingCertificate", + "CertificateDeleted" + ], + "type": "string", + "x-ms-enum": { + "name": "CustomHttpsProvisioningSubstate", + "modelAsString": true + } + }, + "customHttpsConfiguration": { + "description": "The configuration specifying how to enable HTTPS", + "readOnly": true, + "$ref": "#/definitions/CustomHttpsConfiguration" + } + } + }, + "FrontendEndpointUpdateParameters": { + "description": "Frontend endpoint used in routing rule", + "type": "object", + "properties": { + "hostName": { + "description": "The host name of the frontendEndpoint. Must be a domain name.", + "type": "string" + }, + "sessionAffinityEnabledState": { + "description": "Whether to allow session affinity on this host. Valid options are 'Enabled' or 'Disabled'", + "enum": [ + "Enabled", + "Disabled" + ], + "type": "string", + "x-ms-enum": { + "name": "SessionAffinityEnabledState", + "modelAsString": true + } + }, + "sessionAffinityTtlSeconds": { + "description": "UNUSED. This field will be ignored. The TTL to use in seconds for session affinity, if applicable.", + "type": "integer" + }, + "webApplicationFirewallPolicyLink": { + "description": "Defines the Web Application Firewall policy for each host (if applicable)", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "Resource ID." + } + } + } + } + }, + "FrontendEndpointsListResult": { + "description": "Result of the request to list frontend endpoints. It contains a list of Frontend endpoint objects and a URL link to get the next set of results.", + "properties": { + "value": { + "type": "array", + "readOnly": true, + "items": { + "$ref": "#/definitions/FrontendEndpoint" + }, + "description": "List of Frontend endpoints within a Front Door." + }, + "nextLink": { + "type": "string", + "description": "URL to get the next set of frontend endpoints if there are any." + } + } + }, + "BackendPoolsSettings": { + "description": "Settings that apply to all backend pools.", + "type": "object", + "properties": { + "enforceCertificateNameCheck": { + "description": "Whether to enforce certificate name check on HTTPS requests to all backend pools. No effect on non-HTTPS requests.", + "enum": [ + "Enabled", + "Disabled" + ], + "type": "string", + "x-ms-enum": { + "name": "enforceCertificateNameCheckEnabledState", + "modelAsString": true + }, + "default": "Enabled" + }, + "sendRecvTimeoutSeconds": { + "description": "Send and receive timeout on forwarding request to the backend. When timeout is reached, the request fails and returns.", + "type": "integer", + "minimum": 16, + "exclusiveMinimum": false + } + } + }, + "HeaderAction": { + "description": "An action that can manipulate an http header.", + "required": [ + "headerActionType", + "headerName" + ], + "properties": { + "headerActionType": { + "description": "Which type of manipulation to apply to the header.", + "type": "string", + "enum": [ + "Append", + "Delete", + "Overwrite" + ], + "x-ms-enum": { + "name": "headerActionType", + "modelAsString": true + } + }, + "headerName": { + "description": "The name of the header this action will apply to.", + "type": "string" + }, + "value": { + "description": "The value to update the given header name with. This value is not used if the actionType is Delete.", + "type": "string" + } + } + }, + "RulesEngineMatchCondition": { + "description": "Define a match condition", + "required": [ + "rulesEngineMatchVariable", + "rulesEngineOperator", + "rulesEngineMatchValue" + ], + "properties": { + "rulesEngineMatchVariable": { + "description": "Match Variable", + "type": "string", + "enum": [ + "IsMobile", + "RemoteAddr", + "RequestMethod", + "QueryString", + "PostArgs", + "RequestUri", + "RequestPath", + "RequestFilename", + "RequestFilenameExtension", + "RequestHeader", + "RequestBody", + "RequestScheme" + ], + "x-ms-enum": { + "name": "RulesEngineMatchVariable", + "modelAsString": true + } + }, + "selector": { + "description": "Name of selector in RequestHeader or RequestBody to be matched", + "type": "string" + }, + "rulesEngineOperator": { + "description": "Describes operator to apply to the match condition.", + "type": "string", + "enum": [ + "Any", + "IPMatch", + "GeoMatch", + "Equal", + "Contains", + "LessThan", + "GreaterThan", + "LessThanOrEqual", + "GreaterThanOrEqual", + "BeginsWith", + "EndsWith" + ], + "x-ms-enum": { + "name": "RulesEngineOperator", + "modelAsString": true + } + }, + "negateCondition": { + "description": "Describes if this is negate condition or not", + "type": "boolean" + }, + "rulesEngineMatchValue": { + "description": "Match values to match against. The operator will apply to each value in here with OR semantics. If any of them match the variable with the given operator this match condition is considered a match.", + "type": "array", + "items": { + "type": "string" + } + }, + "transforms": { + "description": "List of transforms", + "type": "array", + "items": { + "$ref": "#/definitions/transform" + } + } + } + }, + "ResourceState": { + "title": "Resource status of the Front Door or Front Door SubResource.", + "readOnly": true, + "enum": [ + "Creating", + "Enabling", + "Enabled", + "Disabling", + "Disabled", + "Deleting" + ], + "type": "string", + "x-ms-enum": { + "name": "FrontDoorResourceState", + "modelAsString": true + } + }, + "RulesEngineAction": { + "description": "One or more actions that will execute, modifying the request and/or response.", + "properties": { + "requestHeaderActions": { + "description": "A list of header actions to apply from the request from AFD to the origin.", + "type": "array", + "items": { + "$ref": "#/definitions/HeaderAction" + } + }, + "responseHeaderActions": { + "description": "A list of header actions to apply from the response from AFD to the client.", + "type": "array", + "items": { + "$ref": "#/definitions/HeaderAction" + } + }, + "routeConfigurationOverride": { + "description": "Override the route configuration.", + "$ref": "#/definitions/RouteConfiguration" + } + } + }, + "RulesEngine": { + "description": "A rules engine configuration containing a list of rules that will run to modify the runtime behavior of the request and response.", + "properties": { + "properties": { + "description": "Properties of the Rules Engine Configuration.", + "x-ms-client-flatten": true, + "$ref": "#/definitions/RulesEngineProperties" + }, + "name": { + "type": "string", + "readOnly": true, + "description": "Resource name." + }, + "type": { + "type": "string", + "readOnly": true, + "description": "Resource type." + }, + "id": { + "type": "string", + "readOnly": true, + "description": "Resource ID." + } + }, + "x-ms-azure-resource": true + }, + "RulesEngineListResult": { + "description": "Result of the request to list Rules Engine Configurations. It contains a list of RulesEngine objects and a URL link to get the next set of results.", + "properties": { + "value": { + "type": "array", + "readOnly": true, + "items": { + "$ref": "#/definitions/RulesEngine" + }, + "description": "List of rulesEngines within a Front Door." + }, + "nextLink": { + "type": "string", + "description": "URL to get the next set of RulesEngine objects if there are any." + } + } + }, + "RulesEngineProperties": { + "description": "The JSON object that contains the properties required to create a Rules Engine Configuration.", + "allOf": [ + { + "$ref": "#/definitions/RulesEngineUpdateParameters" + } + ], + "properties": { + "resourceState": { + "description": "Resource status.", + "$ref": "#/definitions/ResourceState" + } + } + }, + "RulesEngineRule": { + "description": "Contains a list of match conditions, and an action on how to modify the request/response. If multiple rules match, the actions from one rule that conflict with a previous rule overwrite for a singular action, or append in the case of headers manipulation.", + "required": [ + "action", + "name", + "priority" + ], + "properties": { + "name": { + "description": "A name to refer to this specific rule.", + "type": "string" + }, + "priority": { + "description": "A priority assigned to this rule. ", + "type": "integer" + }, + "action": { + "description": "Actions to perform on the request and response if all of the match conditions are met.", + "$ref": "#/definitions/RulesEngineAction" + }, + "matchConditions": { + "description": "A list of match conditions that must meet in order for the actions of this rule to run. Having no match conditions means the actions will always run.", + "type": "array", + "items": { + "$ref": "#/definitions/RulesEngineMatchCondition" + } + }, + "matchProcessingBehavior": { + "description": "If this rule is a match should the rules engine continue running the remaining rules or stop. If not present, defaults to Continue.", + "type": "string", + "enum": [ + "Continue", + "Stop" + ], + "x-ms-enum": { + "name": "MatchProcessingBehavior", + "modelAsString": true + } + } + } + }, + "RulesEngineUpdateParameters": { + "description": "Rules Engine Configuration to apply to a Routing Rule.", + "type": "object", + "properties": { + "rules": { + "description": "A list of rules that define a particular Rules Engine Configuration.", + "type": "array", + "items": { + "$ref": "#/definitions/RulesEngineRule" + } + } + } + }, + "transform": { + "description": "Describes what transforms are applied before matching", + "type": "string", + "enum": [ + "Lowercase", + "Uppercase", + "Trim", + "UrlDecode", + "UrlEncode", + "RemoveNulls" + ], + "x-ms-enum": { + "name": "transform", + "modelAsString": true + } + }, + "ValidateCustomDomainInput": { + "description": "Input of the custom domain to be validated for DNS mapping.", + "type": "object", + "required": [ + "hostName" + ], + "properties": { + "hostName": { + "description": "The host name of the custom domain. Must be a domain name.", + "type": "string" + } + } + }, + "ValidateCustomDomainOutput": { + "description": "Output of custom domain validation.", + "type": "object", + "properties": { + "customDomainValidated": { + "description": "Indicates whether the custom domain is valid or not.", + "readOnly": true, + "type": "boolean" + }, + "reason": { + "description": "The reason why the custom domain is not valid.", + "readOnly": true, + "type": "string" + }, + "message": { + "description": "Error message describing why the custom domain is not valid.", + "readOnly": true, + "type": "string" + } + } + }, + "ErrorResponse": { + "description": "Error response indicates Front Door service is not able to process the incoming request. The reason is provided in the error message.", + "type": "object", + "properties": { + "code": { + "description": "Error code.", + "readOnly": true, + "type": "string" + }, + "message": { + "description": "Error message indicating why the operation failed.", + "readOnly": true, + "type": "string" + } + } + }, + "CheckNameAvailabilityInput": { + "description": "Input of CheckNameAvailability API.", + "type": "object", + "required": [ + "name", + "type" + ], + "properties": { + "name": { + "description": "The resource name to validate.", + "type": "string" + }, + "type": { + "description": "The type of the resource whose name is to be validated.", + "$ref": "#/definitions/ResourceType" + } + } + }, + "CheckNameAvailabilityOutput": { + "description": "Output of check name availability API.", + "type": "object", + "properties": { + "nameAvailability": { + "description": "Indicates whether the name is available.", + "readOnly": true, + "enum": [ + "Available", + "Unavailable" + ], + "type": "string", + "x-ms-enum": { + "name": "Availability", + "modelAsString": true + } + }, + "reason": { + "description": "The reason why the name is not available.", + "readOnly": true, + "type": "string" + }, + "message": { + "description": "The detailed error message describing why the name is not available.", + "readOnly": true, + "type": "string" + } + } + }, + "ResourceType": { + "description": "Type of Front Door resource used in CheckNameAvailability.", + "enum": [ + "Microsoft.Network/frontDoors", + "Microsoft.Network/frontDoors/frontendEndpoints" + ], + "type": "string", + "x-ms-enum": { + "name": "ResourceType", + "modelAsString": false + } + } + }, + "parameters": { + "resourceGroupNameParameter": { + "name": "resourceGroupName", + "in": "path", + "required": true, + "type": "string", + "pattern": "^[a-zA-Z0-9_\\-\\(\\)\\.]*[^\\.]$", + "minLength": 1, + "maxLength": 80, + "x-ms-parameter-location": "method", + "description": "Name of the Resource group within the Azure subscription." + }, + "frontDoorNameParameter": { + "name": "frontDoorName", + "in": "path", + "required": true, + "type": "string", + "x-new-pattern": "^[a-zA-Z0-9]+([-a-zA-Z0-9]?[a-zA-Z0-9])*$", + "pattern": "^[a-zA-Z0-9]+([-a-zA-Z0-9]?[a-zA-Z0-9])*$", + "minLength": 5, + "maxLength": 64, + "x-ms-parameter-location": "method", + "description": "Name of the Front Door which is globally unique." + }, + "routingRuleNameParameter": { + "name": "routingRuleName", + "in": "path", + "required": true, + "type": "string", + "pattern": "^[a-zA-Z0-9]+(-*[a-zA-Z0-9])*$", + "x-previous-pattern": "^[-\\w\\d\\._]+$", + "minLength": 1, + "maxLength": 90, + "x-ms-parameter-location": "method", + "description": "Name of the Routing Rule which is unique within the Front Door." + }, + "healthProbeSettingsNameParameter": { + "name": "healthProbeSettingsName", + "in": "path", + "required": true, + "type": "string", + "pattern": "^[a-zA-Z0-9]+(-*[a-zA-Z0-9])*$", + "x-previous-pattern": "^[-\\w\\d\\._]+$", + "minLength": 1, + "maxLength": 90, + "x-ms-parameter-location": "method", + "description": "Name of the health probe settings which is unique within the Front Door." + }, + "loadBalancingSettingsNameParameter": { + "name": "loadBalancingSettingsName", + "in": "path", + "required": true, + "type": "string", + "pattern": "^[a-zA-Z0-9]+(-*[a-zA-Z0-9])*$", + "x-previous-pattern": "^[-\\w\\d\\._]+$", + "minLength": 1, + "maxLength": 90, + "x-ms-parameter-location": "method", + "description": "Name of the load balancing settings which is unique within the Front Door." + }, + "backendPoolNameParameter": { + "name": "backendPoolName", + "in": "path", + "required": true, + "type": "string", + "pattern": "^[a-zA-Z0-9]+(-*[a-zA-Z0-9])*$", + "x-previous-pattern": "^[-\\w\\d\\._]+$", + "minLength": 1, + "maxLength": 90, + "x-ms-parameter-location": "method", + "description": "Name of the Backend Pool which is unique within the Front Door." + }, + "frontendEndpointNameParameter": { + "name": "frontendEndpointName", + "in": "path", + "required": true, + "type": "string", + "pattern": "^[a-zA-Z0-9]+(-*[a-zA-Z0-9])*$", + "x-previous-pattern": "^[-\\w\\d\\._]+$", + "minLength": 1, + "maxLength": 255, + "x-ms-parameter-location": "method", + "description": "Name of the Frontend endpoint which is unique within the Front Door." + }, + "rulesEngineNameParameter": { + "name": "rulesEngineName", + "in": "path", + "required": true, + "type": "string", + "pattern": "^[a-zA-Z0-9]+(-*[a-zA-Z0-9])*$", + "x-previous-pattern": "^[-\\w\\d\\._]+$", + "minLength": 1, + "maxLength": 90, + "x-ms-parameter-location": "method", + "description": "Name of the Rules Engine which is unique within the Front Door." + } + } +} diff --git a/specification/frontdoor/resource-manager/Microsoft.Network/stable/2020-05-01/frontdoor.specs.md b/specification/frontdoor/resource-manager/Microsoft.Network/stable/2020-05-01/frontdoor.specs.md new file mode 100644 index 000000000000..cdb350ea928f --- /dev/null +++ b/specification/frontdoor/resource-manager/Microsoft.Network/stable/2020-05-01/frontdoor.specs.md @@ -0,0 +1,21 @@ +# General Availability API specification for FrontDoor Azure Resource +> see https://aka.ms/autorest + +This directory contains the schema specifications for the Front Door Azure Resource. The API will be added to support Front Door on Azure Resource Manager. + +The base swagger document for new features for Frontdoor: [frontdoor.json](./frontdoor.json) + +## Overview +The Front Door ARM API supports CRUD functionality on four objects in the resource schema: +`FrontDoor`, a collection of child objects `BackendPool`, a collection of child objects `FrontendEndpoints` and the primary child object `RoutingRule`, which each reference one `BackendPool` and `FrontendEndpoints` . Each routing rule encapsulates +all of the settings needed to configure the AzureFD backend infrastructure to set up a +reverse-proxy route to accelerate traffic, detect backend availability, +and balance between healthy members of the pool. + +## Generated object-model UML diagram +This diagram is generated from the swagger spec by "[`oav`](https://github.com/Azure/oav) `generate-uml`" +![Generated UML snapshot](./assets/frontdoor.svg) + +## Swagger and JSON specification reference and tools +- [OpenAPI specification v2.0 (aka Swagger 2.0)](https://github.com/OAI/OpenAPI-Specification/blob/master/versions/2.0.md) +- [Swagger.io online editor](https://editor.swagger.io/) diff --git a/specification/frontdoor/resource-manager/Microsoft.Network/stable/2020-05-01/network.json b/specification/frontdoor/resource-manager/Microsoft.Network/stable/2020-05-01/network.json new file mode 100644 index 000000000000..ab5d7f5a663a --- /dev/null +++ b/specification/frontdoor/resource-manager/Microsoft.Network/stable/2020-05-01/network.json @@ -0,0 +1,167 @@ +{ + "swagger": "2.0", + "info": { + "title": "NetworkManagementClient", + "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.", + "version": "2020-05-01" + }, + "host": "management.azure.com", + "schemes": [ + "https" + ], + "consumes": [ + "application/json", + "text/json" + ], + "produces": [ + "application/json", + "text/json" + ], + "security": [ + { + "azure_auth": [ + "user_impersonation" + ] + } + ], + "securityDefinitions": { + "azure_auth": { + "type": "oauth2", + "authorizationUrl": "https://login.microsoftonline.com/common/oauth2/authorize", + "flow": "implicit", + "description": "Azure Active Directory OAuth2 Flow", + "scopes": { + "user_impersonation": "impersonate your user account" + } + } + }, + "paths": {}, + "definitions": { + "ErrorDetails": { + "properties": { + "code": { + "type": "string" + }, + "target": { + "type": "string" + }, + "message": { + "type": "string" + } + } + }, + "Error": { + "properties": { + "code": { + "type": "string" + }, + "message": { + "type": "string" + }, + "target": { + "type": "string" + }, + "details": { + "type": "array", + "items": { + "$ref": "#/definitions/ErrorDetails" + } + }, + "innerError": { + "type": "string" + } + } + }, + "AzureAsyncOperationResult": { + "properties": { + "status": { + "type": "string", + "description": "Status of the Azure async operation. Possible values are: 'InProgress', 'Succeeded', and 'Failed'.", + "enum": [ + "InProgress", + "Succeeded", + "Failed" + ], + "x-ms-enum": { + "name": "NetworkOperationStatus", + "modelAsString": true + } + }, + "error": { + "$ref": "#/definitions/Error" + } + }, + "description": "The response body contains the status of the specified asynchronous operation, indicating whether it has succeeded, is in progress, or has failed. Note that this status is distinct from the HTTP status code returned for the Get Operation Status operation itself. If the asynchronous operation succeeded, the response body includes the HTTP status code for the successful request. If the asynchronous operation failed, the response body includes the HTTP status code for the failed request and error information regarding the failure." + }, + "Resource": { + "properties": { + "id": { + "readOnly": true, + "type": "string", + "description": "Resource ID." + }, + "name": { + "readOnly": true, + "type": "string", + "description": "Resource name." + }, + "type": { + "readOnly": true, + "type": "string", + "description": "Resource type." + }, + "location": { + "type": "string", + "description": "Resource location." + }, + "tags": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "Resource tags." + } + }, + "description": "Common resource representation.", + "x-ms-azure-resource": true + }, + "SubResource": { + "properties": { + "id": { + "type": "string", + "description": "Resource ID." + } + }, + "description": "Reference to another subresource.", + "x-ms-azure-resource": true + }, + "TagsObject": { + "properties": { + "tags": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "Resource tags." + } + }, + "description": "Tags object for patch operations." + } + }, + "parameters": { + "SubscriptionIdParameter": { + "name": "subscriptionId", + "in": "path", + "required": true, + "type": "string", + "description": "The subscription credentials which uniquely identify the Microsoft Azure subscription. The subscription ID forms part of the URI for every service call." + }, + "ApiVersionParameter": { + "name": "api-version", + "in": "query", + "required": true, + "type": "string", + "description": "Client API version." + } + } +} diff --git a/specification/frontdoor/resource-manager/readme.go.md b/specification/frontdoor/resource-manager/readme.go.md index 3c365d88b43e..7922be870998 100644 --- a/specification/frontdoor/resource-manager/readme.go.md +++ b/specification/frontdoor/resource-manager/readme.go.md @@ -19,8 +19,18 @@ batch: - tag: package-2019-04 - tag: package-2019-05 - tag: package-2020-01 + - tag: package-2020-05 ``` +### Tag: package-2020-05 and go + +These settings apply only when `--tag=package-2020-05 --go` is specified on the command line. +Please also specify `--go-sdk-folder=`. + +``` yaml $(tag) == 'package-2020-05' && $(go) +output-folder: $(go-sdk-folder)/services/$(namespace)/mgmt/2020-05-01/$(namespace) +``` + ### Tag: package-2020-01 and go These settings apply only when `--tag=package-2020-01 --go` is specified on the command line. diff --git a/specification/frontdoor/resource-manager/readme.md b/specification/frontdoor/resource-manager/readme.md index fe51a0221451..be7371678537 100644 --- a/specification/frontdoor/resource-manager/readme.md +++ b/specification/frontdoor/resource-manager/readme.md @@ -28,9 +28,27 @@ These are the global settings for the FrontDoor API. title: FrontDoorManagementClient description: FrontDoor Client openapi-type: arm -tag: package-2020-01 +tag: package-2020-05 ``` +### Tag: package-2020-05 + +These settings apply only when `--tag=package-2020-05` is specified on the command line. + +``` yaml $(tag) == 'package-2020-05' +input-file: +- Microsoft.Network/stable/2020-05-01/network.json +- Microsoft.Network/stable/2019-11-01/networkexperiment.json +- Microsoft.Network/stable/2020-05-01/frontdoor.json +- Microsoft.Network/stable/2019-10-01/webapplicationfirewall.json +directive: + - where: + - $.paths + suppress: + - OperationsAPIImplementation +``` + + ### Tag: package-2020-01 These settings apply only when `--tag=package-2020-01` is specified on the command line.