diff --git a/specification/frontdoor/FrontDoor.Management/Experiment.tsp b/specification/frontdoor/FrontDoor.Management/Experiment.tsp new file mode 100644 index 000000000000..6e0c266725b7 --- /dev/null +++ b/specification/frontdoor/FrontDoor.Management/Experiment.tsp @@ -0,0 +1,199 @@ +import "@azure-tools/typespec-azure-core"; +import "@azure-tools/typespec-azure-resource-manager"; +import "@typespec/openapi"; +import "@typespec/rest"; +import "./models.tsp"; +import "./Profile.tsp"; + +using TypeSpec.Rest; +using Azure.ResourceManager; +using TypeSpec.Http; +using TypeSpec.OpenAPI; + +namespace Microsoft.Network; +/** + * Defines the properties of an Experiment + */ +#suppress "@azure-tools/typespec-azure-resource-manager/arm-resource-invalid-envelope-property" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" +#suppress "@azure-tools/typespec-azure-resource-manager/arm-no-record" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" +@parentResource(Profile) +model Experiment is Azure.ResourceManager.ProxyResource { + ...ResourceNameParameter< + Resource = Experiment, + KeyName = "experimentName", + SegmentName = "Experiments", + NamePattern = "^[a-zA-Z0-9_\\-\\(\\)\\.]*[^\\.]$" + >; + + /** + * Resource location. + */ + location?: string; + + /** Resource tags. */ + tags?: Record; +} + +@armResourceOperations +interface Experiments { + /** + * Gets an Experiment by ExperimentName + */ + @summary("Gets an Experiment by ExperimentName") + get is ArmResourceRead; + + /** + * Creates or updates an Experiment + */ + #suppress "@azure-tools/typespec-azure-resource-manager/arm-put-operation-response-codes" "For backward compatibility" + #suppress "@azure-tools/typespec-azure-resource-manager/no-response-body" "For backward compatibility" + @summary("Creates or updates an Experiment") + createOrUpdate is ArmResourceCreateOrReplaceAsync< + Experiment, + Response = ArmResourceUpdatedResponse | ArmResourceCreatedResponse< + Experiment, + ArmLroLocationHeader & + Azure.Core.Foundations.RetryAfterHeader + > | (ArmAcceptedLroResponse & { + @bodyRoot + _: Experiment; + }), + Error = ErrorResponse + >; + + /** + * Updates an Experiment + */ + #suppress "@azure-tools/typespec-azure-resource-manager/no-response-body" "For backward compatibility" + @summary("Updates an Experiment by Experiment id") + @patch(#{ implicitOptionality: false }) + update is ArmCustomPatchAsync< + Experiment, + PatchModel = ExperimentUpdateModel, + Response = ArmResponse | (ArmAcceptedLroResponse & + Azure.Core.Foundations.RetryAfterHeader> & { + @bodyRoot + _: Experiment; + }), + Error = ErrorResponse + >; + + /** + * Deletes an Experiment + */ + #suppress "@azure-tools/typespec-azure-resource-manager/arm-delete-operation-response-codes" "For backward compatibility" + @summary("Deletes an Experiment") + delete is ArmResourceDeleteWithoutOkAsync< + Experiment, + Response = ArmDeletedResponse | ArmDeleteAcceptedLroResponse | ArmDeletedNoContentResponse, + Error = ErrorResponse + >; + + /** + * Gets a list of Experiments + */ + @summary("Gets a list of Experiments") + listByProfile is ArmResourceListByParent< + Experiment, + Response = ArmResponse, + Error = ErrorResponse + >; + + /** + * Gets a Latency Scorecard for a given Experiment + */ + #suppress "@azure-tools/typespec-azure-core/no-openapi" "non-standard operations" + @operationId("Reports_GetLatencyScorecards") + @get + @action("LatencyScorecard") + @summary("Gets a Latency Scorecard for a given Experiment") + getLatencyScorecards is ArmResourceActionSync< + Experiment, + void, + ArmResponse, + Parameters = { + /** + * The end DateTime of the Latency Scorecard in UTC + */ + #suppress "@azure-tools/typespec-azure-core/casing-style" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + @query("endDateTimeUTC") + endDateTimeUTC?: string; + + /** + * The country associated with the Latency Scorecard. Values are country ISO codes as specified here- https://www.iso.org/iso-3166-country-codes.html + */ + @query("country") + country?: string; + + /** + * The aggregation interval of the Latency Scorecard + */ + @query("aggregationInterval") + aggregationInterval: LatencyScorecardAggregationInterval; + }, + Error = ErrorResponse + >; + + /** + * Gets a Timeseries for a given Experiment + */ + #suppress "@azure-tools/typespec-azure-core/no-openapi" "non-standard operations" + @operationId("Reports_GetTimeseries") + @get + @action("Timeseries") + @summary("Gets a Timeseries for a given Experiment") + getTimeseries is ArmResourceActionSync< + Experiment, + void, + ArmResponse, + Parameters = { + /** + * The start DateTime of the Timeseries in UTC + */ + #suppress "@azure-tools/typespec-azure-core/casing-style" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + @query("startDateTimeUTC") + startDateTimeUTC: utcDateTime; + + /** + * The end DateTime of the Timeseries in UTC + */ + #suppress "@azure-tools/typespec-azure-core/casing-style" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + @query("endDateTimeUTC") + endDateTimeUTC: utcDateTime; + + /** + * The aggregation interval of the Timeseries + */ + @query("aggregationInterval") + aggregationInterval: TimeseriesAggregationInterval; + + /** + * The type of Timeseries + */ + @query("timeseriesType") + timeseriesType: TimeseriesType; + + /** + * The specific endpoint + */ + @query("endpoint") + endpoint?: string; + + /** + * The country associated with the Timeseries. Values are country ISO codes as specified here- https://www.iso.org/iso-3166-country-codes.html + */ + @query("country") + country?: string; + }, + Error = ErrorResponse + >; +} + +@@doc(Experiment.name, + "The Experiment identifier associated with the Experiment" +); +@@doc(Experiment.properties, "The properties of an Experiment"); +@@doc(Experiments.createOrUpdate::parameters.resource, + "The Experiment resource" +); +@@doc(Experiments.update::parameters.properties, "The Experiment Update Model"); diff --git a/specification/frontdoor/FrontDoor.Management/FrontDoor.tsp b/specification/frontdoor/FrontDoor.Management/FrontDoor.tsp new file mode 100644 index 000000000000..20036d32767d --- /dev/null +++ b/specification/frontdoor/FrontDoor.Management/FrontDoor.tsp @@ -0,0 +1,130 @@ +import "@azure-tools/typespec-azure-core"; +import "@azure-tools/typespec-azure-resource-manager"; +import "@typespec/openapi"; +import "@typespec/rest"; +import "./models.tsp"; + +using TypeSpec.Rest; +using Azure.ResourceManager; +using TypeSpec.Http; +using TypeSpec.OpenAPI; + +namespace Microsoft.Network; +/** + * Front Door represents a collection of backend endpoints to route traffic to along with rules that specify how traffic is sent there. + */ +#suppress "@azure-tools/typespec-azure-resource-manager/arm-resource-invalid-envelope-property" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" +#suppress "@azure-tools/typespec-azure-resource-manager/arm-no-record" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" +model FrontDoor is Azure.ResourceManager.ProxyResource { + ...ResourceNameParameter< + Resource = FrontDoor, + KeyName = "frontDoorName", + SegmentName = "frontDoors", + NamePattern = "^[a-zA-Z0-9]+([-a-zA-Z0-9]?[a-zA-Z0-9])*$" + >; + + /** + * Resource location. + */ + location?: string; + + /** Resource tags. */ + tags?: Record; +} + +@armResourceOperations +interface FrontDoors { + /** + * Gets a Front Door with the specified Front Door name under the specified subscription and resource group. + */ + get is ArmResourceRead; + + /** + * Creates a new Front Door with a Front Door name under the specified subscription and resource group. + */ + #suppress "@azure-tools/typespec-azure-resource-manager/arm-put-operation-response-codes" "For backward compatibility" + #suppress "@azure-tools/typespec-azure-resource-manager/no-response-body" "For backward compatibility" + @Azure.Core.useFinalStateVia("azure-async-operation") + createOrUpdate is ArmResourceCreateOrReplaceAsync< + FrontDoor, + Response = ArmResourceUpdatedResponse | ArmResourceCreatedResponse< + FrontDoor, + LroHeaders = ArmLroLocationHeader & + ArmAsyncOperationHeader & + Azure.Core.Foundations.RetryAfterHeader + > | (ArmAcceptedLroResponse & { + @bodyRoot + _: FrontDoor; + }), + Error = ErrorResponse + >; + + /** + * Deletes an existing Front Door with the specified parameters. + */ + #suppress "@azure-tools/typespec-azure-resource-manager/lro-location-header" "For backward compatibility" + delete is ArmResourceDeleteWithoutOkAsync< + FrontDoor, + LroHeaders = ArmAsyncOperationHeader & + Azure.Core.Foundations.RetryAfterHeader, + Error = ErrorResponse + >; + + /** + * Lists all of the Front Doors within a resource group under a subscription. + */ + listByResourceGroup is ArmResourceListByParent< + FrontDoor, + Error = ErrorResponse, + Response = FrontDoorListResult + >; + + /** + * Lists all of the Front Doors within an Azure subscription. + */ + list is ArmListBySubscription< + FrontDoor, + Error = ErrorResponse, + Response = FrontDoorListResult + >; + + /** + * Validates the custom domain mapping to ensure it maps to the correct Front Door endpoint in DNS. + */ + validateCustomDomain is ArmResourceActionSync< + FrontDoor, + ValidateCustomDomainInput, + ArmResponse, + Error = ErrorResponse + >; + + /** + * Removes a content from Front Door. + */ + #suppress "@azure-tools/typespec-azure-resource-manager/lro-location-header" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + #suppress "@azure-tools/typespec-azure-core/no-openapi" "non-standard operations" + @operationId("Endpoints_PurgeContent") + @action("purge") + purgeContent is ArmResourceActionAsync< + FrontDoor, + PurgeParameters, + OkResponse, + LroHeaders = ArmAsyncOperationHeader & + Azure.Core.Foundations.RetryAfterHeader, + Error = ErrorResponse + >; +} + +@@maxLength(FrontDoor.name, 64); +@@minLength(FrontDoor.name, 5); +@@doc(FrontDoor.name, "Name of the Front Door which is globally unique."); +@@doc(FrontDoor.properties, "Properties of the Front Door Load Balancer"); +@@doc(FrontDoors.createOrUpdate::parameters.resource, + "Front Door properties needed to create a new Front Door." +); +@@doc(FrontDoors.validateCustomDomain::parameters.body, + "Custom domain to be validated." +); +@@doc(FrontDoors.purgeContent::parameters.body, + "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." +); diff --git a/specification/frontdoor/FrontDoor.Management/FrontendEndpoint.tsp b/specification/frontdoor/FrontDoor.Management/FrontendEndpoint.tsp new file mode 100644 index 000000000000..6ae01541b873 --- /dev/null +++ b/specification/frontdoor/FrontDoor.Management/FrontendEndpoint.tsp @@ -0,0 +1,108 @@ +import "@azure-tools/typespec-azure-core"; +import "@azure-tools/typespec-azure-resource-manager"; +import "@typespec/openapi"; +import "@typespec/rest"; +import "./models.tsp"; +import "./FrontDoor.tsp"; + +using TypeSpec.Rest; +using Azure.ResourceManager; +using TypeSpec.Http; +using TypeSpec.OpenAPI; + +namespace Microsoft.Network; +/** + * A frontend endpoint used for routing. + */ +#suppress "@azure-tools/typespec-azure-resource-manager/arm-custom-resource-no-key" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" +#suppress "@azure-tools/typespec-azure-resource-manager/arm-custom-resource-usage-discourage" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" +#suppress "@azure-tools/typespec-azure-core/no-legacy-usage" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" +@parentResource(FrontDoor) +@Azure.ResourceManager.Legacy.customAzureResource +model FrontendEndpoint is SubResource { + /** + * Resource name. + */ + name?: string; + + /** + * Resource type. + */ + @visibility(Lifecycle.Read) + type?: string; + + properties?: FrontendEndpointProperties; +} + +alias FrontendEndpointsOps = Azure.ResourceManager.Legacy.LegacyOperations< + { + ...ApiVersionParameter; + ...SubscriptionIdParameter; + ...ResourceGroupParameter; + ...Azure.ResourceManager.Legacy.Provider; + ...ParentKeysOf; + }, + { + /** + * Name of the Frontend endpoint which is unique within the Front Door. + */ + @path + @segment("frontendEndpoints") + @key("frontendEndpointName") + @minLength(1) + @maxLength(255) + @pattern("^[a-zA-Z0-9]+(-*[a-zA-Z0-9])*$") + frontendEndpointName: string; + }, + ErrorType = ErrorResponse +>; + +@armResourceOperations +interface FrontendEndpoints { + /** + * Gets a Frontend endpoint with the specified name within the specified Front Door. + */ + get is FrontendEndpointsOps.Read; + + /** + * Lists all of the frontend endpoints within a Front Door. + */ + listByFrontDoor is FrontendEndpointsOps.List< + FrontendEndpoint, + Response = FrontendEndpointsListResult + >; + + /** + * Enables a frontendEndpoint for HTTPS traffic + */ + #suppress "@azure-tools/typespec-azure-resource-manager/lro-location-header" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + enableHttps is FrontendEndpointsOps.ActionAsync< + FrontendEndpoint, + CustomHttpsConfiguration, + OkResponse, + LroHeaders = ArmAsyncOperationHeader & + Azure.Core.Foundations.RetryAfterHeader + >; + + /** + * Disables a frontendEndpoint for HTTPS traffic + */ + #suppress "@azure-tools/typespec-azure-resource-manager/lro-location-header" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + disableHttps is FrontendEndpointsOps.ActionAsync< + FrontendEndpoint, + void, + OkResponse, + LroHeaders = ArmAsyncOperationHeader & + Azure.Core.Foundations.RetryAfterHeader + >; +} + +// @@maxLength(FrontendEndpoint.name, 255); +// @@minLength(FrontendEndpoint.name, 1); +// @@doc(FrontendEndpoint.name, +// "Name of the Frontend endpoint which is unique within the Front Door." +// ); +@@doc(FrontendEndpoint.properties, "Properties of the Frontend endpoint"); +@@doc(FrontendEndpoints.enableHttps::parameters.body, + "The configuration specifying how to enable HTTPS" +); diff --git a/specification/frontdoor/FrontDoor.Management/Profile.tsp b/specification/frontdoor/FrontDoor.Management/Profile.tsp new file mode 100644 index 000000000000..0ccbfac6add1 --- /dev/null +++ b/specification/frontdoor/FrontDoor.Management/Profile.tsp @@ -0,0 +1,151 @@ +import "@azure-tools/typespec-azure-core"; +import "@azure-tools/typespec-azure-resource-manager"; +import "@typespec/openapi"; +import "@typespec/rest"; +import "./models.tsp"; + +using TypeSpec.Rest; +using Azure.ResourceManager; +using TypeSpec.Http; +using TypeSpec.OpenAPI; + +namespace Microsoft.Network; +/** + * Defines an Network Experiment Profile and lists of Experiments + */ +#suppress "@azure-tools/typespec-azure-resource-manager/arm-resource-invalid-envelope-property" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" +#suppress "@azure-tools/typespec-azure-resource-manager/arm-no-record" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" +model Profile is Azure.ResourceManager.ProxyResource { + ...ResourceNameParameter< + Resource = Profile, + KeyName = "profileName", + SegmentName = "NetworkExperimentProfiles", + NamePattern = "^[a-zA-Z0-9_\\-\\(\\)\\.]*[^\\.]$" + >; + + /** + * Gets a unique read-only string that changes whenever the resource is updated. + */ + #suppress "@azure-tools/typespec-azure-resource-manager/arm-resource-invalid-envelope-property" "For backward compatibility" + etag?: string; + + /** + * Resource location. + */ + location?: string; + + /** Resource tags. */ + tags?: Record; +} + +@armResourceOperations +interface Profiles { + /** + * Gets an NetworkExperiment Profile by ProfileName + */ + #suppress "@azure-tools/typespec-azure-core/no-openapi" "non-standard operations" + @summary("Gets an NetworkExperiment Profile by ProfileName") + @operationId("NetworkExperimentProfiles_Get") + get is ArmResourceRead; + + /** + * Creates an NetworkExperiment Profile + */ + #suppress "@azure-tools/typespec-azure-core/no-openapi" "non-standard operations" + #suppress "@azure-tools/typespec-azure-resource-manager/arm-put-operation-response-codes" "For backward compatibility" + #suppress "@azure-tools/typespec-azure-resource-manager/no-response-body" "For backward compatibility" + @summary("Creates an NetworkExperiment Profile") + @operationId("NetworkExperimentProfiles_CreateOrUpdate") + createOrUpdate is ArmResourceCreateOrReplaceAsync< + Profile, + Response = ArmResourceUpdatedResponse | ArmResourceCreatedResponse< + Profile, + ArmLroLocationHeader & + Azure.Core.Foundations.RetryAfterHeader + > | (ArmAcceptedLroResponse & { + @bodyRoot + _: Profile; + }), + Error = ErrorResponse + >; + + /** + * Updates an NetworkExperimentProfiles + */ + #suppress "@azure-tools/typespec-azure-core/no-openapi" "non-standard operations" + #suppress "@azure-tools/typespec-azure-resource-manager/no-response-body" "For backward compatibility" + @summary("Updates an NetworkExperimentProfiles") + @operationId("NetworkExperimentProfiles_Update") + @patch(#{ implicitOptionality: false }) + update is ArmCustomPatchAsync< + Profile, + PatchModel = ProfileUpdateModel, + Response = ArmResponse | (ArmAcceptedLroResponse & + Azure.Core.Foundations.RetryAfterHeader> & { + @bodyRoot + _: Profile; + }), + Error = ErrorResponse + >; + + /** + * Deletes an NetworkExperiment Profile by ProfileName + */ + #suppress "@azure-tools/typespec-azure-core/no-openapi" "non-standard operations" + #suppress "@azure-tools/typespec-azure-resource-manager/arm-delete-operation-response-codes" "For backward compatibility" + @operationId("NetworkExperimentProfiles_Delete") + delete is ArmResourceDeleteWithoutOkAsync< + Profile, + Response = ArmDeletedResponse | ArmDeleteAcceptedLroResponse | ArmDeletedNoContentResponse, + Error = ErrorResponse + >; + + /** + * Gets a list of Network Experiment Profiles within a resource group under a subscription + */ + #suppress "@azure-tools/typespec-azure-core/no-openapi" "non-standard operations" + @summary("Gets a list of Network Experiment Profiles within a resource group under a subscription") + @operationId("NetworkExperimentProfiles_ListByResourceGroup") + listByResourceGroup is ArmResourceListByParent< + Profile, + Response = ArmResponse, + Error = ErrorResponse + >; + + /** + * Gets a list of Network Experiment Profiles under a subscription + */ + #suppress "@azure-tools/typespec-azure-core/no-openapi" "non-standard operations" + @summary("Gets a list of Network Experiment Profiles under a subscription") + @operationId("NetworkExperimentProfiles_List") + list is ArmListBySubscription< + Profile, + Response = ArmResponse, + Error = ErrorResponse + >; + + /** + * Gets a list of Preconfigured Endpoints + */ + #suppress "@azure-tools/typespec-azure-core/no-openapi" "non-standard operations" + @summary("Gets a list of Preconfigured Endpoints") + @operationId("PreconfiguredEndpoints_List") + @list + @get + @action("PreconfiguredEndpoints") + preconfiguredEndpointsList is ArmResourceActionSync< + Profile, + void, + ArmResponse, + Error = ErrorResponse + >; +} + +@@doc(Profile.name, + "The Profile identifier associated with the Tenant and Partner" +); +@@doc(Profile.properties, "The properties of a Profile"); +@@doc(Profiles.createOrUpdate::parameters.resource, + "An Network Experiment Profile" +); +@@doc(Profiles.update::parameters.properties, "The Profile Update Model"); diff --git a/specification/frontdoor/FrontDoor.Management/RulesEngine.tsp b/specification/frontdoor/FrontDoor.Management/RulesEngine.tsp new file mode 100644 index 000000000000..48904391e4b5 --- /dev/null +++ b/specification/frontdoor/FrontDoor.Management/RulesEngine.tsp @@ -0,0 +1,83 @@ +import "@azure-tools/typespec-azure-core"; +import "@azure-tools/typespec-azure-resource-manager"; +import "@typespec/openapi"; +import "@typespec/rest"; +import "./models.tsp"; +import "./FrontDoor.tsp"; + +using TypeSpec.Rest; +using Azure.ResourceManager; +using TypeSpec.Http; +using TypeSpec.OpenAPI; + +namespace Microsoft.Network; +/** + * A rules engine configuration containing a list of rules that will run to modify the runtime behavior of the request and response. + */ +@parentResource(FrontDoor) +model RulesEngine + is Azure.ResourceManager.ProxyResource { + ...ResourceNameParameter< + Resource = RulesEngine, + KeyName = "rulesEngineName", + SegmentName = "rulesEngines", + NamePattern = "^[a-zA-Z0-9]+(-*[a-zA-Z0-9])*$" + >; +} + +@armResourceOperations +interface RulesEngines { + /** + * Gets a Rules Engine Configuration with the specified name within the specified Front Door. + */ + get is ArmResourceRead; + + /** + * Creates a new Rules Engine Configuration with the specified name within the specified Front Door. + */ + #suppress "@azure-tools/typespec-azure-resource-manager/arm-put-operation-response-codes" "For backward compatibility" + #suppress "@azure-tools/typespec-azure-resource-manager/no-response-body" "For backward compatibility" + #suppress "@azure-tools/typespec-azure-resource-manager/lro-location-header" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + createOrUpdate is ArmResourceCreateOrReplaceAsync< + RulesEngine, + Response = ArmResourceUpdatedResponse | ArmResourceCreatedResponse< + RulesEngine, + LroHeaders = ArmAsyncOperationHeader & + Azure.Core.Foundations.RetryAfterHeader + > | (ArmAcceptedLroResponse & { + @bodyRoot + _: RulesEngine; + }), + Error = ErrorResponse + >; + + /** + * Deletes an existing Rules Engine Configuration with the specified parameters. + */ + #suppress "@azure-tools/typespec-azure-resource-manager/lro-location-header" "For backward compatibility" + delete is ArmResourceDeleteWithoutOkAsync< + RulesEngine, + LroHeaders = ArmAsyncOperationHeader & + Azure.Core.Foundations.RetryAfterHeader, + Error = ErrorResponse + >; + + /** + * Lists all of the Rules Engine Configurations within a Front Door. + */ + listByFrontDoor is ArmResourceListByParent< + RulesEngine, + Error = ErrorResponse, + Response = RulesEngineListResult + >; +} + +@@maxLength(RulesEngine.name, 90); +@@minLength(RulesEngine.name, 1); +@@doc(RulesEngine.name, + "Name of the Rules Engine which is unique within the Front Door." +); +@@doc(RulesEngine.properties, "Properties of the Rules Engine Configuration."); +@@doc(RulesEngines.createOrUpdate::parameters.resource, + "Rules Engine Configuration properties needed to create a new Rules Engine Configuration." +); diff --git a/specification/frontdoor/FrontDoor.Management/WebApplicationFirewallPolicy.tsp b/specification/frontdoor/FrontDoor.Management/WebApplicationFirewallPolicy.tsp new file mode 100644 index 000000000000..9a4076b49064 --- /dev/null +++ b/specification/frontdoor/FrontDoor.Management/WebApplicationFirewallPolicy.tsp @@ -0,0 +1,131 @@ +import "@azure-tools/typespec-azure-core"; +import "@azure-tools/typespec-azure-resource-manager"; +import "@typespec/openapi"; +import "@typespec/rest"; +import "./models.tsp"; + +using TypeSpec.Rest; +using Azure.ResourceManager; +using TypeSpec.Http; +using TypeSpec.OpenAPI; + +namespace Microsoft.Network; +/** + * Defines web application firewall policy. + */ +model WebApplicationFirewallPolicy + is Azure.ResourceManager.TrackedResource { + ...ResourceNameParameter< + Resource = WebApplicationFirewallPolicy, + KeyName = "policyName", + SegmentName = "FrontDoorWebApplicationFirewallPolicies", + NamePattern = "" + >; + + /** + * Gets a unique read-only string that changes whenever the resource is updated. + */ + #suppress "@azure-tools/typespec-azure-resource-manager/arm-resource-invalid-envelope-property" "For backward compatibility" + etag?: string; + + /** + * The pricing tier of web application firewall policy. Defaults to Classic_AzureFrontDoor if not specified. + */ + #suppress "@azure-tools/typespec-azure-resource-manager/arm-resource-invalid-envelope-property" "For backward compatibility" + sku?: Sku; +} + +@armResourceOperations +interface WebApplicationFirewallPolicies { + /** + * Retrieve protection policy with specified name within a resource group. + */ + #suppress "@azure-tools/typespec-azure-core/no-openapi" "non-standard operations" + @operationId("Policies_Get") + get is ArmResourceRead; + + /** + * Create or update policy with specified rule set name within a resource group. + */ + #suppress "@azure-tools/typespec-azure-core/no-openapi" "non-standard operations" + #suppress "@azure-tools/typespec-azure-resource-manager/arm-put-operation-response-codes" "For backward compatibility" + #suppress "@azure-tools/typespec-azure-resource-manager/no-response-body" "For backward compatibility" + @operationId("Policies_CreateOrUpdate") + createOrUpdate is ArmResourceCreateOrReplaceAsync< + WebApplicationFirewallPolicy, + Response = ArmResourceUpdatedResponse | ArmResourceCreatedResponse< + WebApplicationFirewallPolicy, + LroHeaders = ArmLroLocationHeader & + Azure.Core.Foundations.RetryAfterHeader + > | (ArmAcceptedLroResponse & + Azure.Core.Foundations.RetryAfterHeader> & { + @bodyRoot + _: WebApplicationFirewallPolicy; + }), + Error = ErrorResponse + >; + + /** + * Patch a specific frontdoor webApplicationFirewall policy for tags update under the specified subscription and resource group. + */ + #suppress "@azure-tools/typespec-azure-core/no-openapi" "non-standard operations" + @operationId("Policies_Update") + @patch(#{ implicitOptionality: false }) + update is ArmCustomPatchAsync< + WebApplicationFirewallPolicy, + PatchModel = TagsObject, + Response = ArmResponse & { + ...ArmLroLocationHeader; + }, + Error = ErrorResponse, + LroHeaders = ArmLroLocationHeader & Azure.Core.Foundations.RetryAfterHeader + >; + + /** + * Deletes Policy + */ + #suppress "@azure-tools/typespec-azure-core/no-openapi" "non-standard operations" + #suppress "@azure-tools/typespec-azure-resource-manager/arm-delete-operation-response-codes" "For backward compatibility" + @operationId("Policies_Delete") + delete is ArmResourceDeleteWithoutOkAsync< + WebApplicationFirewallPolicy, + Response = ArmDeletedResponse | ArmDeleteAcceptedLroResponse | ArmDeletedNoContentResponse, + Error = never + >; + + /** + * Lists all of the protection policies within a resource group. + */ + #suppress "@azure-tools/typespec-azure-core/no-openapi" "non-standard operations" + @operationId("Policies_List") + list is ArmResourceListByParent< + WebApplicationFirewallPolicy, + Response = ArmResponse, + Error = ErrorResponse + >; + + /** + * Lists all of the protection policies within a subscription. + */ + #suppress "@azure-tools/typespec-azure-core/no-openapi" "non-standard operations" + @operationId("Policies_ListBySubscription") + listBySubscription is ArmListBySubscription< + WebApplicationFirewallPolicy, + Response = ArmResponse, + Error = DefaultErrorResponse + >; +} + +@@maxLength(WebApplicationFirewallPolicy.name, 128); +@@doc(WebApplicationFirewallPolicy.name, + "The name of the Web Application Firewall Policy." +); +@@doc(WebApplicationFirewallPolicy.properties, + "Properties of the web application firewall policy." +); +@@doc(WebApplicationFirewallPolicies.createOrUpdate::parameters.resource, + "Policy to be created." +); +@@doc(WebApplicationFirewallPolicies.update::parameters.properties, + "FrontdoorWebApplicationFirewallPolicy parameters to be patched." +); diff --git a/specification/frontdoor/FrontDoor.Management/back-compatible.tsp b/specification/frontdoor/FrontDoor.Management/back-compatible.tsp new file mode 100644 index 000000000000..f85fbffa496f --- /dev/null +++ b/specification/frontdoor/FrontDoor.Management/back-compatible.tsp @@ -0,0 +1,125 @@ +import "@azure-tools/typespec-client-generator-core"; + +using Azure.ClientGenerator.Core; +using Microsoft.Network; + +#suppress "@azure-tools/typespec-azure-core/no-legacy-usage" "Property flatten for SDK backward compatibility." +@@Legacy.flattenProperty(PolicySettings.logScrubbing); + +#suppress "@azure-tools/typespec-azure-core/no-legacy-usage" "Property flatten for SDK backward compatibility." +@@Legacy.flattenProperty(ManagedRuleSetDefinition.properties); + +#suppress "@azure-tools/typespec-azure-core/no-legacy-usage" "Property flatten for SDK backward compatibility." +@@Legacy.flattenProperty(RoutingRule.properties); + +#suppress "@azure-tools/typespec-azure-core/no-legacy-usage" "Property flatten for SDK backward compatibility." +@@Legacy.flattenProperty(LoadBalancingSettingsModel.properties); + +#suppress "@azure-tools/typespec-azure-core/no-legacy-usage" "Property flatten for SDK backward compatibility." +@@Legacy.flattenProperty(HealthProbeSettingsModel.properties); + +#suppress "@azure-tools/typespec-azure-core/no-legacy-usage" "Property flatten for SDK backward compatibility." +@@Legacy.flattenProperty(BackendPool.properties); + +#suppress "@azure-tools/typespec-azure-core/no-legacy-usage" "Property flatten for SDK backward compatibility." +@@Legacy.flattenProperty(CustomHttpsConfiguration.keyVaultCertificateSourceParameters +); +#suppress "@azure-tools/typespec-azure-core/no-legacy-usage" "Property flatten for SDK backward compatibility." +@@Legacy.flattenProperty(CustomHttpsConfiguration.frontDoorCertificateSourceParameters +); + +#suppress "@azure-tools/typespec-azure-core/no-legacy-usage" "Property flatten for SDK backward compatibility." +@@Legacy.flattenProperty(ProfileUpdateModel.properties); + +#suppress "@azure-tools/typespec-azure-core/no-legacy-usage" "Property flatten for SDK backward compatibility." +@@Legacy.flattenProperty(PreconfiguredEndpoint.properties); + +#suppress "@azure-tools/typespec-azure-core/no-legacy-usage" "Property flatten for SDK backward compatibility." +@@Legacy.flattenProperty(ExperimentUpdateModel.properties); + +#suppress "@azure-tools/typespec-azure-core/no-legacy-usage" "Property flatten for SDK backward compatibility." +@@Legacy.flattenProperty(LatencyScorecard.properties); + +#suppress "@azure-tools/typespec-azure-core/no-legacy-usage" "Property flatten for SDK backward compatibility." +@@Legacy.flattenProperty(Timeseries.properties); + +@@clientLocation(WebApplicationFirewallPolicies.get, "Policies"); +@@clientLocation(WebApplicationFirewallPolicies.createOrUpdate, "Policies"); +@@clientName(WebApplicationFirewallPolicies.createOrUpdate::parameters.resource, + "parameters" +); +@@clientLocation(WebApplicationFirewallPolicies.update, "Policies"); +@@clientName(WebApplicationFirewallPolicies.update::parameters.properties, + "parameters" +); +@@clientLocation(WebApplicationFirewallPolicies.delete, "Policies"); +@@clientLocation(WebApplicationFirewallPolicies.list, "Policies"); +@@clientLocation(WebApplicationFirewallPolicies.listBySubscription, "Policies"); +#suppress "@azure-tools/typespec-azure-core/no-legacy-usage" "Property flatten for SDK backward compatibility." +@@Legacy.flattenProperty(WebApplicationFirewallPolicy.properties); + +@@clientName(FrontDoors.createOrUpdate::parameters.resource, + "frontDoorParameters" +); +@@clientName(FrontDoors.validateCustomDomain::parameters.body, + "customDomainProperties" +); +@@clientLocation(FrontDoors.purgeContent, "Endpoints"); +@@clientName(FrontDoors.purgeContent::parameters.body, "contentFilePaths"); +#suppress "@azure-tools/typespec-azure-core/no-legacy-usage" "Property flatten for SDK backward compatibility." +@@Legacy.flattenProperty(FrontDoor.properties); + +@@clientName(RulesEngines.createOrUpdate::parameters.resource, + "rulesEngineParameters" +); +#suppress "@azure-tools/typespec-azure-core/no-legacy-usage" "Property flatten for SDK backward compatibility." +@@Legacy.flattenProperty(RulesEngine.properties); + +@@clientName(FrontendEndpoints.enableHttps::parameters.body, + "customHttpsConfiguration" +); +#suppress "@azure-tools/typespec-azure-core/no-legacy-usage" "Property flatten for SDK backward compatibility." +@@Legacy.flattenProperty(FrontendEndpoint.properties); + +@@clientLocation(Profiles.get, "NetworkExperimentProfiles"); +@@clientLocation(Profiles.createOrUpdate, "NetworkExperimentProfiles"); +@@clientName(Profiles.createOrUpdate::parameters.resource, "parameters"); +@@clientLocation(Profiles.update, "NetworkExperimentProfiles"); +@@clientName(Profiles.update::parameters.properties, "parameters"); +@@clientLocation(Profiles.delete, "NetworkExperimentProfiles"); +@@clientLocation(Profiles.listByResourceGroup, "NetworkExperimentProfiles"); +@@clientLocation(Profiles.list, "NetworkExperimentProfiles"); +@@clientLocation(Profiles.preconfiguredEndpointsList, "PreconfiguredEndpoints"); +@@clientName(Profiles.preconfiguredEndpointsList, "List"); +#suppress "@azure-tools/typespec-azure-core/no-legacy-usage" "Property flatten for SDK backward compatibility." +@@Legacy.flattenProperty(Profile.properties); + +@@clientName(Experiments.createOrUpdate::parameters.resource, "parameters"); +@@clientName(Experiments.update::parameters.properties, "parameters"); +@@clientLocation(Experiments.getLatencyScorecards, "Reports"); +@@clientLocation(Experiments.getTimeseries, "Reports"); +#suppress "@azure-tools/typespec-azure-core/no-legacy-usage" "Property flatten for SDK backward compatibility." +@@Legacy.flattenProperty(Experiment.properties); + +@@clientLocation(ManagedRuleSetsOperationGroup.list, "ManagedRuleSets"); + +@@clientLocation(FrontDoorNameAvailabilityOperationGroup.check, + "FrontDoorNameAvailability" +); + +@@clientLocation(FrontDoorNameAvailabilityWithSubscriptionOperationGroup.check, + "FrontDoorNameAvailabilityWithSubscription" +); +@@clientName(FrontDoorNameAvailabilityOperationGroup.check::parameters.body, + "checkFrontDoorNameAvailabilityInput" +); +@@clientName(FrontDoorNameAvailabilityWithSubscriptionOperationGroup.check::parameters.body, + "checkFrontDoorNameAvailabilityInput" +); +@@visibility(FrontDoorListResult.value, Lifecycle.Read); +@@visibility(FrontendEndpointsListResult.value, Lifecycle.Read); +@@visibility(RulesEngineListResult.value, Lifecycle.Read); +@@clientName(ScrubbingRuleEntryMatchOperator, + "scrubbingRuleEntryMatchOperator" +); +@@clientName(ScrubbingRuleEntryState, "scrubbingRuleEntryState"); diff --git a/specification/frontdoor/FrontDoor.Management/examples/2025-10-01/CheckFrontdoorNameAvailability.json b/specification/frontdoor/FrontDoor.Management/examples/2025-10-01/CheckFrontdoorNameAvailability.json new file mode 100644 index 000000000000..05bb510eb547 --- /dev/null +++ b/specification/frontdoor/FrontDoor.Management/examples/2025-10-01/CheckFrontdoorNameAvailability.json @@ -0,0 +1,20 @@ +{ + "parameters": { + "api-version": "2025-10-01", + "checkFrontDoorNameAvailabilityInput": { + "name": "sampleName", + "type": "Microsoft.Network/frontDoors" + } + }, + "responses": { + "200": { + "body": { + "message": "Name not available", + "nameAvailability": "Unavailable", + "reason": "Name is already in use" + } + } + }, + "operationId": "FrontDoorNameAvailability_Check", + "title": "CheckNameAvailability" +} diff --git a/specification/frontdoor/FrontDoor.Management/examples/2025-10-01/CheckFrontdoorNameAvailabilityWithSubscription.json b/specification/frontdoor/FrontDoor.Management/examples/2025-10-01/CheckFrontdoorNameAvailabilityWithSubscription.json new file mode 100644 index 000000000000..c5862c630ddc --- /dev/null +++ b/specification/frontdoor/FrontDoor.Management/examples/2025-10-01/CheckFrontdoorNameAvailabilityWithSubscription.json @@ -0,0 +1,21 @@ +{ + "parameters": { + "api-version": "2025-10-01", + "checkFrontDoorNameAvailabilityInput": { + "name": "sampleName", + "type": "Microsoft.Network/frontDoors/frontendEndpoints" + }, + "subscriptionId": "subid" + }, + "responses": { + "200": { + "body": { + "message": "Name not available", + "nameAvailability": "Unavailable", + "reason": "Name is already in use" + } + } + }, + "operationId": "FrontDoorNameAvailabilityWithSubscription_Check", + "title": "CheckNameAvailabilityWithSubscription" +} diff --git a/specification/frontdoor/FrontDoor.Management/examples/2025-10-01/FrontdoorCreate.json b/specification/frontdoor/FrontDoor.Management/examples/2025-10-01/FrontdoorCreate.json new file mode 100644 index 000000000000..150e29845cf5 --- /dev/null +++ b/specification/frontdoor/FrontDoor.Management/examples/2025-10-01/FrontdoorCreate.json @@ -0,0 +1,591 @@ +{ + "parameters": { + "api-version": "2025-10-01", + "frontDoorName": "frontDoor1", + "frontDoorParameters": { + "location": "westus", + "properties": { + "backendPools": [ + { + "name": "backendPool1", + "properties": { + "backends": [ + { + "address": "w3.contoso.com", + "httpPort": 80, + "httpsPort": 443, + "priority": 2, + "weight": 1 + }, + { + "address": "contoso.com.website-us-west-2.othercloud.net", + "httpPort": 80, + "httpsPort": 443, + "priority": 1, + "privateLinkApprovalMessage": "Please approve the connection request for this Private Link", + "privateLinkLocation": "eastus", + "privateLinkResourceId": "/subscriptions/subid/resourcegroups/rg1/providers/Microsoft.Network/privateLinkServices/pls1", + "weight": 2 + }, + { + "address": "10.0.1.5", + "httpPort": 80, + "httpsPort": 443, + "priority": 1, + "privateLinkAlias": "APPSERVER.d84e61f0-0870-4d24-9746-7438fa0019d1.westus2.azure.privatelinkservice", + "privateLinkApprovalMessage": "Please approve this request to connect to the Private Link", + "weight": 1 + } + ], + "healthProbeSettings": { + "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoors/frontDoor1/healthProbeSettings/healthProbeSettings1" + }, + "loadBalancingSettings": { + "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoors/frontDoor1/loadBalancingSettings/loadBalancingSettings1" + } + } + } + ], + "backendPoolsSettings": { + "enforceCertificateNameCheck": "Enabled", + "sendRecvTimeoutSeconds": 60 + }, + "enabledState": "Enabled", + "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" + } + } + ], + "healthProbeSettings": [ + { + "name": "healthProbeSettings1", + "properties": { + "path": "/", + "enabledState": "Enabled", + "healthProbeMethod": "HEAD", + "intervalInSeconds": 120, + "protocol": "Http" + } + } + ], + "loadBalancingSettings": [ + { + "name": "loadBalancingSettings1", + "properties": { + "sampleSize": 4, + "successfulSamplesRequired": 2 + } + } + ], + "routingRules": [ + { + "name": "routingRule1", + "properties": { + "acceptedProtocols": [ + "Http" + ], + "enabledState": "Enabled", + "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" + } + ], + "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" + }, + "webApplicationFirewallPolicyLink": { + "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoorWebApplicationFirewallPolicies/policy1" + } + } + } + ] + }, + "tags": { + "tag1": "value1", + "tag2": "value2" + } + }, + "resourceGroupName": "rg1", + "subscriptionId": "subid" + }, + "responses": { + "200": { + "body": { + "name": "frontDoor1", + "type": "Microsoft.Network/frontDoor", + "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoors/frontDoor1", + "location": "westus", + "properties": { + "backendPools": [ + { + "name": "backendPool1", + "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoors/frontDoor1/backendPools/backendPool1", + "properties": { + "backends": [ + { + "address": "w3.contoso.com", + "enabledState": "Enabled", + "httpPort": 80, + "httpsPort": 443, + "priority": 2, + "weight": 1 + }, + { + "address": "contoso.com.website-us-west-2.othercloud.net", + "enabledState": "Enabled", + "httpPort": 80, + "httpsPort": 443, + "priority": 1, + "privateEndpointStatus": "Approved", + "privateLinkApprovalMessage": "Please approve the connection request for this Private Link", + "privateLinkLocation": "eastus", + "privateLinkResourceId": "/subscriptions/subid/resourcegroups/rg1/providers/Microsoft.Network/privateLinkServices/pls1", + "weight": 2 + }, + { + "address": "10.0.1.5", + "enabledState": "Enabled", + "httpPort": 80, + "httpsPort": 443, + "priority": 1, + "privateEndpointStatus": "Approved", + "privateLinkAlias": "APPSERVER.d84e61f0-0870-4d24-9746-7438fa0019d1.westus2.azure.privatelinkservice", + "privateLinkApprovalMessage": "Please approve the connection request for this Private Link", + "weight": 1 + } + ], + "healthProbeSettings": { + "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoors/frontDoor1/healthProbeSettings/healthProbeSettings1" + }, + "loadBalancingSettings": { + "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoors/frontDoor1/loadBalancingSettings/loadBalancingSettings1" + } + } + } + ], + "backendPoolsSettings": { + "enforceCertificateNameCheck": "Enabled", + "sendRecvTimeoutSeconds": 60 + }, + "cname": "frontDoor1.azurefd.net", + "enabledState": "Enabled", + "frontendEndpoints": [ + { + "name": "frontendEndpoint1", + "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoors/frontDoor1/frontendEndpoints/frontendEndpoint1", + "properties": { + "hostName": "www.contoso.com", + "sessionAffinityEnabledState": "Enabled", + "sessionAffinityTtlSeconds": 60, + "webApplicationFirewallPolicyLink": { + "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoorWebApplicationFirewallPolicies/policy1" + } + } + }, + { + "name": "default", + "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoors/frontDoor1/frontendEndpoints/default", + "properties": { + "hostName": "frontDoor1.azurefd.net" + } + } + ], + "healthProbeSettings": [ + { + "name": "healthProbeSettings1", + "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoors/frontDoor1/healthProbeSettings/healthProbeSettings1", + "properties": { + "path": "/", + "enabledState": "Enabled", + "healthProbeMethod": "HEAD", + "intervalInSeconds": 120, + "protocol": "Http" + } + } + ], + "loadBalancingSettings": [ + { + "name": "loadBalancingSettings1", + "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoors/frontDoor1/loadBalancingSettings/loadBalancingSettings1", + "properties": { + "sampleSize": 4, + "successfulSamplesRequired": 2 + } + } + ], + "provisioningState": "Succeeded", + "resourceState": "Creating", + "routingRules": [ + { + "name": "routingRule1", + "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoors/frontDoor1/routingRules/routingRule1", + "properties": { + "acceptedProtocols": [ + "Http" + ], + "enabledState": "Enabled", + "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" + } + ], + "patternsToMatch": [ + "/*" + ], + "routeConfiguration": { + "@odata.type": "#Microsoft.Azure.FrontDoor.Models.FrontdoorForwardingConfiguration", + "backendPool": { + "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoors/frontDoor1/backendPools/backendPool1" + }, + "customForwardingPath": "", + "forwardingProtocol": "MatchRequest" + }, + "rulesEngine": { + "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoors/frontDoor1/rulesEngines/rulesEngine1" + }, + "webApplicationFirewallPolicyLink": { + "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoorWebApplicationFirewallPolicies/policy1" + } + } + } + ] + }, + "tags": { + "tag1": "value1", + "tag2": "value2" + } + } + }, + "201": { + "body": { + "name": "frontDoor1", + "type": "Microsoft.Network/frontDoor", + "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoors/frontDoor1", + "location": "westus", + "properties": { + "backendPools": [ + { + "name": "backendPool1", + "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoors/frontDoor1/backendPools/backendPool1", + "properties": { + "backends": [ + { + "address": "w3.contoso.com", + "enabledState": "Enabled", + "httpPort": 80, + "httpsPort": 443, + "priority": 2, + "weight": 1 + }, + { + "address": "contoso.com.website-us-west-2.othercloud.net", + "enabledState": "Enabled", + "httpPort": 80, + "httpsPort": 443, + "priority": 1, + "privateEndpointStatus": "Approved", + "privateLinkApprovalMessage": "Please approve the connection request for this Private Link", + "privateLinkLocation": "eastus", + "privateLinkResourceId": "/subscriptions/subid/resourcegroups/rg1/providers/Microsoft.Network/privateLinkServices/pls1", + "weight": 2 + }, + { + "address": "10.0.1.5", + "enabledState": "Enabled", + "httpPort": 80, + "httpsPort": 443, + "priority": 1, + "privateEndpointStatus": "Approved", + "privateLinkAlias": "APPSERVER.d84e61f0-0870-4d24-9746-7438fa0019d1.westus2.azure.privatelinkservice", + "privateLinkApprovalMessage": "Please approve the connection request for this Private Link", + "weight": 1 + } + ], + "healthProbeSettings": { + "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoors/frontDoor1/healthProbeSettings/healthProbeSettings1" + }, + "loadBalancingSettings": { + "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoors/frontDoor1/loadBalancingSettings/loadBalancingSettings1" + } + } + } + ], + "backendPoolsSettings": { + "enforceCertificateNameCheck": "Enabled", + "sendRecvTimeoutSeconds": 60 + }, + "cname": "frontDoor1.azurefd.net", + "enabledState": "Enabled", + "frontendEndpoints": [ + { + "name": "frontendEndpoint1", + "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoors/frontDoor1/frontendEndpoints/frontendEndpoint1", + "properties": { + "hostName": "www.contoso.com", + "sessionAffinityEnabledState": "Enabled", + "sessionAffinityTtlSeconds": 60, + "webApplicationFirewallPolicyLink": { + "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoorWebApplicationFirewallPolicies/policy1" + } + } + }, + { + "name": "default", + "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoors/frontDoor1/frontendEndpoints/default", + "properties": { + "hostName": "frontDoor1.azurefd.net" + } + } + ], + "healthProbeSettings": [ + { + "name": "healthProbeSettings1", + "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoors/frontDoor1/healthProbeSettings/healthProbeSettings1", + "properties": { + "path": "/", + "enabledState": "Enabled", + "healthProbeMethod": "HEAD", + "intervalInSeconds": 120, + "protocol": "Http" + } + } + ], + "loadBalancingSettings": [ + { + "name": "loadBalancingSettings1", + "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoors/frontDoor1/loadBalancingSettings/loadBalancingSettings1", + "properties": { + "sampleSize": 4, + "successfulSamplesRequired": 2 + } + } + ], + "provisioningState": "Provisioning", + "resourceState": "Creating", + "routingRules": [ + { + "name": "routingRule1", + "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoors/frontDoor1/routingRules/routingRule1", + "properties": { + "acceptedProtocols": [ + "Http" + ], + "enabledState": "Enabled", + "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" + } + ], + "patternsToMatch": [ + "/*" + ], + "routeConfiguration": { + "@odata.type": "#Microsoft.Azure.FrontDoor.Models.FrontdoorForwardingConfiguration", + "backendPool": { + "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoors/frontDoor1/backendPools/backendPool1" + }, + "customForwardingPath": "", + "forwardingProtocol": "MatchRequest" + }, + "rulesEngine": { + "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoors/frontDoor1/rulesEngines/rulesEngine1" + }, + "webApplicationFirewallPolicyLink": { + "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoorWebApplicationFirewallPolicies/policy1" + } + } + } + ] + }, + "tags": { + "tag1": "value1", + "tag2": "value2" + } + } + }, + "202": { + "body": { + "name": "frontDoor1", + "type": "Microsoft.Network/frontDoor", + "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoors/frontDoor1", + "location": "westus", + "properties": { + "backendPools": [ + { + "name": "backendPool1", + "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoors/frontDoor1/backendPools/backendPool1", + "properties": { + "backends": [ + { + "address": "w3.contoso.com", + "enabledState": "Enabled", + "httpPort": 80, + "httpsPort": 443, + "priority": 2, + "weight": 1 + }, + { + "address": "contoso.com.website-us-west-2.othercloud.net", + "enabledState": "Enabled", + "httpPort": 80, + "httpsPort": 443, + "priority": 1, + "privateEndpointStatus": "Approved", + "privateLinkApprovalMessage": "Please approve the connection request for this Private Link", + "privateLinkLocation": "eastus", + "privateLinkResourceId": "/subscriptions/subid/resourcegroups/rg1/providers/Microsoft.Network/privateLinkServices/pls1", + "weight": 2 + }, + { + "address": "10.0.1.5", + "enabledState": "Enabled", + "httpPort": 80, + "httpsPort": 443, + "priority": 1, + "privateEndpointStatus": "Approved", + "privateLinkAlias": "APPSERVER.d84e61f0-0870-4d24-9746-7438fa0019d1.westus2.azure.privatelinkservice", + "privateLinkApprovalMessage": "Please approve the connection request for this Private Link", + "weight": 1 + } + ], + "healthProbeSettings": { + "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoors/frontDoor1/healthProbeSettings/healthProbeSettings1" + }, + "loadBalancingSettings": { + "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoors/frontDoor1/loadBalancingSettings/loadBalancingSettings1" + } + } + } + ], + "backendPoolsSettings": { + "enforceCertificateNameCheck": "Enabled", + "sendRecvTimeoutSeconds": 60 + }, + "cname": "frontDoor1.azurefd.net", + "enabledState": "Enabled", + "frontendEndpoints": [ + { + "name": "frontendEndpoint1", + "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoors/frontDoor1/frontendEndpoints/frontendEndpoint1", + "properties": { + "hostName": "www.contoso.com", + "sessionAffinityEnabledState": "Enabled", + "sessionAffinityTtlSeconds": 60, + "webApplicationFirewallPolicyLink": { + "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoorWebApplicationFirewallPolicies/policy1" + } + } + }, + { + "name": "default", + "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoors/frontDoor1/frontendEndpoints/default", + "properties": { + "hostName": "frontDoor1.azurefd.net" + } + } + ], + "healthProbeSettings": [ + { + "name": "healthProbeSettings1", + "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoors/frontDoor1/healthProbeSettings/healthProbeSettings1", + "properties": { + "path": "/", + "enabledState": "Enabled", + "healthProbeMethod": "HEAD", + "intervalInSeconds": 120, + "protocol": "Http" + } + } + ], + "loadBalancingSettings": [ + { + "name": "loadBalancingSettings1", + "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoors/frontDoor1/loadBalancingSettings/loadBalancingSettings1", + "properties": { + "sampleSize": 4, + "successfulSamplesRequired": 2 + } + } + ], + "provisioningState": "Provisioning", + "resourceState": "Creating", + "routingRules": [ + { + "name": "routingRule1", + "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoors/frontDoor1/routingRules/routingRule1", + "properties": { + "acceptedProtocols": [ + "Http" + ], + "enabledState": "Enabled", + "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" + } + ], + "patternsToMatch": [ + "/*" + ], + "routeConfiguration": { + "@odata.type": "#Microsoft.Azure.FrontDoor.Models.FrontdoorForwardingConfiguration", + "backendPool": { + "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoors/frontDoor1/backendPools/backendPool1" + }, + "customForwardingPath": "", + "forwardingProtocol": "MatchRequest" + }, + "rulesEngine": { + "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoors/frontDoor1/rulesEngines/rulesEngine1" + }, + "webApplicationFirewallPolicyLink": { + "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoorWebApplicationFirewallPolicies/policy1" + } + } + } + ] + }, + "tags": { + "tag1": "value1", + "tag2": "value2" + } + } + } + }, + "operationId": "FrontDoors_CreateOrUpdate", + "title": "Create or update specific Front Door" +} diff --git a/specification/frontdoor/FrontDoor.Management/examples/2025-10-01/FrontdoorDelete.json b/specification/frontdoor/FrontDoor.Management/examples/2025-10-01/FrontdoorDelete.json new file mode 100644 index 000000000000..ce8fa15d4ab6 --- /dev/null +++ b/specification/frontdoor/FrontDoor.Management/examples/2025-10-01/FrontdoorDelete.json @@ -0,0 +1,18 @@ +{ + "parameters": { + "api-version": "2025-10-01", + "frontDoorName": "frontDoor1", + "resourceGroupName": "rg1", + "subscriptionId": "subid" + }, + "responses": { + "202": { + "headers": { + "azure-asyncoperation": "https://management.azure.com/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoors/frontDoor1/operationResults/62e4d893-d233-4005-988e-a428d9f77076?api-version=2025-10-01" + } + }, + "204": {} + }, + "operationId": "FrontDoors_Delete", + "title": "Delete Front Door" +} diff --git a/specification/frontdoor/FrontDoor.Management/examples/2025-10-01/FrontdoorDisableHttps.json b/specification/frontdoor/FrontDoor.Management/examples/2025-10-01/FrontdoorDisableHttps.json new file mode 100644 index 000000000000..2657918684b3 --- /dev/null +++ b/specification/frontdoor/FrontDoor.Management/examples/2025-10-01/FrontdoorDisableHttps.json @@ -0,0 +1,19 @@ +{ + "parameters": { + "api-version": "2025-10-01", + "frontDoorName": "frontDoor1", + "frontendEndpointName": "frontendEndpoint1", + "resourceGroupName": "rg1", + "subscriptionId": "subid" + }, + "responses": { + "200": {}, + "202": { + "headers": { + "azure-asyncoperation": "https://management.azure.com/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoors/frontDoor1/operationResults/62e4d893-d233-4005-988e-a428d9f77076?api-version=2025-10-01" + } + } + }, + "operationId": "FrontendEndpoints_DisableHttps", + "title": "FrontendEndpoints_DisableHttps" +} diff --git a/specification/frontdoor/FrontDoor.Management/examples/2025-10-01/FrontdoorEnableHttps.json b/specification/frontdoor/FrontDoor.Management/examples/2025-10-01/FrontdoorEnableHttps.json new file mode 100644 index 000000000000..0f172da08f4e --- /dev/null +++ b/specification/frontdoor/FrontDoor.Management/examples/2025-10-01/FrontdoorEnableHttps.json @@ -0,0 +1,31 @@ +{ + "parameters": { + "api-version": "2025-10-01", + "customHttpsConfiguration": { + "certificateSource": "AzureKeyVault", + "keyVaultCertificateSourceParameters": { + "secretName": "secret1", + "secretVersion": "00000000-0000-0000-0000-000000000000", + "vault": { + "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.KeyVault/vaults/vault1" + } + }, + "minimumTlsVersion": "1.0", + "protocolType": "ServerNameIndication" + }, + "frontDoorName": "frontDoor1", + "frontendEndpointName": "frontendEndpoint1", + "resourceGroupName": "rg1", + "subscriptionId": "subid" + }, + "responses": { + "200": {}, + "202": { + "headers": { + "azure-asyncoperation": "https://management.azure.com/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoors/frontDoor1/operationResults/62e4d893-d233-4005-988e-a428d9f77076?api-version=2025-10-01" + } + } + }, + "operationId": "FrontendEndpoints_EnableHttps", + "title": "FrontendEndpoints_EnableHttps" +} diff --git a/specification/frontdoor/FrontDoor.Management/examples/2025-10-01/FrontdoorFrontendEndpointGet.json b/specification/frontdoor/FrontDoor.Management/examples/2025-10-01/FrontdoorFrontendEndpointGet.json new file mode 100644 index 000000000000..b543eef209da --- /dev/null +++ b/specification/frontdoor/FrontDoor.Management/examples/2025-10-01/FrontdoorFrontendEndpointGet.json @@ -0,0 +1,27 @@ +{ + "parameters": { + "api-version": "2025-10-01", + "frontDoorName": "frontDoor1", + "frontendEndpointName": "frontendEndpoint1", + "resourceGroupName": "rg1", + "subscriptionId": "subid" + }, + "responses": { + "200": { + "body": { + "name": "frontendEndpoint1", + "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoors/frontDoor1/frontendEndpoints/frontendEndpoint1", + "properties": { + "hostName": "www.contoso.com", + "sessionAffinityEnabledState": "Enabled", + "sessionAffinityTtlSeconds": 60, + "webApplicationFirewallPolicyLink": { + "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoorWebApplicationFirewallPolicies/policy1" + } + } + } + } + }, + "operationId": "FrontendEndpoints_Get", + "title": "Get Frontend Endpoint" +} diff --git a/specification/frontdoor/FrontDoor.Management/examples/2025-10-01/FrontdoorFrontendEndpointList.json b/specification/frontdoor/FrontDoor.Management/examples/2025-10-01/FrontdoorFrontendEndpointList.json new file mode 100644 index 000000000000..0de2dd9b75bd --- /dev/null +++ b/specification/frontdoor/FrontDoor.Management/examples/2025-10-01/FrontdoorFrontendEndpointList.json @@ -0,0 +1,30 @@ +{ + "parameters": { + "api-version": "2025-10-01", + "frontDoorName": "frontDoor1", + "resourceGroupName": "rg1", + "subscriptionId": "subid" + }, + "responses": { + "200": { + "body": { + "value": [ + { + "name": "frontendEndpoint1", + "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoors/frontDoor1/frontendEndpoints/frontendEndpoint1", + "properties": { + "hostName": "www.contoso.com", + "sessionAffinityEnabledState": "Enabled", + "sessionAffinityTtlSeconds": 60, + "webApplicationFirewallPolicyLink": { + "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoorWebApplicationFirewallPolicies/policy1" + } + } + } + ] + } + } + }, + "operationId": "FrontendEndpoints_ListByFrontDoor", + "title": "List Frontend endpoints in a Front Door" +} diff --git a/specification/frontdoor/FrontDoor.Management/examples/2025-10-01/FrontdoorGet.json b/specification/frontdoor/FrontDoor.Management/examples/2025-10-01/FrontdoorGet.json new file mode 100644 index 000000000000..fa78efe94ed6 --- /dev/null +++ b/specification/frontdoor/FrontDoor.Management/examples/2025-10-01/FrontdoorGet.json @@ -0,0 +1,222 @@ +{ + "parameters": { + "api-version": "2025-10-01", + "frontDoorName": "frontDoor1", + "resourceGroupName": "rg1", + "subscriptionId": "subid" + }, + "responses": { + "200": { + "body": { + "name": "frontDoor1", + "type": "Microsoft.Network/frontDoor", + "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoors/frontDoor1", + "location": "westus", + "properties": { + "backendPools": [ + { + "name": "backendPool1", + "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoors/frontDoor1/backendPools/backendPool1", + "properties": { + "backends": [ + { + "address": "w3.contoso.com", + "enabledState": "Enabled", + "httpPort": 80, + "httpsPort": 443, + "priority": 2, + "weight": 1 + }, + { + "address": "contoso.com.website-us-west-2.othercloud.net", + "enabledState": "Enabled", + "httpPort": 80, + "httpsPort": 443, + "priority": 1, + "privateEndpointStatus": "Approved", + "privateLinkApprovalMessage": "Please approve the connection request for this Private Link", + "privateLinkLocation": "eastus", + "privateLinkResourceId": "/subscriptions/subid/resourcegroups/rg1/providers/Microsoft.Network/privateLinkServices/pls1", + "weight": 2 + }, + { + "address": "10.0.1.5", + "enabledState": "Enabled", + "httpPort": 80, + "httpsPort": 443, + "priority": 1, + "privateEndpointStatus": "Approved", + "privateLinkAlias": "APPSERVER.d84e61f0-0870-4d24-9746-7438fa0019d1.westus2.azure.privatelinkservice", + "privateLinkApprovalMessage": "Please approve the connection request for this Private Link", + "weight": 1 + } + ], + "healthProbeSettings": { + "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoors/frontDoor1/healthProbeSettings/healthProbeSettings1" + }, + "loadBalancingSettings": { + "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoors/frontDoor1/loadBalancingSettings/loadBalancingSettings1" + } + } + } + ], + "backendPoolsSettings": { + "enforceCertificateNameCheck": "Enabled", + "sendRecvTimeoutSeconds": 60 + }, + "cname": "frontDoor1.azurefd.net", + "enabledState": "Enabled", + "frontendEndpoints": [ + { + "name": "frontendEndpoint1", + "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoors/frontDoor1/frontendEndpoints/frontendEndpoint1", + "properties": { + "hostName": "www.contoso.com", + "sessionAffinityEnabledState": "Enabled", + "sessionAffinityTtlSeconds": 60, + "webApplicationFirewallPolicyLink": { + "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoorWebApplicationFirewallPolicies/policy1" + } + } + }, + { + "name": "default", + "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoors/frontDoor1/frontendEndpoints/default", + "properties": { + "hostName": "frontDoor1.azurefd.net" + } + } + ], + "healthProbeSettings": [ + { + "name": "healthProbeSettings1", + "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoors/frontDoor1/healthProbeSettings/healthProbeSettings1", + "properties": { + "path": "/", + "enabledState": "Enabled", + "healthProbeMethod": "HEAD", + "intervalInSeconds": 120, + "protocol": "Http" + } + } + ], + "loadBalancingSettings": [ + { + "name": "loadBalancingSettings1", + "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoors/frontDoor1/loadBalancingSettings/loadBalancingSettings1", + "properties": { + "sampleSize": 4, + "successfulSamplesRequired": 2 + } + } + ], + "provisioningState": "Succeeded", + "resourceState": "Enabled", + "routingRules": [ + { + "name": "routingRule1", + "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoors/frontDoor1/routingRules/routingRule1", + "properties": { + "acceptedProtocols": [ + "Http" + ], + "enabledState": "Enabled", + "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" + } + ], + "patternsToMatch": [ + "/*" + ], + "routeConfiguration": { + "@odata.type": "#Microsoft.Azure.FrontDoor.Models.FrontdoorForwardingConfiguration", + "backendPool": { + "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoors/frontDoor1/backendPools/backendPool1" + }, + "customForwardingPath": "", + "forwardingProtocol": "MatchRequest" + }, + "rulesEngine": { + "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoors/frontDoor1/rulesEngines/rulesEngine1" + }, + "webApplicationFirewallPolicyLink": { + "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoorWebApplicationFirewallPolicies/policy1" + } + } + } + ], + "rulesEngines": [ + { + "name": "rulesEngine1", + "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoors/frontDoor1/rulesEngines/rulesEngine1", + "properties": { + "rules": [ + { + "name": "Rule1", + "action": { + "routeConfigurationOverride": { + "@odata.type": "#Microsoft.Azure.FrontDoor.Models.FrontdoorRedirectConfiguration", + "customFragment": "fragment", + "customHost": "www.bing.com", + "customPath": "/api", + "customQueryString": "a=b", + "redirectProtocol": "HttpsOnly", + "redirectType": "Moved" + } + }, + "matchConditions": [ + { + "rulesEngineMatchValue": [ + "CH" + ], + "rulesEngineMatchVariable": "RemoteAddr", + "rulesEngineOperator": "GeoMatch" + } + ], + "matchProcessingBehavior": "Stop", + "priority": 1 + }, + { + "name": "Rule2", + "action": { + "responseHeaderActions": [ + { + "headerActionType": "Overwrite", + "headerName": "Cache-Control", + "value": "public, max-age=31536000" + } + ] + }, + "matchConditions": [ + { + "rulesEngineMatchValue": [ + "jpg" + ], + "rulesEngineMatchVariable": "FilenameExtension", + "rulesEngineOperator": "Equal", + "transforms": [ + "Lowercase" + ] + } + ], + "priority": 2 + } + ] + } + } + ] + }, + "tags": { + "tag1": "value1", + "tag2": "value2" + } + } + } + }, + "operationId": "FrontDoors_Get", + "title": "Get Front Door" +} diff --git a/specification/frontdoor/FrontDoor.Management/examples/2025-10-01/FrontdoorList.json b/specification/frontdoor/FrontDoor.Management/examples/2025-10-01/FrontdoorList.json new file mode 100644 index 000000000000..5de121512aec --- /dev/null +++ b/specification/frontdoor/FrontDoor.Management/examples/2025-10-01/FrontdoorList.json @@ -0,0 +1,225 @@ +{ + "parameters": { + "api-version": "2025-10-01", + "resourceGroupName": "rg1", + "subscriptionId": "subid" + }, + "responses": { + "200": { + "body": { + "value": [ + { + "name": "frontDoor1", + "type": "Microsoft.Network/frontDoor", + "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoors/frontDoor1", + "location": "westus", + "properties": { + "backendPools": [ + { + "name": "backendPool1", + "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoors/frontDoor1/backendPools/backendPool1", + "properties": { + "backends": [ + { + "address": "w3.contoso.com", + "enabledState": "Enabled", + "httpPort": 80, + "httpsPort": 443, + "priority": 2, + "weight": 1 + }, + { + "address": "contoso.com.website-us-west-2.othercloud.net", + "enabledState": "Enabled", + "httpPort": 80, + "httpsPort": 443, + "priority": 1, + "privateEndpointStatus": "Approved", + "privateLinkApprovalMessage": "Please approve the connection request for this Private Link", + "privateLinkLocation": "eastus", + "privateLinkResourceId": "/subscriptions/subid/resourcegroups/rg1/providers/Microsoft.Network/privateLinkServices/pls1", + "weight": 2 + }, + { + "address": "10.0.1.5", + "enabledState": "Enabled", + "httpPort": 80, + "httpsPort": 443, + "priority": 1, + "privateEndpointStatus": "Approved", + "privateLinkAlias": "APPSERVER.d84e61f0-0870-4d24-9746-7438fa0019d1.westus2.azure.privatelinkservice", + "privateLinkApprovalMessage": "Please approve the connection request for this Private Link", + "weight": 1 + } + ], + "healthProbeSettings": { + "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoors/frontDoor1/healthProbeSettings/healthProbeSettings1" + }, + "loadBalancingSettings": { + "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoors/frontDoor1/loadBalancingSettings/loadBalancingSettings1" + } + } + } + ], + "backendPoolsSettings": { + "enforceCertificateNameCheck": "Enabled", + "sendRecvTimeoutSeconds": 60 + }, + "cname": "frontDoor1.azurefd.net", + "enabledState": "Enabled", + "frontendEndpoints": [ + { + "name": "frontendEndpoint1", + "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoors/frontDoor1/frontendEndpoints/frontendEndpoint1", + "properties": { + "hostName": "www.contoso.com", + "sessionAffinityEnabledState": "Enabled", + "sessionAffinityTtlSeconds": 60, + "webApplicationFirewallPolicyLink": { + "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoorWebApplicationFirewallPolicies/policy1" + } + } + }, + { + "name": "default", + "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoors/frontDoor1/frontendEndpoints/default", + "properties": { + "hostName": "frontDoor1.azurefd.net" + } + } + ], + "healthProbeSettings": [ + { + "name": "healthProbeSettings1", + "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoors/frontDoor1/healthProbeSettings/healthProbeSettings1", + "properties": { + "path": "/", + "enabledState": "Enabled", + "healthProbeMethod": "HEAD", + "intervalInSeconds": 120, + "protocol": "Http" + } + } + ], + "loadBalancingSettings": [ + { + "name": "loadBalancingSettings1", + "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoors/frontDoor1/loadBalancingSettings/loadBalancingSettings1", + "properties": { + "sampleSize": 4, + "successfulSamplesRequired": 2 + } + } + ], + "provisioningState": "Succeeded", + "resourceState": "Enabled", + "routingRules": [ + { + "name": "routingRule1", + "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoors/frontDoor1/routingRules/routingRule1", + "properties": { + "acceptedProtocols": [ + "Http" + ], + "enabledState": "Enabled", + "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" + } + ], + "patternsToMatch": [ + "/*" + ], + "routeConfiguration": { + "@odata.type": "#Microsoft.Azure.FrontDoor.Models.FrontdoorForwardingConfiguration", + "backendPool": { + "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoors/frontDoor1/backendPools/backendPool1" + }, + "customForwardingPath": "", + "forwardingProtocol": "MatchRequest" + }, + "rulesEngine": { + "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoors/frontDoor1/rulesEngines/rulesEngine1" + }, + "webApplicationFirewallPolicyLink": { + "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoorWebApplicationFirewallPolicies/policy1" + } + } + } + ], + "rulesEngines": [ + { + "name": "rulesEngine1", + "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoors/frontDoor1/routingRules/rulesEngine1", + "properties": { + "rules": [ + { + "name": "Rule1", + "action": { + "routeConfigurationOverride": { + "@odata.type": "#Microsoft.Azure.FrontDoor.Models.FrontdoorRedirectConfiguration", + "customFragment": "fragment", + "customHost": "www.bing.com", + "customPath": "/api", + "customQueryString": "a=b", + "redirectProtocol": "HttpsOnly", + "redirectType": "Moved" + } + }, + "matchConditions": [ + { + "rulesEngineMatchValue": [ + "CH" + ], + "rulesEngineMatchVariable": "RemoteAddr", + "rulesEngineOperator": "GeoMatch" + } + ], + "matchProcessingBehavior": "Stop", + "priority": 1 + }, + { + "name": "Rule2", + "action": { + "responseHeaderActions": [ + { + "headerActionType": "Overwrite", + "headerName": "Cache-Control", + "value": "public, max-age=31536000" + } + ] + }, + "matchConditions": [ + { + "rulesEngineMatchValue": [ + "jpg" + ], + "rulesEngineMatchVariable": "FilenameExtension", + "rulesEngineOperator": "Equal", + "transforms": [ + "Lowercase" + ] + } + ], + "priority": 2 + } + ] + } + } + ] + }, + "tags": { + "tag1": "value1", + "tag2": "value2" + } + } + ] + } + } + }, + "operationId": "FrontDoors_ListByResourceGroup", + "title": "List Front Doors in a Resource Group" +} diff --git a/specification/frontdoor/FrontDoor.Management/examples/2025-10-01/FrontdoorListAll.json b/specification/frontdoor/FrontDoor.Management/examples/2025-10-01/FrontdoorListAll.json new file mode 100644 index 000000000000..0788d512a2c5 --- /dev/null +++ b/specification/frontdoor/FrontDoor.Management/examples/2025-10-01/FrontdoorListAll.json @@ -0,0 +1,223 @@ +{ + "parameters": { + "api-version": "2025-10-01", + "subscriptionId": "subid" + }, + "responses": { + "200": { + "body": { + "value": [ + { + "name": "frontDoor1", + "type": "Microsoft.Network/frontDoor", + "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoors/frontDoor1", + "location": "westus", + "properties": { + "backendPools": [ + { + "name": "backendPool1", + "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoors/frontDoor1/backendPools/backendPool1", + "properties": { + "backends": [ + { + "address": "w3.contoso.com", + "enabledState": "Enabled", + "httpPort": 80, + "httpsPort": 443, + "priority": 2, + "weight": 1 + }, + { + "address": "contoso.com.website-us-west-2.othercloud.net", + "enabledState": "Enabled", + "httpPort": 80, + "httpsPort": 443, + "priority": 1, + "privateEndpointStatus": "Approved", + "privateLinkApprovalMessage": "Please approve the connection request for this Private Link", + "privateLinkLocation": "eastus", + "privateLinkResourceId": "/subscriptions/subid/resourcegroups/rg1/providers/Microsoft.Network/privateLinkServices/pls1", + "weight": 2 + }, + { + "address": "10.0.1.5", + "enabledState": "Enabled", + "httpPort": 80, + "httpsPort": 443, + "priority": 1, + "privateEndpointStatus": "Approved", + "privateLinkAlias": "APPSERVER.d84e61f0-0870-4d24-9746-7438fa0019d1.westus2.azure.privatelinkservice", + "privateLinkApprovalMessage": "Please approve the connection request for this Private Link", + "weight": 1 + } + ], + "healthProbeSettings": { + "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoors/frontDoor1/healthProbeSettings/healthProbeSettings1" + }, + "loadBalancingSettings": { + "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoors/frontDoor1/loadBalancingSettings/loadBalancingSettings1" + } + } + } + ], + "backendPoolsSettings": { + "enforceCertificateNameCheck": "Enabled" + }, + "cname": "frontDoor1.azurefd.net", + "enabledState": "Enabled", + "frontendEndpoints": [ + { + "name": "frontendEndpoint1", + "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoors/frontDoor1/frontendEndpoints/frontendEndpoint1", + "properties": { + "hostName": "www.contoso.com", + "sessionAffinityEnabledState": "Enabled", + "sessionAffinityTtlSeconds": 60, + "webApplicationFirewallPolicyLink": { + "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoorWebApplicationFirewallPolicies/policy1" + } + } + }, + { + "name": "default", + "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoors/frontDoor1/frontendEndpoints/default", + "properties": { + "hostName": "frontDoor1.azurefd.net" + } + } + ], + "healthProbeSettings": [ + { + "name": "healthProbeSettings1", + "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoors/frontDoor1/healthProbeSettings/healthProbeSettings1", + "properties": { + "path": "/", + "enabledState": "Enabled", + "healthProbeMethod": "HEAD", + "intervalInSeconds": 120, + "protocol": "Http" + } + } + ], + "loadBalancingSettings": [ + { + "name": "loadBalancingSettings1", + "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoors/frontDoor1/loadBalancingSettings/loadBalancingSettings1", + "properties": { + "sampleSize": 4, + "successfulSamplesRequired": 2 + } + } + ], + "provisioningState": "Succeeded", + "resourceState": "Enabled", + "routingRules": [ + { + "name": "routingRule1", + "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoors/frontDoor1/routingRules/routingRule1", + "properties": { + "acceptedProtocols": [ + "Http" + ], + "enabledState": "Enabled", + "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" + } + ], + "patternsToMatch": [ + "/*" + ], + "routeConfiguration": { + "@odata.type": "#Microsoft.Azure.FrontDoor.Models.FrontdoorForwardingConfiguration", + "backendPool": { + "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoors/frontDoor1/backendPools/backendPool1" + }, + "customForwardingPath": "", + "forwardingProtocol": "MatchRequest" + }, + "rulesEngine": { + "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoors/frontDoor1/rulesEngines/rulesEngine1" + }, + "webApplicationFirewallPolicyLink": { + "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoorWebApplicationFirewallPolicies/policy1" + } + } + } + ], + "rulesEngines": [ + { + "name": "rulesEngine1", + "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoors/frontDoor1/routingRules/rulesEngine1", + "properties": { + "rules": [ + { + "name": "Rule1", + "action": { + "routeConfigurationOverride": { + "@odata.type": "#Microsoft.Azure.FrontDoor.Models.FrontdoorRedirectConfiguration", + "customFragment": "fragment", + "customHost": "www.bing.com", + "customPath": "/api", + "customQueryString": "a=b", + "redirectProtocol": "HttpsOnly", + "redirectType": "Moved" + } + }, + "matchConditions": [ + { + "rulesEngineMatchValue": [ + "CH" + ], + "rulesEngineMatchVariable": "RemoteAddr", + "rulesEngineOperator": "GeoMatch" + } + ], + "matchProcessingBehavior": "Stop", + "priority": 1 + }, + { + "name": "Rule2", + "action": { + "responseHeaderActions": [ + { + "headerActionType": "Overwrite", + "headerName": "Cache-Control", + "value": "public, max-age=31536000" + } + ] + }, + "matchConditions": [ + { + "rulesEngineMatchValue": [ + "jpg" + ], + "rulesEngineMatchVariable": "FilenameExtension", + "rulesEngineOperator": "Equal", + "transforms": [ + "Lowercase" + ] + } + ], + "priority": 2 + } + ] + } + } + ] + }, + "tags": { + "tag1": "value1", + "tag2": "value2" + } + } + ] + } + } + }, + "operationId": "FrontDoors_List", + "title": "List all Front Doors" +} diff --git a/specification/frontdoor/FrontDoor.Management/examples/2025-10-01/FrontdoorPurgeContent.json b/specification/frontdoor/FrontDoor.Management/examples/2025-10-01/FrontdoorPurgeContent.json new file mode 100644 index 000000000000..056546024cd4 --- /dev/null +++ b/specification/frontdoor/FrontDoor.Management/examples/2025-10-01/FrontdoorPurgeContent.json @@ -0,0 +1,24 @@ +{ + "parameters": { + "api-version": "2025-10-01", + "contentFilePaths": { + "contentPaths": [ + "/pictures.aspx", + "/pictures/*" + ] + }, + "frontDoorName": "frontDoor1", + "resourceGroupName": "rg1", + "subscriptionId": "subid" + }, + "responses": { + "200": {}, + "202": { + "headers": { + "azure-asyncoperation": "https://management.azure.com/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoors/frontDoor1/operationResults/62e4d893-d233-4005-988e-a428d9f77076?api-version=2025-10-01" + } + } + }, + "operationId": "Endpoints_PurgeContent", + "title": "Purge content from Front Door" +} diff --git a/specification/frontdoor/FrontDoor.Management/examples/2025-10-01/FrontdoorRulesEngineCreate.json b/specification/frontdoor/FrontDoor.Management/examples/2025-10-01/FrontdoorRulesEngineCreate.json new file mode 100644 index 000000000000..de10b7020467 --- /dev/null +++ b/specification/frontdoor/FrontDoor.Management/examples/2025-10-01/FrontdoorRulesEngineCreate.json @@ -0,0 +1,283 @@ +{ + "parameters": { + "api-version": "2025-10-01", + "frontDoorName": "frontDoor1", + "resourceGroupName": "rg1", + "rulesEngineName": "rulesEngine1", + "rulesEngineParameters": { + "properties": { + "rules": [ + { + "name": "Rule1", + "action": { + "routeConfigurationOverride": { + "@odata.type": "#Microsoft.Azure.FrontDoor.Models.FrontdoorRedirectConfiguration", + "customFragment": "fragment", + "customHost": "www.bing.com", + "customPath": "/api", + "customQueryString": "a=b", + "redirectProtocol": "HttpsOnly", + "redirectType": "Moved" + } + }, + "matchConditions": [ + { + "rulesEngineMatchValue": [ + "CH" + ], + "rulesEngineMatchVariable": "RemoteAddr", + "rulesEngineOperator": "GeoMatch" + } + ], + "matchProcessingBehavior": "Stop", + "priority": 1 + }, + { + "name": "Rule2", + "action": { + "responseHeaderActions": [ + { + "headerActionType": "Overwrite", + "headerName": "Cache-Control", + "value": "public, max-age=31536000" + } + ] + }, + "matchConditions": [ + { + "rulesEngineMatchValue": [ + "jpg" + ], + "rulesEngineMatchVariable": "RequestFilenameExtension", + "rulesEngineOperator": "Equal", + "transforms": [ + "Lowercase" + ] + } + ], + "priority": 2 + }, + { + "name": "Rule3", + "action": { + "routeConfigurationOverride": { + "@odata.type": "#Microsoft.Azure.FrontDoor.Models.FrontdoorForwardingConfiguration", + "backendPool": { + "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoors/frontDoor1/backendPools/backendPool1" + }, + "cacheConfiguration": { + "cacheDuration": "P1DT12H20M30S", + "dynamicCompression": "Disabled", + "queryParameterStripDirective": "StripOnly", + "queryParameters": "a=b,p=q" + }, + "customForwardingPath": null, + "forwardingProtocol": "HttpsOnly" + } + }, + "matchConditions": [ + { + "negateCondition": false, + "rulesEngineMatchValue": [ + "allowoverride" + ], + "rulesEngineMatchVariable": "RequestHeader", + "rulesEngineOperator": "Equal", + "selector": "Rules-Engine-Route-Forward", + "transforms": [ + "Lowercase" + ] + } + ], + "priority": 3 + } + ] + } + }, + "subscriptionId": "subid" + }, + "responses": { + "200": { + "body": { + "name": "rulesEngine1", + "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoors/frontDoor1/rulesEngines/rulesEngine1", + "properties": { + "rules": [ + { + "name": "Rule1", + "action": { + "routeConfigurationOverride": { + "@odata.type": "#Microsoft.Azure.FrontDoor.Models.FrontdoorRedirectConfiguration", + "customFragment": "fragment", + "customHost": "www.bing.com", + "customPath": "/api", + "customQueryString": "a=b", + "redirectProtocol": "HttpsOnly", + "redirectType": "Moved" + } + }, + "matchConditions": [ + { + "rulesEngineMatchValue": [ + "CH" + ], + "rulesEngineMatchVariable": "RemoteAddr", + "rulesEngineOperator": "GeoMatch" + } + ], + "matchProcessingBehavior": "Stop", + "priority": 1 + }, + { + "name": "Rule2", + "action": { + "responseHeaderActions": [ + { + "headerActionType": "Overwrite", + "headerName": "Cache-Control", + "value": "public, max-age=31536000" + } + ] + }, + "matchConditions": [ + { + "rulesEngineMatchValue": [ + "jpg" + ], + "rulesEngineMatchVariable": "RequestFilenameExtension", + "rulesEngineOperator": "Equal", + "transforms": [ + "Lowercase" + ] + } + ], + "priority": 2 + } + ] + } + } + }, + "201": { + "body": { + "name": "rulesEngine1", + "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoors/frontDoor1/rulesEngines/rulesEngine1", + "properties": { + "rules": [ + { + "name": "Rule1", + "action": { + "routeConfigurationOverride": { + "@odata.type": "#Microsoft.Azure.FrontDoor.Models.FrontdoorRedirectConfiguration", + "customFragment": "fragment", + "customHost": "www.bing.com", + "customPath": "/api", + "customQueryString": "a=b", + "redirectProtocol": "HttpsOnly", + "redirectType": "Moved" + } + }, + "matchConditions": [ + { + "rulesEngineMatchValue": [ + "CH" + ], + "rulesEngineMatchVariable": "RemoteAddr", + "rulesEngineOperator": "GeoMatch" + } + ], + "matchProcessingBehavior": "Stop", + "priority": 1 + }, + { + "name": "Rule2", + "action": { + "responseHeaderActions": [ + { + "headerActionType": "Overwrite", + "headerName": "Cache-Control", + "value": "public, max-age=31536000" + } + ] + }, + "matchConditions": [ + { + "rulesEngineMatchValue": [ + "jpg" + ], + "rulesEngineMatchVariable": "RequestFilenameExtension", + "rulesEngineOperator": "Equal", + "transforms": [ + "Lowercase" + ] + } + ], + "priority": 2 + } + ] + } + } + }, + "202": { + "body": { + "name": "rulesEngine1", + "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoors/frontDoor1/rulesEngines/rulesEngine1", + "properties": { + "rules": [ + { + "name": "Rule1", + "action": { + "routeConfigurationOverride": { + "@odata.type": "#Microsoft.Azure.FrontDoor.Models.FrontdoorRedirectConfiguration", + "customFragment": "fragment", + "customHost": "www.bing.com", + "customPath": "/api", + "customQueryString": "a=b", + "redirectProtocol": "HttpsOnly", + "redirectType": "Moved" + } + }, + "matchConditions": [ + { + "rulesEngineMatchValue": [ + "CH" + ], + "rulesEngineMatchVariable": "RemoteAddr", + "rulesEngineOperator": "GeoMatch" + } + ], + "matchProcessingBehavior": "Stop", + "priority": 1 + }, + { + "name": "Rule2", + "action": { + "responseHeaderActions": [ + { + "headerActionType": "Overwrite", + "headerName": "Cache-Control", + "value": "public, max-age=31536000" + } + ] + }, + "matchConditions": [ + { + "rulesEngineMatchValue": [ + "jpg" + ], + "rulesEngineMatchVariable": "FilenameExtension", + "rulesEngineOperator": "Equal", + "transforms": [ + "Lowercase" + ] + } + ], + "priority": 2 + } + ] + } + } + } + }, + "operationId": "RulesEngines_CreateOrUpdate", + "title": "Create or update a specific Rules Engine Configuration" +} diff --git a/specification/frontdoor/FrontDoor.Management/examples/2025-10-01/FrontdoorRulesEngineDelete.json b/specification/frontdoor/FrontDoor.Management/examples/2025-10-01/FrontdoorRulesEngineDelete.json new file mode 100644 index 000000000000..ae6ed829d0d8 --- /dev/null +++ b/specification/frontdoor/FrontDoor.Management/examples/2025-10-01/FrontdoorRulesEngineDelete.json @@ -0,0 +1,19 @@ +{ + "parameters": { + "api-version": "2025-10-01", + "frontDoorName": "frontDoor1", + "resourceGroupName": "rg1", + "rulesEngineName": "rulesEngine1", + "subscriptionId": "subid" + }, + "responses": { + "202": { + "headers": { + "azure-asyncoperation": "https://management.azure.com/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoors/frontDoor1/routingRules/rulesEngine1/operationResults/62e4d893-d233-4005-988e-a428d9f77076?api-version=2025-10-01" + } + }, + "204": {} + }, + "operationId": "RulesEngines_Delete", + "title": "Delete Rules Engine Configuration" +} diff --git a/specification/frontdoor/FrontDoor.Management/examples/2025-10-01/FrontdoorRulesEngineGet.json b/specification/frontdoor/FrontDoor.Management/examples/2025-10-01/FrontdoorRulesEngineGet.json new file mode 100644 index 000000000000..8d8c0ebc6060 --- /dev/null +++ b/specification/frontdoor/FrontDoor.Management/examples/2025-10-01/FrontdoorRulesEngineGet.json @@ -0,0 +1,107 @@ +{ + "parameters": { + "api-version": "2025-10-01", + "frontDoorName": "frontDoor1", + "resourceGroupName": "rg1", + "rulesEngineName": "rulesEngine1", + "subscriptionId": "subid" + }, + "responses": { + "200": { + "body": { + "name": "rulesEngine1", + "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoors/frontDoor1/rulesEngines/rulesEngine1", + "properties": { + "rules": [ + { + "name": "Rule1", + "action": { + "routeConfigurationOverride": { + "@odata.type": "#Microsoft.Azure.FrontDoor.Models.FrontdoorRedirectConfiguration", + "customFragment": "fragment", + "customHost": "www.bing.com", + "customPath": "/api", + "customQueryString": "a=b", + "redirectProtocol": "HttpsOnly", + "redirectType": "Moved" + } + }, + "matchConditions": [ + { + "rulesEngineMatchValue": [ + "CH" + ], + "rulesEngineMatchVariable": "RemoteAddr", + "rulesEngineOperator": "GeoMatch" + } + ], + "matchProcessingBehavior": "Stop", + "priority": 1 + }, + { + "name": "Rule2", + "action": { + "responseHeaderActions": [ + { + "headerActionType": "Overwrite", + "headerName": "Cache-Control", + "value": "public, max-age=31536000" + } + ] + }, + "matchConditions": [ + { + "rulesEngineMatchValue": [ + "jpg" + ], + "rulesEngineMatchVariable": "RequestFilenameExtension", + "rulesEngineOperator": "Equal", + "transforms": [ + "Lowercase" + ] + } + ], + "priority": 2 + }, + { + "name": "Rule3", + "action": { + "routeConfigurationOverride": { + "@odata.type": "#Microsoft.Azure.FrontDoor.Models.FrontdoorForwardingConfiguration", + "backendPool": { + "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoors/frontDoor1/backendPools/backendPool1" + }, + "cacheConfiguration": { + "cacheDuration": "P1DT12H20M30S", + "dynamicCompression": "Disabled", + "queryParameterStripDirective": "StripOnly", + "queryParameters": "a=b,p=q" + }, + "customForwardingPath": null, + "forwardingProtocol": "HttpsOnly" + } + }, + "matchConditions": [ + { + "negateCondition": false, + "rulesEngineMatchValue": [ + "allowoverride" + ], + "rulesEngineMatchVariable": "RequestHeader", + "rulesEngineOperator": "Equal", + "selector": "Rules-Engine-Route-Forward", + "transforms": [ + "Lowercase" + ] + } + ], + "priority": 3 + } + ] + } + } + } + }, + "operationId": "RulesEngines_Get", + "title": "Get Rules Engine Configuration" +} diff --git a/specification/frontdoor/FrontDoor.Management/examples/2025-10-01/FrontdoorRulesEngineList.json b/specification/frontdoor/FrontDoor.Management/examples/2025-10-01/FrontdoorRulesEngineList.json new file mode 100644 index 000000000000..19ad95804108 --- /dev/null +++ b/specification/frontdoor/FrontDoor.Management/examples/2025-10-01/FrontdoorRulesEngineList.json @@ -0,0 +1,110 @@ +{ + "parameters": { + "api-version": "2025-10-01", + "frontDoorName": "frontDoor1", + "resourceGroupName": "rg1", + "subscriptionId": "subid" + }, + "responses": { + "200": { + "body": { + "value": [ + { + "name": "rulesEngine1", + "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoors/frontDoor1/rulesEngines/rulesEngine1", + "properties": { + "rules": [ + { + "name": "Rule1", + "action": { + "routeConfigurationOverride": { + "@odata.type": "#Microsoft.Azure.FrontDoor.Models.FrontdoorRedirectConfiguration", + "customFragment": "fragment", + "customHost": "www.bing.com", + "customPath": "/api", + "customQueryString": "a=b", + "redirectProtocol": "HttpsOnly", + "redirectType": "Moved" + } + }, + "matchConditions": [ + { + "rulesEngineMatchValue": [ + "CH" + ], + "rulesEngineMatchVariable": "RemoteAddr", + "rulesEngineOperator": "GeoMatch" + } + ], + "matchProcessingBehavior": "Stop", + "priority": 1 + }, + { + "name": "Rule2", + "action": { + "responseHeaderActions": [ + { + "headerActionType": "Overwrite", + "headerName": "Cache-Control", + "value": "public, max-age=31536000" + } + ] + }, + "matchConditions": [ + { + "rulesEngineMatchValue": [ + "jpg" + ], + "rulesEngineMatchVariable": "RequestFilenameExtension", + "rulesEngineOperator": "Equal", + "transforms": [ + "Lowercase" + ] + } + ], + "priority": 2 + }, + { + "name": "Rule3", + "action": { + "routeConfigurationOverride": { + "@odata.type": "#Microsoft.Azure.FrontDoor.Models.FrontdoorForwardingConfiguration", + "backendPool": { + "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoors/frontDoor1/backendPools/backendPool1" + }, + "cacheConfiguration": { + "cacheDuration": "P1DT12H20M30S", + "dynamicCompression": "Disabled", + "queryParameterStripDirective": "StripOnly", + "queryParameters": "a=b,p=q" + }, + "customForwardingPath": null, + "forwardingProtocol": "HttpsOnly" + } + }, + "matchConditions": [ + { + "negateCondition": false, + "rulesEngineMatchValue": [ + "allowoverride" + ], + "rulesEngineMatchVariable": "RequestHeader", + "rulesEngineOperator": "Equal", + "selector": "Rules-Engine-Route-Forward", + "transforms": [ + "Lowercase" + ] + } + ], + "priority": 3 + } + ] + } + } + ] + } + } + }, + "operationId": "RulesEngines_ListByFrontDoor", + "title": "List Rules Engine Configurations in a Front Door" +} diff --git a/specification/frontdoor/FrontDoor.Management/examples/2025-10-01/FrontdoorValidateCustomDomain.json b/specification/frontdoor/FrontDoor.Management/examples/2025-10-01/FrontdoorValidateCustomDomain.json new file mode 100644 index 000000000000..d66574433a9b --- /dev/null +++ b/specification/frontdoor/FrontDoor.Management/examples/2025-10-01/FrontdoorValidateCustomDomain.json @@ -0,0 +1,22 @@ +{ + "parameters": { + "api-version": "2025-10-01", + "customDomainProperties": { + "hostName": "www.someDomain.com" + }, + "frontDoorName": "frontDoor1", + "resourceGroupName": "rg1", + "subscriptionId": "subid" + }, + "responses": { + "200": { + "body": { + "customDomainValidated": true, + "message": null, + "reason": null + } + } + }, + "operationId": "FrontDoors_ValidateCustomDomain", + "title": "FrontDoor_ValidateCustomDomain" +} diff --git a/specification/frontdoor/FrontDoor.Management/examples/2025-10-01/NetworkExperimentCreateExperiment.json b/specification/frontdoor/FrontDoor.Management/examples/2025-10-01/NetworkExperimentCreateExperiment.json new file mode 100644 index 000000000000..67d00383b1fa --- /dev/null +++ b/specification/frontdoor/FrontDoor.Management/examples/2025-10-01/NetworkExperimentCreateExperiment.json @@ -0,0 +1,105 @@ +{ + "parameters": { + "api-version": "2025-10-01", + "experimentName": "MyExperiment", + "parameters": { + "properties": { + "description": "this is my first experiment!", + "enabledState": "Enabled", + "endpointA": { + "name": "endpoint A", + "endpoint": "endpointA.net" + }, + "endpointB": { + "name": "endpoint B", + "endpoint": "endpointB.net" + } + } + }, + "profileName": "MyProfile", + "resourceGroupName": "MyResourceGroup", + "subscriptionId": "subid" + }, + "responses": { + "200": { + "body": { + "name": "MyExperiment", + "id": "/subscriptions/subid/resourceGroups/MyResourceGroup/providers/Microsoft.Network/NetworkExperimentProfiles/MyProfile/Experiments/MyExperiment", + "location": "WestUs", + "properties": { + "description": "this is my first experiment!", + "enabledState": "Enabled", + "endpointA": { + "name": "endpoint A", + "endpoint": "endpointA.net" + }, + "endpointB": { + "name": "endpoint B", + "endpoint": "endpointB.net" + }, + "resourceState": "Creating", + "scriptFileUri": "www.myScript.com", + "status": "ongoing" + }, + "tags": { + "key1": "value1", + "key2": "value2" + } + } + }, + "201": { + "body": { + "name": "MyExperiment", + "id": "/subscriptions/subid/resourceGroups/MyResourceGroup/providers/Microsoft.Network/NetworkExperimentProfiles/MyProfile/Experiments/MyExperiment", + "location": "WestUs", + "properties": { + "description": "this is my first experiment!", + "enabledState": "Enabled", + "endpointA": { + "name": "endpoint A", + "endpoint": "endpointA.net" + }, + "endpointB": { + "name": "endpoint B", + "endpoint": "endpointB.net" + }, + "resourceState": "Creating", + "scriptFileUri": "www.myScript.com", + "status": "ongoing" + }, + "tags": { + "key1": "value1", + "key2": "value2" + } + } + }, + "202": { + "body": { + "name": "MyExperiment", + "id": "/subscriptions/subid/resourceGroups/MyResourceGroup/providers/Microsoft.Network/NetworkExperimentProfiles/MyProfile/Experiments/MyExperiment", + "location": "WestUs", + "properties": { + "description": "this is my first experiment!", + "enabledState": "Enabled", + "endpointA": { + "name": "endpoint A", + "endpoint": "endpointA.net" + }, + "endpointB": { + "name": "endpoint B", + "endpoint": "endpointB.net" + }, + "resourceState": "Creating", + "scriptFileUri": "www.myScript.com", + "status": "ongoing" + }, + "tags": { + "key1": "value1", + "key2": "value2" + } + } + } + }, + "operationId": "Experiments_CreateOrUpdate", + "title": "Creates an Experiment" +} diff --git a/specification/frontdoor/FrontDoor.Management/examples/2025-10-01/NetworkExperimentCreateProfile.json b/specification/frontdoor/FrontDoor.Management/examples/2025-10-01/NetworkExperimentCreateProfile.json new file mode 100644 index 000000000000..a68d46911537 --- /dev/null +++ b/specification/frontdoor/FrontDoor.Management/examples/2025-10-01/NetworkExperimentCreateProfile.json @@ -0,0 +1,66 @@ +{ + "parameters": { + "api-version": "2025-10-01", + "parameters": { + "location": "WestUs", + "properties": { + "enabledState": "Enabled" + } + }, + "profileName": "MyProfile", + "resourceGroupName": "MyResourceGroup", + "subscriptionId": "subid" + }, + "responses": { + "200": { + "body": { + "name": "MyProfile", + "type": "Microsoft.Network/NetworkExperimentprofiles", + "id": "/subscriptions/subid/resourceGroups/MyResourceGroup/providers/Microsoft.Network/NetworkExperimentProfiles/MyProfile", + "location": "WestUs", + "properties": { + "enabledState": "Enabled", + "resourceState": "Creating" + }, + "tags": { + "key1": "value1", + "key2": "value2" + } + } + }, + "201": { + "body": { + "name": "MyProfile", + "type": "Microsoft.Network/NetworkExperimentprofiles", + "id": "/subscriptions/subid/resourceGroups/MyResourceGroup/providers/Microsoft.Network/NetworkExperimentProfiles/MyProfile", + "location": "WestUs", + "properties": { + "enabledState": "Enabled", + "resourceState": "Creating" + }, + "tags": { + "key1": "value1", + "key2": "value2" + } + } + }, + "202": { + "body": { + "name": "MyProfile", + "type": "Microsoft.Network/NetworkExperimentprofiles", + "id": "/subscriptions/subid/resourceGroups/MyResourceGroup/providers/Microsoft.Network/NetworkExperimentProfiles/MyProfile", + "location": "WestUs", + "properties": { + "enabledState": "Enabled", + "resourceState": "Creating" + }, + "tags": { + "key1": "value1", + "key2": "value2" + } + } + } + }, + "operationId": "NetworkExperimentProfiles_CreateOrUpdate", + "title": "Creates an NetworkExperiment Profile in a Resource Group" +} diff --git a/specification/frontdoor/FrontDoor.Management/examples/2025-10-01/NetworkExperimentDeleteExperiment.json b/specification/frontdoor/FrontDoor.Management/examples/2025-10-01/NetworkExperimentDeleteExperiment.json new file mode 100644 index 000000000000..21e9f349140f --- /dev/null +++ b/specification/frontdoor/FrontDoor.Management/examples/2025-10-01/NetworkExperimentDeleteExperiment.json @@ -0,0 +1,20 @@ +{ + "parameters": { + "api-version": "2025-10-01", + "experimentName": "MyExperiment", + "profileName": "MyProfile", + "resourceGroupName": "MyResourceGroup", + "subscriptionId": "subid" + }, + "responses": { + "200": {}, + "202": { + "headers": { + "azure-asyncoperation": "https://management.azure.com/subscriptions/subid/resourceGroups/MyResourceGroup/providers/Microsoft.Network/NetworkExperimentProfiles/MyProfile/NetworkExperiments/MyExperiment/operationResults/62e4d893-d233-4005-988e-a428d9f77076?api-version=2025-10-01" + } + }, + "204": {} + }, + "operationId": "Experiments_Delete", + "title": "Deletes an Experiment" +} diff --git a/specification/frontdoor/FrontDoor.Management/examples/2025-10-01/NetworkExperimentDeleteProfile.json b/specification/frontdoor/FrontDoor.Management/examples/2025-10-01/NetworkExperimentDeleteProfile.json new file mode 100644 index 000000000000..a622d2b46565 --- /dev/null +++ b/specification/frontdoor/FrontDoor.Management/examples/2025-10-01/NetworkExperimentDeleteProfile.json @@ -0,0 +1,19 @@ +{ + "parameters": { + "api-version": "2025-10-01", + "profileName": "MyProfile", + "resourceGroupName": "MyResourceGroup", + "subscriptionId": "subid" + }, + "responses": { + "200": {}, + "202": { + "headers": { + "azure-asyncoperation": "https://management.azure.com/subscriptions/subid/resourceGroups/MyResourceGroup/providers/Microsoft.Network/NetworkExperimentProfiles/MyProfile/operationResults/62e4d893-d233-4005-988e-a428d9f77076?api-version=2025-10-01" + } + }, + "204": {} + }, + "operationId": "NetworkExperimentProfiles_Delete", + "title": "Deletes an NetworkExperiment Profile by ProfileName" +} diff --git a/specification/frontdoor/FrontDoor.Management/examples/2025-10-01/NetworkExperimentGetExperiment.json b/specification/frontdoor/FrontDoor.Management/examples/2025-10-01/NetworkExperimentGetExperiment.json new file mode 100644 index 000000000000..e0418cd53463 --- /dev/null +++ b/specification/frontdoor/FrontDoor.Management/examples/2025-10-01/NetworkExperimentGetExperiment.json @@ -0,0 +1,39 @@ +{ + "parameters": { + "api-version": "2025-10-01", + "experimentName": "MyExperiment", + "profileName": "MyProfile", + "resourceGroupName": "MyResourceGroup", + "subscriptionId": "subid" + }, + "responses": { + "200": { + "body": { + "name": "MyExperiment", + "id": "/subscriptions/subid/resourceGroups/MyResourceGroup/providers/Microsoft.Network/NetworkExperimentProfiles/MyProfile/Experiments/MyExperiment", + "location": "WestUs", + "properties": { + "description": "this is my first experiment!", + "enabledState": "Enabled", + "endpointA": { + "name": "endpoint A", + "endpoint": "endpointA.net" + }, + "endpointB": { + "name": "endpoint B", + "endpoint": "endpointB.net" + }, + "resourceState": "Creating", + "scriptFileUri": "www.myScript.com", + "status": "ongoing" + }, + "tags": { + "key1": "value1", + "key2": "value2" + } + } + } + }, + "operationId": "Experiments_Get", + "title": "Gets an Experiment by ExperimentName" +} diff --git a/specification/frontdoor/FrontDoor.Management/examples/2025-10-01/NetworkExperimentGetLatencyScorecard.json b/specification/frontdoor/FrontDoor.Management/examples/2025-10-01/NetworkExperimentGetLatencyScorecard.json new file mode 100644 index 000000000000..5617b019d4e8 --- /dev/null +++ b/specification/frontdoor/FrontDoor.Management/examples/2025-10-01/NetworkExperimentGetLatencyScorecard.json @@ -0,0 +1,28 @@ +{ + "parameters": { + "aggregationInterval": "Daily", + "api-version": "2025-10-01", + "experimentName": "MyExperiment", + "profileName": "MyProfile", + "resourceGroupName": "MyResourceGroup", + "subscriptionId": "subid" + }, + "responses": { + "200": { + "body": { + "name": "DailyLatencyScorecard", + "id": "/subscriptions/subid/resourceGroups/MyResourceGroup/providers/Microsoft.Network/NetworkExperimentProfiles/MyProfile/Experiments/MyExperiment/LatencyScorecard", + "properties": { + "description": "This scorecard is the latency scorecard, aggregated over a day", + "country": "USA", + "endDateTimeUTC": "2019-09-21T17:32:28Z", + "endpointA": "https://endpointA.com", + "endpointB": "https://endpoingB.com", + "startDateTimeUTC": "2019-07-21T17:32:28Z" + } + } + } + }, + "operationId": "Reports_GetLatencyScorecards", + "title": "Gets a Latency Scorecard for a given Experiment" +} diff --git a/specification/frontdoor/FrontDoor.Management/examples/2025-10-01/NetworkExperimentGetPreconfiguredEndpoints.json b/specification/frontdoor/FrontDoor.Management/examples/2025-10-01/NetworkExperimentGetPreconfiguredEndpoints.json new file mode 100644 index 000000000000..327adb55baa6 --- /dev/null +++ b/specification/frontdoor/FrontDoor.Management/examples/2025-10-01/NetworkExperimentGetPreconfiguredEndpoints.json @@ -0,0 +1,29 @@ +{ + "parameters": { + "api-version": "2025-10-01", + "profileName": "MyProfile", + "resourceGroupName": "MyResourceGroup", + "subscriptionId": "subid" + }, + "responses": { + "200": { + "body": { + "nextLink": "https://url", + "value": [ + { + "name": "Endpoint 1", + "id": "/subscriptions/subid/resourceGroups/MyResourceGroup/providers/Microsoft.Network/NetworkExperimentProfiles/MyProfile/preconfiguredEndpoints/endpoint1", + "properties": { + "description": "this is the endpoint 1 preconfigured endpoint.", + "backend": "WESTUS", + "endpoint": "endpoint1.net", + "endpointType": "AFD" + } + } + ] + } + } + }, + "operationId": "PreconfiguredEndpoints_List", + "title": "Gets a list of Preconfigured Endpoints" +} diff --git a/specification/frontdoor/FrontDoor.Management/examples/2025-10-01/NetworkExperimentGetProfile.json b/specification/frontdoor/FrontDoor.Management/examples/2025-10-01/NetworkExperimentGetProfile.json new file mode 100644 index 000000000000..a858806bdc44 --- /dev/null +++ b/specification/frontdoor/FrontDoor.Management/examples/2025-10-01/NetworkExperimentGetProfile.json @@ -0,0 +1,27 @@ +{ + "parameters": { + "api-version": "2025-10-01", + "profileName": "MyProfile", + "resourceGroupName": "MyResourceGroup", + "subscriptionId": "subid" + }, + "responses": { + "200": { + "body": { + "name": "MyProfile", + "id": "/subscriptions/subid/resourceGroups/MyResourceGroup/providers/Microsoft.Network/NetworkExperimentProfiles/MyProfile", + "location": "WestUs", + "properties": { + "enabledState": "Enabled", + "resourceState": "Creating" + }, + "tags": { + "key1": "value1", + "key2": "value2" + } + } + } + }, + "operationId": "NetworkExperimentProfiles_Get", + "title": "Gets an NetworkExperiment Profile by Profile Id" +} diff --git a/specification/frontdoor/FrontDoor.Management/examples/2025-10-01/NetworkExperimentGetTimeseries.json b/specification/frontdoor/FrontDoor.Management/examples/2025-10-01/NetworkExperimentGetTimeseries.json new file mode 100644 index 000000000000..e07ddd02fe0b --- /dev/null +++ b/specification/frontdoor/FrontDoor.Management/examples/2025-10-01/NetworkExperimentGetTimeseries.json @@ -0,0 +1,36 @@ +{ + "parameters": { + "aggregationInterval": "Hourly", + "api-version": "2025-10-01", + "endDateTimeUTC": "2019-09-21T17:32:28Z", + "experimentName": "MyExperiment", + "profileName": "MyProfile", + "resourceGroupName": "MyResourceGroup", + "startDateTimeUTC": "2019-07-21T17:32:28Z", + "subscriptionId": "subid", + "timeseriesType": "MeasurementCounts" + }, + "responses": { + "200": { + "body": { + "id": "/subscriptions/subid/resourceGroups/MyResourceGroup/providers/Microsoft.Network/NetworkExperimentProfiles/MyProfile/Experiments/MyExperiment/Timeseries", + "properties": { + "aggregationInterval": "Hourly", + "country": "United States", + "endDateTimeUTC": "2019-08-02", + "endpoint": "https://endpointA.com", + "startDateTimeUTC": "2019-07-29", + "timeseriesData": [ + { + "dateTimeUTC": "2019-07-22T17:32:28Z", + "value": 79 + } + ], + "timeseriesType": "MeasurementCounts" + } + } + } + }, + "operationId": "Reports_GetTimeseries", + "title": "Gets a Timeseries for a given Experiment" +} diff --git a/specification/frontdoor/FrontDoor.Management/examples/2025-10-01/NetworkExperimentListExperiments.json b/specification/frontdoor/FrontDoor.Management/examples/2025-10-01/NetworkExperimentListExperiments.json new file mode 100644 index 000000000000..c0bad28e7224 --- /dev/null +++ b/specification/frontdoor/FrontDoor.Management/examples/2025-10-01/NetworkExperimentListExperiments.json @@ -0,0 +1,37 @@ +{ + "parameters": { + "api-version": "2025-10-01", + "profileName": "MyProfile", + "resourceGroupName": "MyResourceGroup", + "subscriptionId": "subid" + }, + "responses": { + "200": { + "body": { + "value": [ + { + "name": "MyExperiment", + "id": "/subscriptions/subId/resourceGroups/MyResourceGroup/providers/Microsoft.Network/NetworkExperimentProfiles/MyProfile/Experiments", + "properties": { + "description": "this is my first experiment!", + "enabledState": "Enabled", + "endpointA": { + "name": "endpoint A", + "endpoint": "endpointA.net" + }, + "endpointB": { + "name": "endpoint B", + "endpoint": "endpointB.net" + }, + "resourceState": "Creating", + "scriptFileUri": "www.myScript.com", + "status": "ongoing" + } + } + ] + } + } + }, + "operationId": "Experiments_ListByProfile", + "title": "Gets a list of Experiments" +} diff --git a/specification/frontdoor/FrontDoor.Management/examples/2025-10-01/NetworkExperimentListProfiles.json b/specification/frontdoor/FrontDoor.Management/examples/2025-10-01/NetworkExperimentListProfiles.json new file mode 100644 index 000000000000..4f477ac15665 --- /dev/null +++ b/specification/frontdoor/FrontDoor.Management/examples/2025-10-01/NetworkExperimentListProfiles.json @@ -0,0 +1,31 @@ +{ + "parameters": { + "api-version": "2025-10-01", + "resourceGroupName": "MyResourceGroup", + "subscriptionId": "subid" + }, + "responses": { + "200": { + "body": { + "value": [ + { + "name": "MyProfile", + "type": "Microsoft.Network/NetworkExperimentprofiles", + "id": "/subscriptions/subid/resourceGroups/MyResourceGroup/providers/Microsoft.Network/NetworkExperimentProfiles/", + "location": "WestUs", + "properties": { + "enabledState": "Enabled", + "resourceState": "Creating" + }, + "tags": { + "key1": "value1", + "key2": "value2" + } + } + ] + } + } + }, + "operationId": "NetworkExperimentProfiles_ListByResourceGroup", + "title": "List NetworkExperiment Profiles in a Resource Group" +} diff --git a/specification/frontdoor/FrontDoor.Management/examples/2025-10-01/NetworkExperimentListProfiles1.json b/specification/frontdoor/FrontDoor.Management/examples/2025-10-01/NetworkExperimentListProfiles1.json new file mode 100644 index 000000000000..f477d2c96c5c --- /dev/null +++ b/specification/frontdoor/FrontDoor.Management/examples/2025-10-01/NetworkExperimentListProfiles1.json @@ -0,0 +1,31 @@ +{ + "parameters": { + "api-version": "2025-10-01", + "resourceGroupName": "MyResourceGroup", + "subscriptionId": "subid" + }, + "responses": { + "200": { + "body": { + "value": [ + { + "name": "MyProfile", + "type": "Microsoft.Network/NetworkExperimentprofiles", + "id": "/subscriptions/subid/resourceGroups/MyResourceGroup/providers/Microsoft.Network/NetworkExperimentProfiles/", + "location": "WestUs", + "properties": { + "enabledState": "Enabled", + "resourceState": "Creating" + }, + "tags": { + "key1": "value1", + "key2": "value2" + } + } + ] + } + } + }, + "operationId": "NetworkExperimentProfiles_List", + "title": "List NetworkExperiment Profiles in a Resource Group" +} diff --git a/specification/frontdoor/FrontDoor.Management/examples/2025-10-01/NetworkExperimentUpdateExperiment.json b/specification/frontdoor/FrontDoor.Management/examples/2025-10-01/NetworkExperimentUpdateExperiment.json new file mode 100644 index 000000000000..f2b832fb3f4f --- /dev/null +++ b/specification/frontdoor/FrontDoor.Management/examples/2025-10-01/NetworkExperimentUpdateExperiment.json @@ -0,0 +1,76 @@ +{ + "parameters": { + "api-version": "2025-10-01", + "experimentName": "MyExperiment", + "parameters": { + "properties": { + "description": "string", + "enabledState": "Enabled" + } + }, + "profileName": "MyProfile", + "resourceGroupName": "MyResourceGroup", + "subscriptionId": "subid" + }, + "responses": { + "200": { + "body": { + "name": "MyExperiment", + "type": "Microsoft.Network/NetworkExperimentprofiles", + "id": "/subscriptions/subid/resourceGroups/MyResourceGroup/providers/Microsoft.Network/NetworkExperimentProfiles/MyProfile/Experiments/MyExperiment", + "location": "WestUs", + "properties": { + "description": "this is my first experiment!", + "enabledState": "Enabled", + "endpointA": { + "name": "endpoint A", + "endpoint": "endpointA.net" + }, + "endpointB": { + "name": "endpoint B", + "endpoint": "endpointB.net" + }, + "resourceState": "Creating", + "scriptFileUri": "www.myScript.com", + "status": "ongoing" + }, + "tags": { + "key1": "value1", + "key2": "value2" + } + } + }, + "202": { + "body": { + "name": "MyExperiment", + "type": "Microsoft.Network/NetworkExperimentprofiles", + "id": "/subscriptions/subid/resourceGroups/MyResourceGroup/providers/Microsoft.Network/NetworkExperimentProfiles/MyProfile/Experiments/MyExperiment", + "location": "WestUs", + "properties": { + "description": "this is my first experiment!", + "enabledState": "Enabled", + "endpointA": { + "name": "endpoint A", + "endpoint": "endpointA.net" + }, + "endpointB": { + "name": "endpoint B", + "endpoint": "endpointB.net" + }, + "resourceState": "Creating", + "scriptFileUri": "www.myScript.com", + "status": "ongoing" + }, + "tags": { + "key1": "value1", + "key2": "value2" + } + }, + "headers": { + "azure-asyncoperation": "https://management.azure.com/subscriptions/subid/resourceGroups/MyResourceGroup/providers/Microsoft.Network/NetworkExperimentProfiles/MyProfile/NetworkExperiments/MyExperiment/operationResults/62e4d893-d233-4005-988e-a428d9f77076?api-version=2025-10-01" + } + } + }, + "operationId": "Experiments_Update", + "title": "Updates an Experiment" +} diff --git a/specification/frontdoor/FrontDoor.Management/examples/2025-10-01/NetworkExperimentUpdateProfile.json b/specification/frontdoor/FrontDoor.Management/examples/2025-10-01/NetworkExperimentUpdateProfile.json new file mode 100644 index 000000000000..4b8ad4b6fb0e --- /dev/null +++ b/specification/frontdoor/FrontDoor.Management/examples/2025-10-01/NetworkExperimentUpdateProfile.json @@ -0,0 +1,56 @@ +{ + "parameters": { + "api-version": "2025-10-01", + "parameters": { + "properties": { + "enabledState": "Enabled" + }, + "tags": { + "key1": "value1", + "key2": "value2" + } + }, + "profileName": "MyProfile", + "resourceGroupName": "MyResourceGroup", + "subscriptionId": "subid" + }, + "responses": { + "200": { + "body": { + "name": "MyProfile", + "type": "Microsoft.Network/NetworkExperimentprofiles", + "id": "/subscriptions/subid/resourceGroups/MyResourceGroup/providers/Microsoft.Network/NetworkExperimentProfiles/MyProfile", + "location": "WestUs", + "properties": { + "enabledState": "Enabled", + "resourceState": "Creating" + }, + "tags": { + "key1": "value1", + "key2": "value2" + } + } + }, + "202": { + "body": { + "name": "MyProfile", + "type": "Microsoft.Network/NetworkExperimentprofiles", + "id": "/subscriptions/subid/resourceGroups/MyResourceGroup/providers/Microsoft.Network/NetworkExperimentProfiles/MyProfile", + "location": "WestUs", + "properties": { + "enabledState": "Enabled", + "resourceState": "Creating" + }, + "tags": { + "key1": "value1", + "key2": "value2" + } + }, + "headers": { + "azure-asyncoperation": "https://management.azure.com/subscriptions/subid/resourceGroups/MyResourceGroup/providers/Microsoft.Network/NetworkExperimentProfiles/MyProfile/operationResults/62e4d893-d233-4005-988e-a428d9f77076?api-version=2025-10-01" + } + } + }, + "operationId": "NetworkExperimentProfiles_Update", + "title": "Updates an Experiment" +} diff --git a/specification/frontdoor/FrontDoor.Management/examples/2025-10-01/WafListManagedRuleSets.json b/specification/frontdoor/FrontDoor.Management/examples/2025-10-01/WafListManagedRuleSets.json new file mode 100644 index 000000000000..d7979b46168d --- /dev/null +++ b/specification/frontdoor/FrontDoor.Management/examples/2025-10-01/WafListManagedRuleSets.json @@ -0,0 +1,71 @@ +{ + "parameters": { + "api-version": "2025-10-01", + "subscriptionId": "subid" + }, + "responses": { + "200": { + "body": { + "value": [ + { + "name": "DefaultRuleSet_1.0", + "type": "Microsoft.Network/frontdoorwebapplicationfirewallmanagedrulesets", + "id": "/subscriptions/subid/providers/Microsoft.Network/FrontDoorWebApplicationFirewallManagedRuleSets", + "properties": { + "provisioningState": "Succeeded", + "ruleGroups": [ + { + "description": "SQL injection", + "ruleGroupName": "SQLI", + "rules": [ + { + "description": "SQL Injection Attack Detected via libinjection", + "defaultAction": "Block", + "defaultState": "Enabled", + "ruleId": "942100" + }, + { + "description": "SQL Injection Attack: Common Injection Testing Detected", + "defaultAction": "Block", + "defaultState": "Enabled", + "ruleId": "942110" + } + ] + }, + { + "description": "Cross-site scripting", + "ruleGroupName": "XSS", + "rules": [ + { + "description": "XSS Attack Detected via libinjection", + "defaultAction": "Block", + "defaultState": "Enabled", + "ruleId": "941100" + }, + { + "description": "XSS Attack Detected via libinjection", + "defaultAction": "Block", + "defaultState": "Enabled", + "ruleId": "941101" + }, + { + "description": "XSS Filter - Category 1: Script Tag Vector", + "defaultAction": "Block", + "defaultState": "Enabled", + "ruleId": "941110" + } + ] + } + ], + "ruleSetId": "8125d145-ddc5-4d90-9bc3-24c5f2de69a2", + "ruleSetType": "DefaultRuleSet", + "ruleSetVersion": "1.0" + } + } + ] + } + } + }, + "operationId": "ManagedRuleSets_List", + "title": "List Policies ManagedRuleSets in a Resource Group" +} diff --git a/specification/frontdoor/FrontDoor.Management/examples/2025-10-01/WafListPolicies.json b/specification/frontdoor/FrontDoor.Management/examples/2025-10-01/WafListPolicies.json new file mode 100644 index 000000000000..6691d6b4a094 --- /dev/null +++ b/specification/frontdoor/FrontDoor.Management/examples/2025-10-01/WafListPolicies.json @@ -0,0 +1,136 @@ +{ + "parameters": { + "api-version": "2025-10-01", + "resourceGroupName": "rg1", + "subscriptionId": "subid" + }, + "responses": { + "200": { + "body": { + "value": [ + { + "name": "Policy1", + "type": "Microsoft.Network/frontdoorwebapplicationfirewallpolicies", + "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/FrontDoorWebApplicationFirewallPolicies/Policy1", + "location": "WestUs", + "properties": { + "customRules": { + "rules": [ + { + "name": "Rule1", + "action": "Block", + "enabledState": "Enabled", + "matchConditions": [ + { + "matchValue": [ + "192.168.1.0/24", + "10.0.0.0/24" + ], + "matchVariable": "RemoteAddr", + "negateCondition": false, + "operator": "IPMatch", + "selector": null, + "transforms": [] + } + ], + "priority": 1, + "rateLimitDurationInMinutes": 0, + "rateLimitThreshold": 1000, + "ruleType": "RateLimitRule" + }, + { + "name": "Rule2", + "action": "Block", + "enabledState": "Enabled", + "matchConditions": [ + { + "matchValue": [ + "CH" + ], + "matchVariable": "RemoteAddr", + "negateCondition": false, + "operator": "GeoMatch", + "selector": null + }, + { + "matchValue": [ + "windows" + ], + "matchVariable": "RequestHeader", + "negateCondition": false, + "operator": "Contains", + "selector": "UserAgent", + "transforms": [ + "Lowercase" + ] + } + ], + "priority": 2, + "rateLimitDurationInMinutes": 0, + "rateLimitThreshold": 0, + "ruleType": "MatchRule" + } + ] + }, + "frontendEndpointLinks": [ + { + "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontdoors/fd1/frontendendpoints/fd1-azurefd-net" + } + ], + "managedRules": { + "managedRuleSets": [ + { + "exclusions": [ + { + "matchVariable": "RequestHeaderNames", + "selector": "User-Agent", + "selectorMatchOperator": "Equals" + } + ], + "ruleGroupOverrides": [ + { + "ruleGroupName": "SQLI", + "rules": [ + { + "action": "Redirect", + "enabledState": "Enabled", + "ruleId": "942100" + }, + { + "enabledState": "Disabled", + "ruleId": "942110" + } + ] + } + ], + "ruleSetType": "DefaultRuleSet", + "ruleSetVersion": "1.0" + } + ] + }, + "policySettings": { + "customBlockResponseBody": "PGh0bWw+CjxoZWFkZXI+PHRpdGxlPkhlbGxvPC90aXRsZT48L2hlYWRlcj4KPGJvZHk+CkhlbGxvIHdvcmxkCjwvYm9keT4KPC9odG1sPg==", + "customBlockResponseStatusCode": 499, + "enabledState": "Enabled", + "mode": "Prevention", + "redirectUrl": "http://www.bing.com" + }, + "provisioningState": "Succeeded", + "resourceState": "Enabled", + "securityPolicyLinks": [] + }, + "sku": { + "name": "Classic_AzureFrontDoor" + }, + "tags": { + "key1": "value1", + "key2": "value2" + } + } + ] + } + } + }, + "operationId": "Policies_List", + "title": "Get all Policies in a Resource Group" +} diff --git a/specification/frontdoor/FrontDoor.Management/examples/2025-10-01/WafListPoliciesUnderSubscription.json b/specification/frontdoor/FrontDoor.Management/examples/2025-10-01/WafListPoliciesUnderSubscription.json new file mode 100644 index 000000000000..75771f0f36cb --- /dev/null +++ b/specification/frontdoor/FrontDoor.Management/examples/2025-10-01/WafListPoliciesUnderSubscription.json @@ -0,0 +1,135 @@ +{ + "parameters": { + "api-version": "2025-10-01", + "subscriptionId": "subid" + }, + "responses": { + "200": { + "body": { + "value": [ + { + "name": "Policy1", + "type": "Microsoft.Network/frontdoorwebapplicationfirewallpolicies", + "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/FrontDoorWebApplicationFirewallPolicies/Policy1", + "location": "WestUs", + "properties": { + "customRules": { + "rules": [ + { + "name": "Rule1", + "action": "Block", + "enabledState": "Enabled", + "matchConditions": [ + { + "matchValue": [ + "192.168.1.0/24", + "10.0.0.0/24" + ], + "matchVariable": "RemoteAddr", + "negateCondition": false, + "operator": "IPMatch", + "selector": null, + "transforms": [] + } + ], + "priority": 1, + "rateLimitDurationInMinutes": 0, + "rateLimitThreshold": 1000, + "ruleType": "RateLimitRule" + }, + { + "name": "Rule2", + "action": "Block", + "enabledState": "Enabled", + "matchConditions": [ + { + "matchValue": [ + "CH" + ], + "matchVariable": "RemoteAddr", + "negateCondition": false, + "operator": "GeoMatch", + "selector": null + }, + { + "matchValue": [ + "windows" + ], + "matchVariable": "RequestHeader", + "negateCondition": false, + "operator": "Contains", + "selector": "UserAgent", + "transforms": [ + "Lowercase" + ] + } + ], + "priority": 2, + "rateLimitDurationInMinutes": 0, + "rateLimitThreshold": 0, + "ruleType": "MatchRule" + } + ] + }, + "frontendEndpointLinks": [ + { + "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontdoors/fd1/frontendendpoints/fd1-azurefd-net" + } + ], + "managedRules": { + "managedRuleSets": [ + { + "exclusions": [ + { + "matchVariable": "RequestHeaderNames", + "selector": "User-Agent", + "selectorMatchOperator": "Equals" + } + ], + "ruleGroupOverrides": [ + { + "ruleGroupName": "SQLI", + "rules": [ + { + "action": "Redirect", + "enabledState": "Enabled", + "ruleId": "942100" + }, + { + "enabledState": "Disabled", + "ruleId": "942110" + } + ] + } + ], + "ruleSetType": "DefaultRuleSet", + "ruleSetVersion": "1.0" + } + ] + }, + "policySettings": { + "customBlockResponseBody": "PGh0bWw+CjxoZWFkZXI+PHRpdGxlPkhlbGxvPC90aXRsZT48L2hlYWRlcj4KPGJvZHk+CkhlbGxvIHdvcmxkCjwvYm9keT4KPC9odG1sPg==", + "customBlockResponseStatusCode": 499, + "enabledState": "Enabled", + "mode": "Prevention", + "redirectUrl": "http://www.bing.com" + }, + "provisioningState": "Succeeded", + "resourceState": "Enabled", + "securityPolicyLinks": [] + }, + "sku": { + "name": "Classic_AzureFrontDoor" + }, + "tags": { + "key1": "value1", + "key2": "value2" + } + } + ] + } + } + }, + "operationId": "Policies_ListBySubscription", + "title": "Get all Policies in a Resource Group" +} diff --git a/specification/frontdoor/FrontDoor.Management/examples/2025-10-01/WafPolicyCreateOrUpdate.json b/specification/frontdoor/FrontDoor.Management/examples/2025-10-01/WafPolicyCreateOrUpdate.json new file mode 100644 index 000000000000..f5c921d68319 --- /dev/null +++ b/specification/frontdoor/FrontDoor.Management/examples/2025-10-01/WafPolicyCreateOrUpdate.json @@ -0,0 +1,656 @@ +{ + "parameters": { + "api-version": "2025-10-01", + "parameters": { + "location": "WestUs", + "properties": { + "customRules": { + "rules": [ + { + "name": "Rule1", + "action": "Block", + "matchConditions": [ + { + "matchValue": [ + "192.168.1.0/24", + "10.0.0.0/24" + ], + "matchVariable": "RemoteAddr", + "operator": "IPMatch" + } + ], + "priority": 1, + "rateLimitThreshold": 1000, + "ruleType": "RateLimitRule" + }, + { + "name": "Rule2", + "action": "Block", + "matchConditions": [ + { + "matchValue": [ + "CH" + ], + "matchVariable": "RemoteAddr", + "operator": "GeoMatch" + }, + { + "matchValue": [ + "windows" + ], + "matchVariable": "RequestHeader", + "operator": "Contains", + "selector": "UserAgent", + "transforms": [ + "Lowercase" + ] + } + ], + "priority": 2, + "ruleType": "MatchRule" + }, + { + "name": "Rule3", + "action": "CAPTCHA", + "matchConditions": [ + { + "matchValue": [ + "AzureBackup", + "AzureBotService" + ], + "matchVariable": "RemoteAddr", + "operator": "ServiceTagMatch" + } + ], + "priority": 1, + "rateLimitThreshold": 1000, + "ruleType": "RateLimitRule" + } + ] + }, + "managedRules": { + "managedRuleSets": [ + { + "exclusions": [ + { + "matchVariable": "RequestHeaderNames", + "selector": "User-Agent", + "selectorMatchOperator": "Equals" + } + ], + "ruleGroupOverrides": [ + { + "exclusions": [ + { + "matchVariable": "RequestCookieNames", + "selector": "token", + "selectorMatchOperator": "StartsWith" + } + ], + "ruleGroupName": "SQLI", + "rules": [ + { + "action": "Redirect", + "enabledState": "Enabled", + "exclusions": [ + { + "matchVariable": "QueryStringArgNames", + "selector": "query", + "selectorMatchOperator": "Equals" + } + ], + "ruleId": "942100" + }, + { + "enabledState": "Disabled", + "ruleId": "942110" + } + ] + } + ], + "ruleSetAction": "Block", + "ruleSetType": "DefaultRuleSet", + "ruleSetVersion": "1.0" + }, + { + "ruleGroupOverrides": [ + { + "ruleGroupName": "ExcessiveRequests", + "rules": [ + { + "action": "Block", + "enabledState": "Enabled", + "ruleId": "500100", + "sensitivity": "High" + } + ] + } + ], + "ruleSetType": "Microsoft_HTTPDDoSRuleSet", + "ruleSetVersion": "1.0" + } + ] + }, + "policySettings": { + "captchaExpirationInMinutes": 30, + "customBlockResponseBody": "PGh0bWw+CjxoZWFkZXI+PHRpdGxlPkhlbGxvPC90aXRsZT48L2hlYWRlcj4KPGJvZHk+CkhlbGxvIHdvcmxkCjwvYm9keT4KPC9odG1sPg==", + "customBlockResponseStatusCode": 429, + "enabledState": "Enabled", + "javascriptChallengeExpirationInMinutes": 30, + "logScrubbing": { + "scrubbingRules": [ + { + "matchVariable": "RequestIPAddress", + "selector": null, + "selectorMatchOperator": "EqualsAny", + "state": "Enabled" + } + ], + "state": "Enabled" + }, + "mode": "Prevention", + "redirectUrl": "http://www.bing.com", + "requestBodyCheck": "Disabled" + } + }, + "sku": { + "name": "Premium_AzureFrontDoor" + } + }, + "policyName": "Policy1", + "resourceGroupName": "rg1", + "subscriptionId": "subid" + }, + "responses": { + "200": { + "body": { + "name": "Policy1", + "type": "Microsoft.Network/frontdoorwebapplicationfirewallpolicies", + "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/FrontDoorWebApplicationFirewallPolicies/Policy1", + "location": "WestUs", + "properties": { + "customRules": { + "rules": [ + { + "name": "Rule1", + "action": "Block", + "enabledState": "Enabled", + "matchConditions": [ + { + "matchValue": [ + "192.168.1.0/24", + "10.0.0.0/24" + ], + "matchVariable": "RemoteAddr", + "negateCondition": false, + "operator": "IPMatch", + "selector": null, + "transforms": [] + } + ], + "priority": 1, + "rateLimitDurationInMinutes": 0, + "rateLimitThreshold": 1000, + "ruleType": "RateLimitRule" + }, + { + "name": "Rule2", + "action": "Block", + "enabledState": "Enabled", + "matchConditions": [ + { + "matchValue": [ + "CH" + ], + "matchVariable": "RemoteAddr", + "negateCondition": false, + "operator": "GeoMatch", + "selector": null + }, + { + "matchValue": [ + "windows" + ], + "matchVariable": "RequestHeader", + "negateCondition": false, + "operator": "Contains", + "selector": "UserAgent", + "transforms": [ + "Lowercase" + ] + } + ], + "priority": 2, + "rateLimitDurationInMinutes": 0, + "rateLimitThreshold": 0, + "ruleType": "MatchRule" + }, + { + "name": "rule3", + "action": "CAPTCHA", + "enabledState": null, + "matchConditions": [ + { + "matchValue": [ + "AzureBackup", + "AzureBotService" + ], + "matchVariable": "RemoteAddr", + "negateCondition": false, + "operator": "ServiceTagMatch", + "selector": null, + "transforms": [] + } + ], + "priority": 1, + "rateLimitDurationInMinutes": null, + "rateLimitThreshold": 1000, + "ruleType": "RateLimitRule" + } + ] + }, + "frontendEndpointLinks": [], + "managedRules": { + "managedRuleSets": [ + { + "exclusions": [ + { + "matchVariable": "RequestHeaderNames", + "selector": "User-Agent", + "selectorMatchOperator": "Equals" + } + ], + "ruleGroupOverrides": [ + { + "exclusions": [ + { + "matchVariable": "RequestCookieNames", + "selector": "token", + "selectorMatchOperator": "StartsWith" + } + ], + "ruleGroupName": "SQLI", + "rules": [ + { + "action": "Redirect", + "enabledState": "Enabled", + "exclusions": [ + { + "matchVariable": "QueryStringArgNames", + "selector": "query", + "selectorMatchOperator": "Equals" + } + ], + "ruleId": "942100" + }, + { + "enabledState": "Disabled", + "ruleId": "942110" + } + ] + } + ], + "ruleSetAction": "Block", + "ruleSetType": "DefaultRuleSet", + "ruleSetVersion": "1.0" + }, + { + "ruleGroupOverrides": [ + { + "ruleGroupName": "ExcessiveRequests", + "rules": [ + { + "action": "Block", + "enabledState": "Enabled", + "ruleId": "500100", + "sensitivity": "High" + } + ] + } + ], + "ruleSetType": "Microsoft_HTTPDDoSRuleSet", + "ruleSetVersion": "1.0" + } + ] + }, + "policySettings": { + "customBlockResponseBody": "PGh0bWw+CjxoZWFkZXI+PHRpdGxlPkhlbGxvPC90aXRsZT48L2hlYWRlcj4KPGJvZHk+CkhlbGxvIHdvcmxkCjwvYm9keT4KPC9odG1sPg==", + "customBlockResponseStatusCode": 429, + "enabledState": "Enabled", + "javascriptChallengeExpirationInMinutes": 30, + "logScrubbing": { + "scrubbingRules": [ + { + "matchVariable": "RequestIPAddress", + "selector": null, + "selectorMatchOperator": "EqualsAny", + "state": "Enabled" + } + ], + "state": "Enabled" + }, + "mode": "Prevention", + "redirectUrl": "http://www.bing.com", + "requestBodyCheck": "Disabled" + }, + "provisioningState": "Succeeded", + "resourceState": "Enabled", + "securityPolicyLinks": [] + }, + "sku": { + "name": "Premium_AzureFrontDoor" + }, + "tags": { + "key1": "value1", + "key2": "value2" + } + } + }, + "201": { + "body": { + "name": "Policy1", + "type": "Microsoft.Network/frontdoorwebapplicationfirewallpolicies", + "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/FrontDoorWebApplicationFirewallPolicies/Policy1", + "location": "WestUs", + "properties": { + "customRules": { + "rules": [ + { + "name": "Rule1", + "action": "Block", + "enabledState": "Enabled", + "matchConditions": [ + { + "matchValue": [ + "192.168.1.0/24", + "10.0.0.0/24" + ], + "matchVariable": "RemoteAddr", + "negateCondition": false, + "operator": "IPMatch", + "selector": null, + "transforms": [] + } + ], + "priority": 1, + "rateLimitDurationInMinutes": 0, + "rateLimitThreshold": 1000, + "ruleType": "RateLimitRule" + }, + { + "name": "Rule2", + "action": "Block", + "enabledState": "Enabled", + "matchConditions": [ + { + "matchValue": [ + "CH" + ], + "matchVariable": "RemoteAddr", + "negateCondition": false, + "operator": "GeoMatch", + "selector": null + }, + { + "matchValue": [ + "windows" + ], + "matchVariable": "RequestHeader", + "negateCondition": false, + "operator": "Contains", + "selector": "UserAgent", + "transforms": [ + "Lowercase" + ] + } + ], + "priority": 2, + "rateLimitDurationInMinutes": 0, + "rateLimitThreshold": 0, + "ruleType": "MatchRule" + } + ] + }, + "frontendEndpointLinks": [], + "managedRules": { + "managedRuleSets": [ + { + "exclusions": [ + { + "matchVariable": "RequestHeaderNames", + "selector": "User-Agent", + "selectorMatchOperator": "Equals" + } + ], + "ruleGroupOverrides": [ + { + "exclusions": [ + { + "matchVariable": "RequestCookieNames", + "selector": "token", + "selectorMatchOperator": "StartsWith" + } + ], + "ruleGroupName": "SQLI", + "rules": [ + { + "action": "Redirect", + "enabledState": "Enabled", + "exclusions": [ + { + "matchVariable": "QueryStringArgNames", + "selector": "query", + "selectorMatchOperator": "Equals" + } + ], + "ruleId": "942100" + }, + { + "enabledState": "Disabled", + "ruleId": "942110" + } + ] + } + ], + "ruleSetType": "DefaultRuleSet", + "ruleSetVersion": "1.0" + } + ] + }, + "policySettings": { + "customBlockResponseBody": "PGh0bWw+CjxoZWFkZXI+PHRpdGxlPkhlbGxvPC90aXRsZT48L2hlYWRlcj4KPGJvZHk+CkhlbGxvIHdvcmxkCjwvYm9keT4KPC9odG1sPg==", + "customBlockResponseStatusCode": 429, + "enabledState": "Enabled", + "logScrubbing": { + "scrubbingRules": [ + { + "matchVariable": "RequestIPAddress", + "selector": null, + "selectorMatchOperator": "EqualsAny", + "state": "Enabled" + } + ], + "state": "Enabled" + }, + "mode": "Prevention", + "redirectUrl": "http://www.bing.com", + "requestBodyCheck": "Disabled" + }, + "provisioningState": "Succeeded", + "resourceState": "Enabled", + "securityPolicyLinks": [] + }, + "sku": { + "name": "Classic_AzureFrontDoor" + }, + "tags": { + "key1": "value1", + "key2": "value2" + } + } + }, + "202": { + "body": { + "name": "Policy1", + "type": "Microsoft.Network/frontdoorwebapplicationfirewallpolicies", + "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/FrontDoorWebApplicationFirewallPolicies/Policy1", + "location": "WestUs", + "properties": { + "customRules": { + "rules": [ + { + "name": "Rule1", + "action": "Block", + "enabledState": "Enabled", + "matchConditions": [ + { + "matchValue": [ + "192.168.1.0/24", + "10.0.0.0/24" + ], + "matchVariable": "RemoteAddr", + "negateCondition": false, + "operator": "IPMatch", + "selector": null, + "transforms": [] + } + ], + "priority": 1, + "rateLimitDurationInMinutes": 0, + "rateLimitThreshold": 1000, + "ruleType": "RateLimitRule" + }, + { + "name": "Rule2", + "action": "Block", + "enabledState": "Enabled", + "matchConditions": [ + { + "matchValue": [ + "CH" + ], + "matchVariable": "RemoteAddr", + "negateCondition": false, + "operator": "GeoMatch", + "selector": null + }, + { + "matchValue": [ + "windows" + ], + "matchVariable": "RequestHeader", + "negateCondition": false, + "operator": "Contains", + "selector": "UserAgent", + "transforms": [ + "Lowercase" + ] + } + ], + "priority": 2, + "rateLimitDurationInMinutes": 0, + "rateLimitThreshold": 0, + "ruleType": "MatchRule" + } + ] + }, + "frontendEndpointLinks": [], + "managedRules": { + "managedRuleSets": [ + { + "exclusions": [ + { + "matchVariable": "RequestHeaderNames", + "selector": "User-Agent", + "selectorMatchOperator": "Equals" + } + ], + "ruleGroupOverrides": [ + { + "exclusions": [ + { + "matchVariable": "RequestCookieNames", + "selector": "token", + "selectorMatchOperator": "StartsWith" + } + ], + "ruleGroupName": "SQLI", + "rules": [ + { + "action": "Redirect", + "enabledState": "Enabled", + "exclusions": [ + { + "matchVariable": "QueryStringArgNames", + "selector": "query", + "selectorMatchOperator": "Equals" + } + ], + "ruleId": "942100" + }, + { + "enabledState": "Disabled", + "ruleId": "942110" + } + ] + } + ], + "ruleSetAction": "Block", + "ruleSetType": "DefaultRuleSet", + "ruleSetVersion": "1.0" + }, + { + "ruleGroupOverrides": [ + { + "ruleGroupName": "ExcessiveRequests", + "rules": [ + { + "action": "Block", + "enabledState": "Enabled", + "ruleId": "500100", + "sensitivity": "High" + } + ] + } + ], + "ruleSetType": "Microsoft_HTTPDDoSRuleSet", + "ruleSetVersion": "1.0" + } + ] + }, + "policySettings": { + "customBlockResponseBody": "PGh0bWw+CjxoZWFkZXI+PHRpdGxlPkhlbGxvPC90aXRsZT48L2hlYWRlcj4KPGJvZHk+CkhlbGxvIHdvcmxkCjwvYm9keT4KPC9odG1sPg==", + "customBlockResponseStatusCode": 429, + "enabledState": "Enabled", + "logScrubbing": { + "scrubbingRules": [ + { + "matchVariable": "RequestIPAddress", + "selector": null, + "selectorMatchOperator": "EqualsAny", + "state": "Enabled" + } + ], + "state": "Enabled" + }, + "mode": "Prevention", + "redirectUrl": "http://www.bing.com", + "requestBodyCheck": "Disabled" + }, + "provisioningState": "Succeeded", + "resourceState": "Enabled", + "securityPolicyLinks": [] + }, + "sku": { + "name": "Premium_AzureFrontDoor" + }, + "tags": { + "key1": "value1", + "key2": "value2" + } + } + } + }, + "operationId": "Policies_CreateOrUpdate", + "title": "Creates specific policy" +} diff --git a/specification/frontdoor/FrontDoor.Management/examples/2025-10-01/WafPolicyDelete.json b/specification/frontdoor/FrontDoor.Management/examples/2025-10-01/WafPolicyDelete.json new file mode 100644 index 000000000000..c2dc9491690f --- /dev/null +++ b/specification/frontdoor/FrontDoor.Management/examples/2025-10-01/WafPolicyDelete.json @@ -0,0 +1,19 @@ +{ + "parameters": { + "api-version": "2025-10-01", + "policyName": "Policy1", + "resourceGroupName": "rg1", + "subscriptionId": "subid" + }, + "responses": { + "200": {}, + "202": { + "headers": { + "azure-asyncoperation": "https://management.azure.com/subscriptions/34adfa4f-cedf-4dc0-ba29-b6d1a69ab345/providers/Microsoft.Network/frontdoors/fd1/operationResults/62e4d893-d233-4005-988e-a428d9f77076?api-version=2022-10-01" + } + }, + "204": {} + }, + "operationId": "Policies_Delete", + "title": "Delete protection policy" +} diff --git a/specification/frontdoor/FrontDoor.Management/examples/2025-10-01/WafPolicyGet.json b/specification/frontdoor/FrontDoor.Management/examples/2025-10-01/WafPolicyGet.json new file mode 100644 index 000000000000..7f08ece42be8 --- /dev/null +++ b/specification/frontdoor/FrontDoor.Management/examples/2025-10-01/WafPolicyGet.json @@ -0,0 +1,155 @@ +{ + "parameters": { + "api-version": "2025-10-01", + "policyName": "Policy1", + "resourceGroupName": "rg1", + "subscriptionId": "subid" + }, + "responses": { + "200": { + "body": { + "name": "Policy1", + "type": "Microsoft.Network/frontdoorwebapplicationfirewallpolicies", + "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/FrontDoorWebApplicationFirewallPolicies/Policy1", + "location": "WestUs", + "properties": { + "customRules": { + "rules": [ + { + "name": "Rule1", + "action": "Block", + "enabledState": "Enabled", + "matchConditions": [ + { + "matchValue": [ + "192.168.1.0/24", + "10.0.0.0/24" + ], + "matchVariable": "RemoteAddr", + "negateCondition": false, + "operator": "IPMatch", + "selector": null, + "transforms": [] + } + ], + "priority": 1, + "rateLimitDurationInMinutes": 0, + "rateLimitThreshold": 1000, + "ruleType": "RateLimitRule" + }, + { + "name": "Rule2", + "action": "Block", + "enabledState": "Enabled", + "matchConditions": [ + { + "matchValue": [ + "CH" + ], + "matchVariable": "RemoteAddr", + "negateCondition": false, + "operator": "GeoMatch", + "selector": null + }, + { + "matchValue": [ + "windows" + ], + "matchVariable": "RequestHeader", + "negateCondition": false, + "operator": "Contains", + "selector": "UserAgent", + "transforms": [ + "Lowercase" + ] + } + ], + "priority": 2, + "rateLimitDurationInMinutes": 0, + "rateLimitThreshold": 0, + "ruleType": "MatchRule" + } + ] + }, + "frontendEndpointLinks": [ + { + "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontdoors/fd1/frontendendpoints/fd1-azurefd-net" + } + ], + "managedRules": { + "managedRuleSets": [ + { + "exclusions": [ + { + "matchVariable": "RequestHeaderNames", + "selector": "User-Agent", + "selectorMatchOperator": "Equals" + } + ], + "ruleGroupOverrides": [ + { + "exclusions": [], + "ruleGroupName": "SQLI", + "rules": [ + { + "action": "Redirect", + "enabledState": "Enabled", + "exclusions": [], + "ruleId": "942100" + }, + { + "enabledState": "Disabled", + "ruleId": "942110" + } + ] + } + ], + "ruleSetAction": "Block", + "ruleSetType": "DefaultRuleSet", + "ruleSetVersion": "1.0" + }, + { + "ruleGroupOverrides": [ + { + "ruleGroupName": "ExcessiveRequests", + "rules": [ + { + "action": "Block", + "enabledState": "Enabled", + "ruleId": "500100", + "sensitivity": "High" + } + ] + } + ], + "ruleSetType": "Microsoft_HTTPDDoSRuleSet", + "ruleSetVersion": "1.0" + } + ] + }, + "policySettings": { + "customBlockResponseBody": "PGh0bWw+CjxoZWFkZXI+PHRpdGxlPkhlbGxvPC90aXRsZT48L2hlYWRlcj4KPGJvZHk+CkhlbGxvIHdvcmxkCjwvYm9keT4KPC9odG1sPg==", + "customBlockResponseStatusCode": 499, + "enabledState": "Enabled", + "logScrubbing": null, + "mode": "Prevention", + "redirectUrl": "http://www.bing.com", + "requestBodyCheck": "Disabled" + }, + "provisioningState": "Succeeded", + "resourceState": "Enabled", + "securityPolicyLinks": [] + }, + "sku": { + "name": "Classic_AzureFrontDoor" + }, + "tags": { + "key1": "value1", + "key2": "value2" + } + } + } + }, + "operationId": "Policies_Get", + "title": "Get Policy" +} diff --git a/specification/frontdoor/FrontDoor.Management/examples/2025-10-01/WafPolicyPatch.json b/specification/frontdoor/FrontDoor.Management/examples/2025-10-01/WafPolicyPatch.json new file mode 100644 index 000000000000..85fa873f387e --- /dev/null +++ b/specification/frontdoor/FrontDoor.Management/examples/2025-10-01/WafPolicyPatch.json @@ -0,0 +1,152 @@ +{ + "parameters": { + "api-version": "2025-10-01", + "parameters": { + "tags": { + "key1": "value1", + "key2": "value2" + } + }, + "policyName": "Policy1", + "resourceGroupName": "rg1", + "subscriptionId": "subid" + }, + "responses": { + "200": { + "body": { + "name": "Policy1", + "type": "Microsoft.Network/frontdoorwebapplicationfirewallpolicies", + "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/FrontDoorWebApplicationFirewallPolicies/Policy1", + "location": "WestUs", + "properties": { + "customRules": { + "rules": [ + { + "name": "Rule1", + "action": "Block", + "enabledState": "Enabled", + "matchConditions": [ + { + "matchValue": [ + "192.168.1.0/24", + "10.0.0.0/24" + ], + "matchVariable": "RemoteAddr", + "negateCondition": false, + "operator": "IPMatch", + "selector": null, + "transforms": [] + } + ], + "priority": 1, + "rateLimitDurationInMinutes": 0, + "rateLimitThreshold": 1000, + "ruleType": "RateLimitRule" + }, + { + "name": "Rule2", + "action": "Block", + "enabledState": "Enabled", + "matchConditions": [ + { + "matchValue": [ + "CH" + ], + "matchVariable": "RemoteAddr", + "negateCondition": false, + "operator": "GeoMatch", + "selector": null + }, + { + "matchValue": [ + "windows" + ], + "matchVariable": "RequestHeader", + "negateCondition": false, + "operator": "Contains", + "selector": "UserAgent", + "transforms": [ + "Lowercase" + ] + } + ], + "priority": 2, + "rateLimitDurationInMinutes": 0, + "rateLimitThreshold": 0, + "ruleType": "MatchRule" + } + ] + }, + "frontendEndpointLinks": [], + "managedRules": { + "managedRuleSets": [ + { + "exclusions": [ + { + "matchVariable": "RequestHeaderNames", + "selector": "User-Agent", + "selectorMatchOperator": "Equals" + } + ], + "ruleGroupOverrides": [ + { + "exclusions": [ + { + "matchVariable": "RequestCookieNames", + "selector": "token", + "selectorMatchOperator": "StartsWith" + } + ], + "ruleGroupName": "SQLI", + "rules": [ + { + "action": "Redirect", + "enabledState": "Enabled", + "exclusions": [ + { + "matchVariable": "QueryStringArgNames", + "selector": "query", + "selectorMatchOperator": "Equals" + } + ], + "ruleId": "942100" + }, + { + "enabledState": "Disabled", + "ruleId": "942110" + } + ] + } + ], + "ruleSetAction": "Block", + "ruleSetType": "DefaultRuleSet", + "ruleSetVersion": "1.0" + } + ] + }, + "policySettings": { + "customBlockResponseBody": "PGh0bWw+CjxoZWFkZXI+PHRpdGxlPkhlbGxvPC90aXRsZT48L2hlYWRlcj4KPGJvZHk+CkhlbGxvIHdvcmxkCjwvYm9keT4KPC9odG1sPg==", + "customBlockResponseStatusCode": 499, + "enabledState": "Enabled", + "logScrubbing": null, + "mode": "Prevention", + "redirectUrl": "http://www.bing.com", + "requestBodyCheck": "Disabled" + }, + "provisioningState": "Succeeded", + "resourceState": "Enabled", + "securityPolicyLinks": [] + }, + "sku": { + "name": "Classic_AzureFrontDoor" + }, + "tags": { + "key1": "value1", + "key2": "value2" + } + } + } + }, + "operationId": "Policies_Update", + "title": "Patches specific policy" +} diff --git a/specification/frontdoor/FrontDoor.Management/main.tsp b/specification/frontdoor/FrontDoor.Management/main.tsp new file mode 100644 index 000000000000..5d0ddf333391 --- /dev/null +++ b/specification/frontdoor/FrontDoor.Management/main.tsp @@ -0,0 +1,49 @@ +/** + * PLEASE DO NOT REMOVE - USED FOR CONVERTER METRICS + * Generated by package: @autorest/openapi-to-typespec + * Parameters used: + * isFullCompatible: true + * guessResourceKey: false + * Version: 0.11.12 + * Date: 2025-12-03T08:44:38.329Z + */ +import "@typespec/rest"; +import "@typespec/versioning"; +import "@azure-tools/typespec-azure-core"; +import "@azure-tools/typespec-azure-resource-manager"; +import "./models.tsp"; +import "./back-compatible.tsp"; +import "./WebApplicationFirewallPolicy.tsp"; +import "./FrontDoor.tsp"; +import "./FrontendEndpoint.tsp"; +import "./RulesEngine.tsp"; +import "./Profile.tsp"; +import "./Experiment.tsp"; +import "./routes.tsp"; + +using TypeSpec.Rest; +using TypeSpec.Http; +using Azure.ResourceManager.Foundations; +using Azure.Core; +using Azure.ResourceManager; +using TypeSpec.Versioning; +/** + * APIs to manage web application firewall rules. + */ +#suppress "@azure-tools/typespec-azure-resource-manager/missing-operations-endpoint" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" +@armProviderNamespace +@service(#{ title: "WebApplicationFirewallManagement" }) +@versioned(Versions) +// FIXME: Common type version not set. Set to v3. +@armCommonTypesVersion(Azure.ResourceManager.CommonTypes.Versions.v3) +namespace Microsoft.Network; + +/** + * The available API versions. + */ +enum Versions { + /** + * The 2025-10-01 API version. + */ + v2025_10_01: "2025-10-01", +} diff --git a/specification/frontdoor/FrontDoor.Management/models.tsp b/specification/frontdoor/FrontDoor.Management/models.tsp new file mode 100644 index 000000000000..a803625947eb --- /dev/null +++ b/specification/frontdoor/FrontDoor.Management/models.tsp @@ -0,0 +1,3505 @@ +import "@typespec/rest"; +import "@typespec/http"; +import "@azure-tools/typespec-azure-core"; +import "@azure-tools/typespec-azure-resource-manager"; + +using TypeSpec.Rest; +using TypeSpec.Http; +using Azure.ResourceManager; +using Azure.ResourceManager.Foundations; + +namespace Microsoft.Network; + +/** + * Describes if the policy is in enabled or disabled state. Defaults to Enabled if not specified. + */ +union PolicyEnabledState { + string, + + /** + * Disabled + */ + Disabled: "Disabled", + + /** + * Enabled + */ + Enabled: "Enabled", +} + +/** + * Describes if it is in detection mode or prevention mode at policy level. + */ +union PolicyMode { + string, + + /** + * Prevention + */ + Prevention: "Prevention", + + /** + * Detection + */ + Detection: "Detection", +} + +/** + * Describes if policy managed rules will inspect the request body content. + */ +union PolicyRequestBodyCheck { + string, + + /** + * Disabled + */ + Disabled: "Disabled", + + /** + * Enabled + */ + Enabled: "Enabled", +} + +/** + * State of the log scrubbing config. Default value is Enabled. + */ +union WebApplicationFirewallScrubbingState { + string, + + /** + * Enabled + */ + Enabled: "Enabled", + + /** + * Disabled + */ + Disabled: "Disabled", +} + +/** + * The variable to be scrubbed from the logs. + */ +union ScrubbingRuleEntryMatchVariable { + string, + + /** + * RequestIPAddress + */ + RequestIPAddress: "RequestIPAddress", + + /** + * RequestUri + */ + RequestUri: "RequestUri", + + /** + * QueryStringArgNames + */ + QueryStringArgNames: "QueryStringArgNames", + + /** + * RequestHeaderNames + */ + RequestHeaderNames: "RequestHeaderNames", + + /** + * RequestCookieNames + */ + RequestCookieNames: "RequestCookieNames", + + /** + * RequestBodyPostArgNames + */ + RequestBodyPostArgNames: "RequestBodyPostArgNames", + + /** + * RequestBodyJsonArgNames + */ + RequestBodyJsonArgNames: "RequestBodyJsonArgNames", +} + +/** + * When matchVariable is a collection, operate on the selector to specify which elements in the collection this rule applies to. + */ +union ScrubbingRuleEntryMatchOperator { + string, + + /** + * EqualsAny + */ + EqualsAny: "EqualsAny", + + /** + * Equals + */ + Equals: "Equals", +} + +/** + * Defines the state of a log scrubbing rule. Default value is enabled. + */ +union ScrubbingRuleEntryState { + string, + + /** + * Enabled + */ + Enabled: "Enabled", + + /** + * Disabled + */ + Disabled: "Disabled", +} + +/** + * Describes if the custom rule is in enabled or disabled state. Defaults to Enabled if not specified. + */ +union CustomRuleEnabledState { + string, + + /** + * Disabled + */ + Disabled: "Disabled", + + /** + * Enabled + */ + Enabled: "Enabled", +} + +/** + * Describes type of rule. + */ +union RuleType { + string, + + /** + * MatchRule + */ + MatchRule: "MatchRule", + + /** + * RateLimitRule + */ + RateLimitRule: "RateLimitRule", +} + +/** + * Describes the supported variable for group by + */ +union VariableName { + string, + + /** + * SocketAddr + */ + SocketAddr: "SocketAddr", + + /** + * GeoLocation + */ + GeoLocation: "GeoLocation", + + /** + * None + */ + None: "None", +} + +/** + * Request variable to compare with. + */ +union MatchVariable { + string, + + /** + * RemoteAddr + */ + RemoteAddr: "RemoteAddr", + + /** + * RequestMethod + */ + RequestMethod: "RequestMethod", + + /** + * QueryString + */ + QueryString: "QueryString", + + /** + * PostArgs + */ + PostArgs: "PostArgs", + + /** + * RequestUri + */ + RequestUri: "RequestUri", + + /** + * RequestHeader + */ + RequestHeader: "RequestHeader", + + /** + * RequestBody + */ + RequestBody: "RequestBody", + + /** + * Cookies + */ + Cookies: "Cookies", + + /** + * SocketAddr + */ + SocketAddr: "SocketAddr", +} + +/** + * Comparison type to use for matching with the variable value. + */ +union Operator { + string, + + /** + * Any + */ + Any: "Any", + + /** + * IPMatch + */ + IPMatch: "IPMatch", + + /** + * GeoMatch + */ + GeoMatch: "GeoMatch", + + /** + * Equal + */ + Equal: "Equal", + + /** + * Contains + */ + Contains: "Contains", + + /** + * LessThan + */ + LessThan: "LessThan", + + /** + * GreaterThan + */ + GreaterThan: "GreaterThan", + + /** + * LessThanOrEqual + */ + LessThanOrEqual: "LessThanOrEqual", + + /** + * GreaterThanOrEqual + */ + GreaterThanOrEqual: "GreaterThanOrEqual", + + /** + * BeginsWith + */ + BeginsWith: "BeginsWith", + + /** + * EndsWith + */ + EndsWith: "EndsWith", + + /** + * RegEx + */ + RegEx: "RegEx", + + /** + * ServiceTagMatch + */ + ServiceTagMatch: "ServiceTagMatch", +} + +/** + * Describes what transforms applied before matching. + */ +union TransformType { + string, + + /** + * Lowercase + */ + Lowercase: "Lowercase", + + /** + * Uppercase + */ + Uppercase: "Uppercase", + + /** + * Trim + */ + Trim: "Trim", + + /** + * UrlDecode + */ + UrlDecode: "UrlDecode", + + /** + * UrlEncode + */ + UrlEncode: "UrlEncode", + + /** + * RemoveNulls + */ + RemoveNulls: "RemoveNulls", +} + +/** + * Defines the action to take on rule match. + */ +union ActionType { + string, + + /** + * Allow + */ + Allow: "Allow", + + /** + * Block + */ + Block: "Block", + + /** + * Log + */ + Log: "Log", + + /** + * Redirect + */ + Redirect: "Redirect", + + /** + * AnomalyScoring + */ + AnomalyScoring: "AnomalyScoring", + + /** + * JSChallenge + */ + JSChallenge: "JSChallenge", + + /** + * CAPTCHA + */ + CAPTCHA: "CAPTCHA", +} + +/** + * Defines the action to take when a managed rule set score threshold is met. + */ +union ManagedRuleSetActionType { + string, + + /** + * Block + */ + Block: "Block", + + /** + * Log + */ + Log: "Log", + + /** + * Redirect + */ + Redirect: "Redirect", +} + +/** + * The variable type to be excluded. + */ +union ManagedRuleExclusionMatchVariable { + string, + + /** + * RequestHeaderNames + */ + RequestHeaderNames: "RequestHeaderNames", + + /** + * RequestCookieNames + */ + RequestCookieNames: "RequestCookieNames", + + /** + * QueryStringArgNames + */ + QueryStringArgNames: "QueryStringArgNames", + + /** + * RequestBodyPostArgNames + */ + RequestBodyPostArgNames: "RequestBodyPostArgNames", + + /** + * RequestBodyJsonArgNames + */ + RequestBodyJsonArgNames: "RequestBodyJsonArgNames", +} + +/** + * Comparison operator to apply to the selector when specifying which elements in the collection this exclusion applies to. + */ +union ManagedRuleExclusionSelectorMatchOperator { + string, + + /** + * Equals + */ + Equals: "Equals", + + /** + * Contains + */ + Contains: "Contains", + + /** + * StartsWith + */ + StartsWith: "StartsWith", + + /** + * EndsWith + */ + EndsWith: "EndsWith", + + /** + * EqualsAny + */ + EqualsAny: "EqualsAny", +} + +/** + * Describes if the managed rule is in enabled or disabled state. + */ +union ManagedRuleEnabledState { + string, + + /** + * Disabled + */ + Disabled: "Disabled", + + /** + * Enabled + */ + Enabled: "Enabled", +} + +/** + * Defines the sensitivity for the rule. + */ +union SensitivityType { + string, + + /** + * Low Sensitivity - triggers the rule by larger spikes in traffic + */ + Low: "Low", + + /** + * Medium Sensitivity - triggers the rule by moderate spikes in traffic + */ + Medium: "Medium", + + /** + * High Sensitivity - triggers the rule by smaller spikes in traffic + */ + High: "High", +} + +/** + * Resource status of the policy. + */ +union PolicyResourceState { + string, + + /** + * Creating + */ + Creating: "Creating", + + /** + * Enabling + */ + Enabling: "Enabling", + + /** + * Enabled + */ + Enabled: "Enabled", + + /** + * Disabling + */ + Disabling: "Disabling", + + /** + * Disabled + */ + Disabled: "Disabled", + + /** + * Deleting + */ + Deleting: "Deleting", +} + +/** + * Name of the pricing tier. + */ +union SkuName { + string, + + /** + * Classic_AzureFrontDoor + */ + Classic_AzureFrontDoor: "Classic_AzureFrontDoor", + + /** + * Standard_AzureFrontDoor + */ + Standard_AzureFrontDoor: "Standard_AzureFrontDoor", + + /** + * Premium_AzureFrontDoor + */ + Premium_AzureFrontDoor: "Premium_AzureFrontDoor", +} + +/** + * Indicates whether the name is available. + */ +union Availability { + string, + + /** + * Available + */ + Available: "Available", + + /** + * Unavailable + */ + Unavailable: "Unavailable", +} + +/** + * Resource status of the Front Door or Front Door SubResource. + */ +union FrontDoorResourceState { + string, + + /** + * Creating + */ + Creating: "Creating", + + /** + * Enabling + */ + Enabling: "Enabling", + + /** + * Enabled + */ + Enabled: "Enabled", + + /** + * Disabling + */ + Disabling: "Disabling", + + /** + * Disabled + */ + Disabled: "Disabled", + + /** + * Deleting + */ + Deleting: "Deleting", + + /** + * Migrating + */ + Migrating: "Migrating", + + /** + * Migrated + */ + Migrated: "Migrated", +} + +/** + * Which type of manipulation to apply to the header. + */ +union HeaderActionType { + string, + + /** + * Append + */ + Append: "Append", + + /** + * Delete + */ + Delete: "Delete", + + /** + * Overwrite + */ + Overwrite: "Overwrite", +} + +/** + * Match Variable + */ +union RulesEngineMatchVariable { + string, + + /** + * IsMobile + */ + IsMobile: "IsMobile", + + /** + * RemoteAddr + */ + RemoteAddr: "RemoteAddr", + + /** + * RequestMethod + */ + RequestMethod: "RequestMethod", + + /** + * QueryString + */ + QueryString: "QueryString", + + /** + * PostArgs + */ + PostArgs: "PostArgs", + + /** + * RequestUri + */ + RequestUri: "RequestUri", + + /** + * RequestPath + */ + RequestPath: "RequestPath", + + /** + * RequestFilename + */ + RequestFilename: "RequestFilename", + + /** + * RequestFilenameExtension + */ + RequestFilenameExtension: "RequestFilenameExtension", + + /** + * RequestHeader + */ + RequestHeader: "RequestHeader", + + /** + * RequestBody + */ + RequestBody: "RequestBody", + + /** + * RequestScheme + */ + RequestScheme: "RequestScheme", +} + +/** + * Describes operator to apply to the match condition. + */ +union RulesEngineOperator { + string, + + /** + * Any + */ + Any: "Any", + + /** + * IPMatch + */ + IPMatch: "IPMatch", + + /** + * GeoMatch + */ + GeoMatch: "GeoMatch", + + /** + * Equal + */ + Equal: "Equal", + + /** + * Contains + */ + Contains: "Contains", + + /** + * LessThan + */ + LessThan: "LessThan", + + /** + * GreaterThan + */ + GreaterThan: "GreaterThan", + + /** + * LessThanOrEqual + */ + LessThanOrEqual: "LessThanOrEqual", + + /** + * GreaterThanOrEqual + */ + GreaterThanOrEqual: "GreaterThanOrEqual", + + /** + * BeginsWith + */ + BeginsWith: "BeginsWith", + + /** + * EndsWith + */ + EndsWith: "EndsWith", +} + +/** + * Describes what transforms are applied before matching + */ +union Transform { + string, + + /** + * Lowercase + */ + Lowercase: "Lowercase", + + /** + * Uppercase + */ + Uppercase: "Uppercase", + + /** + * Trim + */ + Trim: "Trim", + + /** + * UrlDecode + */ + UrlDecode: "UrlDecode", + + /** + * UrlEncode + */ + UrlEncode: "UrlEncode", + + /** + * RemoveNulls + */ + RemoveNulls: "RemoveNulls", +} + +/** + * If this rule is a match should the rules engine continue running the remaining rules or stop. If not present, defaults to Continue. + */ +union MatchProcessingBehavior { + string, + + /** + * Continue + */ + Continue: "Continue", + + /** + * Stop + */ + Stop: "Stop", +} + +/** + * Accepted protocol schemes. + */ +union FrontDoorProtocol { + string, + + /** + * Http + */ + Http: "Http", + + /** + * Https + */ + Https: "Https", +} + +/** + * Whether to enable use of this rule. Permitted values are 'Enabled' or 'Disabled' + */ +union RoutingRuleEnabledState { + string, + + /** + * Enabled + */ + Enabled: "Enabled", + + /** + * Disabled + */ + Disabled: "Disabled", +} + +/** + * Configures which HTTP method to use to probe the backends defined under backendPools. + */ +union FrontDoorHealthProbeMethod { + string, + + /** + * GET + */ + GET: "GET", + + /** + * HEAD + */ + HEAD: "HEAD", +} + +/** + * 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. + */ +union HealthProbeEnabled { + string, + + /** + * Enabled + */ + Enabled: "Enabled", + + /** + * Disabled + */ + Disabled: "Disabled", +} + +/** + * The Approval status for the connection to the Private Link + */ +union PrivateEndpointStatus { + string, + + /** + * Pending + */ + Pending: "Pending", + + /** + * Approved + */ + Approved: "Approved", + + /** + * Rejected + */ + Rejected: "Rejected", + + /** + * Disconnected + */ + Disconnected: "Disconnected", + + /** + * Timeout + */ + Timeout: "Timeout", +} + +/** + * Whether to enable use of this backend. Permitted values are 'Enabled' or 'Disabled' + */ +union BackendEnabledState { + string, + + /** + * Enabled + */ + Enabled: "Enabled", + + /** + * Disabled + */ + Disabled: "Disabled", +} + +/** + * Provisioning status of Custom Https of the frontendEndpoint. + */ +union CustomHttpsProvisioningState { + string, + + /** + * Enabling + */ + Enabling: "Enabling", + + /** + * Enabled + */ + Enabled: "Enabled", + + /** + * Disabling + */ + Disabling: "Disabling", + + /** + * Disabled + */ + Disabled: "Disabled", + + /** + * Failed + */ + Failed: "Failed", +} + +/** + * Provisioning substate shows the progress of custom HTTPS enabling/disabling process step by step. + */ +union CustomHttpsProvisioningSubstate { + string, + + /** + * SubmittingDomainControlValidationRequest + */ + SubmittingDomainControlValidationRequest: "SubmittingDomainControlValidationRequest", + + /** + * PendingDomainControlValidationREquestApproval + */ + PendingDomainControlValidationREquestApproval: "PendingDomainControlValidationREquestApproval", + + /** + * DomainControlValidationRequestApproved + */ + DomainControlValidationRequestApproved: "DomainControlValidationRequestApproved", + + /** + * DomainControlValidationRequestRejected + */ + DomainControlValidationRequestRejected: "DomainControlValidationRequestRejected", + + /** + * DomainControlValidationRequestTimedOut + */ + DomainControlValidationRequestTimedOut: "DomainControlValidationRequestTimedOut", + + /** + * IssuingCertificate + */ + IssuingCertificate: "IssuingCertificate", + + /** + * DeployingCertificate + */ + DeployingCertificate: "DeployingCertificate", + + /** + * CertificateDeployed + */ + CertificateDeployed: "CertificateDeployed", + + /** + * DeletingCertificate + */ + DeletingCertificate: "DeletingCertificate", + + /** + * CertificateDeleted + */ + CertificateDeleted: "CertificateDeleted", +} + +/** + * Defines the source of the SSL certificate + */ +union FrontDoorCertificateSource { + string, + + /** + * AzureKeyVault + */ + AzureKeyVault: "AzureKeyVault", + + /** + * FrontDoor + */ + FrontDoor: "FrontDoor", +} + +/** + * Defines the TLS extension protocol that is used for secure delivery + */ +union FrontDoorTlsProtocolType { + string, + + /** + * ServerNameIndication + */ + ServerNameIndication: "ServerNameIndication", +} + +/** + * The minimum TLS version required from the clients to establish an SSL handshake with Front Door. + */ +union MinimumTLSVersion { + string, + + /** + * 1.0 + */ + `1.0`: "1.0", + + /** + * 1.2 + */ + `1.2`: "1.2", +} + +/** + * Defines the type of the certificate used for secure connections to a frontendEndpoint + */ +union FrontDoorCertificateType { + string, + + /** + * Dedicated + */ + Dedicated: "Dedicated", +} + +/** + * Whether to allow session affinity on this host. Valid options are 'Enabled' or 'Disabled' + */ +union SessionAffinityEnabledState { + string, + + /** + * Enabled + */ + Enabled: "Enabled", + + /** + * Disabled + */ + Disabled: "Disabled", +} + +/** + * Whether to enforce certificate name check on HTTPS requests to all backend pools. No effect on non-HTTPS requests. + */ +union EnforceCertificateNameCheckEnabledState { + string, + + /** + * Enabled + */ + Enabled: "Enabled", + + /** + * Disabled + */ + Disabled: "Disabled", +} + +/** + * Operational status of the Front Door load balancer. Permitted values are 'Enabled' or 'Disabled' + */ +union FrontDoorEnabledState { + string, + + /** + * Enabled + */ + Enabled: "Enabled", + + /** + * Disabled + */ + Disabled: "Disabled", +} + +/** + * Defines the server side resource status + */ +union NetworkExperimentResourceState { + string, + + /** + * Creating + */ + Creating: "Creating", + + /** + * Enabling + */ + Enabling: "Enabling", + + /** + * Enabled + */ + Enabled: "Enabled", + + /** + * Disabling + */ + Disabling: "Disabling", + + /** + * Disabled + */ + Disabled: "Disabled", + + /** + * Deleting + */ + Deleting: "Deleting", +} + +/** + * The state of the Experiment + */ +union State { + string, + + /** + * Enabled + */ + Enabled: "Enabled", + + /** + * Disabled + */ + Disabled: "Disabled", +} + +/** + * The type of endpoint + */ +union EndpointType { + string, + + /** + * AFD + */ + AFD: "AFD", + + /** + * AzureRegion + */ + AzureRegion: "AzureRegion", + + /** + * CDN + */ + CDN: "CDN", + + /** + * ATM + */ + ATM: "ATM", +} + +#suppress "@azure-tools/typespec-azure-core/documentation-required" "For backward compatibility" +union LatencyScorecardAggregationInterval { + string, + + /** + * Daily + */ + Daily: "Daily", + + /** + * Weekly + */ + Weekly: "Weekly", + + /** + * Monthly + */ + Monthly: "Monthly", +} + +#suppress "@azure-tools/typespec-azure-core/documentation-required" "For backward compatibility" +union TimeseriesAggregationInterval { + string, + + /** + * Hourly + */ + Hourly: "Hourly", + + /** + * Daily + */ + Daily: "Daily", +} + +/** + * The type of Timeseries + */ +union TimeseriesType { + string, + + /** + * MeasurementCounts + */ + MeasurementCounts: "MeasurementCounts", + + /** + * LatencyP50 + */ + LatencyP50: "LatencyP50", + + /** + * LatencyP75 + */ + LatencyP75: "LatencyP75", + + /** + * LatencyP95 + */ + LatencyP95: "LatencyP95", +} + +/** + * The aggregation interval of the Timeseries + */ +union AggregationInterval { + string, + + /** + * Hourly + */ + Hourly: "Hourly", + + /** + * Daily + */ + Daily: "Daily", +} + +/** + * Status of the Azure async operation. + */ +union NetworkOperationStatus { + string, + + /** + * InProgress + */ + InProgress: "InProgress", + + /** + * Succeeded + */ + Succeeded: "Succeeded", + + /** + * Failed + */ + Failed: "Failed", +} + +/** + * Protocol this rule will use when forwarding traffic to backends. + */ +union FrontDoorForwardingProtocol { + string, + + /** + * HttpOnly + */ + HttpOnly: "HttpOnly", + + /** + * HttpsOnly + */ + HttpsOnly: "HttpsOnly", + + /** + * MatchRequest + */ + MatchRequest: "MatchRequest", +} + +/** + * Treatment of URL query terms when forming the cache key. + */ +union FrontDoorQuery { + string, + + /** + * StripNone + */ + StripNone: "StripNone", + + /** + * StripAll + */ + StripAll: "StripAll", + + /** + * StripOnly + */ + StripOnly: "StripOnly", + + /** + * StripAllExcept + */ + StripAllExcept: "StripAllExcept", +} + +/** + * Whether to use dynamic compression for cached content + */ +union DynamicCompressionEnabled { + string, + + /** + * Enabled + */ + Enabled: "Enabled", + + /** + * Disabled + */ + Disabled: "Disabled", +} + +/** + * The redirect type the rule will use when redirecting traffic. + */ +union FrontDoorRedirectType { + string, + + /** + * Moved + */ + Moved: "Moved", + + /** + * Found + */ + Found: "Found", + + /** + * TemporaryRedirect + */ + TemporaryRedirect: "TemporaryRedirect", + + /** + * PermanentRedirect + */ + PermanentRedirect: "PermanentRedirect", +} + +/** + * The protocol of the destination to where the traffic is redirected + */ +union FrontDoorRedirectProtocol { + string, + + /** + * HttpOnly + */ + HttpOnly: "HttpOnly", + + /** + * HttpsOnly + */ + HttpsOnly: "HttpsOnly", + + /** + * MatchRequest + */ + MatchRequest: "MatchRequest", +} + +/** + * Type of Front Door resource used in CheckNameAvailability. + */ +#suppress "@azure-tools/typespec-azure-core/no-enum" "For backward compatibility" +enum ResourceType { + /** + * Microsoft.Network/frontDoors + */ + `Microsoft.Network/frontDoors`, + + /** + * Microsoft.Network/frontDoors/frontendEndpoints + */ + `Microsoft.Network/frontDoors/frontendEndpoints`, +} + +/** + * Defines a list of WebApplicationFirewallPolicies. It contains a list of WebApplicationFirewallPolicy objects and a URL link to get the next set of results. + */ +model WebApplicationFirewallPolicyList + is Azure.Core.Page; +@@visibility(WebApplicationFirewallPolicyList.value, Lifecycle.Read); + +/** + * Defines web application firewall policy properties. + */ +model WebApplicationFirewallPolicyProperties { + /** + * Describes settings for the policy. + */ + policySettings?: PolicySettings; + + /** + * Describes custom rules inside the policy. + */ + customRules?: CustomRuleList; + + /** + * Describes managed rules inside the policy. + */ + managedRules?: ManagedRuleSetList; + + /** + * Describes Frontend Endpoints associated with this Web Application Firewall policy. + */ + @visibility(Lifecycle.Read) + frontendEndpointLinks?: FrontendEndpointLink[]; + + /** + * Describes Routing Rules associated with this Web Application Firewall policy. + */ + @visibility(Lifecycle.Read) + routingRuleLinks?: RoutingRuleLink[]; + + /** + * Describes Security Policy associated with this Web Application Firewall policy. + */ + @visibility(Lifecycle.Read) + securityPolicyLinks?: SecurityPolicyLink[]; + + /** + * Provisioning state of the policy. + */ + #suppress "@azure-tools/typespec-azure-resource-manager/arm-resource-provisioning-state" "For backward compatibility" + @visibility(Lifecycle.Read) + provisioningState?: string; + + /** + * Resource status of the policy. + */ + @visibility(Lifecycle.Read) + @summary("Resource status of the policy.") + resourceState?: PolicyResourceState; +} + +/** + * Defines top-level WebApplicationFirewallPolicy configuration settings. + */ +model PolicySettings { + /** + * Describes if the policy is in enabled or disabled state. Defaults to Enabled if not specified. + */ + enabledState?: PolicyEnabledState; + + /** + * Describes if it is in detection mode or prevention mode at policy level. + */ + mode?: PolicyMode; + + /** + * If action type is redirect, this field represents redirect URL for the client. + */ + redirectUrl?: string; + + /** + * If the action type is block, customer can override the response status code. + */ + customBlockResponseStatusCode?: int32; + + /** + * If the action type is block, customer can override the response body. The body must be specified in base64 encoding. + */ + @pattern("^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=|[A-Za-z0-9+/]{4})$") + customBlockResponseBody?: string; + + /** + * Describes if policy managed rules will inspect the request body content. + */ + requestBodyCheck?: PolicyRequestBodyCheck; + + /** + * Defines the JavaScript challenge cookie validity lifetime in minutes. This setting is only applicable to Premium_AzureFrontDoor. Value must be an integer between 5 and 1440 with the default value being 30. + */ + @maxValue(1440) + @minValue(5) + javascriptChallengeExpirationInMinutes?: int32; + + /** + * Defines the Captcha cookie validity lifetime in minutes. This setting is only applicable to Premium_AzureFrontDoor. Value must be an integer between 5 and 1440 with the default value being 30. + */ + @maxValue(1440) + @minValue(5) + captchaExpirationInMinutes?: int32; + + /** + * Defines rules that scrub sensitive fields in the Web Application Firewall logs. + */ + logScrubbing?: PolicySettingsLogScrubbing; +} + +/** + * Defines rules that scrub sensitive fields in the Web Application Firewall logs. + */ +model PolicySettingsLogScrubbing { + /** + * State of the log scrubbing config. Default value is Enabled. + */ + state?: WebApplicationFirewallScrubbingState; + + /** + * List of log scrubbing rules applied to the Web Application Firewall logs. + */ + @identifiers(#[]) + scrubbingRules?: WebApplicationFirewallScrubbingRules[]; +} + +/** + * Defines the contents of the log scrubbing rules. + */ +model WebApplicationFirewallScrubbingRules { + /** + * The variable to be scrubbed from the logs. + */ + matchVariable: ScrubbingRuleEntryMatchVariable; + + /** + * When matchVariable is a collection, operate on the selector to specify which elements in the collection this rule applies to. + */ + selectorMatchOperator: ScrubbingRuleEntryMatchOperator; + + /** + * When matchVariable is a collection, operator used to specify which elements in the collection this rule applies to. + */ + selector?: string; + + /** + * Defines the state of a log scrubbing rule. Default value is enabled. + */ + state?: ScrubbingRuleEntryState; +} + +/** + * Defines contents of custom rules + */ +model CustomRuleList { + /** + * List of rules + */ + rules?: CustomRule[]; +} + +/** + * Defines contents of a web application rule + */ +model CustomRule { + /** + * Describes the name of the rule. + */ + @maxLength(128) + name?: string; + + /** + * Describes priority of the rule. Rules with a lower value will be evaluated before rules with a higher value. + */ + priority: int32; + + /** + * Describes if the custom rule is in enabled or disabled state. Defaults to Enabled if not specified. + */ + enabledState?: CustomRuleEnabledState; + + /** + * Describes type of rule. + */ + ruleType: RuleType; + + /** + * Time window for resetting the rate limit count. Default is 1 minute. + */ + @maxValue(5) + @minValue(0) + rateLimitDurationInMinutes?: int32; + + /** + * Number of allowed requests per client within the time window. + */ + @minValue(0) + rateLimitThreshold?: int32; + + /** + * Describes the list of variables to group the rate limit requests + */ + @identifiers(#[]) + groupBy?: GroupByVariable[]; + + /** + * List of match conditions. + */ + #suppress "@azure-tools/typespec-azure-resource-manager/missing-x-ms-identifiers" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + matchConditions: MatchCondition[]; + + /** + * Describes what action to be applied when rule matches. + */ + action: ActionType; +} + +/** + * Describes the variables available to group the rate limit requests + */ +model GroupByVariable { + /** + * Describes the supported variable for group by + */ + variableName: VariableName; +} + +/** + * Define a match condition. + */ +model MatchCondition { + /** + * Request variable to compare with. + */ + matchVariable: MatchVariable; + + /** + * Match against a specific key from the QueryString, PostArgs, RequestHeader or Cookies variables. Default is null. + */ + selector?: string; + + /** + * Comparison type to use for matching with the variable value. + */ + operator: Operator; + + /** + * Describes if the result of this condition should be negated. + */ + negateCondition?: boolean; + + /** + * List of possible match values. + */ + matchValue: string[]; + + /** + * List of transforms. + */ + transforms?: TransformType[]; +} + +/** + * Defines the list of managed rule sets for the policy. + */ +model ManagedRuleSetList { + /** + * List of rule sets. + */ + #suppress "@azure-tools/typespec-azure-resource-manager/missing-x-ms-identifiers" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + managedRuleSets?: ManagedRuleSet[]; +} + +/** + * Defines a managed rule set. + */ +model ManagedRuleSet { + /** + * Defines the rule set type to use. + */ + ruleSetType: string; + + /** + * Defines the version of the rule set to use. + */ + ruleSetVersion: string; + + /** + * Defines the rule set action. + */ + @summary("ruleSetAction") + ruleSetAction?: ManagedRuleSetActionType; + + /** + * Describes the exclusions that are applied to all rules in the set. + */ + #suppress "@azure-tools/typespec-azure-resource-manager/missing-x-ms-identifiers" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + exclusions?: ManagedRuleExclusion[]; + + /** + * Defines the rule group overrides to apply to the rule set. + */ + #suppress "@azure-tools/typespec-azure-resource-manager/missing-x-ms-identifiers" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + ruleGroupOverrides?: ManagedRuleGroupOverride[]; +} + +/** + * Exclude variables from managed rule evaluation. + */ +model ManagedRuleExclusion { + /** + * The variable type to be excluded. + */ + matchVariable: ManagedRuleExclusionMatchVariable; + + /** + * Comparison operator to apply to the selector when specifying which elements in the collection this exclusion applies to. + */ + selectorMatchOperator: ManagedRuleExclusionSelectorMatchOperator; + + /** + * Selector value for which elements in the collection this exclusion applies to. + */ + selector: string; +} + +/** + * Defines a managed rule group override setting. + */ +model ManagedRuleGroupOverride { + /** + * Describes the managed rule group to override. + */ + ruleGroupName: string; + + /** + * Describes the exclusions that are applied to all rules in the group. + */ + #suppress "@azure-tools/typespec-azure-resource-manager/missing-x-ms-identifiers" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + exclusions?: ManagedRuleExclusion[]; + + /** + * List of rules that will be disabled. If none specified, all rules in the group will be disabled. + */ + #suppress "@azure-tools/typespec-azure-resource-manager/missing-x-ms-identifiers" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + rules?: ManagedRuleOverride[]; +} + +/** + * Defines a managed rule group override setting. + */ +model ManagedRuleOverride { + /** + * Identifier for the managed rule. + */ + ruleId: string; + + /** + * Describes if the managed rule is in enabled or disabled state. Defaults to Disabled if not specified. + */ + enabledState?: ManagedRuleEnabledState; + + /** + * Describes the override action to be applied when rule matches. + */ + action?: ActionType; + + /** + * Describes the override sensitivity to be applied when rule matches. + */ + sensitivity?: SensitivityType; + + /** + * Describes the exclusions that are applied to this specific rule. + */ + #suppress "@azure-tools/typespec-azure-resource-manager/missing-x-ms-identifiers" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + exclusions?: ManagedRuleExclusion[]; +} + +/** + * Defines the Resource ID for a Frontend Endpoint. + */ +model FrontendEndpointLink { + /** + * Resource ID. + */ + id?: string; +} + +/** + * Defines the Resource ID for a Routing Rule. + */ +model RoutingRuleLink { + /** + * Resource ID. + */ + id?: string; +} + +/** + * Defines the Resource ID for a Security Policy. + */ +model SecurityPolicyLink { + /** + * Resource ID. + */ + id?: string; +} + +/** + * The pricing tier of the web application firewall policy. + */ +model Sku { + /** + * Name of the pricing tier. + */ + name?: SkuName; +} + +/** + * Common resource representation. + */ +model Resource { + /** + * Resource ID. + */ + @visibility(Lifecycle.Read) + id?: string; + + /** + * Resource name. + */ + @visibility(Lifecycle.Read) + name?: string; + + /** + * Resource type. + */ + @visibility(Lifecycle.Read) + type?: string; + + /** + * Resource location. + */ + location?: string; + + /** + * Resource tags. + */ + #suppress "@azure-tools/typespec-azure-resource-manager/arm-no-record" "For backward compatibility" + tags?: Record; +} + +/** + * Error response indicates Front Door service is not able to process the incoming request. The reason is provided in the error message. + */ +@error +model ErrorResponse { + /** + * Error code. + */ + @visibility(Lifecycle.Read) + code?: string; + + /** + * Error message indicating why the operation failed. + */ + @visibility(Lifecycle.Read) + message?: string; +} + +/** + * Error response indicates Front Door service is not able to process the incoming request. The reason is provided in the error message. + */ +@error +model DefaultErrorResponse { + /** + * Error model. + */ + error?: DefaultErrorResponseError; +} + +/** + * Error model. + */ +model DefaultErrorResponseError { + /** + * Error code. + */ + @visibility(Lifecycle.Read) + code?: string; + + /** + * Error message indicating why the operation failed. + */ + @visibility(Lifecycle.Read) + message?: string; +} + +/** + * Tags object for patch operations. + */ +#suppress "@azure-tools/typespec-azure-resource-manager/patch-envelope" "FIXME:" +model TagsObject { + /** + * Resource tags. + */ + #suppress "@azure-tools/typespec-azure-resource-manager/arm-no-record" "For backward compatibility" + tags?: Record; +} + +/** + * List of managed rule set definitions available for use in a policy. + */ +model ManagedRuleSetDefinitionList is Azure.Core.Page; +@@visibility(ManagedRuleSetDefinitionList.value, Lifecycle.Read); + +/** + * Describes the a managed rule set definition. + */ +#suppress "@azure-tools/typespec-azure-core/composition-over-inheritance" "For backward compatibility" +model ManagedRuleSetDefinition extends Resource { + /** + * Properties for a managed rule set definition. + */ + properties?: ManagedRuleSetDefinitionProperties; +} + +/** + * Properties for a managed rule set definition. + */ +model ManagedRuleSetDefinitionProperties { + /** + * Provisioning state of the managed rule set. + */ + @visibility(Lifecycle.Read) + provisioningState?: string; + + /** + * Id of the managed rule set. + */ + @visibility(Lifecycle.Read) + ruleSetId?: string; + + /** + * Type of the managed rule set. + */ + @visibility(Lifecycle.Read) + ruleSetType?: string; + + /** + * Version of the managed rule set type. + */ + @visibility(Lifecycle.Read) + ruleSetVersion?: string; + + /** + * Rule groups of the managed rule set. + */ + #suppress "@azure-tools/typespec-azure-resource-manager/missing-x-ms-identifiers" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + @visibility(Lifecycle.Read) + ruleGroups?: ManagedRuleGroupDefinition[]; +} + +/** + * Describes a managed rule group. + */ +model ManagedRuleGroupDefinition { + /** + * Name of the managed rule group. + */ + @visibility(Lifecycle.Read) + ruleGroupName?: string; + + /** + * Description of the managed rule group. + */ + @visibility(Lifecycle.Read) + description?: string; + + /** + * List of rules within the managed rule group. + */ + #suppress "@azure-tools/typespec-azure-resource-manager/missing-x-ms-identifiers" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + @visibility(Lifecycle.Read) + rules?: ManagedRuleDefinition[]; +} + +/** + * Describes a managed rule definition. + */ +model ManagedRuleDefinition { + /** + * Identifier for the managed rule. + */ + @visibility(Lifecycle.Read) + ruleId?: string; + + /** + * Describes the default state for the managed rule. + */ + @visibility(Lifecycle.Read) + defaultState?: ManagedRuleEnabledState; + + /** + * Describes the default action to be applied when the managed rule matches. + */ + @visibility(Lifecycle.Read) + defaultAction?: ActionType; + + /** + * Describes the default sensitivity to be applied when the managed rule matches. + */ + @visibility(Lifecycle.Read) + defaultSensitivity?: SensitivityType; + + /** + * Describes the functionality of the managed rule. + */ + @visibility(Lifecycle.Read) + description?: string; +} + +/** + * Input of CheckNameAvailability API. + */ +model CheckNameAvailabilityInput { + /** + * The resource name to validate. + */ + name: string; + + /** + * The type of the resource whose name is to be validated. + */ + type: ResourceType; +} + +/** + * Output of check name availability API. + */ +model CheckNameAvailabilityOutput { + /** + * Indicates whether the name is available. + */ + @visibility(Lifecycle.Read) + nameAvailability?: Availability; + + /** + * The reason why the name is not available. + */ + @visibility(Lifecycle.Read) + reason?: string; + + /** + * The detailed error message describing why the name is not available. + */ + @visibility(Lifecycle.Read) + message?: string; +} + +/** + * The JSON object that contains the properties required to create an endpoint. + */ +#suppress "@azure-tools/typespec-azure-core/composition-over-inheritance" "For backward compatibility" +model FrontDoorProperties extends FrontDoorUpdateParameters { + /** + * Resource status of the Front Door. + */ + @summary("Resource status of the Front Door or Front Door SubResource.") + @visibility(Lifecycle.Read) + resourceState?: FrontDoorResourceState; + + /** + * Provisioning state of the Front Door. + */ + #suppress "@azure-tools/typespec-azure-resource-manager/arm-resource-provisioning-state" "For backward compatibility" + @visibility(Lifecycle.Read) + provisioningState?: string; + + /** + * The host that each frontendEndpoint must CNAME to. + */ + @visibility(Lifecycle.Read) + cname?: string; + + /** + * The Id of the frontdoor. + */ + @visibility(Lifecycle.Read) + frontdoorId?: string; + + /** + * Rules Engine Configurations available to routing rules. + */ + @visibility(Lifecycle.Read) + rulesEngines?: RulesEngine[]; + + /** + * Key-Value pair representing additional properties for frontdoor. + */ + #suppress "@azure-tools/typespec-azure-resource-manager/arm-no-record" "For backward compatibility" + @visibility(Lifecycle.Read) + extendedProperties?: Record; +} + +/** + * The JSON object that contains the properties required to create a Rules Engine Configuration. + */ +#suppress "@azure-tools/typespec-azure-core/composition-over-inheritance" "For backward compatibility" +#suppress "@azure-tools/typespec-azure-resource-manager/arm-resource-provisioning-state" "For backward compatibility" +model RulesEngineProperties extends RulesEngineUpdateParameters { + /** + * Resource status. + */ + @visibility(Lifecycle.Read) + @summary("Resource status of the Front Door or Front Door SubResource.") + resourceState?: FrontDoorResourceState; +} + +/** + * Rules Engine Configuration to apply to a Routing Rule. + */ +model RulesEngineUpdateParameters { + /** + * A list of rules that define a particular Rules Engine Configuration. + */ + rules?: RulesEngineRule[]; +} + +/** + * 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. + */ +model RulesEngineRule { + /** + * A name to refer to this specific rule. + */ + name: string; + + /** + * A priority assigned to this rule. + */ + priority: int32; + + /** + * Actions to perform on the request and response if all of the match conditions are met. + */ + action: RulesEngineAction; + + /** + * 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. + */ + #suppress "@azure-tools/typespec-azure-resource-manager/missing-x-ms-identifiers" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + matchConditions?: RulesEngineMatchCondition[]; + + /** + * If this rule is a match should the rules engine continue running the remaining rules or stop. If not present, defaults to Continue. + */ + matchProcessingBehavior?: MatchProcessingBehavior; +} + +/** + * One or more actions that will execute, modifying the request and/or response. + */ +model RulesEngineAction { + /** + * A list of header actions to apply from the request from AFD to the origin. + */ + #suppress "@azure-tools/typespec-azure-resource-manager/missing-x-ms-identifiers" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + requestHeaderActions?: HeaderAction[]; + + /** + * A list of header actions to apply from the response from AFD to the client. + */ + #suppress "@azure-tools/typespec-azure-resource-manager/missing-x-ms-identifiers" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + responseHeaderActions?: HeaderAction[]; + + /** + * Override the route configuration. + */ + routeConfigurationOverride?: RouteConfiguration; +} + +/** + * An action that can manipulate an http header. + */ +model HeaderAction { + /** + * Which type of manipulation to apply to the header. + */ + headerActionType: HeaderActionType; + + /** + * The name of the header this action will apply to. + */ + headerName: string; + + /** + * The value to update the given header name with. This value is not used if the actionType is Delete. + */ + value?: string; +} + +/** + * Base class for all types of Route. + */ +@discriminator("@odata.type") +model RouteConfiguration { + #suppress "@azure-tools/typespec-azure-core/documentation-required" "For backward compatibility" + #suppress "@azure-tools/typespec-azure-core/no-string-discriminator" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + #suppress "@azure-tools/typespec-azure-core/casing-style" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + `@odata.type`: string; +} + +/** + * Define a match condition + */ +model RulesEngineMatchCondition { + /** + * Match Variable + */ + rulesEngineMatchVariable: RulesEngineMatchVariable; + + /** + * Name of selector in RequestHeader or RequestBody to be matched + */ + selector?: string; + + /** + * Describes operator to apply to the match condition. + */ + rulesEngineOperator: RulesEngineOperator; + + /** + * Describes if this is negate condition or not + */ + negateCondition?: boolean; + + /** + * 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. + */ + rulesEngineMatchValue: string[]; + + /** + * List of transforms + */ + transforms?: Transform[]; +} + +/** + * The properties needed to update a Front Door + */ +model FrontDoorUpdateParameters { + /** + * A friendly name for the frontDoor + */ + friendlyName?: string; + + /** + * Routing rules associated with this Front Door. + */ + routingRules?: RoutingRule[]; + + /** + * Load balancing settings associated with this Front Door instance. + */ + loadBalancingSettings?: LoadBalancingSettingsModel[]; + + /** + * Health probe settings associated with this Front Door instance. + */ + healthProbeSettings?: HealthProbeSettingsModel[]; + + /** + * Backend pools available to routing rules. + */ + backendPools?: BackendPool[]; + + /** + * Frontend endpoints available to routing rules. + */ + frontendEndpoints?: FrontendEndpoint[]; + + /** + * Settings for all backendPools + */ + backendPoolsSettings?: BackendPoolsSettings; + + /** + * Operational status of the Front Door load balancer. Permitted values are 'Enabled' or 'Disabled' + */ + enabledState?: FrontDoorEnabledState; +} + +/** + * A routing rule represents a specification for traffic to treat and where to send it, along with health probe information. + */ +#suppress "@azure-tools/typespec-azure-core/composition-over-inheritance" "For backward compatibility" +model RoutingRule extends SubResource { + /** + * Properties of the Front Door Routing Rule + */ + properties?: RoutingRuleProperties; + + /** + * Resource name. + */ + name?: string; + + /** + * Resource type. + */ + @visibility(Lifecycle.Read) + type?: string; +} + +/** + * The JSON object that contains the properties required to create a routing rule. + */ +#suppress "@azure-tools/typespec-azure-core/composition-over-inheritance" "For backward compatibility" +model RoutingRuleProperties extends RoutingRuleUpdateParameters { + /** + * Resource status. + */ + @summary("Resource status of the Front Door or Front Door SubResource.") + @visibility(Lifecycle.Read) + resourceState?: FrontDoorResourceState; +} + +/** + * Routing rules to apply to an endpoint + */ +model RoutingRuleUpdateParameters { + /** + * Frontend endpoints associated with this rule + */ + frontendEndpoints?: SubResource[]; + + /** + * Protocol schemes to match for this rule + */ + acceptedProtocols?: FrontDoorProtocol[]; + + /** + * The route patterns of the rule. + */ + patternsToMatch?: string[]; + + /** + * Whether to enable use of this rule. Permitted values are 'Enabled' or 'Disabled' + */ + enabledState?: RoutingRuleEnabledState; + + /** + * A reference to the routing configuration. + */ + routeConfiguration?: RouteConfiguration; + + /** + * A reference to a specific Rules Engine Configuration to apply to this route. + */ + rulesEngine?: SubResource; + + /** + * Defines the Web Application Firewall policy for each routing rule (if applicable) + */ + webApplicationFirewallPolicyLink?: { + /** + * Resource ID. + */ + id?: string; + }; +} + +/** + * Reference to another subresource. + */ +model SubResource { + /** + * Resource ID. + */ + id?: string; +} + +/** + * Load balancing settings for a backend pool + */ +#suppress "@azure-tools/typespec-azure-core/composition-over-inheritance" "For backward compatibility" +model LoadBalancingSettingsModel extends SubResource { + /** + * Properties of the load balancing settings + */ + properties?: LoadBalancingSettingsProperties; + + /** + * Resource name. + */ + name?: string; + + /** + * Resource type. + */ + @visibility(Lifecycle.Read) + type?: string; +} + +/** + * The JSON object that contains the properties required to create load balancing settings + */ +#suppress "@azure-tools/typespec-azure-core/composition-over-inheritance" "For backward compatibility" +model LoadBalancingSettingsProperties + extends LoadBalancingSettingsUpdateParameters { + /** + * Resource status. + */ + @visibility(Lifecycle.Read) + @summary("Resource status of the Front Door or Front Door SubResource.") + resourceState?: FrontDoorResourceState; +} + +/** + * Round-Robin load balancing settings for a backend pool + */ +model LoadBalancingSettingsUpdateParameters { + /** + * The number of samples to consider for load balancing decisions + */ + sampleSize?: int32; + + /** + * The number of samples within the sample period that must succeed + */ + successfulSamplesRequired?: int32; + + /** + * The additional latency in milliseconds for probes to fall into the lowest latency bucket + */ + additionalLatencyMilliseconds?: int32; +} + +/** + * Load balancing settings for a backend pool + */ +#suppress "@azure-tools/typespec-azure-core/composition-over-inheritance" "For backward compatibility" +model HealthProbeSettingsModel extends SubResource { + /** + * Properties of the health probe settings + */ + properties?: HealthProbeSettingsProperties; + + /** + * Resource name. + */ + name?: string; + + /** + * Resource type. + */ + @visibility(Lifecycle.Read) + type?: string; +} + +/** + * The JSON object that contains the properties required to create a health probe settings. + */ +#suppress "@azure-tools/typespec-azure-core/composition-over-inheritance" "For backward compatibility" +model HealthProbeSettingsProperties + extends HealthProbeSettingsUpdateParameters { + /** + * Resource status. + */ + @visibility(Lifecycle.Read) + @summary("Resource status of the Front Door or Front Door SubResource.") + resourceState?: FrontDoorResourceState; +} + +/** + * L7 health probe settings for a backend pool + */ +model HealthProbeSettingsUpdateParameters { + /** + * The path to use for the health probe. Default is / + */ + path?: string; + + /** + * Protocol scheme to use for this probe + */ + protocol?: FrontDoorProtocol; + + /** + * The number of seconds between health probes. + */ + intervalInSeconds?: int32; + + /** + * Configures which HTTP method to use to probe the backends defined under backendPools. + */ + healthProbeMethod?: FrontDoorHealthProbeMethod = FrontDoorHealthProbeMethod.HEAD; + + /** + * 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. + */ + enabledState?: HealthProbeEnabled; +} + +/** + * A backend pool is a collection of backends that can be routed to. + */ +#suppress "@azure-tools/typespec-azure-core/composition-over-inheritance" "For backward compatibility" +model BackendPool extends SubResource { + /** + * Properties of the Front Door Backend Pool + */ + properties?: BackendPoolProperties; + + /** + * Resource name. + */ + name?: string; + + /** + * Resource type. + */ + @visibility(Lifecycle.Read) + type?: string; +} + +/** + * The JSON object that contains the properties required to create a Backend Pool. + */ +#suppress "@azure-tools/typespec-azure-core/composition-over-inheritance" "For backward compatibility" +model BackendPoolProperties extends BackendPoolUpdateParameters { + /** + * Resource status. + */ + @summary("Resource status of the Front Door or Front Door SubResource.") + @visibility(Lifecycle.Read) + resourceState?: FrontDoorResourceState; +} + +/** + * A collection of backends that can be routed to. + */ +model BackendPoolUpdateParameters { + /** + * The set of backends for this pool + */ + #suppress "@azure-tools/typespec-azure-resource-manager/missing-x-ms-identifiers" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + backends?: Backend[]; + + /** + * Load balancing settings for a backend pool + */ + loadBalancingSettings?: SubResource; + + /** + * L7 health probe settings for a backend pool + */ + healthProbeSettings?: SubResource; +} + +/** + * Backend address of a frontDoor load balancer. + */ +model Backend { + /** + * Location of the backend (IP address or FQDN) + */ + address?: string; + + /** + * The Alias of the Private Link resource. Populating this optional field indicates that this backend is 'Private' + */ + privateLinkAlias?: string; + + /** + * The Resource Id of the Private Link resource. Populating this optional field indicates that this backend is 'Private' + */ + privateLinkResourceId?: string; + + /** + * The location of the Private Link resource. Required only if 'privateLinkResourceId' is populated + */ + privateLinkLocation?: string; + + /** + * The Approval status for the connection to the Private Link + */ + @visibility(Lifecycle.Read) + privateEndpointStatus?: PrivateEndpointStatus; + + /** + * A custom message to be included in the approval request to connect to the Private Link + */ + privateLinkApprovalMessage?: string; + + /** + * The HTTP TCP port number. Must be between 1 and 65535. + */ + @maxValue(65535) + @minValue(1) + httpPort?: int32; + + /** + * The HTTPS TCP port number. Must be between 1 and 65535. + */ + @maxValue(65535) + @minValue(1) + httpsPort?: int32; + + /** + * Whether to enable use of this backend. Permitted values are 'Enabled' or 'Disabled' + */ + enabledState?: BackendEnabledState; + + /** + * Priority to use for load balancing. Higher priorities will not be used for load balancing if any lower priority backend is healthy. + */ + @maxValue(5) + @minValue(1) + priority?: int32; + + /** + * Weight of this endpoint for load balancing purposes. + */ + @maxValue(1000) + @minValue(1) + weight?: int32; + + /** + * The value to use as the host header sent to the backend. If blank or unspecified, this defaults to the incoming host. + */ + backendHostHeader?: string; +} + +/** + * The JSON object that contains the properties required to create a frontend endpoint. + */ +#suppress "@azure-tools/typespec-azure-core/composition-over-inheritance" "For backward compatibility" +#suppress "@azure-tools/typespec-azure-resource-manager/arm-resource-provisioning-state" "For backward compatibility" +model FrontendEndpointProperties extends FrontendEndpointUpdateParameters { + /** + * Resource status. + */ + @visibility(Lifecycle.Read) + @summary("Resource status of the Front Door or Front Door SubResource.") + resourceState?: FrontDoorResourceState; + + /** + * Provisioning status of Custom Https of the frontendEndpoint. + */ + @visibility(Lifecycle.Read) + customHttpsProvisioningState?: CustomHttpsProvisioningState; + + /** + * Provisioning substate shows the progress of custom HTTPS enabling/disabling process step by step. + */ + @visibility(Lifecycle.Read) + customHttpsProvisioningSubstate?: CustomHttpsProvisioningSubstate; + + /** + * The configuration specifying how to enable HTTPS + */ + @visibility(Lifecycle.Read) + customHttpsConfiguration?: CustomHttpsConfiguration; +} + +/** + * Https settings for a domain + */ +model CustomHttpsConfiguration { + /** + * Defines the source of the SSL certificate + */ + certificateSource: FrontDoorCertificateSource; + + /** + * Defines the TLS extension protocol that is used for secure delivery + */ + protocolType: FrontDoorTlsProtocolType; + + /** + * The minimum TLS version required from the clients to establish an SSL handshake with Front Door. + */ + minimumTlsVersion: MinimumTLSVersion; + + /** + * KeyVault certificate source parameters (if certificateSource=AzureKeyVault) + */ + keyVaultCertificateSourceParameters?: KeyVaultCertificateSourceParameters; + + /** + * Parameters required for enabling SSL with Front Door-managed certificates (if certificateSource=FrontDoor) + */ + frontDoorCertificateSourceParameters?: FrontDoorCertificateSourceParameters; +} + +/** + * Parameters required for bring-your-own-certification via Key Vault + */ +model KeyVaultCertificateSourceParameters { + /** + * The Key Vault containing the SSL certificate + */ + vault?: { + /** + * Resource ID. + */ + id?: string; + }; + + /** + * The name of the Key Vault secret representing the full certificate PFX + */ + secretName?: string; + + /** + * The version of the Key Vault secret representing the full certificate PFX + */ + secretVersion?: string; +} + +/** + * Parameters required for enabling SSL with Front Door-managed certificates + */ +model FrontDoorCertificateSourceParameters { + /** + * Defines the type of the certificate used for secure connections to a frontendEndpoint + */ + certificateType?: FrontDoorCertificateType; +} + +/** + * Frontend endpoint used in routing rule + */ +model FrontendEndpointUpdateParameters { + /** + * The host name of the frontendEndpoint. Must be a domain name. + */ + hostName?: string; + + /** + * Whether to allow session affinity on this host. Valid options are 'Enabled' or 'Disabled' + */ + sessionAffinityEnabledState?: SessionAffinityEnabledState; + + /** + * UNUSED. This field will be ignored. The TTL to use in seconds for session affinity, if applicable. + */ + sessionAffinityTtlSeconds?: int32; + + /** + * Defines the Web Application Firewall policy for each host (if applicable) + */ + webApplicationFirewallPolicyLink?: { + /** + * Resource ID. + */ + id?: string; + }; +} + +/** + * Settings that apply to all backend pools. + */ +model BackendPoolsSettings { + /** + * Whether to enforce certificate name check on HTTPS requests to all backend pools. No effect on non-HTTPS requests. + */ + enforceCertificateNameCheck?: EnforceCertificateNameCheckEnabledState = EnforceCertificateNameCheckEnabledState.Enabled; + + /** + * Send and receive timeout on forwarding request to the backend. When timeout is reached, the request fails and returns. + */ + @minValue(16) + sendRecvTimeoutSeconds?: int32; +} + +/** + * Parameters required for content purge. + */ +model PurgeParameters { + /** + * The path to the content to be purged. Can describe a file path or a wild card directory. + */ + contentPaths: string[]; +} + +/** + * Input of the custom domain to be validated for DNS mapping. + */ +model ValidateCustomDomainInput { + /** + * The host name of the custom domain. Must be a domain name. + */ + hostName: string; +} + +/** + * Output of custom domain validation. + */ +model ValidateCustomDomainOutput { + /** + * Indicates whether the custom domain is valid or not. + */ + @visibility(Lifecycle.Read) + customDomainValidated?: boolean; + + /** + * The reason why the custom domain is not valid. + */ + @visibility(Lifecycle.Read) + reason?: string; + + /** + * Error message describing why the custom domain is not valid. + */ + @visibility(Lifecycle.Read) + message?: string; +} + +/** + * Defines a list of Profiles. It contains a list of Profile objects and a URL link to get the next set of results. + */ +model ProfileList is Azure.Core.Page; +@@visibility(ProfileList.value, Lifecycle.Read); + +/** + * Defines the properties of an experiment + */ +#suppress "@azure-tools/typespec-azure-resource-manager/arm-resource-provisioning-state" "For backward compatibility" +model ProfileProperties { + /** + * Resource status. + */ + @visibility(Lifecycle.Read) + resourceState?: NetworkExperimentResourceState; + + /** + * The state of the Experiment + */ + enabledState?: State; +} + +/** + * Defines modifiable attributes of a Profile + */ +model ProfileUpdateModel { + /** + * The properties of a Profile + */ + properties?: ProfileUpdateProperties; + + /** + * Resource tags. + */ + #suppress "@azure-tools/typespec-azure-resource-manager/arm-no-record" "For backward compatibility" + tags?: Record; +} + +/** + * Defines the properties of an experiment + */ +model ProfileUpdateProperties { + /** + * The enabled state of the Profile + */ + enabledState?: State; +} + +/** + * Defines a list of preconfigured endpoints. + */ +model PreconfiguredEndpointList is Azure.Core.Page; +@@visibility(PreconfiguredEndpointList.value, Lifecycle.Read); + +/** + * Defines the properties of a preconfigured endpoint + */ +#suppress "@azure-tools/typespec-azure-core/composition-over-inheritance" "For backward compatibility" +model PreconfiguredEndpoint { + /** + * The properties of a preconfiguredEndpoint + */ + properties?: PreconfiguredEndpointProperties; + + /** + * Resource ID. + */ + @visibility(Lifecycle.Read) + id?: string; + + /** + * The name of the endpoint. + */ + name?: string; + + /** + * Resource type. + */ + @visibility(Lifecycle.Read) + type?: string; + + /** + * Resource location. + */ + location?: string; + + /** + * Resource tags. + */ + #suppress "@azure-tools/typespec-azure-resource-manager/arm-no-record" "For backward compatibility" + tags?: Record; +} + +/** + * Defines the properties of a preconfigured endpoint + */ +model PreconfiguredEndpointProperties { + /** + * The description of the endpoint + */ + description?: string; + + /** + * The endpoint that is preconfigured + */ + endpoint?: string; + + /** + * The type of endpoint + */ + endpointType?: EndpointType; + + /** + * The preconfigured endpoint backend + */ + backend?: string; +} + +/** + * Defines a list of Experiments. It contains a list of Experiment objects and a URL link to get the next set of results. + */ +model ExperimentList is Azure.Core.Page; +@@visibility(ExperimentList.value, Lifecycle.Read); + +/** + * Defines the properties of an experiment + */ +#suppress "@azure-tools/typespec-azure-resource-manager/arm-resource-provisioning-state" "For backward compatibility" +model ExperimentProperties { + /** + * The description of the details or intents of the Experiment + */ + description?: string; + + /** + * The endpoint A of an experiment + */ + endpointA?: Endpoint; + + /** + * The endpoint B of an experiment + */ + endpointB?: Endpoint; + + /** + * The state of the Experiment + */ + enabledState?: State; + + /** + * Resource status. + */ + @visibility(Lifecycle.Read) + resourceState?: NetworkExperimentResourceState; + + /** + * The description of Experiment status from the server side + */ + @visibility(Lifecycle.Read) + status?: string; + + /** + * The uri to the Script used in the Experiment + */ + @visibility(Lifecycle.Read) + scriptFileUri?: string; +} + +/** + * Defines the endpoint properties + */ +model Endpoint { + /** + * The name of the endpoint + */ + name?: string; + + /** + * The endpoint URL + */ + #suppress "@azure-tools/typespec-client-generator-core/property-name-conflict" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + endpoint?: string; +} + +/** + * Defines modifiable attributes of an Experiment + */ +model ExperimentUpdateModel { + /** + * Resource tags. + */ + #suppress "@azure-tools/typespec-azure-resource-manager/arm-no-record" "For backward compatibility" + tags?: Record; + + /** + * The properties of a Profile + */ + properties?: ExperimentUpdateProperties; +} + +/** + * Defines the properties of an experiment + */ +model ExperimentUpdateProperties { + /** + * The description of the intent or details of the Experiment + */ + description?: string; + + /** + * The state of the Experiment + */ + enabledState?: State; +} + +/** + * Defines the LatencyScorecard + */ +#suppress "@azure-tools/typespec-azure-core/composition-over-inheritance" "For backward compatibility" +model LatencyScorecard extends Resource { + /** + * The properties of a latency scorecard + */ + properties?: LatencyScorecardProperties; +} + +/** + * Defines a the properties of a Latency Scorecard + */ +model LatencyScorecardProperties { + /** + * The unique identifier of the Latency Scorecard + */ + @visibility(Lifecycle.Read) + id?: string; + + /** + * The name of the Latency Scorecard + */ + @visibility(Lifecycle.Read) + name?: string; + + /** + * The description of the Latency Scorecard + */ + @visibility(Lifecycle.Read) + description?: string; + + /** + * The A endpoint in the scorecard + */ + @visibility(Lifecycle.Read) + endpointA?: string; + + /** + * The B endpoint in the scorecard + */ + @visibility(Lifecycle.Read) + endpointB?: string; + + /** + * The start time of the Latency Scorecard in UTC + */ + #suppress "@azure-tools/typespec-azure-core/casing-style" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + @visibility(Lifecycle.Read) + // FIXME: (utcDateTime) Please double check that this is the correct type for your scenario. + startDateTimeUTC?: utcDateTime; + + /** + * The end time of the Latency Scorecard in UTC + */ + #suppress "@azure-tools/typespec-azure-core/casing-style" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + @visibility(Lifecycle.Read) + // FIXME: (utcDateTime) Please double check that this is the correct type for your scenario. + endDateTimeUTC?: utcDateTime; + + /** + * The country associated with the Latency Scorecard. Values are country ISO codes as specified here- https://www.iso.org/iso-3166-country-codes.html + */ + @visibility(Lifecycle.Read) + country?: string; + + /** + * The latency metrics of the Latency Scorecard + */ + latencyMetrics?: LatencyMetric[]; +} + +/** + * Defines the properties of a latency metric used in the latency scorecard + */ +model LatencyMetric { + /** + * The name of the Latency Metric + */ + @visibility(Lifecycle.Read) + name?: string; + + /** + * The end time of the Latency Scorecard in UTC + */ + #suppress "@azure-tools/typespec-azure-core/casing-style" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + @visibility(Lifecycle.Read) + endDateTimeUTC?: string; + + /** + * The metric value of the A endpoint + */ + @visibility(Lifecycle.Read) + aValue?: float32; + + /** + * The metric value of the B endpoint + */ + @visibility(Lifecycle.Read) + bValue?: float32; + + /** + * The difference in value between endpoint A and B + */ + @visibility(Lifecycle.Read) + delta?: float32; + + /** + * The percent difference between endpoint A and B + */ + @visibility(Lifecycle.Read) + deltaPercent?: float32; + + /** + * The lower end of the 95% confidence interval for endpoint A + */ + #suppress "@azure-tools/typespec-azure-core/casing-style" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + @visibility(Lifecycle.Read) + aCLower95CI?: float32; + + /** + * The upper end of the 95% confidence interval for endpoint A + */ + #suppress "@azure-tools/typespec-azure-core/casing-style" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + @visibility(Lifecycle.Read) + aHUpper95CI?: float32; + + /** + * The lower end of the 95% confidence interval for endpoint B + */ + #suppress "@azure-tools/typespec-azure-core/casing-style" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + @visibility(Lifecycle.Read) + bCLower95CI?: float32; + + /** + * The upper end of the 95% confidence interval for endpoint B + */ + #suppress "@azure-tools/typespec-azure-core/casing-style" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + @visibility(Lifecycle.Read) + bUpper95CI?: float32; +} + +/** + * Defines the Timeseries + */ +#suppress "@azure-tools/typespec-azure-core/composition-over-inheritance" "For backward compatibility" +model Timeseries extends Resource { + /** + * The properties of a Timeseries + */ + properties?: TimeseriesProperties; +} + +/** + * Defines the properties of a timeseries + */ +model TimeseriesProperties { + /** + * The endpoint associated with the Timeseries data point + */ + endpoint?: string; + + /** + * The start DateTime of the Timeseries in UTC + */ + #suppress "@azure-tools/typespec-azure-core/casing-style" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + startDateTimeUTC?: string; + + /** + * The end DateTime of the Timeseries in UTC + */ + #suppress "@azure-tools/typespec-azure-core/casing-style" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + endDateTimeUTC?: string; + + /** + * The aggregation interval of the Timeseries + */ + aggregationInterval?: AggregationInterval; + + /** + * The type of Timeseries + */ + timeseriesType?: TimeseriesType; + + /** + * The country associated with the Timeseries. Values are country ISO codes as specified here- https://www.iso.org/iso-3166-country-codes.html + */ + country?: string; + + /** + * The set of data points for the timeseries + */ + #suppress "@azure-tools/typespec-azure-core/casing-style" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + #suppress "@azure-tools/typespec-azure-resource-manager/missing-x-ms-identifiers" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + timeseriesData?: TimeseriesDataPoint[]; +} + +/** + * Defines a timeseries datapoint used in a timeseries + */ +model TimeseriesDataPoint { + /** + * The DateTime of the Timeseries data point in UTC + */ + #suppress "@azure-tools/typespec-azure-core/casing-style" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + dateTimeUTC?: string; + + /** + * The Value of the Timeseries data point + */ + value?: float32; +} + +#suppress "@azure-tools/typespec-azure-core/documentation-required" "For backward compatibility" +model ErrorDetails { + #suppress "@azure-tools/typespec-azure-core/documentation-required" "For backward compatibility" + code?: string; + #suppress "@azure-tools/typespec-azure-core/documentation-required" "For backward compatibility" + target?: string; + #suppress "@azure-tools/typespec-azure-core/documentation-required" "For backward compatibility" + message?: string; +} + +#suppress "@azure-tools/typespec-azure-core/documentation-required" "For backward compatibility" +model Error { + #suppress "@azure-tools/typespec-azure-core/documentation-required" "For backward compatibility" + code?: string; + #suppress "@azure-tools/typespec-azure-core/documentation-required" "For backward compatibility" + message?: string; + #suppress "@azure-tools/typespec-azure-core/documentation-required" "For backward compatibility" + target?: string; + #suppress "@azure-tools/typespec-azure-core/documentation-required" "For backward compatibility" + #suppress "@azure-tools/typespec-azure-resource-manager/missing-x-ms-identifiers" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + details?: ErrorDetails[]; + #suppress "@azure-tools/typespec-azure-core/documentation-required" "For backward compatibility" + innerError?: string; +} + +/** + * 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. + */ +model AzureAsyncOperationResult { + /** + * Status of the Azure async operation. + */ + status?: NetworkOperationStatus; + + #suppress "@azure-tools/typespec-azure-core/documentation-required" "For backward compatibility" + error?: Error; +} + +/** + * 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. + */ +model RoutingRuleListResult is Azure.Core.Page; + +/** + * Describes Forwarding Route. + */ +model ForwardingConfiguration extends RouteConfiguration { + /** + * A custom path used to rewrite resource paths matched by this rule. Leave empty to use incoming path. + */ + customForwardingPath?: string; + + /** + * Protocol this rule will use when forwarding traffic to backends. + */ + forwardingProtocol?: FrontDoorForwardingProtocol; + + /** + * The caching configuration associated with this rule. + */ + cacheConfiguration?: CacheConfiguration; + + /** + * A reference to the BackendPool which this rule routes to. + */ + backendPool?: SubResource; + + #suppress "@azure-tools/typespec-azure-core/casing-style" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + `@odata.type`: "#Microsoft.Azure.FrontDoor.Models.FrontdoorForwardingConfiguration"; +} + +/** + * Caching settings for a caching-type route. To disable caching, do not provide a cacheConfiguration object. + */ +model CacheConfiguration { + /** + * Treatment of URL query terms when forming the cache key. + */ + queryParameterStripDirective?: FrontDoorQuery; + + /** + * query parameters to include or exclude (comma separated). + */ + queryParameters?: string; + + /** + * Whether to use dynamic compression for cached content + */ + dynamicCompression?: DynamicCompressionEnabled; + + /** + * 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 + */ + cacheDuration?: duration; +} + +/** + * Describes Redirect Route. + */ +model RedirectConfiguration extends RouteConfiguration { + /** + * The redirect type the rule will use when redirecting traffic. + */ + redirectType?: FrontDoorRedirectType; + + /** + * The protocol of the destination to where the traffic is redirected + */ + redirectProtocol?: FrontDoorRedirectProtocol; + + /** + * Host to redirect. Leave empty to use the incoming host as the destination host. + */ + customHost?: string; + + /** + * The full path to redirect. Path cannot be empty and must start with /. Leave empty to use the incoming path as destination path. + */ + customPath?: string; + + /** + * Fragment to add to the redirect URL. Fragment is the part of the URL that comes after #. Do not include the #. + */ + customFragment?: string; + + /** + * 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 &. + */ + customQueryString?: string; + + #suppress "@azure-tools/typespec-azure-core/casing-style" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + `@odata.type`: "#Microsoft.Azure.FrontDoor.Models.FrontdoorRedirectConfiguration"; +} + +/** + * 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. + */ +model LoadBalancingSettingsListResult + is Azure.Core.Page; + +/** + * 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. + */ +model HealthProbeSettingsListResult + is Azure.Core.Page; + +/** + * 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. + */ +model BackendPoolListResult is Azure.Core.Page; +model FrontendEndpointsListResult is Azure.Core.Page; +model FrontDoorListResult is Azure.Core.Page; +model RulesEngineListResult is Azure.Core.Page; diff --git a/specification/frontdoor/FrontDoor.Management/routes.tsp b/specification/frontdoor/FrontDoor.Management/routes.tsp new file mode 100644 index 000000000000..91aa7453d968 --- /dev/null +++ b/specification/frontdoor/FrontDoor.Management/routes.tsp @@ -0,0 +1,63 @@ +// FIXME: Operations in this file are not detected as a resource operation, please confirm the conversion result manually + +import "@azure-tools/typespec-azure-core"; +import "@typespec/rest"; +import "./models.tsp"; +import "@azure-tools/typespec-azure-resource-manager"; +import "@typespec/openapi"; + +using TypeSpec.Rest; +using TypeSpec.Http; +using Azure.ResourceManager; +using TypeSpec.OpenAPI; + +namespace Microsoft.Network; + +#suppress "@azure-tools/typespec-azure-resource-manager/arm-resource-interface-requires-decorator" "For backward compatibility" +interface ManagedRuleSetsOperationGroup { + /** + * Lists all available managed rule sets. + */ + #suppress "@azure-tools/typespec-azure-core/no-openapi" "non-standard operations" + @operationId("ManagedRuleSets_List") + @route("/subscriptions/{subscriptionId}/providers/microsoft.Network/frontDoorWebApplicationFirewallManagedRuleSets") + @armResourceList(ManagedRuleSetDefinitionList) + @list + list( + ...ApiVersionParameter, + ...SubscriptionIdParameter, + ): ArmResponse | ErrorResponse; +} + +#suppress "@azure-tools/typespec-azure-resource-manager/arm-resource-interface-requires-decorator" "For backward compatibility" +interface FrontDoorNameAvailabilityOperationGroup { + /** + * Check the availability of a Front Door resource name. + */ + #suppress "@azure-tools/typespec-azure-core/no-openapi" "non-standard operations" + @operationId("FrontDoorNameAvailability_Check") + @autoRoute + @action("checkFrontDoorNameAvailability") + check is ArmProviderActionSync< + Request = CheckNameAvailabilityInput, + Response = CheckNameAvailabilityOutput, + Error = ErrorResponse + >; +} + +#suppress "@azure-tools/typespec-azure-resource-manager/arm-resource-interface-requires-decorator" "For backward compatibility" +interface FrontDoorNameAvailabilityWithSubscriptionOperationGroup { + /** + * Check the availability of a Front Door subdomain. + */ + #suppress "@azure-tools/typespec-azure-core/no-openapi" "non-standard operations" + @operationId("FrontDoorNameAvailabilityWithSubscription_Check") + @autoRoute + @action("checkFrontDoorNameAvailability") + check is ArmProviderActionSync< + Request = CheckNameAvailabilityInput, + Response = CheckNameAvailabilityOutput, + Scope = SubscriptionActionScope, + Error = ErrorResponse + >; +} diff --git a/specification/frontdoor/FrontDoor.Management/tspconfig.yaml b/specification/frontdoor/FrontDoor.Management/tspconfig.yaml new file mode 100644 index 000000000000..432589fdb978 --- /dev/null +++ b/specification/frontdoor/FrontDoor.Management/tspconfig.yaml @@ -0,0 +1,54 @@ +parameters: + service-dir: + default: "sdk/frontdoor" +emit: + - "@azure-tools/typespec-autorest" +options: + "@azure-tools/typespec-autorest": + omit-unreachable-types: true + emitter-output-dir: "{project-root}/.." + azure-resource-provider-folder: "resource-manager" + output-file: "{azure-resource-provider-folder}/{service-name}/{version-status}/{version}/openapi.json" + emit-lro-options: "final-state-only" + examples-dir: "{project-root}/examples" + "@azure-tools/typespec-python": + emitter-output-dir: "{output-dir}/{service-dir}/azure-mgmt-frontdoor" + service-dir: "sdk/network" + namespace: "azure.mgmt.frontdoor" + generate-test: true + generate-sample: true + flavor: "azure" + "@azure-tools/typespec-java": + emitter-output-dir: "{output-dir}/{service-dir}/azure-resourcemanager-frontdoor" + service-dir: "sdk/frontdoor" + namespace: "com.azure.resourcemanager.frontdoor" + service-name: "FrontDoor" # human-readable service name, whitespace allowed + flavor: azure + "@azure-tools/typespec-ts": + service-dir: sdk/frontdoor + emitter-output-dir: "{output-dir}/{service-dir}/arm-frontdoor" + is-modular-library: true + flavor: "azure" + experimental-extensible-enums: true + package-details: + name: "@azure/arm-frontdoor" + "@azure-tools/typespec-go": + service-dir: "sdk/resourcemanager/frontdoor" + emitter-output-dir: "{output-dir}/{service-dir}/armfrontdoor" + module: "github.com/Azure/azure-sdk-for-go/{service-dir}/armfrontdoor" + fix-const-stuttering: true + flavor: "azure" + generate-samples: true + generate-fakes: true + head-as-boolean: true + inject-spans: true + "@azure-tools/typespec-csharp": + emitter-output-dir: "{output-dir}/{service-dir}/{namespace}" + service-dir: "sdk/frontdoor" + namespace: "Azure.ResourceManager.FrontDoor" + flavor: azure + clear-output-folder: true + model-namespace: false +linter: + extends: + - "@azure-tools/typespec-azure-rulesets/resource-manager" diff --git a/specification/frontdoor/resource-manager/Microsoft.Network/stable/2025-10-01/examples/CheckFrontdoorNameAvailability.json b/specification/frontdoor/resource-manager/Microsoft.Network/stable/2025-10-01/examples/CheckFrontdoorNameAvailability.json index ae3bc71b1355..05bb510eb547 100644 --- a/specification/frontdoor/resource-manager/Microsoft.Network/stable/2025-10-01/examples/CheckFrontdoorNameAvailability.json +++ b/specification/frontdoor/resource-manager/Microsoft.Network/stable/2025-10-01/examples/CheckFrontdoorNameAvailability.json @@ -9,10 +9,12 @@ "responses": { "200": { "body": { + "message": "Name not available", "nameAvailability": "Unavailable", - "reason": "Name is already in use", - "message": "Name not available" + "reason": "Name is already in use" } } - } + }, + "operationId": "FrontDoorNameAvailability_Check", + "title": "CheckNameAvailability" } diff --git a/specification/frontdoor/resource-manager/Microsoft.Network/stable/2025-10-01/examples/CheckFrontdoorNameAvailabilityWithSubscription.json b/specification/frontdoor/resource-manager/Microsoft.Network/stable/2025-10-01/examples/CheckFrontdoorNameAvailabilityWithSubscription.json index 01729d8326bb..c5862c630ddc 100644 --- a/specification/frontdoor/resource-manager/Microsoft.Network/stable/2025-10-01/examples/CheckFrontdoorNameAvailabilityWithSubscription.json +++ b/specification/frontdoor/resource-manager/Microsoft.Network/stable/2025-10-01/examples/CheckFrontdoorNameAvailabilityWithSubscription.json @@ -1,19 +1,21 @@ { "parameters": { "api-version": "2025-10-01", - "subscriptionId": "subid", "checkFrontDoorNameAvailabilityInput": { "name": "sampleName", "type": "Microsoft.Network/frontDoors/frontendEndpoints" - } + }, + "subscriptionId": "subid" }, "responses": { "200": { "body": { + "message": "Name not available", "nameAvailability": "Unavailable", - "reason": "Name is already in use", - "message": "Name not available" + "reason": "Name is already in use" } } - } + }, + "operationId": "FrontDoorNameAvailabilityWithSubscription_Check", + "title": "CheckNameAvailabilityWithSubscription" } diff --git a/specification/frontdoor/resource-manager/Microsoft.Network/stable/2025-10-01/examples/FrontdoorCreate.json b/specification/frontdoor/resource-manager/Microsoft.Network/stable/2025-10-01/examples/FrontdoorCreate.json index 794768bf1cbe..150e29845cf5 100644 --- a/specification/frontdoor/resource-manager/Microsoft.Network/stable/2025-10-01/examples/FrontdoorCreate.json +++ b/specification/frontdoor/resource-manager/Microsoft.Network/stable/2025-10-01/examples/FrontdoorCreate.json @@ -1,71 +1,10 @@ { "parameters": { "api-version": "2025-10-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", - "webApplicationFirewallPolicyLink": { - "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoorWebApplicationFirewallPolicies/policy1" - } - } - } - ], - "healthProbeSettings": [ - { - "name": "healthProbeSettings1", - "properties": { - "path": "/", - "protocol": "Http", - "intervalInSeconds": 120, - "enabledState": "Enabled", - "healthProbeMethod": "HEAD" - } - } - ], - "loadBalancingSettings": [ - { - "name": "loadBalancingSettings1", - "properties": { - "sampleSize": 4, - "successfulSamplesRequired": 2 - } - } - ], "backendPools": [ { "name": "backendPool1", @@ -75,38 +14,43 @@ "address": "w3.contoso.com", "httpPort": 80, "httpsPort": 443, - "weight": 1, - "priority": 2 + "priority": 2, + "weight": 1 }, { - "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 + "priority": 1, + "privateLinkApprovalMessage": "Please approve the connection request for this Private Link", + "privateLinkLocation": "eastus", + "privateLinkResourceId": "/subscriptions/subid/resourcegroups/rg1/providers/Microsoft.Network/privateLinkServices/pls1", + "weight": 2 }, { - "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 + "priority": 1, + "privateLinkAlias": "APPSERVER.d84e61f0-0870-4d24-9746-7438fa0019d1.westus2.azure.privatelinkservice", + "privateLinkApprovalMessage": "Please approve this request to connect to the Private Link", + "weight": 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" + }, + "loadBalancingSettings": { + "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoors/frontDoor1/loadBalancingSettings/loadBalancingSettings1" } } } ], + "backendPoolsSettings": { + "enforceCertificateNameCheck": "Enabled", + "sendRecvTimeoutSeconds": 60 + }, + "enabledState": "Enabled", "frontendEndpoints": [ { "name": "frontendEndpoint1", @@ -126,137 +70,135 @@ } } ], - "backendPoolsSettings": { - "enforceCertificateNameCheck": "Enabled", - "sendRecvTimeoutSeconds": 60 - }, - "enabledState": "Enabled" + "healthProbeSettings": [ + { + "name": "healthProbeSettings1", + "properties": { + "path": "/", + "enabledState": "Enabled", + "healthProbeMethod": "HEAD", + "intervalInSeconds": 120, + "protocol": "Http" + } + } + ], + "loadBalancingSettings": [ + { + "name": "loadBalancingSettings1", + "properties": { + "sampleSize": 4, + "successfulSamplesRequired": 2 + } + } + ], + "routingRules": [ + { + "name": "routingRule1", + "properties": { + "acceptedProtocols": [ + "Http" + ], + "enabledState": "Enabled", + "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" + } + ], + "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" + }, + "webApplicationFirewallPolicyLink": { + "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoorWebApplicationFirewallPolicies/policy1" + } + } + } + ] + }, + "tags": { + "tag1": "value1", + "tag2": "value2" } - } + }, + "resourceGroupName": "rg1", + "subscriptionId": "subid" }, "responses": { "200": { "body": { - "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoors/frontDoor1", "name": "frontDoor1", "type": "Microsoft.Network/frontDoor", + "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoors/frontDoor1", "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", - "webApplicationFirewallPolicyLink": { - "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoorWebApplicationFirewallPolicies/policy1" - } - } - } - ], - "healthProbeSettings": [ - { - "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoors/frontDoor1/healthProbeSettings/healthProbeSettings1", - "name": "healthProbeSettings1", - "properties": { - "path": "/", - "protocol": "Http", - "intervalInSeconds": 120, - "enabledState": "Enabled", - "healthProbeMethod": "HEAD" - } - } - ], - "loadBalancingSettings": [ - { - "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoors/frontDoor1/loadBalancingSettings/loadBalancingSettings1", - "name": "loadBalancingSettings1", - "properties": { - "sampleSize": 4, - "successfulSamplesRequired": 2 - } - } - ], "backendPools": [ { - "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoors/frontDoor1/backendPools/backendPool1", "name": "backendPool1", + "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoors/frontDoor1/backendPools/backendPool1", "properties": { "backends": [ { "address": "w3.contoso.com", + "enabledState": "Enabled", "httpPort": 80, "httpsPort": 443, - "enabledState": "Enabled", - "weight": 1, - "priority": 2 + "priority": 2, + "weight": 1 }, { - "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", + "enabledState": "Enabled", "httpPort": 80, "httpsPort": 443, - "enabledState": "Enabled", - "weight": 2, - "priority": 1 - }, - { - "privateLinkAlias": "APPSERVER.d84e61f0-0870-4d24-9746-7438fa0019d1.westus2.azure.privatelinkservice", + "priority": 1, "privateEndpointStatus": "Approved", "privateLinkApprovalMessage": "Please approve the connection request for this Private Link", + "privateLinkLocation": "eastus", + "privateLinkResourceId": "/subscriptions/subid/resourcegroups/rg1/providers/Microsoft.Network/privateLinkServices/pls1", + "weight": 2 + }, + { "address": "10.0.1.5", + "enabledState": "Enabled", "httpPort": 80, "httpsPort": 443, - "enabledState": "Enabled", - "weight": 1, - "priority": 1 + "priority": 1, + "privateEndpointStatus": "Approved", + "privateLinkAlias": "APPSERVER.d84e61f0-0870-4d24-9746-7438fa0019d1.westus2.azure.privatelinkservice", + "privateLinkApprovalMessage": "Please approve the connection request for this Private Link", + "weight": 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" + }, + "loadBalancingSettings": { + "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoors/frontDoor1/loadBalancingSettings/loadBalancingSettings1" } } } ], + "backendPoolsSettings": { + "enforceCertificateNameCheck": "Enabled", + "sendRecvTimeoutSeconds": 60 + }, + "cname": "frontDoor1.azurefd.net", + "enabledState": "Enabled", "frontendEndpoints": [ { - "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoors/frontDoor1/frontendEndpoints/frontendEndpoint1", "name": "frontendEndpoint1", + "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoors/frontDoor1/frontendEndpoints/frontendEndpoint1", "properties": { "hostName": "www.contoso.com", "sessionAffinityEnabledState": "Enabled", @@ -267,40 +209,47 @@ } }, { - "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoors/frontDoor1/frontendEndpoints/default", "name": "default", + "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoors/frontDoor1/frontendEndpoints/default", "properties": { "hostName": "frontDoor1.azurefd.net" } } ], - "backendPoolsSettings": { - "enforceCertificateNameCheck": "Enabled", - "sendRecvTimeoutSeconds": 60 - }, - "enabledState": "Enabled", - "resourceState": "Creating", + "healthProbeSettings": [ + { + "name": "healthProbeSettings1", + "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoors/frontDoor1/healthProbeSettings/healthProbeSettings1", + "properties": { + "path": "/", + "enabledState": "Enabled", + "healthProbeMethod": "HEAD", + "intervalInSeconds": 120, + "protocol": "Http" + } + } + ], + "loadBalancingSettings": [ + { + "name": "loadBalancingSettings1", + "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoors/frontDoor1/loadBalancingSettings/loadBalancingSettings1", + "properties": { + "sampleSize": 4, + "successfulSamplesRequired": 2 + } + } + ], "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": { + "resourceState": "Creating", "routingRules": [ { - "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoors/frontDoor1/routingRules/routingRule1", "name": "routingRule1", + "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoors/frontDoor1/routingRules/routingRule1", "properties": { + "acceptedProtocols": [ + "Http" + ], + "enabledState": "Enabled", "frontendEndpoints": [ { "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoors/frontDoor1/frontendEndpoints/frontendEndpoint1" @@ -309,104 +258,97 @@ "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", - "webApplicationFirewallPolicyLink": { - "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoorWebApplicationFirewallPolicies/policy1" - } - } - } - ], - "healthProbeSettings": [ - { - "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoors/frontDoor1/healthProbeSettings/healthProbeSettings1", - "name": "healthProbeSettings1", - "properties": { - "path": "/", - "protocol": "Http", - "intervalInSeconds": 120, - "enabledState": "Enabled", - "healthProbeMethod": "HEAD" - } - } - ], - "loadBalancingSettings": [ - { - "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoors/frontDoor1/loadBalancingSettings/loadBalancingSettings1", - "name": "loadBalancingSettings1", - "properties": { - "sampleSize": 4, - "successfulSamplesRequired": 2 + }, + "customForwardingPath": "", + "forwardingProtocol": "MatchRequest" + }, + "rulesEngine": { + "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoors/frontDoor1/rulesEngines/rulesEngine1" + }, + "webApplicationFirewallPolicyLink": { + "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoorWebApplicationFirewallPolicies/policy1" + } } } - ], + ] + }, + "tags": { + "tag1": "value1", + "tag2": "value2" + } + } + }, + "201": { + "body": { + "name": "frontDoor1", + "type": "Microsoft.Network/frontDoor", + "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoors/frontDoor1", + "location": "westus", + "properties": { "backendPools": [ { - "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoors/frontDoor1/backendPools/backendPool1", "name": "backendPool1", + "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoors/frontDoor1/backendPools/backendPool1", "properties": { "backends": [ { "address": "w3.contoso.com", + "enabledState": "Enabled", "httpPort": 80, "httpsPort": 443, - "enabledState": "Enabled", - "weight": 1, - "priority": 2 + "priority": 2, + "weight": 1 }, { - "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", + "enabledState": "Enabled", "httpPort": 80, "httpsPort": 443, - "enabledState": "Enabled", - "weight": 2, - "priority": 1 - }, - { - "privateLinkAlias": "APPSERVER.d84e61f0-0870-4d24-9746-7438fa0019d1.westus2.azure.privatelinkservice", + "priority": 1, "privateEndpointStatus": "Approved", "privateLinkApprovalMessage": "Please approve the connection request for this Private Link", + "privateLinkLocation": "eastus", + "privateLinkResourceId": "/subscriptions/subid/resourcegroups/rg1/providers/Microsoft.Network/privateLinkServices/pls1", + "weight": 2 + }, + { "address": "10.0.1.5", + "enabledState": "Enabled", "httpPort": 80, "httpsPort": 443, - "enabledState": "Enabled", - "weight": 1, - "priority": 1 + "priority": 1, + "privateEndpointStatus": "Approved", + "privateLinkAlias": "APPSERVER.d84e61f0-0870-4d24-9746-7438fa0019d1.westus2.azure.privatelinkservice", + "privateLinkApprovalMessage": "Please approve the connection request for this Private Link", + "weight": 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" + }, + "loadBalancingSettings": { + "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoors/frontDoor1/loadBalancingSettings/loadBalancingSettings1" } } } ], + "backendPoolsSettings": { + "enforceCertificateNameCheck": "Enabled", + "sendRecvTimeoutSeconds": 60 + }, + "cname": "frontDoor1.azurefd.net", + "enabledState": "Enabled", "frontendEndpoints": [ { - "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoors/frontDoor1/frontendEndpoints/frontendEndpoint1", "name": "frontendEndpoint1", + "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoors/frontDoor1/frontendEndpoints/frontendEndpoint1", "properties": { "hostName": "www.contoso.com", "sessionAffinityEnabledState": "Enabled", @@ -417,40 +359,47 @@ } }, { - "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoors/frontDoor1/frontendEndpoints/default", "name": "default", + "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoors/frontDoor1/frontendEndpoints/default", "properties": { "hostName": "frontDoor1.azurefd.net" } } ], - "backendPoolsSettings": { - "enforceCertificateNameCheck": "Enabled", - "sendRecvTimeoutSeconds": 60 - }, - "enabledState": "Enabled", - "resourceState": "Creating", + "healthProbeSettings": [ + { + "name": "healthProbeSettings1", + "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoors/frontDoor1/healthProbeSettings/healthProbeSettings1", + "properties": { + "path": "/", + "enabledState": "Enabled", + "healthProbeMethod": "HEAD", + "intervalInSeconds": 120, + "protocol": "Http" + } + } + ], + "loadBalancingSettings": [ + { + "name": "loadBalancingSettings1", + "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoors/frontDoor1/loadBalancingSettings/loadBalancingSettings1", + "properties": { + "sampleSize": 4, + "successfulSamplesRequired": 2 + } + } + ], "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": { + "resourceState": "Creating", "routingRules": [ { - "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoors/frontDoor1/routingRules/routingRule1", "name": "routingRule1", + "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoors/frontDoor1/routingRules/routingRule1", "properties": { + "acceptedProtocols": [ + "Http" + ], + "enabledState": "Enabled", "frontendEndpoints": [ { "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoors/frontDoor1/frontendEndpoints/frontendEndpoint1" @@ -459,104 +408,97 @@ "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" - } + }, + "customForwardingPath": "", + "forwardingProtocol": "MatchRequest" }, "rulesEngine": { "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoors/frontDoor1/rulesEngines/rulesEngine1" }, - "enabledState": "Enabled", "webApplicationFirewallPolicyLink": { "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoorWebApplicationFirewallPolicies/policy1" } } } - ], - "healthProbeSettings": [ - { - "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoors/frontDoor1/healthProbeSettings/healthProbeSettings1", - "name": "healthProbeSettings1", - "properties": { - "path": "/", - "protocol": "Http", - "intervalInSeconds": 120, - "enabledState": "Enabled", - "healthProbeMethod": "HEAD" - } - } - ], - "loadBalancingSettings": [ - { - "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoors/frontDoor1/loadBalancingSettings/loadBalancingSettings1", - "name": "loadBalancingSettings1", - "properties": { - "sampleSize": 4, - "successfulSamplesRequired": 2 - } - } - ], + ] + }, + "tags": { + "tag1": "value1", + "tag2": "value2" + } + } + }, + "202": { + "body": { + "name": "frontDoor1", + "type": "Microsoft.Network/frontDoor", + "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoors/frontDoor1", + "location": "westus", + "properties": { "backendPools": [ { - "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoors/frontDoor1/backendPools/backendPool1", "name": "backendPool1", + "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoors/frontDoor1/backendPools/backendPool1", "properties": { "backends": [ { "address": "w3.contoso.com", + "enabledState": "Enabled", "httpPort": 80, "httpsPort": 443, - "enabledState": "Enabled", - "weight": 1, - "priority": 2 + "priority": 2, + "weight": 1 }, { - "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", + "enabledState": "Enabled", "httpPort": 80, "httpsPort": 443, - "enabledState": "Enabled", - "weight": 2, - "priority": 1 - }, - { - "privateLinkAlias": "APPSERVER.d84e61f0-0870-4d24-9746-7438fa0019d1.westus2.azure.privatelinkservice", + "priority": 1, "privateEndpointStatus": "Approved", "privateLinkApprovalMessage": "Please approve the connection request for this Private Link", + "privateLinkLocation": "eastus", + "privateLinkResourceId": "/subscriptions/subid/resourcegroups/rg1/providers/Microsoft.Network/privateLinkServices/pls1", + "weight": 2 + }, + { "address": "10.0.1.5", + "enabledState": "Enabled", "httpPort": 80, "httpsPort": 443, - "enabledState": "Enabled", - "weight": 1, - "priority": 1 + "priority": 1, + "privateEndpointStatus": "Approved", + "privateLinkAlias": "APPSERVER.d84e61f0-0870-4d24-9746-7438fa0019d1.westus2.azure.privatelinkservice", + "privateLinkApprovalMessage": "Please approve the connection request for this Private Link", + "weight": 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" + }, + "loadBalancingSettings": { + "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoors/frontDoor1/loadBalancingSettings/loadBalancingSettings1" } } } ], + "backendPoolsSettings": { + "enforceCertificateNameCheck": "Enabled", + "sendRecvTimeoutSeconds": 60 + }, + "cname": "frontDoor1.azurefd.net", + "enabledState": "Enabled", "frontendEndpoints": [ { - "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoors/frontDoor1/frontendEndpoints/frontendEndpoint1", "name": "frontendEndpoint1", + "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoors/frontDoor1/frontendEndpoints/frontendEndpoint1", "properties": { "hostName": "www.contoso.com", "sessionAffinityEnabledState": "Enabled", @@ -567,23 +509,83 @@ } }, { - "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoors/frontDoor1/frontendEndpoints/default", "name": "default", + "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoors/frontDoor1/frontendEndpoints/default", "properties": { "hostName": "frontDoor1.azurefd.net" } } ], - "backendPoolsSettings": { - "enforceCertificateNameCheck": "Enabled", - "sendRecvTimeoutSeconds": 60 - }, - "enabledState": "Enabled", - "resourceState": "Creating", + "healthProbeSettings": [ + { + "name": "healthProbeSettings1", + "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoors/frontDoor1/healthProbeSettings/healthProbeSettings1", + "properties": { + "path": "/", + "enabledState": "Enabled", + "healthProbeMethod": "HEAD", + "intervalInSeconds": 120, + "protocol": "Http" + } + } + ], + "loadBalancingSettings": [ + { + "name": "loadBalancingSettings1", + "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoors/frontDoor1/loadBalancingSettings/loadBalancingSettings1", + "properties": { + "sampleSize": 4, + "successfulSamplesRequired": 2 + } + } + ], "provisioningState": "Provisioning", - "cname": "frontDoor1.azurefd.net" + "resourceState": "Creating", + "routingRules": [ + { + "name": "routingRule1", + "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoors/frontDoor1/routingRules/routingRule1", + "properties": { + "acceptedProtocols": [ + "Http" + ], + "enabledState": "Enabled", + "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" + } + ], + "patternsToMatch": [ + "/*" + ], + "routeConfiguration": { + "@odata.type": "#Microsoft.Azure.FrontDoor.Models.FrontdoorForwardingConfiguration", + "backendPool": { + "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoors/frontDoor1/backendPools/backendPool1" + }, + "customForwardingPath": "", + "forwardingProtocol": "MatchRequest" + }, + "rulesEngine": { + "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoors/frontDoor1/rulesEngines/rulesEngine1" + }, + "webApplicationFirewallPolicyLink": { + "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoorWebApplicationFirewallPolicies/policy1" + } + } + } + ] + }, + "tags": { + "tag1": "value1", + "tag2": "value2" } } } - } + }, + "operationId": "FrontDoors_CreateOrUpdate", + "title": "Create or update specific Front Door" } diff --git a/specification/frontdoor/resource-manager/Microsoft.Network/stable/2025-10-01/examples/FrontdoorDelete.json b/specification/frontdoor/resource-manager/Microsoft.Network/stable/2025-10-01/examples/FrontdoorDelete.json index 79317dc5a785..ce8fa15d4ab6 100644 --- a/specification/frontdoor/resource-manager/Microsoft.Network/stable/2025-10-01/examples/FrontdoorDelete.json +++ b/specification/frontdoor/resource-manager/Microsoft.Network/stable/2025-10-01/examples/FrontdoorDelete.json @@ -1,9 +1,9 @@ { "parameters": { "api-version": "2025-10-01", - "subscriptionId": "subid", + "frontDoorName": "frontDoor1", "resourceGroupName": "rg1", - "frontDoorName": "frontDoor1" + "subscriptionId": "subid" }, "responses": { "202": { @@ -12,5 +12,7 @@ } }, "204": {} - } + }, + "operationId": "FrontDoors_Delete", + "title": "Delete Front Door" } diff --git a/specification/frontdoor/resource-manager/Microsoft.Network/stable/2025-10-01/examples/FrontdoorDisableHttps.json b/specification/frontdoor/resource-manager/Microsoft.Network/stable/2025-10-01/examples/FrontdoorDisableHttps.json index 074d0087f258..2657918684b3 100644 --- a/specification/frontdoor/resource-manager/Microsoft.Network/stable/2025-10-01/examples/FrontdoorDisableHttps.json +++ b/specification/frontdoor/resource-manager/Microsoft.Network/stable/2025-10-01/examples/FrontdoorDisableHttps.json @@ -1,10 +1,10 @@ { "parameters": { "api-version": "2025-10-01", - "subscriptionId": "subid", - "resourceGroupName": "rg1", "frontDoorName": "frontDoor1", - "frontendEndpointName": "frontendEndpoint1" + "frontendEndpointName": "frontendEndpoint1", + "resourceGroupName": "rg1", + "subscriptionId": "subid" }, "responses": { "200": {}, @@ -13,5 +13,7 @@ "azure-asyncoperation": "https://management.azure.com/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoors/frontDoor1/operationResults/62e4d893-d233-4005-988e-a428d9f77076?api-version=2025-10-01" } } - } + }, + "operationId": "FrontendEndpoints_DisableHttps", + "title": "FrontendEndpoints_DisableHttps" } diff --git a/specification/frontdoor/resource-manager/Microsoft.Network/stable/2025-10-01/examples/FrontdoorEnableHttps.json b/specification/frontdoor/resource-manager/Microsoft.Network/stable/2025-10-01/examples/FrontdoorEnableHttps.json index 0e93cd72e67a..0f172da08f4e 100644 --- a/specification/frontdoor/resource-manager/Microsoft.Network/stable/2025-10-01/examples/FrontdoorEnableHttps.json +++ b/specification/frontdoor/resource-manager/Microsoft.Network/stable/2025-10-01/examples/FrontdoorEnableHttps.json @@ -1,22 +1,22 @@ { "parameters": { "api-version": "2025-10-01", - "subscriptionId": "subid", - "resourceGroupName": "rg1", - "frontDoorName": "frontDoor1", - "frontendEndpointName": "frontendEndpoint1", "customHttpsConfiguration": { "certificateSource": "AzureKeyVault", - "protocolType": "ServerNameIndication", - "minimumTlsVersion": "1.0", "keyVaultCertificateSourceParameters": { + "secretName": "secret1", + "secretVersion": "00000000-0000-0000-0000-000000000000", "vault": { "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.KeyVault/vaults/vault1" - }, - "secretName": "secret1", - "secretVersion": "00000000-0000-0000-0000-000000000000" - } - } + } + }, + "minimumTlsVersion": "1.0", + "protocolType": "ServerNameIndication" + }, + "frontDoorName": "frontDoor1", + "frontendEndpointName": "frontendEndpoint1", + "resourceGroupName": "rg1", + "subscriptionId": "subid" }, "responses": { "200": {}, @@ -25,5 +25,7 @@ "azure-asyncoperation": "https://management.azure.com/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoors/frontDoor1/operationResults/62e4d893-d233-4005-988e-a428d9f77076?api-version=2025-10-01" } } - } + }, + "operationId": "FrontendEndpoints_EnableHttps", + "title": "FrontendEndpoints_EnableHttps" } diff --git a/specification/frontdoor/resource-manager/Microsoft.Network/stable/2025-10-01/examples/FrontdoorFrontendEndpointGet.json b/specification/frontdoor/resource-manager/Microsoft.Network/stable/2025-10-01/examples/FrontdoorFrontendEndpointGet.json index cd5dc90117ba..b543eef209da 100644 --- a/specification/frontdoor/resource-manager/Microsoft.Network/stable/2025-10-01/examples/FrontdoorFrontendEndpointGet.json +++ b/specification/frontdoor/resource-manager/Microsoft.Network/stable/2025-10-01/examples/FrontdoorFrontendEndpointGet.json @@ -1,16 +1,16 @@ { "parameters": { "api-version": "2025-10-01", - "subscriptionId": "subid", - "resourceGroupName": "rg1", "frontDoorName": "frontDoor1", - "frontendEndpointName": "frontendEndpoint1" + "frontendEndpointName": "frontendEndpoint1", + "resourceGroupName": "rg1", + "subscriptionId": "subid" }, "responses": { "200": { "body": { - "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoors/frontDoor1/frontendEndpoints/frontendEndpoint1", "name": "frontendEndpoint1", + "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoors/frontDoor1/frontendEndpoints/frontendEndpoint1", "properties": { "hostName": "www.contoso.com", "sessionAffinityEnabledState": "Enabled", @@ -21,5 +21,7 @@ } } } - } + }, + "operationId": "FrontendEndpoints_Get", + "title": "Get Frontend Endpoint" } diff --git a/specification/frontdoor/resource-manager/Microsoft.Network/stable/2025-10-01/examples/FrontdoorFrontendEndpointList.json b/specification/frontdoor/resource-manager/Microsoft.Network/stable/2025-10-01/examples/FrontdoorFrontendEndpointList.json index b3c7e963352b..0de2dd9b75bd 100644 --- a/specification/frontdoor/resource-manager/Microsoft.Network/stable/2025-10-01/examples/FrontdoorFrontendEndpointList.json +++ b/specification/frontdoor/resource-manager/Microsoft.Network/stable/2025-10-01/examples/FrontdoorFrontendEndpointList.json @@ -1,17 +1,17 @@ { "parameters": { "api-version": "2025-10-01", - "subscriptionId": "subid", + "frontDoorName": "frontDoor1", "resourceGroupName": "rg1", - "frontDoorName": "frontDoor1" + "subscriptionId": "subid" }, "responses": { "200": { "body": { "value": [ { - "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoors/frontDoor1/frontendEndpoints/frontendEndpoint1", "name": "frontendEndpoint1", + "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoors/frontDoor1/frontendEndpoints/frontendEndpoint1", "properties": { "hostName": "www.contoso.com", "sessionAffinityEnabledState": "Enabled", @@ -24,5 +24,7 @@ ] } } - } + }, + "operationId": "FrontendEndpoints_ListByFrontDoor", + "title": "List Frontend endpoints in a Front Door" } diff --git a/specification/frontdoor/resource-manager/Microsoft.Network/stable/2025-10-01/examples/FrontdoorGet.json b/specification/frontdoor/resource-manager/Microsoft.Network/stable/2025-10-01/examples/FrontdoorGet.json index 7ea4e99a176c..fa78efe94ed6 100644 --- a/specification/frontdoor/resource-manager/Microsoft.Network/stable/2025-10-01/examples/FrontdoorGet.json +++ b/specification/frontdoor/resource-manager/Microsoft.Network/stable/2025-10-01/examples/FrontdoorGet.json @@ -1,133 +1,75 @@ { "parameters": { "api-version": "2025-10-01", - "subscriptionId": "subid", + "frontDoorName": "frontDoor1", "resourceGroupName": "rg1", - "frontDoorName": "frontDoor1" + "subscriptionId": "subid" }, "responses": { "200": { "body": { - "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoors/frontDoor1", "name": "frontDoor1", "type": "Microsoft.Network/frontDoor", + "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoors/frontDoor1", "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", - "webApplicationFirewallPolicyLink": { - "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoorWebApplicationFirewallPolicies/policy1" - } - } - } - ], - "healthProbeSettings": [ - { - "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoors/frontDoor1/healthProbeSettings/healthProbeSettings1", - "name": "healthProbeSettings1", - "properties": { - "path": "/", - "protocol": "Http", - "intervalInSeconds": 120, - "enabledState": "Enabled", - "healthProbeMethod": "HEAD" - } - } - ], - "loadBalancingSettings": [ - { - "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoors/frontDoor1/loadBalancingSettings/loadBalancingSettings1", - "name": "loadBalancingSettings1", - "properties": { - "sampleSize": 4, - "successfulSamplesRequired": 2 - } - } - ], "backendPools": [ { - "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoors/frontDoor1/backendPools/backendPool1", "name": "backendPool1", + "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoors/frontDoor1/backendPools/backendPool1", "properties": { "backends": [ { "address": "w3.contoso.com", + "enabledState": "Enabled", "httpPort": 80, "httpsPort": 443, - "enabledState": "Enabled", - "weight": 1, - "priority": 2 + "priority": 2, + "weight": 1 }, { - "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", + "enabledState": "Enabled", "httpPort": 80, "httpsPort": 443, - "enabledState": "Enabled", - "weight": 2, - "priority": 1 - }, - { - "privateLinkAlias": "APPSERVER.d84e61f0-0870-4d24-9746-7438fa0019d1.westus2.azure.privatelinkservice", + "priority": 1, "privateEndpointStatus": "Approved", "privateLinkApprovalMessage": "Please approve the connection request for this Private Link", + "privateLinkLocation": "eastus", + "privateLinkResourceId": "/subscriptions/subid/resourcegroups/rg1/providers/Microsoft.Network/privateLinkServices/pls1", + "weight": 2 + }, + { "address": "10.0.1.5", + "enabledState": "Enabled", "httpPort": 80, "httpsPort": 443, - "enabledState": "Enabled", - "weight": 1, - "priority": 1 + "priority": 1, + "privateEndpointStatus": "Approved", + "privateLinkAlias": "APPSERVER.d84e61f0-0870-4d24-9746-7438fa0019d1.westus2.azure.privatelinkservice", + "privateLinkApprovalMessage": "Please approve the connection request for this Private Link", + "weight": 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" + }, + "loadBalancingSettings": { + "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoors/frontDoor1/loadBalancingSettings/loadBalancingSettings1" } } } ], + "backendPoolsSettings": { + "enforceCertificateNameCheck": "Enabled", + "sendRecvTimeoutSeconds": 60 + }, + "cname": "frontDoor1.azurefd.net", + "enabledState": "Enabled", "frontendEndpoints": [ { - "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoors/frontDoor1/frontendEndpoints/frontendEndpoint1", "name": "frontendEndpoint1", + "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoors/frontDoor1/frontendEndpoints/frontendEndpoint1", "properties": { "hostName": "www.contoso.com", "sessionAffinityEnabledState": "Enabled", @@ -138,47 +80,108 @@ } }, { - "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoors/frontDoor1/frontendEndpoints/default", "name": "default", + "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoors/frontDoor1/frontendEndpoints/default", "properties": { "hostName": "frontDoor1.azurefd.net" } } ], + "healthProbeSettings": [ + { + "name": "healthProbeSettings1", + "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoors/frontDoor1/healthProbeSettings/healthProbeSettings1", + "properties": { + "path": "/", + "enabledState": "Enabled", + "healthProbeMethod": "HEAD", + "intervalInSeconds": 120, + "protocol": "Http" + } + } + ], + "loadBalancingSettings": [ + { + "name": "loadBalancingSettings1", + "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoors/frontDoor1/loadBalancingSettings/loadBalancingSettings1", + "properties": { + "sampleSize": 4, + "successfulSamplesRequired": 2 + } + } + ], + "provisioningState": "Succeeded", + "resourceState": "Enabled", + "routingRules": [ + { + "name": "routingRule1", + "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoors/frontDoor1/routingRules/routingRule1", + "properties": { + "acceptedProtocols": [ + "Http" + ], + "enabledState": "Enabled", + "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" + } + ], + "patternsToMatch": [ + "/*" + ], + "routeConfiguration": { + "@odata.type": "#Microsoft.Azure.FrontDoor.Models.FrontdoorForwardingConfiguration", + "backendPool": { + "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoors/frontDoor1/backendPools/backendPool1" + }, + "customForwardingPath": "", + "forwardingProtocol": "MatchRequest" + }, + "rulesEngine": { + "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoors/frontDoor1/rulesEngines/rulesEngine1" + }, + "webApplicationFirewallPolicyLink": { + "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoorWebApplicationFirewallPolicies/policy1" + } + } + } + ], "rulesEngines": [ { - "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoors/frontDoor1/rulesEngines/rulesEngine1", "name": "rulesEngine1", + "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoors/frontDoor1/rulesEngines/rulesEngine1", "properties": { "rules": [ { "name": "Rule1", - "priority": 1, "action": { "routeConfigurationOverride": { "@odata.type": "#Microsoft.Azure.FrontDoor.Models.FrontdoorRedirectConfiguration", - "redirectType": "Moved", - "redirectProtocol": "HttpsOnly", + "customFragment": "fragment", "customHost": "www.bing.com", "customPath": "/api", - "customFragment": "fragment", - "customQueryString": "a=b" + "customQueryString": "a=b", + "redirectProtocol": "HttpsOnly", + "redirectType": "Moved" } }, "matchConditions": [ { - "rulesEngineMatchVariable": "RemoteAddr", - "rulesEngineOperator": "GeoMatch", "rulesEngineMatchValue": [ "CH" - ] + ], + "rulesEngineMatchVariable": "RemoteAddr", + "rulesEngineOperator": "GeoMatch" } ], - "matchProcessingBehavior": "Stop" + "matchProcessingBehavior": "Stop", + "priority": 1 }, { "name": "Rule2", - "priority": 2, "action": { "responseHeaderActions": [ { @@ -190,31 +193,30 @@ }, "matchConditions": [ { - "rulesEngineMatchVariable": "FilenameExtension", - "rulesEngineOperator": "Equal", "rulesEngineMatchValue": [ "jpg" ], + "rulesEngineMatchVariable": "FilenameExtension", + "rulesEngineOperator": "Equal", "transforms": [ "Lowercase" ] } - ] + ], + "priority": 2 } ] } } - ], - "backendPoolsSettings": { - "enforceCertificateNameCheck": "Enabled", - "sendRecvTimeoutSeconds": 60 - }, - "enabledState": "Enabled", - "resourceState": "Enabled", - "provisioningState": "Succeeded", - "cname": "frontDoor1.azurefd.net" + ] + }, + "tags": { + "tag1": "value1", + "tag2": "value2" } } } - } + }, + "operationId": "FrontDoors_Get", + "title": "Get Front Door" } diff --git a/specification/frontdoor/resource-manager/Microsoft.Network/stable/2025-10-01/examples/FrontdoorList.json b/specification/frontdoor/resource-manager/Microsoft.Network/stable/2025-10-01/examples/FrontdoorList.json index ab35191ca52d..5de121512aec 100644 --- a/specification/frontdoor/resource-manager/Microsoft.Network/stable/2025-10-01/examples/FrontdoorList.json +++ b/specification/frontdoor/resource-manager/Microsoft.Network/stable/2025-10-01/examples/FrontdoorList.json @@ -1,134 +1,76 @@ { "parameters": { "api-version": "2025-10-01", - "subscriptionId": "subid", - "resourceGroupName": "rg1" + "resourceGroupName": "rg1", + "subscriptionId": "subid" }, "responses": { "200": { "body": { "value": [ { - "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoors/frontDoor1", "name": "frontDoor1", "type": "Microsoft.Network/frontDoor", + "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoors/frontDoor1", "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", - "webApplicationFirewallPolicyLink": { - "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoorWebApplicationFirewallPolicies/policy1" - } - } - } - ], - "healthProbeSettings": [ - { - "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoors/frontDoor1/healthProbeSettings/healthProbeSettings1", - "name": "healthProbeSettings1", - "properties": { - "path": "/", - "protocol": "Http", - "intervalInSeconds": 120, - "enabledState": "Enabled", - "healthProbeMethod": "HEAD" - } - } - ], - "loadBalancingSettings": [ - { - "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoors/frontDoor1/loadBalancingSettings/loadBalancingSettings1", - "name": "loadBalancingSettings1", - "properties": { - "sampleSize": 4, - "successfulSamplesRequired": 2 - } - } - ], "backendPools": [ { - "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoors/frontDoor1/backendPools/backendPool1", "name": "backendPool1", + "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoors/frontDoor1/backendPools/backendPool1", "properties": { "backends": [ { "address": "w3.contoso.com", + "enabledState": "Enabled", "httpPort": 80, "httpsPort": 443, - "enabledState": "Enabled", - "weight": 1, - "priority": 2 + "priority": 2, + "weight": 1 }, { - "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", + "enabledState": "Enabled", "httpPort": 80, "httpsPort": 443, - "enabledState": "Enabled", - "weight": 2, - "priority": 1 - }, - { - "privateLinkAlias": "APPSERVER.d84e61f0-0870-4d24-9746-7438fa0019d1.westus2.azure.privatelinkservice", + "priority": 1, "privateEndpointStatus": "Approved", "privateLinkApprovalMessage": "Please approve the connection request for this Private Link", + "privateLinkLocation": "eastus", + "privateLinkResourceId": "/subscriptions/subid/resourcegroups/rg1/providers/Microsoft.Network/privateLinkServices/pls1", + "weight": 2 + }, + { "address": "10.0.1.5", + "enabledState": "Enabled", "httpPort": 80, "httpsPort": 443, - "enabledState": "Enabled", - "weight": 1, - "priority": 1 + "priority": 1, + "privateEndpointStatus": "Approved", + "privateLinkAlias": "APPSERVER.d84e61f0-0870-4d24-9746-7438fa0019d1.westus2.azure.privatelinkservice", + "privateLinkApprovalMessage": "Please approve the connection request for this Private Link", + "weight": 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" + }, + "loadBalancingSettings": { + "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoors/frontDoor1/loadBalancingSettings/loadBalancingSettings1" } } } ], + "backendPoolsSettings": { + "enforceCertificateNameCheck": "Enabled", + "sendRecvTimeoutSeconds": 60 + }, + "cname": "frontDoor1.azurefd.net", + "enabledState": "Enabled", "frontendEndpoints": [ { - "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoors/frontDoor1/frontendEndpoints/frontendEndpoint1", "name": "frontendEndpoint1", + "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoors/frontDoor1/frontendEndpoints/frontendEndpoint1", "properties": { "hostName": "www.contoso.com", "sessionAffinityEnabledState": "Enabled", @@ -139,47 +81,108 @@ } }, { - "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoors/frontDoor1/frontendEndpoints/default", "name": "default", + "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoors/frontDoor1/frontendEndpoints/default", "properties": { "hostName": "frontDoor1.azurefd.net" } } ], + "healthProbeSettings": [ + { + "name": "healthProbeSettings1", + "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoors/frontDoor1/healthProbeSettings/healthProbeSettings1", + "properties": { + "path": "/", + "enabledState": "Enabled", + "healthProbeMethod": "HEAD", + "intervalInSeconds": 120, + "protocol": "Http" + } + } + ], + "loadBalancingSettings": [ + { + "name": "loadBalancingSettings1", + "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoors/frontDoor1/loadBalancingSettings/loadBalancingSettings1", + "properties": { + "sampleSize": 4, + "successfulSamplesRequired": 2 + } + } + ], + "provisioningState": "Succeeded", + "resourceState": "Enabled", + "routingRules": [ + { + "name": "routingRule1", + "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoors/frontDoor1/routingRules/routingRule1", + "properties": { + "acceptedProtocols": [ + "Http" + ], + "enabledState": "Enabled", + "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" + } + ], + "patternsToMatch": [ + "/*" + ], + "routeConfiguration": { + "@odata.type": "#Microsoft.Azure.FrontDoor.Models.FrontdoorForwardingConfiguration", + "backendPool": { + "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoors/frontDoor1/backendPools/backendPool1" + }, + "customForwardingPath": "", + "forwardingProtocol": "MatchRequest" + }, + "rulesEngine": { + "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoors/frontDoor1/rulesEngines/rulesEngine1" + }, + "webApplicationFirewallPolicyLink": { + "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoorWebApplicationFirewallPolicies/policy1" + } + } + } + ], "rulesEngines": [ { - "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoors/frontDoor1/routingRules/rulesEngine1", "name": "rulesEngine1", + "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoors/frontDoor1/routingRules/rulesEngine1", "properties": { "rules": [ { "name": "Rule1", - "priority": 1, "action": { "routeConfigurationOverride": { "@odata.type": "#Microsoft.Azure.FrontDoor.Models.FrontdoorRedirectConfiguration", - "redirectType": "Moved", - "redirectProtocol": "HttpsOnly", + "customFragment": "fragment", "customHost": "www.bing.com", "customPath": "/api", - "customFragment": "fragment", - "customQueryString": "a=b" + "customQueryString": "a=b", + "redirectProtocol": "HttpsOnly", + "redirectType": "Moved" } }, "matchConditions": [ { - "rulesEngineMatchVariable": "RemoteAddr", - "rulesEngineOperator": "GeoMatch", "rulesEngineMatchValue": [ "CH" - ] + ], + "rulesEngineMatchVariable": "RemoteAddr", + "rulesEngineOperator": "GeoMatch" } ], - "matchProcessingBehavior": "Stop" + "matchProcessingBehavior": "Stop", + "priority": 1 }, { "name": "Rule2", - "priority": 2, "action": { "responseHeaderActions": [ { @@ -191,33 +194,32 @@ }, "matchConditions": [ { - "rulesEngineMatchVariable": "FilenameExtension", - "rulesEngineOperator": "Equal", "rulesEngineMatchValue": [ "jpg" ], + "rulesEngineMatchVariable": "FilenameExtension", + "rulesEngineOperator": "Equal", "transforms": [ "Lowercase" ] } - ] + ], + "priority": 2 } ] } } - ], - "backendPoolsSettings": { - "enforceCertificateNameCheck": "Enabled", - "sendRecvTimeoutSeconds": 60 - }, - "enabledState": "Enabled", - "resourceState": "Enabled", - "provisioningState": "Succeeded", - "cname": "frontDoor1.azurefd.net" + ] + }, + "tags": { + "tag1": "value1", + "tag2": "value2" } } ] } } - } + }, + "operationId": "FrontDoors_ListByResourceGroup", + "title": "List Front Doors in a Resource Group" } diff --git a/specification/frontdoor/resource-manager/Microsoft.Network/stable/2025-10-01/examples/FrontdoorListAll.json b/specification/frontdoor/resource-manager/Microsoft.Network/stable/2025-10-01/examples/FrontdoorListAll.json index bb2b408337d8..0788d512a2c5 100644 --- a/specification/frontdoor/resource-manager/Microsoft.Network/stable/2025-10-01/examples/FrontdoorListAll.json +++ b/specification/frontdoor/resource-manager/Microsoft.Network/stable/2025-10-01/examples/FrontdoorListAll.json @@ -8,126 +8,67 @@ "body": { "value": [ { - "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoors/frontDoor1", "name": "frontDoor1", "type": "Microsoft.Network/frontDoor", + "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoors/frontDoor1", "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", - "webApplicationFirewallPolicyLink": { - "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoorWebApplicationFirewallPolicies/policy1" - } - } - } - ], - "healthProbeSettings": [ - { - "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoors/frontDoor1/healthProbeSettings/healthProbeSettings1", - "name": "healthProbeSettings1", - "properties": { - "path": "/", - "protocol": "Http", - "intervalInSeconds": 120, - "enabledState": "Enabled", - "healthProbeMethod": "HEAD" - } - } - ], - "loadBalancingSettings": [ - { - "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoors/frontDoor1/loadBalancingSettings/loadBalancingSettings1", - "name": "loadBalancingSettings1", - "properties": { - "sampleSize": 4, - "successfulSamplesRequired": 2 - } - } - ], "backendPools": [ { - "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoors/frontDoor1/backendPools/backendPool1", "name": "backendPool1", + "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoors/frontDoor1/backendPools/backendPool1", "properties": { "backends": [ { "address": "w3.contoso.com", + "enabledState": "Enabled", "httpPort": 80, "httpsPort": 443, - "enabledState": "Enabled", - "weight": 1, - "priority": 2 + "priority": 2, + "weight": 1 }, { - "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", + "enabledState": "Enabled", "httpPort": 80, "httpsPort": 443, - "enabledState": "Enabled", - "weight": 2, - "priority": 1 - }, - { - "privateLinkAlias": "APPSERVER.d84e61f0-0870-4d24-9746-7438fa0019d1.westus2.azure.privatelinkservice", + "priority": 1, "privateEndpointStatus": "Approved", "privateLinkApprovalMessage": "Please approve the connection request for this Private Link", + "privateLinkLocation": "eastus", + "privateLinkResourceId": "/subscriptions/subid/resourcegroups/rg1/providers/Microsoft.Network/privateLinkServices/pls1", + "weight": 2 + }, + { "address": "10.0.1.5", + "enabledState": "Enabled", "httpPort": 80, "httpsPort": 443, - "enabledState": "Enabled", - "weight": 1, - "priority": 1 + "priority": 1, + "privateEndpointStatus": "Approved", + "privateLinkAlias": "APPSERVER.d84e61f0-0870-4d24-9746-7438fa0019d1.westus2.azure.privatelinkservice", + "privateLinkApprovalMessage": "Please approve the connection request for this Private Link", + "weight": 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" + }, + "loadBalancingSettings": { + "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoors/frontDoor1/loadBalancingSettings/loadBalancingSettings1" } } } ], + "backendPoolsSettings": { + "enforceCertificateNameCheck": "Enabled" + }, + "cname": "frontDoor1.azurefd.net", + "enabledState": "Enabled", "frontendEndpoints": [ { - "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoors/frontDoor1/frontendEndpoints/frontendEndpoint1", "name": "frontendEndpoint1", + "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoors/frontDoor1/frontendEndpoints/frontendEndpoint1", "properties": { "hostName": "www.contoso.com", "sessionAffinityEnabledState": "Enabled", @@ -138,47 +79,108 @@ } }, { - "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoors/frontDoor1/frontendEndpoints/default", "name": "default", + "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoors/frontDoor1/frontendEndpoints/default", "properties": { "hostName": "frontDoor1.azurefd.net" } } ], + "healthProbeSettings": [ + { + "name": "healthProbeSettings1", + "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoors/frontDoor1/healthProbeSettings/healthProbeSettings1", + "properties": { + "path": "/", + "enabledState": "Enabled", + "healthProbeMethod": "HEAD", + "intervalInSeconds": 120, + "protocol": "Http" + } + } + ], + "loadBalancingSettings": [ + { + "name": "loadBalancingSettings1", + "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoors/frontDoor1/loadBalancingSettings/loadBalancingSettings1", + "properties": { + "sampleSize": 4, + "successfulSamplesRequired": 2 + } + } + ], + "provisioningState": "Succeeded", + "resourceState": "Enabled", + "routingRules": [ + { + "name": "routingRule1", + "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoors/frontDoor1/routingRules/routingRule1", + "properties": { + "acceptedProtocols": [ + "Http" + ], + "enabledState": "Enabled", + "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" + } + ], + "patternsToMatch": [ + "/*" + ], + "routeConfiguration": { + "@odata.type": "#Microsoft.Azure.FrontDoor.Models.FrontdoorForwardingConfiguration", + "backendPool": { + "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoors/frontDoor1/backendPools/backendPool1" + }, + "customForwardingPath": "", + "forwardingProtocol": "MatchRequest" + }, + "rulesEngine": { + "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoors/frontDoor1/rulesEngines/rulesEngine1" + }, + "webApplicationFirewallPolicyLink": { + "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoorWebApplicationFirewallPolicies/policy1" + } + } + } + ], "rulesEngines": [ { - "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoors/frontDoor1/routingRules/rulesEngine1", "name": "rulesEngine1", + "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoors/frontDoor1/routingRules/rulesEngine1", "properties": { "rules": [ { "name": "Rule1", - "priority": 1, "action": { "routeConfigurationOverride": { "@odata.type": "#Microsoft.Azure.FrontDoor.Models.FrontdoorRedirectConfiguration", - "redirectType": "Moved", - "redirectProtocol": "HttpsOnly", + "customFragment": "fragment", "customHost": "www.bing.com", "customPath": "/api", - "customFragment": "fragment", - "customQueryString": "a=b" + "customQueryString": "a=b", + "redirectProtocol": "HttpsOnly", + "redirectType": "Moved" } }, "matchConditions": [ { - "rulesEngineMatchVariable": "RemoteAddr", - "rulesEngineOperator": "GeoMatch", "rulesEngineMatchValue": [ "CH" - ] + ], + "rulesEngineMatchVariable": "RemoteAddr", + "rulesEngineOperator": "GeoMatch" } ], - "matchProcessingBehavior": "Stop" + "matchProcessingBehavior": "Stop", + "priority": 1 }, { "name": "Rule2", - "priority": 2, "action": { "responseHeaderActions": [ { @@ -190,32 +192,32 @@ }, "matchConditions": [ { - "rulesEngineMatchVariable": "FilenameExtension", - "rulesEngineOperator": "Equal", "rulesEngineMatchValue": [ "jpg" ], + "rulesEngineMatchVariable": "FilenameExtension", + "rulesEngineOperator": "Equal", "transforms": [ "Lowercase" ] } - ] + ], + "priority": 2 } ] } } - ], - "backendPoolsSettings": { - "enforceCertificateNameCheck": "Enabled" - }, - "enabledState": "Enabled", - "resourceState": "Enabled", - "provisioningState": "Succeeded", - "cname": "frontDoor1.azurefd.net" + ] + }, + "tags": { + "tag1": "value1", + "tag2": "value2" } } ] } } - } + }, + "operationId": "FrontDoors_List", + "title": "List all Front Doors" } diff --git a/specification/frontdoor/resource-manager/Microsoft.Network/stable/2025-10-01/examples/FrontdoorPurgeContent.json b/specification/frontdoor/resource-manager/Microsoft.Network/stable/2025-10-01/examples/FrontdoorPurgeContent.json index 7ab6e08a9754..056546024cd4 100644 --- a/specification/frontdoor/resource-manager/Microsoft.Network/stable/2025-10-01/examples/FrontdoorPurgeContent.json +++ b/specification/frontdoor/resource-manager/Microsoft.Network/stable/2025-10-01/examples/FrontdoorPurgeContent.json @@ -1,15 +1,15 @@ { "parameters": { "api-version": "2025-10-01", - "subscriptionId": "subid", - "resourceGroupName": "rg1", - "frontDoorName": "frontDoor1", "contentFilePaths": { "contentPaths": [ "/pictures.aspx", "/pictures/*" ] - } + }, + "frontDoorName": "frontDoor1", + "resourceGroupName": "rg1", + "subscriptionId": "subid" }, "responses": { "200": {}, @@ -18,5 +18,7 @@ "azure-asyncoperation": "https://management.azure.com/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoors/frontDoor1/operationResults/62e4d893-d233-4005-988e-a428d9f77076?api-version=2025-10-01" } } - } + }, + "operationId": "Endpoints_PurgeContent", + "title": "Purge content from Front Door" } diff --git a/specification/frontdoor/resource-manager/Microsoft.Network/stable/2025-10-01/examples/FrontdoorRulesEngineCreate.json b/specification/frontdoor/resource-manager/Microsoft.Network/stable/2025-10-01/examples/FrontdoorRulesEngineCreate.json index d700d5b65c35..de10b7020467 100644 --- a/specification/frontdoor/resource-manager/Microsoft.Network/stable/2025-10-01/examples/FrontdoorRulesEngineCreate.json +++ b/specification/frontdoor/resource-manager/Microsoft.Network/stable/2025-10-01/examples/FrontdoorRulesEngineCreate.json @@ -1,41 +1,39 @@ { "parameters": { "api-version": "2025-10-01", - "subscriptionId": "subid", - "resourceGroupName": "rg1", "frontDoorName": "frontDoor1", + "resourceGroupName": "rg1", "rulesEngineName": "rulesEngine1", "rulesEngineParameters": { "properties": { "rules": [ { "name": "Rule1", - "priority": 1, "action": { "routeConfigurationOverride": { "@odata.type": "#Microsoft.Azure.FrontDoor.Models.FrontdoorRedirectConfiguration", - "redirectType": "Moved", - "redirectProtocol": "HttpsOnly", + "customFragment": "fragment", "customHost": "www.bing.com", "customPath": "/api", - "customFragment": "fragment", - "customQueryString": "a=b" + "customQueryString": "a=b", + "redirectProtocol": "HttpsOnly", + "redirectType": "Moved" } }, "matchConditions": [ { - "rulesEngineMatchVariable": "RemoteAddr", - "rulesEngineOperator": "GeoMatch", "rulesEngineMatchValue": [ "CH" - ] + ], + "rulesEngineMatchVariable": "RemoteAddr", + "rulesEngineOperator": "GeoMatch" } ], - "matchProcessingBehavior": "Stop" + "matchProcessingBehavior": "Stop", + "priority": 1 }, { "name": "Rule2", - "priority": 2, "action": { "responseHeaderActions": [ { @@ -47,90 +45,91 @@ }, "matchConditions": [ { - "rulesEngineMatchVariable": "RequestFilenameExtension", - "rulesEngineOperator": "Equal", "rulesEngineMatchValue": [ "jpg" ], + "rulesEngineMatchVariable": "RequestFilenameExtension", + "rulesEngineOperator": "Equal", "transforms": [ "Lowercase" ] } - ] + ], + "priority": 2 }, { "name": "Rule3", - "priority": 3, "action": { "routeConfigurationOverride": { "@odata.type": "#Microsoft.Azure.FrontDoor.Models.FrontdoorForwardingConfiguration", - "customForwardingPath": null, - "forwardingProtocol": "HttpsOnly", + "backendPool": { + "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoors/frontDoor1/backendPools/backendPool1" + }, "cacheConfiguration": { - "queryParameterStripDirective": "StripOnly", - "queryParameters": "a=b,p=q", + "cacheDuration": "P1DT12H20M30S", "dynamicCompression": "Disabled", - "cacheDuration": "P1DT12H20M30S" + "queryParameterStripDirective": "StripOnly", + "queryParameters": "a=b,p=q" }, - "backendPool": { - "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoors/frontDoor1/backendPools/backendPool1" - } + "customForwardingPath": null, + "forwardingProtocol": "HttpsOnly" } }, "matchConditions": [ { - "rulesEngineMatchVariable": "RequestHeader", - "rulesEngineOperator": "Equal", + "negateCondition": false, "rulesEngineMatchValue": [ "allowoverride" ], + "rulesEngineMatchVariable": "RequestHeader", + "rulesEngineOperator": "Equal", + "selector": "Rules-Engine-Route-Forward", "transforms": [ "Lowercase" - ], - "negateCondition": false, - "selector": "Rules-Engine-Route-Forward" + ] } - ] + ], + "priority": 3 } ] } - } + }, + "subscriptionId": "subid" }, "responses": { "200": { "body": { - "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoors/frontDoor1/rulesEngines/rulesEngine1", "name": "rulesEngine1", + "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoors/frontDoor1/rulesEngines/rulesEngine1", "properties": { "rules": [ { "name": "Rule1", - "priority": 1, "action": { "routeConfigurationOverride": { "@odata.type": "#Microsoft.Azure.FrontDoor.Models.FrontdoorRedirectConfiguration", - "redirectType": "Moved", - "redirectProtocol": "HttpsOnly", + "customFragment": "fragment", "customHost": "www.bing.com", "customPath": "/api", - "customFragment": "fragment", - "customQueryString": "a=b" + "customQueryString": "a=b", + "redirectProtocol": "HttpsOnly", + "redirectType": "Moved" } }, "matchConditions": [ { - "rulesEngineMatchVariable": "RemoteAddr", - "rulesEngineOperator": "GeoMatch", "rulesEngineMatchValue": [ "CH" - ] + ], + "rulesEngineMatchVariable": "RemoteAddr", + "rulesEngineOperator": "GeoMatch" } ], - "matchProcessingBehavior": "Stop" + "matchProcessingBehavior": "Stop", + "priority": 1 }, { "name": "Rule2", - "priority": 2, "action": { "responseHeaderActions": [ { @@ -142,16 +141,17 @@ }, "matchConditions": [ { - "rulesEngineMatchVariable": "RequestFilenameExtension", - "rulesEngineOperator": "Equal", "rulesEngineMatchValue": [ "jpg" ], + "rulesEngineMatchVariable": "RequestFilenameExtension", + "rulesEngineOperator": "Equal", "transforms": [ "Lowercase" ] } - ] + ], + "priority": 2 } ] } @@ -159,38 +159,37 @@ }, "201": { "body": { - "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoors/frontDoor1/rulesEngines/rulesEngine1", "name": "rulesEngine1", + "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoors/frontDoor1/rulesEngines/rulesEngine1", "properties": { "rules": [ { "name": "Rule1", - "priority": 1, "action": { "routeConfigurationOverride": { "@odata.type": "#Microsoft.Azure.FrontDoor.Models.FrontdoorRedirectConfiguration", - "redirectType": "Moved", - "redirectProtocol": "HttpsOnly", + "customFragment": "fragment", "customHost": "www.bing.com", "customPath": "/api", - "customFragment": "fragment", - "customQueryString": "a=b" + "customQueryString": "a=b", + "redirectProtocol": "HttpsOnly", + "redirectType": "Moved" } }, "matchConditions": [ { - "rulesEngineMatchVariable": "RemoteAddr", - "rulesEngineOperator": "GeoMatch", "rulesEngineMatchValue": [ "CH" - ] + ], + "rulesEngineMatchVariable": "RemoteAddr", + "rulesEngineOperator": "GeoMatch" } ], - "matchProcessingBehavior": "Stop" + "matchProcessingBehavior": "Stop", + "priority": 1 }, { "name": "Rule2", - "priority": 2, "action": { "responseHeaderActions": [ { @@ -202,16 +201,17 @@ }, "matchConditions": [ { - "rulesEngineMatchVariable": "RequestFilenameExtension", - "rulesEngineOperator": "Equal", "rulesEngineMatchValue": [ "jpg" ], + "rulesEngineMatchVariable": "RequestFilenameExtension", + "rulesEngineOperator": "Equal", "transforms": [ "Lowercase" ] } - ] + ], + "priority": 2 } ] } @@ -219,38 +219,37 @@ }, "202": { "body": { - "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoors/frontDoor1/rulesEngines/rulesEngine1", "name": "rulesEngine1", + "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoors/frontDoor1/rulesEngines/rulesEngine1", "properties": { "rules": [ { "name": "Rule1", - "priority": 1, "action": { "routeConfigurationOverride": { "@odata.type": "#Microsoft.Azure.FrontDoor.Models.FrontdoorRedirectConfiguration", - "redirectType": "Moved", - "redirectProtocol": "HttpsOnly", + "customFragment": "fragment", "customHost": "www.bing.com", "customPath": "/api", - "customFragment": "fragment", - "customQueryString": "a=b" + "customQueryString": "a=b", + "redirectProtocol": "HttpsOnly", + "redirectType": "Moved" } }, "matchConditions": [ { - "rulesEngineMatchVariable": "RemoteAddr", - "rulesEngineOperator": "GeoMatch", "rulesEngineMatchValue": [ "CH" - ] + ], + "rulesEngineMatchVariable": "RemoteAddr", + "rulesEngineOperator": "GeoMatch" } ], - "matchProcessingBehavior": "Stop" + "matchProcessingBehavior": "Stop", + "priority": 1 }, { "name": "Rule2", - "priority": 2, "action": { "responseHeaderActions": [ { @@ -262,20 +261,23 @@ }, "matchConditions": [ { - "rulesEngineMatchVariable": "FilenameExtension", - "rulesEngineOperator": "Equal", "rulesEngineMatchValue": [ "jpg" ], + "rulesEngineMatchVariable": "FilenameExtension", + "rulesEngineOperator": "Equal", "transforms": [ "Lowercase" ] } - ] + ], + "priority": 2 } ] } } } - } + }, + "operationId": "RulesEngines_CreateOrUpdate", + "title": "Create or update a specific Rules Engine Configuration" } diff --git a/specification/frontdoor/resource-manager/Microsoft.Network/stable/2025-10-01/examples/FrontdoorRulesEngineDelete.json b/specification/frontdoor/resource-manager/Microsoft.Network/stable/2025-10-01/examples/FrontdoorRulesEngineDelete.json index 196ce8d1f608..ae6ed829d0d8 100644 --- a/specification/frontdoor/resource-manager/Microsoft.Network/stable/2025-10-01/examples/FrontdoorRulesEngineDelete.json +++ b/specification/frontdoor/resource-manager/Microsoft.Network/stable/2025-10-01/examples/FrontdoorRulesEngineDelete.json @@ -1,10 +1,10 @@ { "parameters": { "api-version": "2025-10-01", - "subscriptionId": "subid", - "resourceGroupName": "rg1", "frontDoorName": "frontDoor1", - "rulesEngineName": "rulesEngine1" + "resourceGroupName": "rg1", + "rulesEngineName": "rulesEngine1", + "subscriptionId": "subid" }, "responses": { "202": { @@ -13,5 +13,7 @@ } }, "204": {} - } + }, + "operationId": "RulesEngines_Delete", + "title": "Delete Rules Engine Configuration" } diff --git a/specification/frontdoor/resource-manager/Microsoft.Network/stable/2025-10-01/examples/FrontdoorRulesEngineGet.json b/specification/frontdoor/resource-manager/Microsoft.Network/stable/2025-10-01/examples/FrontdoorRulesEngineGet.json index 9cf83439b5b6..8d8c0ebc6060 100644 --- a/specification/frontdoor/resource-manager/Microsoft.Network/stable/2025-10-01/examples/FrontdoorRulesEngineGet.json +++ b/specification/frontdoor/resource-manager/Microsoft.Network/stable/2025-10-01/examples/FrontdoorRulesEngineGet.json @@ -1,46 +1,45 @@ { "parameters": { "api-version": "2025-10-01", - "subscriptionId": "subid", - "resourceGroupName": "rg1", "frontDoorName": "frontDoor1", - "rulesEngineName": "rulesEngine1" + "resourceGroupName": "rg1", + "rulesEngineName": "rulesEngine1", + "subscriptionId": "subid" }, "responses": { "200": { "body": { - "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoors/frontDoor1/rulesEngines/rulesEngine1", "name": "rulesEngine1", + "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoors/frontDoor1/rulesEngines/rulesEngine1", "properties": { "rules": [ { "name": "Rule1", - "priority": 1, "action": { "routeConfigurationOverride": { "@odata.type": "#Microsoft.Azure.FrontDoor.Models.FrontdoorRedirectConfiguration", - "redirectType": "Moved", - "redirectProtocol": "HttpsOnly", + "customFragment": "fragment", "customHost": "www.bing.com", "customPath": "/api", - "customFragment": "fragment", - "customQueryString": "a=b" + "customQueryString": "a=b", + "redirectProtocol": "HttpsOnly", + "redirectType": "Moved" } }, "matchConditions": [ { - "rulesEngineMatchVariable": "RemoteAddr", - "rulesEngineOperator": "GeoMatch", "rulesEngineMatchValue": [ "CH" - ] + ], + "rulesEngineMatchVariable": "RemoteAddr", + "rulesEngineOperator": "GeoMatch" } ], - "matchProcessingBehavior": "Stop" + "matchProcessingBehavior": "Stop", + "priority": 1 }, { "name": "Rule2", - "priority": 2, "action": { "responseHeaderActions": [ { @@ -52,54 +51,57 @@ }, "matchConditions": [ { - "rulesEngineMatchVariable": "RequestFilenameExtension", - "rulesEngineOperator": "Equal", "rulesEngineMatchValue": [ "jpg" ], + "rulesEngineMatchVariable": "RequestFilenameExtension", + "rulesEngineOperator": "Equal", "transforms": [ "Lowercase" ] } - ] + ], + "priority": 2 }, { "name": "Rule3", - "priority": 3, "action": { "routeConfigurationOverride": { "@odata.type": "#Microsoft.Azure.FrontDoor.Models.FrontdoorForwardingConfiguration", - "customForwardingPath": null, - "forwardingProtocol": "HttpsOnly", + "backendPool": { + "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoors/frontDoor1/backendPools/backendPool1" + }, "cacheConfiguration": { - "queryParameterStripDirective": "StripOnly", - "queryParameters": "a=b,p=q", + "cacheDuration": "P1DT12H20M30S", "dynamicCompression": "Disabled", - "cacheDuration": "P1DT12H20M30S" + "queryParameterStripDirective": "StripOnly", + "queryParameters": "a=b,p=q" }, - "backendPool": { - "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoors/frontDoor1/backendPools/backendPool1" - } + "customForwardingPath": null, + "forwardingProtocol": "HttpsOnly" } }, "matchConditions": [ { - "rulesEngineMatchVariable": "RequestHeader", - "rulesEngineOperator": "Equal", + "negateCondition": false, "rulesEngineMatchValue": [ "allowoverride" ], + "rulesEngineMatchVariable": "RequestHeader", + "rulesEngineOperator": "Equal", + "selector": "Rules-Engine-Route-Forward", "transforms": [ "Lowercase" - ], - "negateCondition": false, - "selector": "Rules-Engine-Route-Forward" + ] } - ] + ], + "priority": 3 } ] } } } - } + }, + "operationId": "RulesEngines_Get", + "title": "Get Rules Engine Configuration" } diff --git a/specification/frontdoor/resource-manager/Microsoft.Network/stable/2025-10-01/examples/FrontdoorRulesEngineList.json b/specification/frontdoor/resource-manager/Microsoft.Network/stable/2025-10-01/examples/FrontdoorRulesEngineList.json index 88c72ebf57b8..19ad95804108 100644 --- a/specification/frontdoor/resource-manager/Microsoft.Network/stable/2025-10-01/examples/FrontdoorRulesEngineList.json +++ b/specification/frontdoor/resource-manager/Microsoft.Network/stable/2025-10-01/examples/FrontdoorRulesEngineList.json @@ -1,47 +1,46 @@ { "parameters": { "api-version": "2025-10-01", - "subscriptionId": "subid", + "frontDoorName": "frontDoor1", "resourceGroupName": "rg1", - "frontDoorName": "frontDoor1" + "subscriptionId": "subid" }, "responses": { "200": { "body": { "value": [ { - "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoors/frontDoor1/rulesEngines/rulesEngine1", "name": "rulesEngine1", + "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoors/frontDoor1/rulesEngines/rulesEngine1", "properties": { "rules": [ { "name": "Rule1", - "priority": 1, "action": { "routeConfigurationOverride": { "@odata.type": "#Microsoft.Azure.FrontDoor.Models.FrontdoorRedirectConfiguration", - "redirectType": "Moved", - "redirectProtocol": "HttpsOnly", + "customFragment": "fragment", "customHost": "www.bing.com", "customPath": "/api", - "customFragment": "fragment", - "customQueryString": "a=b" + "customQueryString": "a=b", + "redirectProtocol": "HttpsOnly", + "redirectType": "Moved" } }, "matchConditions": [ { - "rulesEngineMatchVariable": "RemoteAddr", - "rulesEngineOperator": "GeoMatch", "rulesEngineMatchValue": [ "CH" - ] + ], + "rulesEngineMatchVariable": "RemoteAddr", + "rulesEngineOperator": "GeoMatch" } ], - "matchProcessingBehavior": "Stop" + "matchProcessingBehavior": "Stop", + "priority": 1 }, { "name": "Rule2", - "priority": 2, "action": { "responseHeaderActions": [ { @@ -53,50 +52,51 @@ }, "matchConditions": [ { - "rulesEngineMatchVariable": "RequestFilenameExtension", - "rulesEngineOperator": "Equal", "rulesEngineMatchValue": [ "jpg" ], + "rulesEngineMatchVariable": "RequestFilenameExtension", + "rulesEngineOperator": "Equal", "transforms": [ "Lowercase" ] } - ] + ], + "priority": 2 }, { "name": "Rule3", - "priority": 3, "action": { "routeConfigurationOverride": { "@odata.type": "#Microsoft.Azure.FrontDoor.Models.FrontdoorForwardingConfiguration", - "customForwardingPath": null, - "forwardingProtocol": "HttpsOnly", + "backendPool": { + "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoors/frontDoor1/backendPools/backendPool1" + }, "cacheConfiguration": { - "queryParameterStripDirective": "StripOnly", - "queryParameters": "a=b,p=q", + "cacheDuration": "P1DT12H20M30S", "dynamicCompression": "Disabled", - "cacheDuration": "P1DT12H20M30S" + "queryParameterStripDirective": "StripOnly", + "queryParameters": "a=b,p=q" }, - "backendPool": { - "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoors/frontDoor1/backendPools/backendPool1" - } + "customForwardingPath": null, + "forwardingProtocol": "HttpsOnly" } }, "matchConditions": [ { - "rulesEngineMatchVariable": "RequestHeader", - "rulesEngineOperator": "Equal", + "negateCondition": false, "rulesEngineMatchValue": [ "allowoverride" ], + "rulesEngineMatchVariable": "RequestHeader", + "rulesEngineOperator": "Equal", + "selector": "Rules-Engine-Route-Forward", "transforms": [ "Lowercase" - ], - "negateCondition": false, - "selector": "Rules-Engine-Route-Forward" + ] } - ] + ], + "priority": 3 } ] } @@ -104,5 +104,7 @@ ] } } - } + }, + "operationId": "RulesEngines_ListByFrontDoor", + "title": "List Rules Engine Configurations in a Front Door" } diff --git a/specification/frontdoor/resource-manager/Microsoft.Network/stable/2025-10-01/examples/FrontdoorValidateCustomDomain.json b/specification/frontdoor/resource-manager/Microsoft.Network/stable/2025-10-01/examples/FrontdoorValidateCustomDomain.json index e1fe05594606..d66574433a9b 100644 --- a/specification/frontdoor/resource-manager/Microsoft.Network/stable/2025-10-01/examples/FrontdoorValidateCustomDomain.json +++ b/specification/frontdoor/resource-manager/Microsoft.Network/stable/2025-10-01/examples/FrontdoorValidateCustomDomain.json @@ -1,12 +1,12 @@ { "parameters": { "api-version": "2025-10-01", - "subscriptionId": "subid", - "resourceGroupName": "rg1", - "frontDoorName": "frontDoor1", "customDomainProperties": { "hostName": "www.someDomain.com" - } + }, + "frontDoorName": "frontDoor1", + "resourceGroupName": "rg1", + "subscriptionId": "subid" }, "responses": { "200": { @@ -16,5 +16,7 @@ "reason": null } } - } + }, + "operationId": "FrontDoors_ValidateCustomDomain", + "title": "FrontDoor_ValidateCustomDomain" } diff --git a/specification/frontdoor/resource-manager/Microsoft.Network/stable/2025-10-01/examples/NetworkExperimentCreateExperiment.json b/specification/frontdoor/resource-manager/Microsoft.Network/stable/2025-10-01/examples/NetworkExperimentCreateExperiment.json index bd87cd5cd492..67d00383b1fa 100644 --- a/specification/frontdoor/resource-manager/Microsoft.Network/stable/2025-10-01/examples/NetworkExperimentCreateExperiment.json +++ b/specification/frontdoor/resource-manager/Microsoft.Network/stable/2025-10-01/examples/NetworkExperimentCreateExperiment.json @@ -1,13 +1,11 @@ { "parameters": { "api-version": "2025-10-01", - "subscriptionId": "subid", - "resourceGroupName": "MyResourceGroup", - "profileName": "MyProfile", "experimentName": "MyExperiment", "parameters": { "properties": { "description": "this is my first experiment!", + "enabledState": "Enabled", "endpointA": { "name": "endpoint A", "endpoint": "endpointA.net" @@ -15,23 +13,22 @@ "endpointB": { "name": "endpoint B", "endpoint": "endpointB.net" - }, - "enabledState": "Enabled" + } } - } + }, + "profileName": "MyProfile", + "resourceGroupName": "MyResourceGroup", + "subscriptionId": "subid" }, "responses": { "200": { "body": { "name": "MyExperiment", "id": "/subscriptions/subid/resourceGroups/MyResourceGroup/providers/Microsoft.Network/NetworkExperimentProfiles/MyProfile/Experiments/MyExperiment", - "tags": { - "key1": "value1", - "key2": "value2" - }, "location": "WestUs", "properties": { "description": "this is my first experiment!", + "enabledState": "Enabled", "endpointA": { "name": "endpoint A", "endpoint": "endpointA.net" @@ -40,10 +37,13 @@ "name": "endpoint B", "endpoint": "endpointB.net" }, - "enabledState": "Enabled", "resourceState": "Creating", - "status": "ongoing", - "scriptFileUri": "www.myScript.com" + "scriptFileUri": "www.myScript.com", + "status": "ongoing" + }, + "tags": { + "key1": "value1", + "key2": "value2" } } }, @@ -51,13 +51,10 @@ "body": { "name": "MyExperiment", "id": "/subscriptions/subid/resourceGroups/MyResourceGroup/providers/Microsoft.Network/NetworkExperimentProfiles/MyProfile/Experiments/MyExperiment", - "tags": { - "key1": "value1", - "key2": "value2" - }, "location": "WestUs", "properties": { "description": "this is my first experiment!", + "enabledState": "Enabled", "endpointA": { "name": "endpoint A", "endpoint": "endpointA.net" @@ -66,10 +63,13 @@ "name": "endpoint B", "endpoint": "endpointB.net" }, - "enabledState": "Enabled", "resourceState": "Creating", - "status": "ongoing", - "scriptFileUri": "www.myScript.com" + "scriptFileUri": "www.myScript.com", + "status": "ongoing" + }, + "tags": { + "key1": "value1", + "key2": "value2" } } }, @@ -77,13 +77,10 @@ "body": { "name": "MyExperiment", "id": "/subscriptions/subid/resourceGroups/MyResourceGroup/providers/Microsoft.Network/NetworkExperimentProfiles/MyProfile/Experiments/MyExperiment", - "tags": { - "key1": "value1", - "key2": "value2" - }, "location": "WestUs", "properties": { "description": "this is my first experiment!", + "enabledState": "Enabled", "endpointA": { "name": "endpoint A", "endpoint": "endpointA.net" @@ -92,12 +89,17 @@ "name": "endpoint B", "endpoint": "endpointB.net" }, - "enabledState": "Enabled", "resourceState": "Creating", - "status": "ongoing", - "scriptFileUri": "www.myScript.com" + "scriptFileUri": "www.myScript.com", + "status": "ongoing" + }, + "tags": { + "key1": "value1", + "key2": "value2" } } } - } + }, + "operationId": "Experiments_CreateOrUpdate", + "title": "Creates an Experiment" } diff --git a/specification/frontdoor/resource-manager/Microsoft.Network/stable/2025-10-01/examples/NetworkExperimentCreateProfile.json b/specification/frontdoor/resource-manager/Microsoft.Network/stable/2025-10-01/examples/NetworkExperimentCreateProfile.json index 2e05f746a91f..a68d46911537 100644 --- a/specification/frontdoor/resource-manager/Microsoft.Network/stable/2025-10-01/examples/NetworkExperimentCreateProfile.json +++ b/specification/frontdoor/resource-manager/Microsoft.Network/stable/2025-10-01/examples/NetworkExperimentCreateProfile.json @@ -1,64 +1,66 @@ { "parameters": { "api-version": "2025-10-01", - "subscriptionId": "subid", - "resourceGroupName": "MyResourceGroup", - "profileName": "MyProfile", "parameters": { + "location": "WestUs", "properties": { "enabledState": "Enabled" - }, - "location": "WestUs" - } + } + }, + "profileName": "MyProfile", + "resourceGroupName": "MyResourceGroup", + "subscriptionId": "subid" }, "responses": { "200": { "body": { - "id": "/subscriptions/subid/resourceGroups/MyResourceGroup/providers/Microsoft.Network/NetworkExperimentProfiles/MyProfile", "name": "MyProfile", "type": "Microsoft.Network/NetworkExperimentprofiles", - "tags": { - "key1": "value1", - "key2": "value2" - }, + "id": "/subscriptions/subid/resourceGroups/MyResourceGroup/providers/Microsoft.Network/NetworkExperimentProfiles/MyProfile", "location": "WestUs", "properties": { "enabledState": "Enabled", "resourceState": "Creating" + }, + "tags": { + "key1": "value1", + "key2": "value2" } } }, "201": { "body": { - "id": "/subscriptions/subid/resourceGroups/MyResourceGroup/providers/Microsoft.Network/NetworkExperimentProfiles/MyProfile", "name": "MyProfile", "type": "Microsoft.Network/NetworkExperimentprofiles", - "tags": { - "key1": "value1", - "key2": "value2" - }, + "id": "/subscriptions/subid/resourceGroups/MyResourceGroup/providers/Microsoft.Network/NetworkExperimentProfiles/MyProfile", "location": "WestUs", "properties": { "enabledState": "Enabled", "resourceState": "Creating" + }, + "tags": { + "key1": "value1", + "key2": "value2" } } }, "202": { "body": { - "id": "/subscriptions/subid/resourceGroups/MyResourceGroup/providers/Microsoft.Network/NetworkExperimentProfiles/MyProfile", "name": "MyProfile", "type": "Microsoft.Network/NetworkExperimentprofiles", - "tags": { - "key1": "value1", - "key2": "value2" - }, + "id": "/subscriptions/subid/resourceGroups/MyResourceGroup/providers/Microsoft.Network/NetworkExperimentProfiles/MyProfile", "location": "WestUs", "properties": { "enabledState": "Enabled", "resourceState": "Creating" + }, + "tags": { + "key1": "value1", + "key2": "value2" } } } - } + }, + "operationId": "NetworkExperimentProfiles_CreateOrUpdate", + "title": "Creates an NetworkExperiment Profile in a Resource Group" } diff --git a/specification/frontdoor/resource-manager/Microsoft.Network/stable/2025-10-01/examples/NetworkExperimentDeleteExperiment.json b/specification/frontdoor/resource-manager/Microsoft.Network/stable/2025-10-01/examples/NetworkExperimentDeleteExperiment.json index 183e0793c212..21e9f349140f 100644 --- a/specification/frontdoor/resource-manager/Microsoft.Network/stable/2025-10-01/examples/NetworkExperimentDeleteExperiment.json +++ b/specification/frontdoor/resource-manager/Microsoft.Network/stable/2025-10-01/examples/NetworkExperimentDeleteExperiment.json @@ -1,10 +1,10 @@ { "parameters": { "api-version": "2025-10-01", - "subscriptionId": "subid", - "resourceGroupName": "MyResourceGroup", + "experimentName": "MyExperiment", "profileName": "MyProfile", - "experimentName": "MyExperiment" + "resourceGroupName": "MyResourceGroup", + "subscriptionId": "subid" }, "responses": { "200": {}, @@ -14,5 +14,7 @@ } }, "204": {} - } + }, + "operationId": "Experiments_Delete", + "title": "Deletes an Experiment" } diff --git a/specification/frontdoor/resource-manager/Microsoft.Network/stable/2025-10-01/examples/NetworkExperimentDeleteProfile.json b/specification/frontdoor/resource-manager/Microsoft.Network/stable/2025-10-01/examples/NetworkExperimentDeleteProfile.json index d160fe95cefb..a622d2b46565 100644 --- a/specification/frontdoor/resource-manager/Microsoft.Network/stable/2025-10-01/examples/NetworkExperimentDeleteProfile.json +++ b/specification/frontdoor/resource-manager/Microsoft.Network/stable/2025-10-01/examples/NetworkExperimentDeleteProfile.json @@ -1,9 +1,9 @@ { "parameters": { "api-version": "2025-10-01", - "subscriptionId": "subid", + "profileName": "MyProfile", "resourceGroupName": "MyResourceGroup", - "profileName": "MyProfile" + "subscriptionId": "subid" }, "responses": { "200": {}, @@ -13,5 +13,7 @@ } }, "204": {} - } + }, + "operationId": "NetworkExperimentProfiles_Delete", + "title": "Deletes an NetworkExperiment Profile by ProfileName" } diff --git a/specification/frontdoor/resource-manager/Microsoft.Network/stable/2025-10-01/examples/NetworkExperimentGetExperiment.json b/specification/frontdoor/resource-manager/Microsoft.Network/stable/2025-10-01/examples/NetworkExperimentGetExperiment.json index 358caf7ac397..e0418cd53463 100644 --- a/specification/frontdoor/resource-manager/Microsoft.Network/stable/2025-10-01/examples/NetworkExperimentGetExperiment.json +++ b/specification/frontdoor/resource-manager/Microsoft.Network/stable/2025-10-01/examples/NetworkExperimentGetExperiment.json @@ -1,23 +1,20 @@ { "parameters": { "api-version": "2025-10-01", - "subscriptionId": "subid", - "resourceGroupName": "MyResourceGroup", + "experimentName": "MyExperiment", "profileName": "MyProfile", - "experimentName": "MyExperiment" + "resourceGroupName": "MyResourceGroup", + "subscriptionId": "subid" }, "responses": { "200": { "body": { - "id": "/subscriptions/subid/resourceGroups/MyResourceGroup/providers/Microsoft.Network/NetworkExperimentProfiles/MyProfile/Experiments/MyExperiment", "name": "MyExperiment", - "tags": { - "key1": "value1", - "key2": "value2" - }, + "id": "/subscriptions/subid/resourceGroups/MyResourceGroup/providers/Microsoft.Network/NetworkExperimentProfiles/MyProfile/Experiments/MyExperiment", "location": "WestUs", "properties": { "description": "this is my first experiment!", + "enabledState": "Enabled", "endpointA": { "name": "endpoint A", "endpoint": "endpointA.net" @@ -26,12 +23,17 @@ "name": "endpoint B", "endpoint": "endpointB.net" }, - "enabledState": "Enabled", "resourceState": "Creating", - "status": "ongoing", - "scriptFileUri": "www.myScript.com" + "scriptFileUri": "www.myScript.com", + "status": "ongoing" + }, + "tags": { + "key1": "value1", + "key2": "value2" } } } - } + }, + "operationId": "Experiments_Get", + "title": "Gets an Experiment by ExperimentName" } diff --git a/specification/frontdoor/resource-manager/Microsoft.Network/stable/2025-10-01/examples/NetworkExperimentGetLatencyScorecard.json b/specification/frontdoor/resource-manager/Microsoft.Network/stable/2025-10-01/examples/NetworkExperimentGetLatencyScorecard.json index e89e5f95e590..5617b019d4e8 100644 --- a/specification/frontdoor/resource-manager/Microsoft.Network/stable/2025-10-01/examples/NetworkExperimentGetLatencyScorecard.json +++ b/specification/frontdoor/resource-manager/Microsoft.Network/stable/2025-10-01/examples/NetworkExperimentGetLatencyScorecard.json @@ -1,26 +1,28 @@ { "parameters": { + "aggregationInterval": "Daily", "api-version": "2025-10-01", - "subscriptionId": "subid", - "resourceGroupName": "MyResourceGroup", - "profileName": "MyProfile", "experimentName": "MyExperiment", - "aggregationInterval": "Daily" + "profileName": "MyProfile", + "resourceGroupName": "MyResourceGroup", + "subscriptionId": "subid" }, "responses": { "200": { "body": { - "id": "/subscriptions/subid/resourceGroups/MyResourceGroup/providers/Microsoft.Network/NetworkExperimentProfiles/MyProfile/Experiments/MyExperiment/LatencyScorecard", "name": "DailyLatencyScorecard", + "id": "/subscriptions/subid/resourceGroups/MyResourceGroup/providers/Microsoft.Network/NetworkExperimentProfiles/MyProfile/Experiments/MyExperiment/LatencyScorecard", "properties": { "description": "This scorecard is the latency scorecard, aggregated over a day", + "country": "USA", + "endDateTimeUTC": "2019-09-21T17:32:28Z", "endpointA": "https://endpointA.com", "endpointB": "https://endpoingB.com", - "startDateTimeUTC": "2019-07-21T17:32:28Z", - "endDateTimeUTC": "2019-09-21T17:32:28Z", - "country": "USA" + "startDateTimeUTC": "2019-07-21T17:32:28Z" } } } - } + }, + "operationId": "Reports_GetLatencyScorecards", + "title": "Gets a Latency Scorecard for a given Experiment" } diff --git a/specification/frontdoor/resource-manager/Microsoft.Network/stable/2025-10-01/examples/NetworkExperimentGetPreconfiguredEndpoints.json b/specification/frontdoor/resource-manager/Microsoft.Network/stable/2025-10-01/examples/NetworkExperimentGetPreconfiguredEndpoints.json index 1f57d24be19d..327adb55baa6 100644 --- a/specification/frontdoor/resource-manager/Microsoft.Network/stable/2025-10-01/examples/NetworkExperimentGetPreconfiguredEndpoints.json +++ b/specification/frontdoor/resource-manager/Microsoft.Network/stable/2025-10-01/examples/NetworkExperimentGetPreconfiguredEndpoints.json @@ -1,27 +1,29 @@ { "parameters": { "api-version": "2025-10-01", - "subscriptionId": "subid", + "profileName": "MyProfile", "resourceGroupName": "MyResourceGroup", - "profileName": "MyProfile" + "subscriptionId": "subid" }, "responses": { "200": { "body": { + "nextLink": "https://url", "value": [ { - "id": "/subscriptions/subid/resourceGroups/MyResourceGroup/providers/Microsoft.Network/NetworkExperimentProfiles/MyProfile/preconfiguredEndpoints/endpoint1", "name": "Endpoint 1", + "id": "/subscriptions/subid/resourceGroups/MyResourceGroup/providers/Microsoft.Network/NetworkExperimentProfiles/MyProfile/preconfiguredEndpoints/endpoint1", "properties": { - "endpoint": "endpoint1.net", "description": "this is the endpoint 1 preconfigured endpoint.", - "endpointType": "AFD", - "backend": "WESTUS" + "backend": "WESTUS", + "endpoint": "endpoint1.net", + "endpointType": "AFD" } } - ], - "nextLink": "string" + ] } } - } + }, + "operationId": "PreconfiguredEndpoints_List", + "title": "Gets a list of Preconfigured Endpoints" } diff --git a/specification/frontdoor/resource-manager/Microsoft.Network/stable/2025-10-01/examples/NetworkExperimentGetProfile.json b/specification/frontdoor/resource-manager/Microsoft.Network/stable/2025-10-01/examples/NetworkExperimentGetProfile.json index 4ea607ac2092..a858806bdc44 100644 --- a/specification/frontdoor/resource-manager/Microsoft.Network/stable/2025-10-01/examples/NetworkExperimentGetProfile.json +++ b/specification/frontdoor/resource-manager/Microsoft.Network/stable/2025-10-01/examples/NetworkExperimentGetProfile.json @@ -1,25 +1,27 @@ { "parameters": { "api-version": "2025-10-01", - "subscriptionId": "subid", + "profileName": "MyProfile", "resourceGroupName": "MyResourceGroup", - "profileName": "MyProfile" + "subscriptionId": "subid" }, "responses": { "200": { "body": { - "id": "/subscriptions/subid/resourceGroups/MyResourceGroup/providers/Microsoft.Network/NetworkExperimentProfiles/MyProfile", "name": "MyProfile", - "tags": { - "key1": "value1", - "key2": "value2" - }, + "id": "/subscriptions/subid/resourceGroups/MyResourceGroup/providers/Microsoft.Network/NetworkExperimentProfiles/MyProfile", "location": "WestUs", "properties": { "enabledState": "Enabled", "resourceState": "Creating" + }, + "tags": { + "key1": "value1", + "key2": "value2" } } } - } + }, + "operationId": "NetworkExperimentProfiles_Get", + "title": "Gets an NetworkExperiment Profile by Profile Id" } diff --git a/specification/frontdoor/resource-manager/Microsoft.Network/stable/2025-10-01/examples/NetworkExperimentGetTimeseries.json b/specification/frontdoor/resource-manager/Microsoft.Network/stable/2025-10-01/examples/NetworkExperimentGetTimeseries.json index fa3d67623aee..e07ddd02fe0b 100644 --- a/specification/frontdoor/resource-manager/Microsoft.Network/stable/2025-10-01/examples/NetworkExperimentGetTimeseries.json +++ b/specification/frontdoor/resource-manager/Microsoft.Network/stable/2025-10-01/examples/NetworkExperimentGetTimeseries.json @@ -1,13 +1,13 @@ { "parameters": { + "aggregationInterval": "Hourly", "api-version": "2025-10-01", - "subscriptionId": "subid", - "resourceGroupName": "MyResourceGroup", - "profileName": "MyProfile", + "endDateTimeUTC": "2019-09-21T17:32:28Z", "experimentName": "MyExperiment", + "profileName": "MyProfile", + "resourceGroupName": "MyResourceGroup", "startDateTimeUTC": "2019-07-21T17:32:28Z", - "endDateTimeUTC": "2019-09-21T17:32:28Z", - "aggregationInterval": "Hourly", + "subscriptionId": "subid", "timeseriesType": "MeasurementCounts" }, "responses": { @@ -15,20 +15,22 @@ "body": { "id": "/subscriptions/subid/resourceGroups/MyResourceGroup/providers/Microsoft.Network/NetworkExperimentProfiles/MyProfile/Experiments/MyExperiment/Timeseries", "properties": { - "endpoint": "https://endpointA.com", - "startDateTimeUTC": "2019-07-29", - "endDateTimeUTC": "2019-08-02", "aggregationInterval": "Hourly", - "timeseriesType": "MeasurementCounts", "country": "United States", + "endDateTimeUTC": "2019-08-02", + "endpoint": "https://endpointA.com", + "startDateTimeUTC": "2019-07-29", "timeseriesData": [ { "dateTimeUTC": "2019-07-22T17:32:28Z", "value": 79 } - ] + ], + "timeseriesType": "MeasurementCounts" } } } - } + }, + "operationId": "Reports_GetTimeseries", + "title": "Gets a Timeseries for a given Experiment" } diff --git a/specification/frontdoor/resource-manager/Microsoft.Network/stable/2025-10-01/examples/NetworkExperimentListExperiments.json b/specification/frontdoor/resource-manager/Microsoft.Network/stable/2025-10-01/examples/NetworkExperimentListExperiments.json index 05e9e5980754..c0bad28e7224 100644 --- a/specification/frontdoor/resource-manager/Microsoft.Network/stable/2025-10-01/examples/NetworkExperimentListExperiments.json +++ b/specification/frontdoor/resource-manager/Microsoft.Network/stable/2025-10-01/examples/NetworkExperimentListExperiments.json @@ -1,9 +1,9 @@ { "parameters": { "api-version": "2025-10-01", - "subscriptionId": "subid", + "profileName": "MyProfile", "resourceGroupName": "MyResourceGroup", - "profileName": "MyProfile" + "subscriptionId": "subid" }, "responses": { "200": { @@ -14,6 +14,7 @@ "id": "/subscriptions/subId/resourceGroups/MyResourceGroup/providers/Microsoft.Network/NetworkExperimentProfiles/MyProfile/Experiments", "properties": { "description": "this is my first experiment!", + "enabledState": "Enabled", "endpointA": { "name": "endpoint A", "endpoint": "endpointA.net" @@ -22,14 +23,15 @@ "name": "endpoint B", "endpoint": "endpointB.net" }, - "enabledState": "Enabled", "resourceState": "Creating", - "status": "ongoing", - "scriptFileUri": "www.myScript.com" + "scriptFileUri": "www.myScript.com", + "status": "ongoing" } } ] } } - } + }, + "operationId": "Experiments_ListByProfile", + "title": "Gets a list of Experiments" } diff --git a/specification/frontdoor/resource-manager/Microsoft.Network/stable/2025-10-01/examples/NetworkExperimentListProfiles.json b/specification/frontdoor/resource-manager/Microsoft.Network/stable/2025-10-01/examples/NetworkExperimentListProfiles.json index e50a50204137..4f477ac15665 100644 --- a/specification/frontdoor/resource-manager/Microsoft.Network/stable/2025-10-01/examples/NetworkExperimentListProfiles.json +++ b/specification/frontdoor/resource-manager/Microsoft.Network/stable/2025-10-01/examples/NetworkExperimentListProfiles.json @@ -1,29 +1,31 @@ { "parameters": { "api-version": "2025-10-01", - "subscriptionId": "subid", - "resourceGroupName": "MyResourceGroup" + "resourceGroupName": "MyResourceGroup", + "subscriptionId": "subid" }, "responses": { "200": { "body": { "value": [ { - "id": "/subscriptions/subid/resourceGroups/MyResourceGroup/providers/Microsoft.Network/NetworkExperimentProfiles/", "name": "MyProfile", "type": "Microsoft.Network/NetworkExperimentprofiles", - "tags": { - "key1": "value1", - "key2": "value2" - }, + "id": "/subscriptions/subid/resourceGroups/MyResourceGroup/providers/Microsoft.Network/NetworkExperimentProfiles/", "location": "WestUs", "properties": { "enabledState": "Enabled", "resourceState": "Creating" + }, + "tags": { + "key1": "value1", + "key2": "value2" } } ] } } - } + }, + "operationId": "NetworkExperimentProfiles_ListByResourceGroup", + "title": "List NetworkExperiment Profiles in a Resource Group" } diff --git a/specification/frontdoor/resource-manager/Microsoft.Network/stable/2025-10-01/examples/NetworkExperimentListProfiles1.json b/specification/frontdoor/resource-manager/Microsoft.Network/stable/2025-10-01/examples/NetworkExperimentListProfiles1.json new file mode 100644 index 000000000000..f477d2c96c5c --- /dev/null +++ b/specification/frontdoor/resource-manager/Microsoft.Network/stable/2025-10-01/examples/NetworkExperimentListProfiles1.json @@ -0,0 +1,31 @@ +{ + "parameters": { + "api-version": "2025-10-01", + "resourceGroupName": "MyResourceGroup", + "subscriptionId": "subid" + }, + "responses": { + "200": { + "body": { + "value": [ + { + "name": "MyProfile", + "type": "Microsoft.Network/NetworkExperimentprofiles", + "id": "/subscriptions/subid/resourceGroups/MyResourceGroup/providers/Microsoft.Network/NetworkExperimentProfiles/", + "location": "WestUs", + "properties": { + "enabledState": "Enabled", + "resourceState": "Creating" + }, + "tags": { + "key1": "value1", + "key2": "value2" + } + } + ] + } + } + }, + "operationId": "NetworkExperimentProfiles_List", + "title": "List NetworkExperiment Profiles in a Resource Group" +} diff --git a/specification/frontdoor/resource-manager/Microsoft.Network/stable/2025-10-01/examples/NetworkExperimentUpdateExperiment.json b/specification/frontdoor/resource-manager/Microsoft.Network/stable/2025-10-01/examples/NetworkExperimentUpdateExperiment.json index f84727cd5704..f2b832fb3f4f 100644 --- a/specification/frontdoor/resource-manager/Microsoft.Network/stable/2025-10-01/examples/NetworkExperimentUpdateExperiment.json +++ b/specification/frontdoor/resource-manager/Microsoft.Network/stable/2025-10-01/examples/NetworkExperimentUpdateExperiment.json @@ -1,30 +1,27 @@ { "parameters": { "api-version": "2025-10-01", - "subscriptionId": "subid", - "resourceGroupName": "MyResourceGroup", - "profileName": "MyProfile", "experimentName": "MyExperiment", "parameters": { "properties": { "description": "string", "enabledState": "Enabled" } - } + }, + "profileName": "MyProfile", + "resourceGroupName": "MyResourceGroup", + "subscriptionId": "subid" }, "responses": { "200": { "body": { - "id": "/subscriptions/subid/resourceGroups/MyResourceGroup/providers/Microsoft.Network/NetworkExperimentProfiles/MyProfile/Experiments/MyExperiment", "name": "MyExperiment", "type": "Microsoft.Network/NetworkExperimentprofiles", - "tags": { - "key1": "value1", - "key2": "value2" - }, + "id": "/subscriptions/subid/resourceGroups/MyResourceGroup/providers/Microsoft.Network/NetworkExperimentProfiles/MyProfile/Experiments/MyExperiment", "location": "WestUs", "properties": { "description": "this is my first experiment!", + "enabledState": "Enabled", "endpointA": { "name": "endpoint A", "endpoint": "endpointA.net" @@ -33,28 +30,25 @@ "name": "endpoint B", "endpoint": "endpointB.net" }, - "enabledState": "Enabled", "resourceState": "Creating", - "status": "ongoing", - "scriptFileUri": "www.myScript.com" + "scriptFileUri": "www.myScript.com", + "status": "ongoing" + }, + "tags": { + "key1": "value1", + "key2": "value2" } } }, "202": { - "headers": { - "azure-asyncoperation": "https://management.azure.com/subscriptions/subid/resourceGroups/MyResourceGroup/providers/Microsoft.Network/NetworkExperimentProfiles/MyProfile/NetworkExperiments/MyExperiment/operationResults/62e4d893-d233-4005-988e-a428d9f77076?api-version=2025-10-01" - }, "body": { - "id": "/subscriptions/subid/resourceGroups/MyResourceGroup/providers/Microsoft.Network/NetworkExperimentProfiles/MyProfile/Experiments/MyExperiment", "name": "MyExperiment", "type": "Microsoft.Network/NetworkExperimentprofiles", - "tags": { - "key1": "value1", - "key2": "value2" - }, + "id": "/subscriptions/subid/resourceGroups/MyResourceGroup/providers/Microsoft.Network/NetworkExperimentProfiles/MyProfile/Experiments/MyExperiment", "location": "WestUs", "properties": { "description": "this is my first experiment!", + "enabledState": "Enabled", "endpointA": { "name": "endpoint A", "endpoint": "endpointA.net" @@ -63,12 +57,20 @@ "name": "endpoint B", "endpoint": "endpointB.net" }, - "enabledState": "Enabled", "resourceState": "Creating", - "status": "ongoing", - "scriptFileUri": "www.myScript.com" + "scriptFileUri": "www.myScript.com", + "status": "ongoing" + }, + "tags": { + "key1": "value1", + "key2": "value2" } + }, + "headers": { + "azure-asyncoperation": "https://management.azure.com/subscriptions/subid/resourceGroups/MyResourceGroup/providers/Microsoft.Network/NetworkExperimentProfiles/MyProfile/NetworkExperiments/MyExperiment/operationResults/62e4d893-d233-4005-988e-a428d9f77076?api-version=2025-10-01" } } - } + }, + "operationId": "Experiments_Update", + "title": "Updates an Experiment" } diff --git a/specification/frontdoor/resource-manager/Microsoft.Network/stable/2025-10-01/examples/NetworkExperimentUpdateProfile.json b/specification/frontdoor/resource-manager/Microsoft.Network/stable/2025-10-01/examples/NetworkExperimentUpdateProfile.json index 99a5e9b30fc9..4b8ad4b6fb0e 100644 --- a/specification/frontdoor/resource-manager/Microsoft.Network/stable/2025-10-01/examples/NetworkExperimentUpdateProfile.json +++ b/specification/frontdoor/resource-manager/Microsoft.Network/stable/2025-10-01/examples/NetworkExperimentUpdateProfile.json @@ -1,9 +1,6 @@ { "parameters": { "api-version": "2025-10-01", - "subscriptionId": "subid", - "resourceGroupName": "MyResourceGroup", - "profileName": "MyProfile", "parameters": { "properties": { "enabledState": "Enabled" @@ -12,43 +9,48 @@ "key1": "value1", "key2": "value2" } - } + }, + "profileName": "MyProfile", + "resourceGroupName": "MyResourceGroup", + "subscriptionId": "subid" }, "responses": { "200": { "body": { - "id": "/subscriptions/subid/resourceGroups/MyResourceGroup/providers/Microsoft.Network/NetworkExperimentProfiles/MyProfile", "name": "MyProfile", "type": "Microsoft.Network/NetworkExperimentprofiles", - "tags": { - "key1": "value1", - "key2": "value2" - }, + "id": "/subscriptions/subid/resourceGroups/MyResourceGroup/providers/Microsoft.Network/NetworkExperimentProfiles/MyProfile", "location": "WestUs", "properties": { "enabledState": "Enabled", "resourceState": "Creating" + }, + "tags": { + "key1": "value1", + "key2": "value2" } } }, "202": { - "headers": { - "azure-asyncoperation": "https://management.azure.com/subscriptions/subid/resourceGroups/MyResourceGroup/providers/Microsoft.Network/NetworkExperimentProfiles/MyProfile/operationResults/62e4d893-d233-4005-988e-a428d9f77076?api-version=2025-10-01" - }, "body": { - "id": "/subscriptions/subid/resourceGroups/MyResourceGroup/providers/Microsoft.Network/NetworkExperimentProfiles/MyProfile", "name": "MyProfile", "type": "Microsoft.Network/NetworkExperimentprofiles", - "tags": { - "key1": "value1", - "key2": "value2" - }, + "id": "/subscriptions/subid/resourceGroups/MyResourceGroup/providers/Microsoft.Network/NetworkExperimentProfiles/MyProfile", "location": "WestUs", "properties": { "enabledState": "Enabled", "resourceState": "Creating" + }, + "tags": { + "key1": "value1", + "key2": "value2" } + }, + "headers": { + "azure-asyncoperation": "https://management.azure.com/subscriptions/subid/resourceGroups/MyResourceGroup/providers/Microsoft.Network/NetworkExperimentProfiles/MyProfile/operationResults/62e4d893-d233-4005-988e-a428d9f77076?api-version=2025-10-01" } } - } + }, + "operationId": "NetworkExperimentProfiles_Update", + "title": "Updates an Experiment" } diff --git a/specification/frontdoor/resource-manager/Microsoft.Network/stable/2025-10-01/examples/WafListManagedRuleSets.json b/specification/frontdoor/resource-manager/Microsoft.Network/stable/2025-10-01/examples/WafListManagedRuleSets.json index f2cea7901ba9..d7979b46168d 100644 --- a/specification/frontdoor/resource-manager/Microsoft.Network/stable/2025-10-01/examples/WafListManagedRuleSets.json +++ b/specification/frontdoor/resource-manager/Microsoft.Network/stable/2025-10-01/examples/WafListManagedRuleSets.json @@ -9,61 +9,63 @@ "value": [ { "name": "DefaultRuleSet_1.0", - "id": "/subscriptions/subid/providers/Microsoft.Network/FrontDoorWebApplicationFirewallManagedRuleSets", "type": "Microsoft.Network/frontdoorwebapplicationfirewallmanagedrulesets", + "id": "/subscriptions/subid/providers/Microsoft.Network/FrontDoorWebApplicationFirewallManagedRuleSets", "properties": { "provisioningState": "Succeeded", - "ruleSetId": "8125d145-ddc5-4d90-9bc3-24c5f2de69a2", - "ruleSetType": "DefaultRuleSet", - "ruleSetVersion": "1.0", "ruleGroups": [ { - "ruleGroupName": "SQLI", "description": "SQL injection", + "ruleGroupName": "SQLI", "rules": [ { - "ruleId": "942100", "description": "SQL Injection Attack Detected via libinjection", + "defaultAction": "Block", "defaultState": "Enabled", - "defaultAction": "Block" + "ruleId": "942100" }, { - "ruleId": "942110", "description": "SQL Injection Attack: Common Injection Testing Detected", + "defaultAction": "Block", "defaultState": "Enabled", - "defaultAction": "Block" + "ruleId": "942110" } ] }, { - "ruleGroupName": "XSS", "description": "Cross-site scripting", + "ruleGroupName": "XSS", "rules": [ { - "ruleId": "941100", "description": "XSS Attack Detected via libinjection", + "defaultAction": "Block", "defaultState": "Enabled", - "defaultAction": "Block" + "ruleId": "941100" }, { - "ruleId": "941101", "description": "XSS Attack Detected via libinjection", + "defaultAction": "Block", "defaultState": "Enabled", - "defaultAction": "Block" + "ruleId": "941101" }, { - "ruleId": "941110", "description": "XSS Filter - Category 1: Script Tag Vector", + "defaultAction": "Block", "defaultState": "Enabled", - "defaultAction": "Block" + "ruleId": "941110" } ] } - ] + ], + "ruleSetId": "8125d145-ddc5-4d90-9bc3-24c5f2de69a2", + "ruleSetType": "DefaultRuleSet", + "ruleSetVersion": "1.0" } } ] } } - } + }, + "operationId": "ManagedRuleSets_List", + "title": "List Policies ManagedRuleSets in a Resource Group" } diff --git a/specification/frontdoor/resource-manager/Microsoft.Network/stable/2025-10-01/examples/WafListPolicies.json b/specification/frontdoor/resource-manager/Microsoft.Network/stable/2025-10-01/examples/WafListPolicies.json index f3a73822ce1a..6691d6b4a094 100644 --- a/specification/frontdoor/resource-manager/Microsoft.Network/stable/2025-10-01/examples/WafListPolicies.json +++ b/specification/frontdoor/resource-manager/Microsoft.Network/stable/2025-10-01/examples/WafListPolicies.json @@ -1,8 +1,8 @@ { "parameters": { "api-version": "2025-10-01", - "subscriptionId": "subid", - "resourceGroupName": "rg1" + "resourceGroupName": "rg1", + "subscriptionId": "subid" }, "responses": { "200": { @@ -10,94 +10,81 @@ "value": [ { "name": "Policy1", - "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/FrontDoorWebApplicationFirewallPolicies/Policy1", "type": "Microsoft.Network/frontdoorwebapplicationfirewallpolicies", - "tags": { - "key1": "value1", - "key2": "value2" - }, + "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/FrontDoorWebApplicationFirewallPolicies/Policy1", "location": "WestUs", - "sku": { - "name": "Classic_AzureFrontDoor" - }, "properties": { - "resourceState": "Enabled", - "provisioningState": "Succeeded", - "policySettings": { - "enabledState": "Enabled", - "mode": "Prevention", - "redirectUrl": "http://www.bing.com", - "customBlockResponseStatusCode": 499, - "customBlockResponseBody": "PGh0bWw+CjxoZWFkZXI+PHRpdGxlPkhlbGxvPC90aXRsZT48L2hlYWRlcj4KPGJvZHk+CkhlbGxvIHdvcmxkCjwvYm9keT4KPC9odG1sPg==" - }, "customRules": { "rules": [ { "name": "Rule1", - "priority": 1, + "action": "Block", "enabledState": "Enabled", - "ruleType": "RateLimitRule", - "rateLimitDurationInMinutes": 0, - "rateLimitThreshold": 1000, "matchConditions": [ { - "matchVariable": "RemoteAddr", - "selector": null, - "operator": "IPMatch", - "negateCondition": false, "matchValue": [ "192.168.1.0/24", "10.0.0.0/24" ], + "matchVariable": "RemoteAddr", + "negateCondition": false, + "operator": "IPMatch", + "selector": null, "transforms": [] } ], - "action": "Block" + "priority": 1, + "rateLimitDurationInMinutes": 0, + "rateLimitThreshold": 1000, + "ruleType": "RateLimitRule" }, { "name": "Rule2", - "priority": 2, + "action": "Block", "enabledState": "Enabled", - "ruleType": "MatchRule", - "rateLimitDurationInMinutes": 0, - "rateLimitThreshold": 0, "matchConditions": [ { - "matchVariable": "RemoteAddr", - "selector": null, - "operator": "GeoMatch", - "negateCondition": false, "matchValue": [ "CH" - ] + ], + "matchVariable": "RemoteAddr", + "negateCondition": false, + "operator": "GeoMatch", + "selector": null }, { - "matchVariable": "RequestHeader", - "selector": "UserAgent", - "operator": "Contains", - "negateCondition": false, "matchValue": [ "windows" ], + "matchVariable": "RequestHeader", + "negateCondition": false, + "operator": "Contains", + "selector": "UserAgent", "transforms": [ "Lowercase" ] } ], - "action": "Block" + "priority": 2, + "rateLimitDurationInMinutes": 0, + "rateLimitThreshold": 0, + "ruleType": "MatchRule" } ] }, + "frontendEndpointLinks": [ + { + "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontdoors/fd1/frontendendpoints/fd1-azurefd-net" + } + ], "managedRules": { "managedRuleSets": [ { - "ruleSetType": "DefaultRuleSet", - "ruleSetVersion": "1.0", "exclusions": [ { "matchVariable": "RequestHeaderNames", - "selectorMatchOperator": "Equals", - "selector": "User-Agent" + "selector": "User-Agent", + "selectorMatchOperator": "Equals" } ], "ruleGroupOverrides": [ @@ -105,30 +92,45 @@ "ruleGroupName": "SQLI", "rules": [ { - "ruleId": "942100", + "action": "Redirect", "enabledState": "Enabled", - "action": "Redirect" + "ruleId": "942100" }, { - "ruleId": "942110", - "enabledState": "Disabled" + "enabledState": "Disabled", + "ruleId": "942110" } ] } - ] + ], + "ruleSetType": "DefaultRuleSet", + "ruleSetVersion": "1.0" } ] }, - "frontendEndpointLinks": [ - { - "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontdoors/fd1/frontendendpoints/fd1-azurefd-net" - } - ], + "policySettings": { + "customBlockResponseBody": "PGh0bWw+CjxoZWFkZXI+PHRpdGxlPkhlbGxvPC90aXRsZT48L2hlYWRlcj4KPGJvZHk+CkhlbGxvIHdvcmxkCjwvYm9keT4KPC9odG1sPg==", + "customBlockResponseStatusCode": 499, + "enabledState": "Enabled", + "mode": "Prevention", + "redirectUrl": "http://www.bing.com" + }, + "provisioningState": "Succeeded", + "resourceState": "Enabled", "securityPolicyLinks": [] + }, + "sku": { + "name": "Classic_AzureFrontDoor" + }, + "tags": { + "key1": "value1", + "key2": "value2" } } ] } } - } + }, + "operationId": "Policies_List", + "title": "Get all Policies in a Resource Group" } diff --git a/specification/frontdoor/resource-manager/Microsoft.Network/stable/2025-10-01/examples/WafListPoliciesUnderSubscription.json b/specification/frontdoor/resource-manager/Microsoft.Network/stable/2025-10-01/examples/WafListPoliciesUnderSubscription.json index 7a7e16bfc816..75771f0f36cb 100644 --- a/specification/frontdoor/resource-manager/Microsoft.Network/stable/2025-10-01/examples/WafListPoliciesUnderSubscription.json +++ b/specification/frontdoor/resource-manager/Microsoft.Network/stable/2025-10-01/examples/WafListPoliciesUnderSubscription.json @@ -9,94 +9,81 @@ "value": [ { "name": "Policy1", - "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/FrontDoorWebApplicationFirewallPolicies/Policy1", "type": "Microsoft.Network/frontdoorwebapplicationfirewallpolicies", - "tags": { - "key1": "value1", - "key2": "value2" - }, + "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/FrontDoorWebApplicationFirewallPolicies/Policy1", "location": "WestUs", - "sku": { - "name": "Classic_AzureFrontDoor" - }, "properties": { - "resourceState": "Enabled", - "provisioningState": "Succeeded", - "policySettings": { - "enabledState": "Enabled", - "mode": "Prevention", - "redirectUrl": "http://www.bing.com", - "customBlockResponseStatusCode": 499, - "customBlockResponseBody": "PGh0bWw+CjxoZWFkZXI+PHRpdGxlPkhlbGxvPC90aXRsZT48L2hlYWRlcj4KPGJvZHk+CkhlbGxvIHdvcmxkCjwvYm9keT4KPC9odG1sPg==" - }, "customRules": { "rules": [ { "name": "Rule1", - "priority": 1, + "action": "Block", "enabledState": "Enabled", - "ruleType": "RateLimitRule", - "rateLimitDurationInMinutes": 0, - "rateLimitThreshold": 1000, "matchConditions": [ { - "matchVariable": "RemoteAddr", - "selector": null, - "operator": "IPMatch", - "negateCondition": false, "matchValue": [ "192.168.1.0/24", "10.0.0.0/24" ], + "matchVariable": "RemoteAddr", + "negateCondition": false, + "operator": "IPMatch", + "selector": null, "transforms": [] } ], - "action": "Block" + "priority": 1, + "rateLimitDurationInMinutes": 0, + "rateLimitThreshold": 1000, + "ruleType": "RateLimitRule" }, { "name": "Rule2", - "priority": 2, + "action": "Block", "enabledState": "Enabled", - "ruleType": "MatchRule", - "rateLimitDurationInMinutes": 0, - "rateLimitThreshold": 0, "matchConditions": [ { - "matchVariable": "RemoteAddr", - "selector": null, - "operator": "GeoMatch", - "negateCondition": false, "matchValue": [ "CH" - ] + ], + "matchVariable": "RemoteAddr", + "negateCondition": false, + "operator": "GeoMatch", + "selector": null }, { - "matchVariable": "RequestHeader", - "selector": "UserAgent", - "operator": "Contains", - "negateCondition": false, "matchValue": [ "windows" ], + "matchVariable": "RequestHeader", + "negateCondition": false, + "operator": "Contains", + "selector": "UserAgent", "transforms": [ "Lowercase" ] } ], - "action": "Block" + "priority": 2, + "rateLimitDurationInMinutes": 0, + "rateLimitThreshold": 0, + "ruleType": "MatchRule" } ] }, + "frontendEndpointLinks": [ + { + "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontdoors/fd1/frontendendpoints/fd1-azurefd-net" + } + ], "managedRules": { "managedRuleSets": [ { - "ruleSetType": "DefaultRuleSet", - "ruleSetVersion": "1.0", "exclusions": [ { "matchVariable": "RequestHeaderNames", - "selectorMatchOperator": "Equals", - "selector": "User-Agent" + "selector": "User-Agent", + "selectorMatchOperator": "Equals" } ], "ruleGroupOverrides": [ @@ -104,30 +91,45 @@ "ruleGroupName": "SQLI", "rules": [ { - "ruleId": "942100", + "action": "Redirect", "enabledState": "Enabled", - "action": "Redirect" + "ruleId": "942100" }, { - "ruleId": "942110", - "enabledState": "Disabled" + "enabledState": "Disabled", + "ruleId": "942110" } ] } - ] + ], + "ruleSetType": "DefaultRuleSet", + "ruleSetVersion": "1.0" } ] }, - "frontendEndpointLinks": [ - { - "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontdoors/fd1/frontendendpoints/fd1-azurefd-net" - } - ], + "policySettings": { + "customBlockResponseBody": "PGh0bWw+CjxoZWFkZXI+PHRpdGxlPkhlbGxvPC90aXRsZT48L2hlYWRlcj4KPGJvZHk+CkhlbGxvIHdvcmxkCjwvYm9keT4KPC9odG1sPg==", + "customBlockResponseStatusCode": 499, + "enabledState": "Enabled", + "mode": "Prevention", + "redirectUrl": "http://www.bing.com" + }, + "provisioningState": "Succeeded", + "resourceState": "Enabled", "securityPolicyLinks": [] + }, + "sku": { + "name": "Classic_AzureFrontDoor" + }, + "tags": { + "key1": "value1", + "key2": "value2" } } ] } } - } + }, + "operationId": "Policies_ListBySubscription", + "title": "Get all Policies in a Resource Group" } diff --git a/specification/frontdoor/resource-manager/Microsoft.Network/stable/2025-10-01/examples/WafPolicyCreateOrUpdate.json b/specification/frontdoor/resource-manager/Microsoft.Network/stable/2025-10-01/examples/WafPolicyCreateOrUpdate.json index 09c24124fdef..f5c921d68319 100644 --- a/specification/frontdoor/resource-manager/Microsoft.Network/stable/2025-10-01/examples/WafPolicyCreateOrUpdate.json +++ b/specification/frontdoor/resource-manager/Microsoft.Network/stable/2025-10-01/examples/WafPolicyCreateOrUpdate.json @@ -1,654 +1,656 @@ { "parameters": { "api-version": "2025-10-01", - "subscriptionId": "subid", - "resourceGroupName": "rg1", - "policyName": "Policy1", "parameters": { "location": "WestUs", "properties": { - "policySettings": { - "enabledState": "Enabled", - "mode": "Prevention", - "redirectUrl": "http://www.bing.com", - "customBlockResponseStatusCode": 429, - "customBlockResponseBody": "PGh0bWw+CjxoZWFkZXI+PHRpdGxlPkhlbGxvPC90aXRsZT48L2hlYWRlcj4KPGJvZHk+CkhlbGxvIHdvcmxkCjwvYm9keT4KPC9odG1sPg==", - "requestBodyCheck": "Disabled", - "javascriptChallengeExpirationInMinutes": 30, - "captchaExpirationInMinutes": 30, - "logScrubbing": { - "state": "Enabled", - "scrubbingRules": [ - { - "matchVariable": "RequestIPAddress", - "selectorMatchOperator": "EqualsAny", - "selector": null, - "state": "Enabled" - } - ] - } - }, "customRules": { "rules": [ { "name": "Rule1", - "priority": 1, - "ruleType": "RateLimitRule", - "rateLimitThreshold": 1000, + "action": "Block", "matchConditions": [ { - "matchVariable": "RemoteAddr", - "operator": "IPMatch", "matchValue": [ "192.168.1.0/24", "10.0.0.0/24" - ] + ], + "matchVariable": "RemoteAddr", + "operator": "IPMatch" } ], - "action": "Block" + "priority": 1, + "rateLimitThreshold": 1000, + "ruleType": "RateLimitRule" }, { "name": "Rule2", - "priority": 2, - "ruleType": "MatchRule", + "action": "Block", "matchConditions": [ { - "matchVariable": "RemoteAddr", - "operator": "GeoMatch", "matchValue": [ "CH" - ] + ], + "matchVariable": "RemoteAddr", + "operator": "GeoMatch" }, { - "matchVariable": "RequestHeader", - "operator": "Contains", - "selector": "UserAgent", "matchValue": [ "windows" ], + "matchVariable": "RequestHeader", + "operator": "Contains", + "selector": "UserAgent", "transforms": [ "Lowercase" ] } ], - "action": "Block" + "priority": 2, + "ruleType": "MatchRule" }, { "name": "Rule3", - "priority": 1, - "ruleType": "RateLimitRule", - "rateLimitThreshold": 1000, + "action": "CAPTCHA", "matchConditions": [ { - "matchVariable": "RemoteAddr", - "operator": "ServiceTagMatch", "matchValue": [ "AzureBackup", "AzureBotService" - ] + ], + "matchVariable": "RemoteAddr", + "operator": "ServiceTagMatch" } ], - "action": "CAPTCHA" + "priority": 1, + "rateLimitThreshold": 1000, + "ruleType": "RateLimitRule" } ] }, "managedRules": { "managedRuleSets": [ { - "ruleSetType": "DefaultRuleSet", - "ruleSetVersion": "1.0", - "ruleSetAction": "Block", "exclusions": [ { "matchVariable": "RequestHeaderNames", - "selectorMatchOperator": "Equals", - "selector": "User-Agent" + "selector": "User-Agent", + "selectorMatchOperator": "Equals" } ], "ruleGroupOverrides": [ { - "ruleGroupName": "SQLI", "exclusions": [ { "matchVariable": "RequestCookieNames", - "selectorMatchOperator": "StartsWith", - "selector": "token" + "selector": "token", + "selectorMatchOperator": "StartsWith" } ], + "ruleGroupName": "SQLI", "rules": [ { - "ruleId": "942100", - "enabledState": "Enabled", "action": "Redirect", + "enabledState": "Enabled", "exclusions": [ { "matchVariable": "QueryStringArgNames", - "selectorMatchOperator": "Equals", - "selector": "query" + "selector": "query", + "selectorMatchOperator": "Equals" } - ] + ], + "ruleId": "942100" }, { - "ruleId": "942110", - "enabledState": "Disabled" + "enabledState": "Disabled", + "ruleId": "942110" } ] } - ] + ], + "ruleSetAction": "Block", + "ruleSetType": "DefaultRuleSet", + "ruleSetVersion": "1.0" }, { - "ruleSetType": "Microsoft_HTTPDDoSRuleSet", - "ruleSetVersion": "1.0", "ruleGroupOverrides": [ { "ruleGroupName": "ExcessiveRequests", "rules": [ { - "ruleId": "500100", - "enabledState": "Enabled", "action": "Block", + "enabledState": "Enabled", + "ruleId": "500100", "sensitivity": "High" } ] } - ] + ], + "ruleSetType": "Microsoft_HTTPDDoSRuleSet", + "ruleSetVersion": "1.0" } ] + }, + "policySettings": { + "captchaExpirationInMinutes": 30, + "customBlockResponseBody": "PGh0bWw+CjxoZWFkZXI+PHRpdGxlPkhlbGxvPC90aXRsZT48L2hlYWRlcj4KPGJvZHk+CkhlbGxvIHdvcmxkCjwvYm9keT4KPC9odG1sPg==", + "customBlockResponseStatusCode": 429, + "enabledState": "Enabled", + "javascriptChallengeExpirationInMinutes": 30, + "logScrubbing": { + "scrubbingRules": [ + { + "matchVariable": "RequestIPAddress", + "selector": null, + "selectorMatchOperator": "EqualsAny", + "state": "Enabled" + } + ], + "state": "Enabled" + }, + "mode": "Prevention", + "redirectUrl": "http://www.bing.com", + "requestBodyCheck": "Disabled" } }, "sku": { "name": "Premium_AzureFrontDoor" } - } + }, + "policyName": "Policy1", + "resourceGroupName": "rg1", + "subscriptionId": "subid" }, "responses": { "200": { "body": { "name": "Policy1", - "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/FrontDoorWebApplicationFirewallPolicies/Policy1", "type": "Microsoft.Network/frontdoorwebapplicationfirewallpolicies", - "tags": { - "key1": "value1", - "key2": "value2" - }, + "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/FrontDoorWebApplicationFirewallPolicies/Policy1", "location": "WestUs", "properties": { - "resourceState": "Enabled", - "provisioningState": "Succeeded", - "policySettings": { - "enabledState": "Enabled", - "mode": "Prevention", - "redirectUrl": "http://www.bing.com", - "customBlockResponseStatusCode": 429, - "customBlockResponseBody": "PGh0bWw+CjxoZWFkZXI+PHRpdGxlPkhlbGxvPC90aXRsZT48L2hlYWRlcj4KPGJvZHk+CkhlbGxvIHdvcmxkCjwvYm9keT4KPC9odG1sPg==", - "requestBodyCheck": "Disabled", - "javascriptChallengeExpirationInMinutes": 30, - "logScrubbing": { - "state": "Enabled", - "scrubbingRules": [ - { - "matchVariable": "RequestIPAddress", - "selectorMatchOperator": "EqualsAny", - "selector": null, - "state": "Enabled" - } - ] - } - }, "customRules": { "rules": [ { "name": "Rule1", - "priority": 1, + "action": "Block", "enabledState": "Enabled", - "ruleType": "RateLimitRule", - "rateLimitDurationInMinutes": 0, - "rateLimitThreshold": 1000, "matchConditions": [ { - "matchVariable": "RemoteAddr", - "selector": null, - "operator": "IPMatch", - "negateCondition": false, "matchValue": [ "192.168.1.0/24", "10.0.0.0/24" ], + "matchVariable": "RemoteAddr", + "negateCondition": false, + "operator": "IPMatch", + "selector": null, "transforms": [] } ], - "action": "Block" + "priority": 1, + "rateLimitDurationInMinutes": 0, + "rateLimitThreshold": 1000, + "ruleType": "RateLimitRule" }, { "name": "Rule2", - "priority": 2, + "action": "Block", "enabledState": "Enabled", - "ruleType": "MatchRule", - "rateLimitDurationInMinutes": 0, - "rateLimitThreshold": 0, "matchConditions": [ { - "matchVariable": "RemoteAddr", - "selector": null, - "operator": "GeoMatch", - "negateCondition": false, "matchValue": [ "CH" - ] + ], + "matchVariable": "RemoteAddr", + "negateCondition": false, + "operator": "GeoMatch", + "selector": null }, { - "matchVariable": "RequestHeader", - "selector": "UserAgent", - "operator": "Contains", - "negateCondition": false, "matchValue": [ "windows" ], + "matchVariable": "RequestHeader", + "negateCondition": false, + "operator": "Contains", + "selector": "UserAgent", "transforms": [ "Lowercase" ] } ], - "action": "Block" + "priority": 2, + "rateLimitDurationInMinutes": 0, + "rateLimitThreshold": 0, + "ruleType": "MatchRule" }, { "name": "rule3", + "action": "CAPTCHA", "enabledState": null, - "priority": 1, - "ruleType": "RateLimitRule", - "rateLimitDurationInMinutes": null, - "rateLimitThreshold": 1000, "matchConditions": [ { - "matchVariable": "RemoteAddr", - "selector": null, - "operator": "ServiceTagMatch", - "negateCondition": false, "matchValue": [ "AzureBackup", "AzureBotService" ], + "matchVariable": "RemoteAddr", + "negateCondition": false, + "operator": "ServiceTagMatch", + "selector": null, "transforms": [] } ], - "action": "CAPTCHA" + "priority": 1, + "rateLimitDurationInMinutes": null, + "rateLimitThreshold": 1000, + "ruleType": "RateLimitRule" } ] }, + "frontendEndpointLinks": [], "managedRules": { "managedRuleSets": [ { - "ruleSetType": "DefaultRuleSet", - "ruleSetVersion": "1.0", - "ruleSetAction": "Block", "exclusions": [ { "matchVariable": "RequestHeaderNames", - "selectorMatchOperator": "Equals", - "selector": "User-Agent" + "selector": "User-Agent", + "selectorMatchOperator": "Equals" } ], "ruleGroupOverrides": [ { - "ruleGroupName": "SQLI", "exclusions": [ { "matchVariable": "RequestCookieNames", - "selectorMatchOperator": "StartsWith", - "selector": "token" + "selector": "token", + "selectorMatchOperator": "StartsWith" } ], + "ruleGroupName": "SQLI", "rules": [ { - "ruleId": "942100", - "enabledState": "Enabled", "action": "Redirect", + "enabledState": "Enabled", "exclusions": [ { "matchVariable": "QueryStringArgNames", - "selectorMatchOperator": "Equals", - "selector": "query" + "selector": "query", + "selectorMatchOperator": "Equals" } - ] + ], + "ruleId": "942100" }, { - "ruleId": "942110", - "enabledState": "Disabled" + "enabledState": "Disabled", + "ruleId": "942110" } ] } - ] + ], + "ruleSetAction": "Block", + "ruleSetType": "DefaultRuleSet", + "ruleSetVersion": "1.0" }, { - "ruleSetType": "Microsoft_HTTPDDoSRuleSet", - "ruleSetVersion": "1.0", "ruleGroupOverrides": [ { "ruleGroupName": "ExcessiveRequests", "rules": [ { - "ruleId": "500100", - "enabledState": "Enabled", "action": "Block", + "enabledState": "Enabled", + "ruleId": "500100", "sensitivity": "High" } ] } - ] + ], + "ruleSetType": "Microsoft_HTTPDDoSRuleSet", + "ruleSetVersion": "1.0" } ] }, - "frontendEndpointLinks": [], + "policySettings": { + "customBlockResponseBody": "PGh0bWw+CjxoZWFkZXI+PHRpdGxlPkhlbGxvPC90aXRsZT48L2hlYWRlcj4KPGJvZHk+CkhlbGxvIHdvcmxkCjwvYm9keT4KPC9odG1sPg==", + "customBlockResponseStatusCode": 429, + "enabledState": "Enabled", + "javascriptChallengeExpirationInMinutes": 30, + "logScrubbing": { + "scrubbingRules": [ + { + "matchVariable": "RequestIPAddress", + "selector": null, + "selectorMatchOperator": "EqualsAny", + "state": "Enabled" + } + ], + "state": "Enabled" + }, + "mode": "Prevention", + "redirectUrl": "http://www.bing.com", + "requestBodyCheck": "Disabled" + }, + "provisioningState": "Succeeded", + "resourceState": "Enabled", "securityPolicyLinks": [] }, "sku": { "name": "Premium_AzureFrontDoor" + }, + "tags": { + "key1": "value1", + "key2": "value2" } } }, "201": { "body": { "name": "Policy1", - "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/FrontDoorWebApplicationFirewallPolicies/Policy1", "type": "Microsoft.Network/frontdoorwebapplicationfirewallpolicies", - "tags": { - "key1": "value1", - "key2": "value2" - }, + "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/FrontDoorWebApplicationFirewallPolicies/Policy1", "location": "WestUs", "properties": { - "resourceState": "Enabled", - "provisioningState": "Succeeded", - "policySettings": { - "enabledState": "Enabled", - "mode": "Prevention", - "redirectUrl": "http://www.bing.com", - "customBlockResponseStatusCode": 429, - "customBlockResponseBody": "PGh0bWw+CjxoZWFkZXI+PHRpdGxlPkhlbGxvPC90aXRsZT48L2hlYWRlcj4KPGJvZHk+CkhlbGxvIHdvcmxkCjwvYm9keT4KPC9odG1sPg==", - "requestBodyCheck": "Disabled", - "logScrubbing": { - "state": "Enabled", - "scrubbingRules": [ - { - "matchVariable": "RequestIPAddress", - "selectorMatchOperator": "EqualsAny", - "selector": null, - "state": "Enabled" - } - ] - } - }, "customRules": { "rules": [ { "name": "Rule1", - "priority": 1, + "action": "Block", "enabledState": "Enabled", - "ruleType": "RateLimitRule", - "rateLimitDurationInMinutes": 0, - "rateLimitThreshold": 1000, "matchConditions": [ { - "matchVariable": "RemoteAddr", - "selector": null, - "operator": "IPMatch", - "negateCondition": false, "matchValue": [ "192.168.1.0/24", "10.0.0.0/24" ], + "matchVariable": "RemoteAddr", + "negateCondition": false, + "operator": "IPMatch", + "selector": null, "transforms": [] } ], - "action": "Block" + "priority": 1, + "rateLimitDurationInMinutes": 0, + "rateLimitThreshold": 1000, + "ruleType": "RateLimitRule" }, { "name": "Rule2", - "priority": 2, + "action": "Block", "enabledState": "Enabled", - "ruleType": "MatchRule", - "rateLimitDurationInMinutes": 0, - "rateLimitThreshold": 0, "matchConditions": [ { - "matchVariable": "RemoteAddr", - "selector": null, - "operator": "GeoMatch", - "negateCondition": false, "matchValue": [ "CH" - ] + ], + "matchVariable": "RemoteAddr", + "negateCondition": false, + "operator": "GeoMatch", + "selector": null }, { - "matchVariable": "RequestHeader", - "selector": "UserAgent", - "operator": "Contains", - "negateCondition": false, "matchValue": [ "windows" ], + "matchVariable": "RequestHeader", + "negateCondition": false, + "operator": "Contains", + "selector": "UserAgent", "transforms": [ "Lowercase" ] } ], - "action": "Block" + "priority": 2, + "rateLimitDurationInMinutes": 0, + "rateLimitThreshold": 0, + "ruleType": "MatchRule" } ] }, + "frontendEndpointLinks": [], "managedRules": { "managedRuleSets": [ { - "ruleSetType": "DefaultRuleSet", - "ruleSetVersion": "1.0", "exclusions": [ { "matchVariable": "RequestHeaderNames", - "selectorMatchOperator": "Equals", - "selector": "User-Agent" + "selector": "User-Agent", + "selectorMatchOperator": "Equals" } ], "ruleGroupOverrides": [ { - "ruleGroupName": "SQLI", "exclusions": [ { "matchVariable": "RequestCookieNames", - "selectorMatchOperator": "StartsWith", - "selector": "token" + "selector": "token", + "selectorMatchOperator": "StartsWith" } ], + "ruleGroupName": "SQLI", "rules": [ { - "ruleId": "942100", - "enabledState": "Enabled", "action": "Redirect", + "enabledState": "Enabled", "exclusions": [ { "matchVariable": "QueryStringArgNames", - "selectorMatchOperator": "Equals", - "selector": "query" + "selector": "query", + "selectorMatchOperator": "Equals" } - ] + ], + "ruleId": "942100" }, { - "ruleId": "942110", - "enabledState": "Disabled" + "enabledState": "Disabled", + "ruleId": "942110" } ] } - ] + ], + "ruleSetType": "DefaultRuleSet", + "ruleSetVersion": "1.0" } ] }, - "frontendEndpointLinks": [], + "policySettings": { + "customBlockResponseBody": "PGh0bWw+CjxoZWFkZXI+PHRpdGxlPkhlbGxvPC90aXRsZT48L2hlYWRlcj4KPGJvZHk+CkhlbGxvIHdvcmxkCjwvYm9keT4KPC9odG1sPg==", + "customBlockResponseStatusCode": 429, + "enabledState": "Enabled", + "logScrubbing": { + "scrubbingRules": [ + { + "matchVariable": "RequestIPAddress", + "selector": null, + "selectorMatchOperator": "EqualsAny", + "state": "Enabled" + } + ], + "state": "Enabled" + }, + "mode": "Prevention", + "redirectUrl": "http://www.bing.com", + "requestBodyCheck": "Disabled" + }, + "provisioningState": "Succeeded", + "resourceState": "Enabled", "securityPolicyLinks": [] }, "sku": { "name": "Classic_AzureFrontDoor" + }, + "tags": { + "key1": "value1", + "key2": "value2" } } }, "202": { "body": { "name": "Policy1", - "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/FrontDoorWebApplicationFirewallPolicies/Policy1", "type": "Microsoft.Network/frontdoorwebapplicationfirewallpolicies", - "tags": { - "key1": "value1", - "key2": "value2" - }, + "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/FrontDoorWebApplicationFirewallPolicies/Policy1", "location": "WestUs", "properties": { - "resourceState": "Enabled", - "provisioningState": "Succeeded", - "policySettings": { - "enabledState": "Enabled", - "mode": "Prevention", - "redirectUrl": "http://www.bing.com", - "customBlockResponseStatusCode": 429, - "customBlockResponseBody": "PGh0bWw+CjxoZWFkZXI+PHRpdGxlPkhlbGxvPC90aXRsZT48L2hlYWRlcj4KPGJvZHk+CkhlbGxvIHdvcmxkCjwvYm9keT4KPC9odG1sPg==", - "requestBodyCheck": "Disabled", - "logScrubbing": { - "state": "Enabled", - "scrubbingRules": [ - { - "matchVariable": "RequestIPAddress", - "selectorMatchOperator": "EqualsAny", - "selector": null, - "state": "Enabled" - } - ] - } - }, "customRules": { "rules": [ { "name": "Rule1", - "priority": 1, + "action": "Block", "enabledState": "Enabled", - "ruleType": "RateLimitRule", - "rateLimitDurationInMinutes": 0, - "rateLimitThreshold": 1000, "matchConditions": [ { - "matchVariable": "RemoteAddr", - "selector": null, - "operator": "IPMatch", - "negateCondition": false, "matchValue": [ "192.168.1.0/24", "10.0.0.0/24" ], + "matchVariable": "RemoteAddr", + "negateCondition": false, + "operator": "IPMatch", + "selector": null, "transforms": [] } ], - "action": "Block" + "priority": 1, + "rateLimitDurationInMinutes": 0, + "rateLimitThreshold": 1000, + "ruleType": "RateLimitRule" }, { "name": "Rule2", - "priority": 2, + "action": "Block", "enabledState": "Enabled", - "ruleType": "MatchRule", - "rateLimitDurationInMinutes": 0, - "rateLimitThreshold": 0, "matchConditions": [ { - "matchVariable": "RemoteAddr", - "selector": null, - "operator": "GeoMatch", - "negateCondition": false, "matchValue": [ "CH" - ] + ], + "matchVariable": "RemoteAddr", + "negateCondition": false, + "operator": "GeoMatch", + "selector": null }, { - "matchVariable": "RequestHeader", - "selector": "UserAgent", - "operator": "Contains", - "negateCondition": false, "matchValue": [ "windows" ], + "matchVariable": "RequestHeader", + "negateCondition": false, + "operator": "Contains", + "selector": "UserAgent", "transforms": [ "Lowercase" ] } ], - "action": "Block" + "priority": 2, + "rateLimitDurationInMinutes": 0, + "rateLimitThreshold": 0, + "ruleType": "MatchRule" } ] }, + "frontendEndpointLinks": [], "managedRules": { "managedRuleSets": [ { - "ruleSetType": "DefaultRuleSet", - "ruleSetVersion": "1.0", - "ruleSetAction": "Block", "exclusions": [ { "matchVariable": "RequestHeaderNames", - "selectorMatchOperator": "Equals", - "selector": "User-Agent" + "selector": "User-Agent", + "selectorMatchOperator": "Equals" } ], "ruleGroupOverrides": [ { - "ruleGroupName": "SQLI", "exclusions": [ { "matchVariable": "RequestCookieNames", - "selectorMatchOperator": "StartsWith", - "selector": "token" + "selector": "token", + "selectorMatchOperator": "StartsWith" } ], + "ruleGroupName": "SQLI", "rules": [ { - "ruleId": "942100", - "enabledState": "Enabled", "action": "Redirect", + "enabledState": "Enabled", "exclusions": [ { "matchVariable": "QueryStringArgNames", - "selectorMatchOperator": "Equals", - "selector": "query" + "selector": "query", + "selectorMatchOperator": "Equals" } - ] + ], + "ruleId": "942100" }, { - "ruleId": "942110", - "enabledState": "Disabled" + "enabledState": "Disabled", + "ruleId": "942110" } ] } - ] + ], + "ruleSetAction": "Block", + "ruleSetType": "DefaultRuleSet", + "ruleSetVersion": "1.0" }, { - "ruleSetType": "Microsoft_HTTPDDoSRuleSet", - "ruleSetVersion": "1.0", "ruleGroupOverrides": [ { "ruleGroupName": "ExcessiveRequests", "rules": [ { - "ruleId": "500100", - "enabledState": "Enabled", "action": "Block", + "enabledState": "Enabled", + "ruleId": "500100", "sensitivity": "High" } ] } - ] + ], + "ruleSetType": "Microsoft_HTTPDDoSRuleSet", + "ruleSetVersion": "1.0" } ] }, - "frontendEndpointLinks": [], + "policySettings": { + "customBlockResponseBody": "PGh0bWw+CjxoZWFkZXI+PHRpdGxlPkhlbGxvPC90aXRsZT48L2hlYWRlcj4KPGJvZHk+CkhlbGxvIHdvcmxkCjwvYm9keT4KPC9odG1sPg==", + "customBlockResponseStatusCode": 429, + "enabledState": "Enabled", + "logScrubbing": { + "scrubbingRules": [ + { + "matchVariable": "RequestIPAddress", + "selector": null, + "selectorMatchOperator": "EqualsAny", + "state": "Enabled" + } + ], + "state": "Enabled" + }, + "mode": "Prevention", + "redirectUrl": "http://www.bing.com", + "requestBodyCheck": "Disabled" + }, + "provisioningState": "Succeeded", + "resourceState": "Enabled", "securityPolicyLinks": [] }, "sku": { "name": "Premium_AzureFrontDoor" + }, + "tags": { + "key1": "value1", + "key2": "value2" } } } - } + }, + "operationId": "Policies_CreateOrUpdate", + "title": "Creates specific policy" } diff --git a/specification/frontdoor/resource-manager/Microsoft.Network/stable/2025-10-01/examples/WafPolicyDelete.json b/specification/frontdoor/resource-manager/Microsoft.Network/stable/2025-10-01/examples/WafPolicyDelete.json index 90bf6f0a39c3..c2dc9491690f 100644 --- a/specification/frontdoor/resource-manager/Microsoft.Network/stable/2025-10-01/examples/WafPolicyDelete.json +++ b/specification/frontdoor/resource-manager/Microsoft.Network/stable/2025-10-01/examples/WafPolicyDelete.json @@ -1,9 +1,9 @@ { "parameters": { "api-version": "2025-10-01", - "subscriptionId": "subid", + "policyName": "Policy1", "resourceGroupName": "rg1", - "policyName": "Policy1" + "subscriptionId": "subid" }, "responses": { "200": {}, @@ -13,5 +13,7 @@ } }, "204": {} - } + }, + "operationId": "Policies_Delete", + "title": "Delete protection policy" } diff --git a/specification/frontdoor/resource-manager/Microsoft.Network/stable/2025-10-01/examples/WafPolicyGet.json b/specification/frontdoor/resource-manager/Microsoft.Network/stable/2025-10-01/examples/WafPolicyGet.json index e292fafa0c29..7f08ece42be8 100644 --- a/specification/frontdoor/resource-manager/Microsoft.Network/stable/2025-10-01/examples/WafPolicyGet.json +++ b/specification/frontdoor/resource-manager/Microsoft.Network/stable/2025-10-01/examples/WafPolicyGet.json @@ -1,153 +1,155 @@ { "parameters": { "api-version": "2025-10-01", - "subscriptionId": "subid", + "policyName": "Policy1", "resourceGroupName": "rg1", - "policyName": "Policy1" + "subscriptionId": "subid" }, "responses": { "200": { "body": { "name": "Policy1", - "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/FrontDoorWebApplicationFirewallPolicies/Policy1", "type": "Microsoft.Network/frontdoorwebapplicationfirewallpolicies", - "tags": { - "key1": "value1", - "key2": "value2" - }, + "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/FrontDoorWebApplicationFirewallPolicies/Policy1", "location": "WestUs", "properties": { - "resourceState": "Enabled", - "provisioningState": "Succeeded", - "policySettings": { - "enabledState": "Enabled", - "mode": "Prevention", - "redirectUrl": "http://www.bing.com", - "customBlockResponseStatusCode": 499, - "customBlockResponseBody": "PGh0bWw+CjxoZWFkZXI+PHRpdGxlPkhlbGxvPC90aXRsZT48L2hlYWRlcj4KPGJvZHk+CkhlbGxvIHdvcmxkCjwvYm9keT4KPC9odG1sPg==", - "requestBodyCheck": "Disabled", - "logScrubbing": null - }, "customRules": { "rules": [ { "name": "Rule1", - "priority": 1, + "action": "Block", "enabledState": "Enabled", - "ruleType": "RateLimitRule", - "rateLimitDurationInMinutes": 0, - "rateLimitThreshold": 1000, "matchConditions": [ { - "matchVariable": "RemoteAddr", - "selector": null, - "operator": "IPMatch", - "negateCondition": false, "matchValue": [ "192.168.1.0/24", "10.0.0.0/24" ], + "matchVariable": "RemoteAddr", + "negateCondition": false, + "operator": "IPMatch", + "selector": null, "transforms": [] } ], - "action": "Block" + "priority": 1, + "rateLimitDurationInMinutes": 0, + "rateLimitThreshold": 1000, + "ruleType": "RateLimitRule" }, { "name": "Rule2", - "priority": 2, + "action": "Block", "enabledState": "Enabled", - "ruleType": "MatchRule", - "rateLimitDurationInMinutes": 0, - "rateLimitThreshold": 0, "matchConditions": [ { - "matchVariable": "RemoteAddr", - "selector": null, - "operator": "GeoMatch", - "negateCondition": false, "matchValue": [ "CH" - ] + ], + "matchVariable": "RemoteAddr", + "negateCondition": false, + "operator": "GeoMatch", + "selector": null }, { - "matchVariable": "RequestHeader", - "selector": "UserAgent", - "operator": "Contains", - "negateCondition": false, "matchValue": [ "windows" ], + "matchVariable": "RequestHeader", + "negateCondition": false, + "operator": "Contains", + "selector": "UserAgent", "transforms": [ "Lowercase" ] } ], - "action": "Block" + "priority": 2, + "rateLimitDurationInMinutes": 0, + "rateLimitThreshold": 0, + "ruleType": "MatchRule" } ] }, + "frontendEndpointLinks": [ + { + "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontdoors/fd1/frontendendpoints/fd1-azurefd-net" + } + ], "managedRules": { "managedRuleSets": [ { - "ruleSetType": "DefaultRuleSet", - "ruleSetVersion": "1.0", - "ruleSetAction": "Block", "exclusions": [ { "matchVariable": "RequestHeaderNames", - "selectorMatchOperator": "Equals", - "selector": "User-Agent" + "selector": "User-Agent", + "selectorMatchOperator": "Equals" } ], "ruleGroupOverrides": [ { - "ruleGroupName": "SQLI", "exclusions": [], + "ruleGroupName": "SQLI", "rules": [ { - "ruleId": "942100", - "enabledState": "Enabled", "action": "Redirect", - "exclusions": [] + "enabledState": "Enabled", + "exclusions": [], + "ruleId": "942100" }, { - "ruleId": "942110", - "enabledState": "Disabled" + "enabledState": "Disabled", + "ruleId": "942110" } ] } - ] + ], + "ruleSetAction": "Block", + "ruleSetType": "DefaultRuleSet", + "ruleSetVersion": "1.0" }, { - "ruleSetType": "Microsoft_HTTPDDoSRuleSet", - "ruleSetVersion": "1.0", "ruleGroupOverrides": [ { "ruleGroupName": "ExcessiveRequests", "rules": [ { - "ruleId": "500100", - "enabledState": "Enabled", "action": "Block", + "enabledState": "Enabled", + "ruleId": "500100", "sensitivity": "High" } ] } - ] + ], + "ruleSetType": "Microsoft_HTTPDDoSRuleSet", + "ruleSetVersion": "1.0" } ] }, - "frontendEndpointLinks": [ - { - "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontdoors/fd1/frontendendpoints/fd1-azurefd-net" - } - ], + "policySettings": { + "customBlockResponseBody": "PGh0bWw+CjxoZWFkZXI+PHRpdGxlPkhlbGxvPC90aXRsZT48L2hlYWRlcj4KPGJvZHk+CkhlbGxvIHdvcmxkCjwvYm9keT4KPC9odG1sPg==", + "customBlockResponseStatusCode": 499, + "enabledState": "Enabled", + "logScrubbing": null, + "mode": "Prevention", + "redirectUrl": "http://www.bing.com", + "requestBodyCheck": "Disabled" + }, + "provisioningState": "Succeeded", + "resourceState": "Enabled", "securityPolicyLinks": [] }, "sku": { "name": "Classic_AzureFrontDoor" + }, + "tags": { + "key1": "value1", + "key2": "value2" } } } - } + }, + "operationId": "Policies_Get", + "title": "Get Policy" } diff --git a/specification/frontdoor/resource-manager/Microsoft.Network/stable/2025-10-01/examples/WafPolicyPatch.json b/specification/frontdoor/resource-manager/Microsoft.Network/stable/2025-10-01/examples/WafPolicyPatch.json index 3cbcbf8ceb86..85fa873f387e 100644 --- a/specification/frontdoor/resource-manager/Microsoft.Network/stable/2025-10-01/examples/WafPolicyPatch.json +++ b/specification/frontdoor/resource-manager/Microsoft.Network/stable/2025-10-01/examples/WafPolicyPatch.json @@ -1,150 +1,152 @@ { "parameters": { "api-version": "2025-10-01", - "subscriptionId": "subid", - "resourceGroupName": "rg1", - "policyName": "Policy1", "parameters": { "tags": { "key1": "value1", "key2": "value2" } - } + }, + "policyName": "Policy1", + "resourceGroupName": "rg1", + "subscriptionId": "subid" }, "responses": { "200": { "body": { "name": "Policy1", - "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/FrontDoorWebApplicationFirewallPolicies/Policy1", "type": "Microsoft.Network/frontdoorwebapplicationfirewallpolicies", - "tags": { - "key1": "value1", - "key2": "value2" - }, + "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/FrontDoorWebApplicationFirewallPolicies/Policy1", "location": "WestUs", "properties": { - "resourceState": "Enabled", - "provisioningState": "Succeeded", - "policySettings": { - "enabledState": "Enabled", - "mode": "Prevention", - "redirectUrl": "http://www.bing.com", - "customBlockResponseStatusCode": 499, - "customBlockResponseBody": "PGh0bWw+CjxoZWFkZXI+PHRpdGxlPkhlbGxvPC90aXRsZT48L2hlYWRlcj4KPGJvZHk+CkhlbGxvIHdvcmxkCjwvYm9keT4KPC9odG1sPg==", - "requestBodyCheck": "Disabled", - "logScrubbing": null - }, "customRules": { "rules": [ { "name": "Rule1", - "priority": 1, + "action": "Block", "enabledState": "Enabled", - "ruleType": "RateLimitRule", - "rateLimitDurationInMinutes": 0, - "rateLimitThreshold": 1000, "matchConditions": [ { - "matchVariable": "RemoteAddr", - "selector": null, - "operator": "IPMatch", - "negateCondition": false, "matchValue": [ "192.168.1.0/24", "10.0.0.0/24" ], + "matchVariable": "RemoteAddr", + "negateCondition": false, + "operator": "IPMatch", + "selector": null, "transforms": [] } ], - "action": "Block" + "priority": 1, + "rateLimitDurationInMinutes": 0, + "rateLimitThreshold": 1000, + "ruleType": "RateLimitRule" }, { "name": "Rule2", - "priority": 2, + "action": "Block", "enabledState": "Enabled", - "ruleType": "MatchRule", - "rateLimitDurationInMinutes": 0, - "rateLimitThreshold": 0, "matchConditions": [ { - "matchVariable": "RemoteAddr", - "selector": null, - "operator": "GeoMatch", - "negateCondition": false, "matchValue": [ "CH" - ] + ], + "matchVariable": "RemoteAddr", + "negateCondition": false, + "operator": "GeoMatch", + "selector": null }, { - "matchVariable": "RequestHeader", - "selector": "UserAgent", - "operator": "Contains", - "negateCondition": false, "matchValue": [ "windows" ], + "matchVariable": "RequestHeader", + "negateCondition": false, + "operator": "Contains", + "selector": "UserAgent", "transforms": [ "Lowercase" ] } ], - "action": "Block" + "priority": 2, + "rateLimitDurationInMinutes": 0, + "rateLimitThreshold": 0, + "ruleType": "MatchRule" } ] }, + "frontendEndpointLinks": [], "managedRules": { "managedRuleSets": [ { - "ruleSetType": "DefaultRuleSet", - "ruleSetVersion": "1.0", - "ruleSetAction": "Block", "exclusions": [ { "matchVariable": "RequestHeaderNames", - "selectorMatchOperator": "Equals", - "selector": "User-Agent" + "selector": "User-Agent", + "selectorMatchOperator": "Equals" } ], "ruleGroupOverrides": [ { - "ruleGroupName": "SQLI", "exclusions": [ { "matchVariable": "RequestCookieNames", - "selectorMatchOperator": "StartsWith", - "selector": "token" + "selector": "token", + "selectorMatchOperator": "StartsWith" } ], + "ruleGroupName": "SQLI", "rules": [ { - "ruleId": "942100", - "enabledState": "Enabled", "action": "Redirect", + "enabledState": "Enabled", "exclusions": [ { "matchVariable": "QueryStringArgNames", - "selectorMatchOperator": "Equals", - "selector": "query" + "selector": "query", + "selectorMatchOperator": "Equals" } - ] + ], + "ruleId": "942100" }, { - "ruleId": "942110", - "enabledState": "Disabled" + "enabledState": "Disabled", + "ruleId": "942110" } ] } - ] + ], + "ruleSetAction": "Block", + "ruleSetType": "DefaultRuleSet", + "ruleSetVersion": "1.0" } ] }, - "frontendEndpointLinks": [], + "policySettings": { + "customBlockResponseBody": "PGh0bWw+CjxoZWFkZXI+PHRpdGxlPkhlbGxvPC90aXRsZT48L2hlYWRlcj4KPGJvZHk+CkhlbGxvIHdvcmxkCjwvYm9keT4KPC9odG1sPg==", + "customBlockResponseStatusCode": 499, + "enabledState": "Enabled", + "logScrubbing": null, + "mode": "Prevention", + "redirectUrl": "http://www.bing.com", + "requestBodyCheck": "Disabled" + }, + "provisioningState": "Succeeded", + "resourceState": "Enabled", "securityPolicyLinks": [] }, "sku": { "name": "Classic_AzureFrontDoor" + }, + "tags": { + "key1": "value1", + "key2": "value2" } } } - } + }, + "operationId": "Policies_Update", + "title": "Patches specific policy" } diff --git a/specification/frontdoor/resource-manager/Microsoft.Network/stable/2025-10-01/frontdoor.json b/specification/frontdoor/resource-manager/Microsoft.Network/stable/2025-10-01/frontdoor.json deleted file mode 100644 index 0210a7e80372..000000000000 --- a/specification/frontdoor/resource-manager/Microsoft.Network/stable/2025-10-01/frontdoor.json +++ /dev/null @@ -1,2368 +0,0 @@ -{ - "swagger": "2.0", - "info": { - "version": "2025-10-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" - } - }, - "extendedProperties": { - "description": "Key-Value pair representing additional properties for frontdoor.", - "type": "object", - "readOnly": true, - "additionalProperties": { - "type": "string" - } - } - } - }, - "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" - }, - "webApplicationFirewallPolicyLink": { - "description": "Defines the Web Application Firewall policy for each routing rule (if applicable)", - "type": "object", - "properties": { - "id": { - "type": "string", - "description": "Resource ID." - } - } - } - } - }, - "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": true - } - }, - "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", - "Migrating", - "Migrated" - ], - "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/2025-10-01/network.json b/specification/frontdoor/resource-manager/Microsoft.Network/stable/2025-10-01/network.json deleted file mode 100644 index a92bf3449aa5..000000000000 --- a/specification/frontdoor/resource-manager/Microsoft.Network/stable/2025-10-01/network.json +++ /dev/null @@ -1,167 +0,0 @@ -{ - "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": "2025-10-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.", - "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/Microsoft.Network/stable/2025-10-01/networkexperiment.json b/specification/frontdoor/resource-manager/Microsoft.Network/stable/2025-10-01/networkexperiment.json deleted file mode 100644 index a1fd7f11a62f..000000000000 --- a/specification/frontdoor/resource-manager/Microsoft.Network/stable/2025-10-01/networkexperiment.json +++ /dev/null @@ -1,1443 +0,0 @@ -{ - "swagger": "2.0", - "info": { - "description": "These are the Network Experiment APIs.\n", - "version": "2025-10-01", - "title": "NetworkExperiments" - }, - "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" - } - } - }, - "tags": [ - { - "name": "NetworkExperimentProfiles", - "description": "The configuration of Network Experiment profiles" - }, - { - "name": "Experiments", - "description": "The configuration of the Network Experiment experiments" - }, - { - "name": "PreconfiguredEndpoints", - "description": "The preconfigured endpoints and details" - }, - { - "name": "Reports", - "description": "The analysis and results of the experiments" - } - ], - "paths": { - "/subscriptions/{subscriptionId}/providers/Microsoft.Network/NetworkExperimentProfiles": { - "get": { - "tags": [ - "NetworkExperimentProfiles" - ], - "summary": "Gets a list of Network Experiment Profiles under a subscription", - "operationId": "NetworkExperimentProfiles_List", - "produces": [ - "application/json" - ], - "parameters": [ - { - "$ref": "./network.json#/parameters/SubscriptionIdParameter" - }, - { - "$ref": "./network.json#/parameters/ApiVersionParameter" - } - ], - "responses": { - "200": { - "description": "successful operation", - "schema": { - "$ref": "#/definitions/ProfileList" - } - }, - "default": { - "description": "Error response describing why the operation failed.", - "schema": { - "$ref": "#/definitions/ErrorResponse" - } - } - }, - "x-ms-pageable": { - "nextLinkName": "nextLink" - }, - "x-ms-examples": { - "List NetworkExperiment Profiles in a Resource Group": { - "$ref": "./examples/NetworkExperimentListProfiles.json" - } - } - } - }, - "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/NetworkExperimentProfiles": { - "get": { - "tags": [ - "NetworkExperimentProfiles" - ], - "summary": "Gets a list of Network Experiment Profiles within a resource group under a subscription", - "operationId": "NetworkExperimentProfiles_ListByResourceGroup", - "produces": [ - "application/json" - ], - "parameters": [ - { - "$ref": "./network.json#/parameters/SubscriptionIdParameter" - }, - { - "$ref": "./network.json#/parameters/ApiVersionParameter" - }, - { - "$ref": "#/parameters/ResourceGroupNameParameter" - } - ], - "responses": { - "200": { - "description": "successful operation", - "schema": { - "$ref": "#/definitions/ProfileList" - } - }, - "default": { - "description": "Error response describing why the operation failed.", - "schema": { - "$ref": "#/definitions/ErrorResponse" - } - } - }, - "x-ms-pageable": { - "nextLinkName": "nextLink" - }, - "x-ms-examples": { - "List NetworkExperiment Profiles in a Resource Group": { - "$ref": "./examples/NetworkExperimentListProfiles.json" - } - } - } - }, - "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/NetworkExperimentProfiles/{profileName}": { - "get": { - "tags": [ - "NetworkExperimentProfiles" - ], - "summary": "Gets an NetworkExperiment Profile by ProfileName", - "operationId": "NetworkExperimentProfiles_Get", - "produces": [ - "application/json" - ], - "parameters": [ - { - "$ref": "./network.json#/parameters/SubscriptionIdParameter" - }, - { - "$ref": "./network.json#/parameters/ApiVersionParameter" - }, - { - "$ref": "#/parameters/ResourceGroupNameParameter" - }, - { - "$ref": "#/parameters/ProfileNameParameter" - } - ], - "responses": { - "200": { - "description": "successful operation", - "schema": { - "$ref": "#/definitions/Profile" - } - }, - "default": { - "description": "Error response describing why the operation failed.", - "schema": { - "$ref": "#/definitions/ErrorResponse" - } - } - }, - "x-ms-examples": { - "Gets an NetworkExperiment Profile by Profile Id": { - "$ref": "./examples/NetworkExperimentGetProfile.json" - } - } - }, - "put": { - "tags": [ - "NetworkExperimentProfiles" - ], - "summary": "Creates an NetworkExperiment Profile", - "operationId": "NetworkExperimentProfiles_CreateOrUpdate", - "produces": [ - "application/json" - ], - "parameters": [ - { - "$ref": "#/parameters/ProfileNameParameter" - }, - { - "$ref": "./network.json#/parameters/SubscriptionIdParameter" - }, - { - "$ref": "./network.json#/parameters/ApiVersionParameter" - }, - { - "$ref": "#/parameters/ResourceGroupNameParameter" - }, - { - "in": "body", - "name": "parameters", - "description": "An Network Experiment Profile", - "required": true, - "schema": { - "$ref": "#/definitions/Profile" - } - } - ], - "responses": { - "200": { - "description": "OK. The request has succeeded.", - "schema": { - "$ref": "#/definitions/Profile" - } - }, - "201": { - "description": "Created. The request has been fulfilled and a new protection policy has been created.", - "schema": { - "$ref": "#/definitions/Profile" - } - }, - "202": { - "description": "Accepted. The request has been accepted for processing and the operation will complete asynchronously.", - "schema": { - "$ref": "#/definitions/Profile" - } - }, - "default": { - "description": "Error response describing why the operation failed.", - "schema": { - "$ref": "#/definitions/ErrorResponse" - } - } - }, - "x-ms-long-running-operation": true, - "x-ms-examples": { - "Creates an NetworkExperiment Profile in a Resource Group": { - "$ref": "./examples/NetworkExperimentCreateProfile.json" - } - } - }, - "patch": { - "tags": [ - "NetworkExperimentProfiles" - ], - "description": "Updates an NetworkExperimentProfiles", - "summary": "Updates an NetworkExperimentProfiles by NetworkExperimentProfile name", - "operationId": "NetworkExperimentProfiles_Update", - "produces": [ - "application/json" - ], - "parameters": [ - { - "$ref": "./network.json#/parameters/SubscriptionIdParameter" - }, - { - "$ref": "./network.json#/parameters/ApiVersionParameter" - }, - { - "$ref": "#/parameters/ResourceGroupNameParameter" - }, - { - "$ref": "#/parameters/ProfileNameParameter" - }, - { - "in": "body", - "name": "parameters", - "description": "The Profile Update Model", - "required": true, - "schema": { - "$ref": "#/definitions/ProfileUpdateModel" - } - } - ], - "responses": { - "200": { - "description": "OK. successful operation", - "schema": { - "$ref": "#/definitions/Profile" - } - }, - "202": { - "description": "Accepted. The request has been accepted for processing and the operation will complete asynchronously.", - "schema": { - "$ref": "#/definitions/Profile" - } - }, - "default": { - "description": "Error response describing why the operation failed.", - "schema": { - "$ref": "#/definitions/ErrorResponse" - } - } - }, - "x-ms-long-running-operation": true, - "x-ms-examples": { - "Updates an Experiment": { - "$ref": "./examples/NetworkExperimentUpdateProfile.json" - } - } - }, - "delete": { - "tags": [ - "NetworkExperimentProfiles" - ], - "summary": "Deletes an NetworkExperiment Profile by ProfileName", - "operationId": "NetworkExperimentProfiles_Delete", - "parameters": [ - { - "$ref": "./network.json#/parameters/SubscriptionIdParameter" - }, - { - "$ref": "./network.json#/parameters/ApiVersionParameter" - }, - { - "$ref": "#/parameters/ResourceGroupNameParameter" - }, - { - "$ref": "#/parameters/ProfileNameParameter" - } - ], - "responses": { - "200": { - "description": "Delete successful." - }, - "202": { - "description": "Accepted. The request has been accepted for processing and the operation will complete asynchronously." - }, - "204": { - "description": "No Content. The request has been accepted but the profile was not found." - }, - "default": { - "description": "Error response describing why the operation failed.", - "schema": { - "$ref": "#/definitions/ErrorResponse" - } - } - }, - "x-ms-examples": { - "Deletes an NetworkExperiment Profile by ProfileName": { - "$ref": "./examples/NetworkExperimentDeleteProfile.json" - } - }, - "x-ms-long-running-operation": true - } - }, - "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/NetworkExperimentProfiles/{profileName}/PreconfiguredEndpoints": { - "get": { - "tags": [ - "PreconfiguredEndpoints" - ], - "summary": "Gets a list of Preconfigured Endpoints", - "operationId": "PreconfiguredEndpoints_List", - "produces": [ - "application/json" - ], - "parameters": [ - { - "$ref": "./network.json#/parameters/SubscriptionIdParameter" - }, - { - "$ref": "./network.json#/parameters/ApiVersionParameter" - }, - { - "$ref": "#/parameters/ResourceGroupNameParameter" - }, - { - "$ref": "#/parameters/ProfileNameParameter" - } - ], - "responses": { - "200": { - "description": "OK. The request has succeeded.", - "schema": { - "$ref": "#/definitions/PreconfiguredEndpointList" - } - }, - "default": { - "description": "Error response describing why the operation failed.", - "schema": { - "$ref": "#/definitions/ErrorResponse" - } - } - }, - "x-ms-examples": { - "Gets a list of Preconfigured Endpoints": { - "$ref": "./examples/NetworkExperimentGetPreconfiguredEndpoints.json" - } - }, - "x-ms-pageable": { - "nextLinkName": "nextLink" - } - } - }, - "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/NetworkExperimentProfiles/{profileName}/Experiments": { - "get": { - "tags": [ - "Experiments" - ], - "summary": "Gets a list of Experiments", - "operationId": "Experiments_ListByProfile", - "produces": [ - "application/json" - ], - "parameters": [ - { - "$ref": "./network.json#/parameters/SubscriptionIdParameter" - }, - { - "$ref": "./network.json#/parameters/ApiVersionParameter" - }, - { - "$ref": "#/parameters/ResourceGroupNameParameter" - }, - { - "$ref": "#/parameters/ProfileNameParameter" - } - ], - "responses": { - "200": { - "description": "successful operation", - "schema": { - "$ref": "#/definitions/ExperimentList" - } - }, - "default": { - "description": "Error response describing why the operation failed.", - "schema": { - "$ref": "#/definitions/ErrorResponse" - } - } - }, - "x-ms-pageable": { - "nextLinkName": "nextLink" - }, - "x-ms-examples": { - "Gets a list of Experiments": { - "$ref": "./examples/NetworkExperimentListExperiments.json" - } - } - } - }, - "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/NetworkExperimentProfiles/{profileName}/Experiments/{experimentName}": { - "get": { - "tags": [ - "Experiments" - ], - "summary": "Gets an Experiment by ExperimentName", - "operationId": "Experiments_Get", - "produces": [ - "application/json" - ], - "parameters": [ - { - "$ref": "./network.json#/parameters/SubscriptionIdParameter" - }, - { - "$ref": "./network.json#/parameters/ApiVersionParameter" - }, - { - "$ref": "#/parameters/ResourceGroupNameParameter" - }, - { - "$ref": "#/parameters/ProfileNameParameter" - }, - { - "$ref": "#/parameters/ExperimentNameParameter" - } - ], - "responses": { - "200": { - "description": "successful operation", - "schema": { - "$ref": "#/definitions/Experiment" - } - }, - "default": { - "description": "Error response describing why the operation failed.", - "schema": { - "$ref": "#/definitions/ErrorResponse" - } - } - }, - "x-ms-examples": { - "Gets an Experiment by ExperimentName": { - "$ref": "./examples/NetworkExperimentGetExperiment.json" - } - } - }, - "put": { - "tags": [ - "Experiments" - ], - "summary": "Creates or updates an Experiment", - "operationId": "Experiments_CreateOrUpdate", - "parameters": [ - { - "$ref": "./network.json#/parameters/SubscriptionIdParameter" - }, - { - "$ref": "./network.json#/parameters/ApiVersionParameter" - }, - { - "$ref": "#/parameters/ResourceGroupNameParameter" - }, - { - "$ref": "#/parameters/ProfileNameParameter" - }, - { - "$ref": "#/parameters/ExperimentNameParameter" - }, - { - "description": "The Experiment resource", - "in": "body", - "name": "parameters", - "required": true, - "schema": { - "$ref": "#/definitions/Experiment" - } - } - ], - "responses": { - "200": { - "description": "OK. The request has succeeded.", - "schema": { - "$ref": "#/definitions/Experiment" - } - }, - "201": { - "description": "Created. The request has been fulfilled and a new experiment has been created.", - "schema": { - "$ref": "#/definitions/Experiment" - } - }, - "202": { - "description": "Accepted. The request has been accepted for processing and the operation will complete asynchronously.", - "schema": { - "$ref": "#/definitions/Experiment" - } - }, - "default": { - "description": "Error response describing why the operation failed.", - "schema": { - "$ref": "#/definitions/ErrorResponse" - } - } - }, - "x-ms-long-running-operation": true, - "x-ms-examples": { - "Creates an Experiment": { - "$ref": "./examples/NetworkExperimentCreateExperiment.json" - } - } - }, - "patch": { - "tags": [ - "Experiments" - ], - "description": "Updates an Experiment", - "summary": "Updates an Experiment by Experiment id", - "operationId": "Experiments_Update", - "produces": [ - "application/json" - ], - "parameters": [ - { - "$ref": "./network.json#/parameters/SubscriptionIdParameter" - }, - { - "$ref": "./network.json#/parameters/ApiVersionParameter" - }, - { - "$ref": "#/parameters/ResourceGroupNameParameter" - }, - { - "$ref": "#/parameters/ProfileNameParameter" - }, - { - "$ref": "#/parameters/ExperimentNameParameter" - }, - { - "in": "body", - "name": "parameters", - "description": "The Experiment Update Model", - "required": true, - "schema": { - "$ref": "#/definitions/ExperimentUpdateModel" - } - } - ], - "responses": { - "200": { - "description": "OK. successful operation", - "schema": { - "$ref": "#/definitions/Experiment" - } - }, - "202": { - "description": "Accepted. The request has been accepted for processing and the operation will complete asynchronously.", - "schema": { - "$ref": "#/definitions/Experiment" - } - }, - "default": { - "description": "Error response describing why the operation failed.", - "schema": { - "$ref": "#/definitions/ErrorResponse" - } - } - }, - "x-ms-long-running-operation": true, - "x-ms-examples": { - "Updates an Experiment": { - "$ref": "./examples/NetworkExperimentUpdateExperiment.json" - } - } - }, - "delete": { - "tags": [ - "Experiments" - ], - "summary": "Deletes an Experiment", - "operationId": "Experiments_Delete", - "produces": [ - "application/json" - ], - "parameters": [ - { - "$ref": "./network.json#/parameters/SubscriptionIdParameter" - }, - { - "$ref": "./network.json#/parameters/ApiVersionParameter" - }, - { - "$ref": "#/parameters/ResourceGroupNameParameter" - }, - { - "$ref": "#/parameters/ProfileNameParameter" - }, - { - "$ref": "#/parameters/ExperimentNameParameter" - } - ], - "responses": { - "200": { - "description": "Delete successful." - }, - "202": { - "description": "Accepted. The request has been accepted for processing and the operation will complete asynchronously." - }, - "204": { - "description": "No Content. The request has been accepted but the policy was not found." - }, - "default": { - "description": "Error response describing why the operation failed.", - "schema": { - "$ref": "#/definitions/ErrorResponse" - } - } - }, - "x-ms-long-running-operation": true, - "x-ms-examples": { - "Deletes an Experiment": { - "$ref": "./examples/NetworkExperimentDeleteExperiment.json" - } - } - } - }, - "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/NetworkExperimentProfiles/{profileName}/Experiments/{experimentName}/LatencyScorecard": { - "get": { - "tags": [ - "Reports" - ], - "summary": "Gets a Latency Scorecard for a given Experiment", - "operationId": "Reports_GetLatencyScorecards", - "produces": [ - "application/json" - ], - "parameters": [ - { - "$ref": "./network.json#/parameters/SubscriptionIdParameter" - }, - { - "$ref": "./network.json#/parameters/ApiVersionParameter" - }, - { - "$ref": "#/parameters/ResourceGroupNameParameter" - }, - { - "$ref": "#/parameters/ProfileNameParameter" - }, - { - "$ref": "#/parameters/ExperimentNameParameter" - }, - { - "in": "query", - "name": "endDateTimeUTC", - "type": "string", - "description": "The end DateTime of the Latency Scorecard in UTC", - "required": false - }, - { - "in": "query", - "name": "country", - "type": "string", - "description": "The country associated with the Latency Scorecard. Values are country ISO codes as specified here- https://www.iso.org/iso-3166-country-codes.html", - "required": false - }, - { - "in": "query", - "name": "aggregationInterval", - "type": "string", - "description": "The aggregation interval of the Latency Scorecard", - "enum": [ - "Daily", - "Weekly", - "Monthly" - ], - "x-ms-enum": { - "name": "latencyScorecardAggregationInterval", - "modelAsString": true - }, - "required": true - } - ], - "responses": { - "200": { - "description": "successful operation", - "schema": { - "$ref": "#/definitions/LatencyScorecard" - } - }, - "default": { - "description": "Error response describing why the operation failed.", - "schema": { - "$ref": "#/definitions/ErrorResponse" - } - } - }, - "x-ms-examples": { - "Gets a Latency Scorecard for a given Experiment": { - "$ref": "./examples/NetworkExperimentGetLatencyScorecard.json" - } - } - } - }, - "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/NetworkExperimentProfiles/{profileName}/Experiments/{experimentName}/Timeseries": { - "get": { - "tags": [ - "Reports" - ], - "summary": "Gets a Timeseries for a given Experiment", - "operationId": "Reports_GetTimeseries", - "produces": [ - "application/json" - ], - "parameters": [ - { - "$ref": "./network.json#/parameters/SubscriptionIdParameter" - }, - { - "$ref": "./network.json#/parameters/ApiVersionParameter" - }, - { - "$ref": "#/parameters/ResourceGroupNameParameter" - }, - { - "$ref": "#/parameters/ProfileNameParameter" - }, - { - "$ref": "#/parameters/ExperimentNameParameter" - }, - { - "in": "query", - "name": "startDateTimeUTC", - "type": "string", - "format": "date-time", - "description": "The start DateTime of the Timeseries in UTC", - "required": true - }, - { - "in": "query", - "name": "endDateTimeUTC", - "type": "string", - "format": "date-time", - "description": "The end DateTime of the Timeseries in UTC", - "required": true - }, - { - "in": "query", - "name": "aggregationInterval", - "type": "string", - "description": "The aggregation interval of the Timeseries", - "enum": [ - "Hourly", - "Daily" - ], - "x-ms-enum": { - "name": "timeseriesAggregationInterval", - "modelAsString": true - }, - "required": true - }, - { - "in": "query", - "name": "timeseriesType", - "type": "string", - "description": "The type of Timeseries", - "enum": [ - "MeasurementCounts", - "LatencyP50", - "LatencyP75", - "LatencyP95" - ], - "x-ms-enum": { - "name": "timeseriesType", - "modelAsString": true - }, - "required": true - }, - { - "in": "query", - "name": "endpoint", - "type": "string", - "description": "The specific endpoint", - "required": false - }, - { - "in": "query", - "name": "country", - "type": "string", - "description": "The country associated with the Timeseries. Values are country ISO codes as specified here- https://www.iso.org/iso-3166-country-codes.html" - } - ], - "responses": { - "200": { - "description": "successful operation", - "schema": { - "$ref": "#/definitions/Timeseries" - } - }, - "default": { - "description": "Error response describing why the operation failed.", - "schema": { - "$ref": "#/definitions/ErrorResponse" - } - } - }, - "x-ms-examples": { - "Gets a Timeseries for a given Experiment": { - "$ref": "./examples/NetworkExperimentGetTimeseries.json" - } - } - } - } - }, - "definitions": { - "ProfileProperties": { - "description": "Defines the properties of an experiment", - "type": "object", - "properties": { - "resourceState": { - "description": "Resource status.", - "$ref": "#/definitions/NetworkExperimentResourceState" - }, - "enabledState": { - "type": "string", - "description": "The state of the Experiment", - "enum": [ - "Enabled", - "Disabled" - ], - "x-ms-enum": { - "name": "state", - "modelAsString": true - } - } - } - }, - "ProfileList": { - "description": "Defines a list of Profiles. It contains a list of Profile objects and a URL link to get the next set of results.", - "properties": { - "value": { - "type": "array", - "readOnly": true, - "items": { - "$ref": "#/definitions/Profile" - }, - "description": "List of Profiles within a resource group." - }, - "nextLink": { - "type": "string", - "description": "URL to get the next set of Profile objects if there are any." - } - } - }, - "Profile": { - "description": "Defines an Network Experiment Profile and lists of Experiments", - "properties": { - "name": { - "description": "The name of the Profile", - "type": "string" - }, - "properties": { - "description": "The properties of a Profile", - "$ref": "#/definitions/ProfileProperties", - "x-ms-client-flatten": true - }, - "etag": { - "type": "string", - "description": "Gets a unique read-only string that changes whenever the resource is updated." - } - }, - "allOf": [ - { - "$ref": "./network.json#/definitions/Resource" - } - ] - }, - "Endpoint": { - "description": "Defines the endpoint properties", - "type": "object", - "properties": { - "name": { - "description": "The name of the endpoint", - "type": "string" - }, - "endpoint": { - "description": "The endpoint URL", - "type": "string" - } - } - }, - "ProfileUpdateProperties": { - "description": "Defines the properties of an experiment", - "type": "object", - "properties": { - "enabledState": { - "type": "string", - "description": "The enabled state of the Profile", - "enum": [ - "Enabled", - "Disabled" - ], - "x-ms-enum": { - "name": "state", - "modelAsString": true - } - } - } - }, - "ProfileUpdateModel": { - "description": "Defines modifiable attributes of a Profile", - "type": "object", - "properties": { - "properties": { - "description": "The properties of a Profile", - "$ref": "#/definitions/ProfileUpdateProperties", - "x-ms-client-flatten": true - }, - "tags": { - "type": "object", - "additionalProperties": { - "type": "string" - }, - "description": "Resource tags." - } - } - }, - "ExperimentUpdateProperties": { - "description": "Defines the properties of an experiment", - "type": "object", - "properties": { - "description": { - "description": "The description of the intent or details of the Experiment", - "type": "string" - }, - "enabledState": { - "type": "string", - "description": "The state of the Experiment", - "enum": [ - "Enabled", - "Disabled" - ], - "x-ms-enum": { - "name": "state", - "modelAsString": true - } - } - } - }, - "ExperimentUpdateModel": { - "description": "Defines modifiable attributes of an Experiment", - "type": "object", - "properties": { - "tags": { - "type": "object", - "additionalProperties": { - "type": "string" - }, - "description": "Resource tags." - }, - "properties": { - "description": "The properties of a Profile", - "$ref": "#/definitions/ExperimentUpdateProperties", - "x-ms-client-flatten": true - } - } - }, - "ExperimentProperties": { - "description": "Defines the properties of an experiment", - "type": "object", - "properties": { - "description": { - "description": "The description of the details or intents of the Experiment", - "type": "string" - }, - "endpointA": { - "description": "The endpoint A of an experiment", - "$ref": "#/definitions/Endpoint" - }, - "endpointB": { - "description": "The endpoint B of an experiment", - "$ref": "#/definitions/Endpoint" - }, - "enabledState": { - "type": "string", - "description": "The state of the Experiment", - "enum": [ - "Enabled", - "Disabled" - ], - "x-ms-enum": { - "name": "state", - "modelAsString": true - } - }, - "resourceState": { - "description": "Resource status.", - "$ref": "#/definitions/NetworkExperimentResourceState" - }, - "status": { - "description": "The description of Experiment status from the server side", - "type": "string", - "readOnly": true - }, - "scriptFileUri": { - "description": "The uri to the Script used in the Experiment", - "type": "string", - "readOnly": true - } - } - }, - "ExperimentList": { - "description": "Defines a list of Experiments. It contains a list of Experiment objects and a URL link to get the next set of results.", - "properties": { - "value": { - "type": "array", - "readOnly": true, - "items": { - "$ref": "#/definitions/Experiment" - }, - "description": "List of Experiments within a resource group." - }, - "nextLink": { - "type": "string", - "description": "URL to get the next set of Experiment objects if there are any." - } - } - }, - "Experiment": { - "description": "Defines the properties of an Experiment", - "properties": { - "name": { - "description": "The name of the Experiment", - "type": "string", - "readOnly": true - }, - "properties": { - "description": "The properties of an Experiment", - "$ref": "#/definitions/ExperimentProperties", - "x-ms-client-flatten": true - } - }, - "allOf": [ - { - "$ref": "./network.json#/definitions/Resource" - } - ] - }, - "LatencyScorecard": { - "description": "Defines the LatencyScorecard", - "properties": { - "properties": { - "description": "The properties of a latency scorecard", - "$ref": "#/definitions/LatencyScorecardProperties", - "x-ms-client-flatten": true - } - }, - "allOf": [ - { - "$ref": "./network.json#/definitions/Resource" - } - ] - }, - "NetworkExperimentResourceState": { - "description": "Defines the server side resource status", - "readOnly": true, - "enum": [ - "Creating", - "Enabling", - "Enabled", - "Disabling", - "Disabled", - "Deleting" - ], - "type": "string", - "x-ms-enum": { - "name": "NetworkExperimentResourceState", - "modelAsString": true - } - }, - "LatencyScorecardProperties": { - "description": "Defines a the properties of a Latency Scorecard", - "type": "object", - "properties": { - "id": { - "description": "The unique identifier of the Latency Scorecard", - "type": "string", - "readOnly": true - }, - "name": { - "description": "The name of the Latency Scorecard", - "type": "string", - "readOnly": true - }, - "description": { - "description": "The description of the Latency Scorecard", - "type": "string", - "readOnly": true - }, - "endpointA": { - "description": "The A endpoint in the scorecard", - "type": "string", - "readOnly": true - }, - "endpointB": { - "description": "The B endpoint in the scorecard", - "type": "string", - "readOnly": true - }, - "startDateTimeUTC": { - "description": "The start time of the Latency Scorecard in UTC", - "type": "string", - "format": "date-time", - "readOnly": true - }, - "endDateTimeUTC": { - "description": "The end time of the Latency Scorecard in UTC", - "type": "string", - "format": "date-time", - "readOnly": true - }, - "country": { - "description": "The country associated with the Latency Scorecard. Values are country ISO codes as specified here- https://www.iso.org/iso-3166-country-codes.html", - "type": "string", - "readOnly": true - }, - "latencyMetrics": { - "description": "The latency metrics of the Latency Scorecard", - "type": "array", - "items": { - "$ref": "#/definitions/LatencyMetric" - } - } - } - }, - "LatencyMetric": { - "description": "Defines the properties of a latency metric used in the latency scorecard", - "type": "object", - "properties": { - "name": { - "description": "The name of the Latency Metric", - "type": "string", - "readOnly": true - }, - "endDateTimeUTC": { - "description": "The end time of the Latency Scorecard in UTC", - "type": "string", - "readOnly": true - }, - "aValue": { - "description": "The metric value of the A endpoint", - "type": "number", - "readOnly": true - }, - "bValue": { - "description": "The metric value of the B endpoint", - "type": "number", - "readOnly": true - }, - "delta": { - "description": "The difference in value between endpoint A and B", - "type": "number", - "readOnly": true - }, - "deltaPercent": { - "description": "The percent difference between endpoint A and B", - "type": "number", - "readOnly": true - }, - "aCLower95CI": { - "description": "The lower end of the 95% confidence interval for endpoint A", - "type": "number", - "readOnly": true - }, - "aHUpper95CI": { - "description": "The upper end of the 95% confidence interval for endpoint A", - "type": "number", - "readOnly": true - }, - "bCLower95CI": { - "description": "The lower end of the 95% confidence interval for endpoint B", - "type": "number", - "readOnly": true - }, - "bUpper95CI": { - "description": "The upper end of the 95% confidence interval for endpoint B", - "type": "number", - "readOnly": true - } - } - }, - "Timeseries": { - "description": "Defines the Timeseries", - "properties": { - "properties": { - "description": "The properties of a Timeseries", - "$ref": "#/definitions/TimeseriesProperties", - "x-ms-client-flatten": true - } - }, - "allOf": [ - { - "$ref": "./network.json#/definitions/Resource" - } - ] - }, - "TimeseriesProperties": { - "description": "Defines the properties of a timeseries", - "type": "object", - "properties": { - "endpoint": { - "type": "string", - "description": "The endpoint associated with the Timeseries data point" - }, - "startDateTimeUTC": { - "type": "string", - "description": "The start DateTime of the Timeseries in UTC" - }, - "endDateTimeUTC": { - "type": "string", - "description": "The end DateTime of the Timeseries in UTC" - }, - "aggregationInterval": { - "type": "string", - "description": "The aggregation interval of the Timeseries", - "enum": [ - "Hourly", - "Daily" - ], - "x-ms-enum": { - "name": "aggregationInterval", - "modelAsString": true - } - }, - "timeseriesType": { - "type": "string", - "description": "The type of Timeseries", - "enum": [ - "MeasurementCounts", - "LatencyP50", - "LatencyP75", - "LatencyP95" - ], - "x-ms-enum": { - "name": "timeseriesType", - "modelAsString": true - } - }, - "country": { - "type": "string", - "description": "The country associated with the Timeseries. Values are country ISO codes as specified here- https://www.iso.org/iso-3166-country-codes.html" - }, - "timeseriesData": { - "description": "The set of data points for the timeseries", - "type": "array", - "items": { - "$ref": "#/definitions/TimeseriesDataPoint" - } - } - } - }, - "TimeseriesDataPoint": { - "description": "Defines a timeseries datapoint used in a timeseries", - "type": "object", - "properties": { - "dateTimeUTC": { - "description": "The DateTime of the Timeseries data point in UTC", - "type": "string" - }, - "value": { - "description": "The Value of the Timeseries data point", - "type": "number" - } - } - }, - "PreconfiguredEndpointList": { - "description": "Defines a list of preconfigured endpoints.", - "properties": { - "value": { - "type": "array", - "readOnly": true, - "items": { - "$ref": "#/definitions/PreconfiguredEndpoint" - }, - "description": "List of PreconfiguredEndpoints supported by NetworkExperiment." - }, - "nextLink": { - "type": "string", - "description": "URL to get the next set of PreconfiguredEndpoints if there are any." - } - } - }, - "PreconfiguredEndpoint": { - "description": "Defines the properties of a preconfigured endpoint", - "properties": { - "name": { - "description": "The name of the endpoint", - "type": "string" - }, - "properties": { - "description": "The properties of a preconfiguredEndpoint", - "$ref": "#/definitions/PreconfiguredEndpointProperties", - "x-ms-client-flatten": true - } - }, - "allOf": [ - { - "$ref": "./network.json#/definitions/Resource" - } - ] - }, - "PreconfiguredEndpointProperties": { - "description": "Defines the properties of a preconfigured endpoint", - "type": "object", - "properties": { - "description": { - "description": "The description of the endpoint", - "type": "string" - }, - "endpoint": { - "description": "The endpoint that is preconfigured", - "type": "string" - }, - "endpointType": { - "description": "The type of endpoint", - "type": "string", - "enum": [ - "AFD", - "AzureRegion", - "CDN", - "ATM" - ], - "x-ms-enum": { - "name": "endpointType", - "modelAsString": true - } - }, - "backend": { - "description": "The preconfigured endpoint backend", - "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" - } - } - } - }, - "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." - }, - "ProfileNameParameter": { - "name": "profileName", - "in": "path", - "required": true, - "type": "string", - "pattern": "^[a-zA-Z0-9_\\-\\(\\)\\.]*[^\\.]$", - "x-ms-parameter-location": "method", - "description": "The Profile identifier associated with the Tenant and Partner" - }, - "ExperimentNameParameter": { - "name": "experimentName", - "in": "path", - "required": true, - "type": "string", - "pattern": "^[a-zA-Z0-9_\\-\\(\\)\\.]*[^\\.]$", - "x-ms-parameter-location": "method", - "description": "The Experiment identifier associated with the Experiment" - } - } -} diff --git a/specification/frontdoor/resource-manager/Microsoft.Network/stable/2025-10-01/openapi.json b/specification/frontdoor/resource-manager/Microsoft.Network/stable/2025-10-01/openapi.json new file mode 100644 index 000000000000..6394143260e3 --- /dev/null +++ b/specification/frontdoor/resource-manager/Microsoft.Network/stable/2025-10-01/openapi.json @@ -0,0 +1,6732 @@ +{ + "swagger": "2.0", + "info": { + "title": "WebApplicationFirewallManagement", + "version": "2025-10-01", + "description": "APIs to manage web application firewall rules.", + "x-typespec-generated": [ + { + "emitter": "@azure-tools/typespec-autorest" + } + ] + }, + "schemes": [ + "https" + ], + "host": "management.azure.com", + "produces": [ + "application/json" + ], + "consumes": [ + "application/json" + ], + "security": [ + { + "azure_auth": [ + "user_impersonation" + ] + } + ], + "securityDefinitions": { + "azure_auth": { + "type": "oauth2", + "description": "Azure Active Directory OAuth2 Flow.", + "flow": "implicit", + "authorizationUrl": "https://login.microsoftonline.com/common/oauth2/authorize", + "scopes": { + "user_impersonation": "impersonate your user account" + } + } + }, + "tags": [ + { + "name": "WebApplicationFirewallPolicies" + }, + { + "name": "FrontDoors" + }, + { + "name": "FrontendEndpoints" + }, + { + "name": "RulesEngines" + }, + { + "name": "Profiles" + }, + { + "name": "Experiments" + } + ], + "paths": { + "/providers/Microsoft.Network/checkFrontDoorNameAvailability": { + "post": { + "operationId": "FrontDoorNameAvailability_Check", + "description": "Check the availability of a Front Door resource name.", + "parameters": [ + { + "$ref": "../../../../../common-types/resource-management/v3/types.json#/parameters/ApiVersionParameter" + }, + { + "name": "checkFrontDoorNameAvailabilityInput", + "in": "body", + "description": "The request body", + "required": true, + "schema": { + "$ref": "#/definitions/CheckNameAvailabilityInput" + } + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "schema": { + "$ref": "#/definitions/CheckNameAvailabilityOutput" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + } + }, + "x-ms-examples": { + "CheckNameAvailability": { + "$ref": "./examples/CheckFrontdoorNameAvailability.json" + } + } + } + }, + "/subscriptions/{subscriptionId}/providers/Microsoft.Network/FrontDoorWebApplicationFirewallPolicies": { + "get": { + "operationId": "Policies_ListBySubscription", + "tags": [ + "WebApplicationFirewallPolicies" + ], + "description": "Lists all of the protection policies within a subscription.", + "parameters": [ + { + "$ref": "../../../../../common-types/resource-management/v3/types.json#/parameters/ApiVersionParameter" + }, + { + "$ref": "../../../../../common-types/resource-management/v3/types.json#/parameters/SubscriptionIdParameter" + } + ], + "responses": { + "200": { + "description": "Azure operation completed successfully.", + "schema": { + "$ref": "#/definitions/WebApplicationFirewallPolicyList" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/DefaultErrorResponse" + } + } + }, + "x-ms-examples": { + "Get all Policies in a Resource Group": { + "$ref": "./examples/WafListPoliciesUnderSubscription.json" + } + }, + "x-ms-pageable": { + "nextLinkName": "nextLink" + } + } + }, + "/subscriptions/{subscriptionId}/providers/Microsoft.Network/NetworkExperimentProfiles": { + "get": { + "operationId": "NetworkExperimentProfiles_List", + "tags": [ + "Profiles" + ], + "summary": "Gets a list of Network Experiment Profiles under a subscription", + "description": "Gets a list of Network Experiment Profiles under a subscription", + "parameters": [ + { + "$ref": "../../../../../common-types/resource-management/v3/types.json#/parameters/ApiVersionParameter" + }, + { + "$ref": "../../../../../common-types/resource-management/v3/types.json#/parameters/SubscriptionIdParameter" + } + ], + "responses": { + "200": { + "description": "Azure operation completed successfully.", + "schema": { + "$ref": "#/definitions/ProfileList" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + } + }, + "x-ms-examples": { + "List NetworkExperiment Profiles in a Resource Group": { + "$ref": "./examples/NetworkExperimentListProfiles1.json" + } + }, + "x-ms-pageable": { + "nextLinkName": "nextLink" + } + } + }, + "/subscriptions/{subscriptionId}/providers/Microsoft.Network/checkFrontDoorNameAvailability": { + "post": { + "operationId": "FrontDoorNameAvailabilityWithSubscription_Check", + "description": "Check the availability of a Front Door subdomain.", + "parameters": [ + { + "$ref": "../../../../../common-types/resource-management/v3/types.json#/parameters/ApiVersionParameter" + }, + { + "$ref": "../../../../../common-types/resource-management/v3/types.json#/parameters/SubscriptionIdParameter" + }, + { + "name": "checkFrontDoorNameAvailabilityInput", + "in": "body", + "description": "The request body", + "required": true, + "schema": { + "$ref": "#/definitions/CheckNameAvailabilityInput" + } + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "schema": { + "$ref": "#/definitions/CheckNameAvailabilityOutput" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + } + }, + "x-ms-examples": { + "CheckNameAvailabilityWithSubscription": { + "$ref": "./examples/CheckFrontdoorNameAvailabilityWithSubscription.json" + } + } + } + }, + "/subscriptions/{subscriptionId}/providers/Microsoft.Network/frontDoors": { + "get": { + "operationId": "FrontDoors_List", + "tags": [ + "FrontDoors" + ], + "description": "Lists all of the Front Doors within an Azure subscription.", + "parameters": [ + { + "$ref": "../../../../../common-types/resource-management/v3/types.json#/parameters/ApiVersionParameter" + }, + { + "$ref": "../../../../../common-types/resource-management/v3/types.json#/parameters/SubscriptionIdParameter" + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "schema": { + "$ref": "#/definitions/FrontDoorListResult" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + } + }, + "x-ms-examples": { + "List all Front Doors": { + "$ref": "./examples/FrontdoorListAll.json" + } + }, + "x-ms-pageable": { + "nextLinkName": "nextLink" + } + } + }, + "/subscriptions/{subscriptionId}/providers/microsoft.Network/frontDoorWebApplicationFirewallManagedRuleSets": { + "get": { + "operationId": "ManagedRuleSets_List", + "description": "Lists all available managed rule sets.", + "parameters": [ + { + "$ref": "../../../../../common-types/resource-management/v3/types.json#/parameters/ApiVersionParameter" + }, + { + "$ref": "../../../../../common-types/resource-management/v3/types.json#/parameters/SubscriptionIdParameter" + } + ], + "responses": { + "200": { + "description": "Azure operation completed successfully.", + "schema": { + "$ref": "#/definitions/ManagedRuleSetDefinitionList" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + } + }, + "x-ms-examples": { + "List Policies ManagedRuleSets in a Resource Group": { + "$ref": "./examples/WafListManagedRuleSets.json" + } + }, + "x-ms-pageable": { + "nextLinkName": "nextLink" + } + } + }, + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/FrontDoorWebApplicationFirewallPolicies": { + "get": { + "operationId": "Policies_List", + "tags": [ + "WebApplicationFirewallPolicies" + ], + "description": "Lists all of the protection policies within a resource group.", + "parameters": [ + { + "$ref": "../../../../../common-types/resource-management/v3/types.json#/parameters/ApiVersionParameter" + }, + { + "$ref": "../../../../../common-types/resource-management/v3/types.json#/parameters/SubscriptionIdParameter" + }, + { + "$ref": "../../../../../common-types/resource-management/v3/types.json#/parameters/ResourceGroupNameParameter" + } + ], + "responses": { + "200": { + "description": "Azure operation completed successfully.", + "schema": { + "$ref": "#/definitions/WebApplicationFirewallPolicyList" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + } + }, + "x-ms-examples": { + "Get all Policies in a Resource Group": { + "$ref": "./examples/WafListPolicies.json" + } + }, + "x-ms-pageable": { + "nextLinkName": "nextLink" + } + } + }, + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/FrontDoorWebApplicationFirewallPolicies/{policyName}": { + "get": { + "operationId": "Policies_Get", + "tags": [ + "WebApplicationFirewallPolicies" + ], + "description": "Retrieve protection policy with specified name within a resource group.", + "parameters": [ + { + "$ref": "../../../../../common-types/resource-management/v3/types.json#/parameters/ApiVersionParameter" + }, + { + "$ref": "../../../../../common-types/resource-management/v3/types.json#/parameters/SubscriptionIdParameter" + }, + { + "$ref": "../../../../../common-types/resource-management/v3/types.json#/parameters/ResourceGroupNameParameter" + }, + { + "name": "policyName", + "in": "path", + "description": "The name of the Web Application Firewall Policy.", + "required": true, + "type": "string", + "maxLength": 128 + } + ], + "responses": { + "200": { + "description": "Azure operation completed successfully.", + "schema": { + "$ref": "#/definitions/WebApplicationFirewallPolicy" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + } + }, + "x-ms-examples": { + "Get Policy": { + "$ref": "./examples/WafPolicyGet.json" + } + } + }, + "put": { + "operationId": "Policies_CreateOrUpdate", + "tags": [ + "WebApplicationFirewallPolicies" + ], + "description": "Create or update policy with specified rule set name within a resource group.", + "parameters": [ + { + "$ref": "../../../../../common-types/resource-management/v3/types.json#/parameters/ApiVersionParameter" + }, + { + "$ref": "../../../../../common-types/resource-management/v3/types.json#/parameters/SubscriptionIdParameter" + }, + { + "$ref": "../../../../../common-types/resource-management/v3/types.json#/parameters/ResourceGroupNameParameter" + }, + { + "name": "policyName", + "in": "path", + "description": "The name of the Web Application Firewall Policy.", + "required": true, + "type": "string", + "maxLength": 128 + }, + { + "name": "parameters", + "in": "body", + "description": "Policy to be created.", + "required": true, + "schema": { + "$ref": "#/definitions/WebApplicationFirewallPolicy" + } + } + ], + "responses": { + "200": { + "description": "Resource 'WebApplicationFirewallPolicy' update operation succeeded", + "schema": { + "$ref": "#/definitions/WebApplicationFirewallPolicy" + } + }, + "201": { + "description": "Resource 'WebApplicationFirewallPolicy' create operation succeeded", + "schema": { + "$ref": "#/definitions/WebApplicationFirewallPolicy" + }, + "headers": { + "Location": { + "type": "string", + "description": "The Location header contains the URL where the status of the long running operation can be checked." + }, + "Retry-After": { + "type": "integer", + "format": "int32", + "description": "The Retry-After header can indicate how long the client should wait before polling the operation status." + } + } + }, + "202": { + "description": "The request has been accepted for processing, but processing has not yet completed.", + "schema": { + "$ref": "#/definitions/WebApplicationFirewallPolicy" + }, + "headers": { + "Location": { + "type": "string", + "description": "The Location header contains the URL where the status of the long running operation can be checked." + }, + "Retry-After": { + "type": "integer", + "format": "int32", + "description": "The Retry-After header can indicate how long the client should wait before polling the operation status." + } + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + } + }, + "x-ms-examples": { + "Creates specific policy": { + "$ref": "./examples/WafPolicyCreateOrUpdate.json" + } + }, + "x-ms-long-running-operation-options": { + "final-state-via": "location" + }, + "x-ms-long-running-operation": true + }, + "patch": { + "operationId": "Policies_Update", + "tags": [ + "WebApplicationFirewallPolicies" + ], + "description": "Patch a specific frontdoor webApplicationFirewall policy for tags update under the specified subscription and resource group.", + "parameters": [ + { + "$ref": "../../../../../common-types/resource-management/v3/types.json#/parameters/ApiVersionParameter" + }, + { + "$ref": "../../../../../common-types/resource-management/v3/types.json#/parameters/SubscriptionIdParameter" + }, + { + "$ref": "../../../../../common-types/resource-management/v3/types.json#/parameters/ResourceGroupNameParameter" + }, + { + "name": "policyName", + "in": "path", + "description": "The name of the Web Application Firewall Policy.", + "required": true, + "type": "string", + "maxLength": 128 + }, + { + "name": "parameters", + "in": "body", + "description": "FrontdoorWebApplicationFirewallPolicy parameters to be patched.", + "required": true, + "schema": { + "$ref": "#/definitions/TagsObject" + } + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "schema": { + "$ref": "#/definitions/WebApplicationFirewallPolicy" + }, + "headers": { + "Location": { + "type": "string", + "description": "The Location header contains the URL where the status of the long running operation can be checked." + } + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + } + }, + "x-ms-examples": { + "Patches specific policy": { + "$ref": "./examples/WafPolicyPatch.json" + } + }, + "x-ms-long-running-operation-options": { + "final-state-via": "location" + }, + "x-ms-long-running-operation": true + }, + "delete": { + "operationId": "Policies_Delete", + "tags": [ + "WebApplicationFirewallPolicies" + ], + "description": "Deletes Policy", + "parameters": [ + { + "$ref": "../../../../../common-types/resource-management/v3/types.json#/parameters/ApiVersionParameter" + }, + { + "$ref": "../../../../../common-types/resource-management/v3/types.json#/parameters/SubscriptionIdParameter" + }, + { + "$ref": "../../../../../common-types/resource-management/v3/types.json#/parameters/ResourceGroupNameParameter" + }, + { + "name": "policyName", + "in": "path", + "description": "The name of the Web Application Firewall Policy.", + "required": true, + "type": "string", + "maxLength": 128 + } + ], + "responses": { + "200": { + "description": "Resource deleted successfully." + }, + "202": { + "description": "Resource deletion accepted.", + "headers": { + "Location": { + "type": "string", + "description": "The Location header contains the URL where the status of the long running operation can be checked." + }, + "Retry-After": { + "type": "integer", + "format": "int32", + "description": "The Retry-After header can indicate how long the client should wait before polling the operation status." + } + } + }, + "204": { + "description": "Resource does not exist." + } + }, + "x-ms-examples": { + "Delete protection policy": { + "$ref": "./examples/WafPolicyDelete.json" + } + }, + "x-ms-long-running-operation-options": { + "final-state-via": "location" + }, + "x-ms-long-running-operation": true + } + }, + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/NetworkExperimentProfiles": { + "get": { + "operationId": "NetworkExperimentProfiles_ListByResourceGroup", + "tags": [ + "Profiles" + ], + "summary": "Gets a list of Network Experiment Profiles within a resource group under a subscription", + "description": "Gets a list of Network Experiment Profiles within a resource group under a subscription", + "parameters": [ + { + "$ref": "../../../../../common-types/resource-management/v3/types.json#/parameters/ApiVersionParameter" + }, + { + "$ref": "../../../../../common-types/resource-management/v3/types.json#/parameters/SubscriptionIdParameter" + }, + { + "$ref": "../../../../../common-types/resource-management/v3/types.json#/parameters/ResourceGroupNameParameter" + } + ], + "responses": { + "200": { + "description": "Azure operation completed successfully.", + "schema": { + "$ref": "#/definitions/ProfileList" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + } + }, + "x-ms-examples": { + "List NetworkExperiment Profiles in a Resource Group": { + "$ref": "./examples/NetworkExperimentListProfiles.json" + } + }, + "x-ms-pageable": { + "nextLinkName": "nextLink" + } + } + }, + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/NetworkExperimentProfiles/{profileName}": { + "get": { + "operationId": "NetworkExperimentProfiles_Get", + "tags": [ + "Profiles" + ], + "summary": "Gets an NetworkExperiment Profile by ProfileName", + "description": "Gets an NetworkExperiment Profile by ProfileName", + "parameters": [ + { + "$ref": "../../../../../common-types/resource-management/v3/types.json#/parameters/ApiVersionParameter" + }, + { + "$ref": "../../../../../common-types/resource-management/v3/types.json#/parameters/SubscriptionIdParameter" + }, + { + "$ref": "../../../../../common-types/resource-management/v3/types.json#/parameters/ResourceGroupNameParameter" + }, + { + "name": "profileName", + "in": "path", + "description": "The Profile identifier associated with the Tenant and Partner", + "required": true, + "type": "string", + "pattern": "^[a-zA-Z0-9_\\-\\(\\)\\.]*[^\\.]$" + } + ], + "responses": { + "200": { + "description": "Azure operation completed successfully.", + "schema": { + "$ref": "#/definitions/Profile" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + } + }, + "x-ms-examples": { + "Gets an NetworkExperiment Profile by Profile Id": { + "$ref": "./examples/NetworkExperimentGetProfile.json" + } + } + }, + "put": { + "operationId": "NetworkExperimentProfiles_CreateOrUpdate", + "tags": [ + "Profiles" + ], + "summary": "Creates an NetworkExperiment Profile", + "description": "Creates an NetworkExperiment Profile", + "parameters": [ + { + "$ref": "../../../../../common-types/resource-management/v3/types.json#/parameters/ApiVersionParameter" + }, + { + "$ref": "../../../../../common-types/resource-management/v3/types.json#/parameters/SubscriptionIdParameter" + }, + { + "$ref": "../../../../../common-types/resource-management/v3/types.json#/parameters/ResourceGroupNameParameter" + }, + { + "name": "profileName", + "in": "path", + "description": "The Profile identifier associated with the Tenant and Partner", + "required": true, + "type": "string", + "pattern": "^[a-zA-Z0-9_\\-\\(\\)\\.]*[^\\.]$" + }, + { + "name": "parameters", + "in": "body", + "description": "An Network Experiment Profile", + "required": true, + "schema": { + "$ref": "#/definitions/Profile" + } + } + ], + "responses": { + "200": { + "description": "Resource 'Profile' update operation succeeded", + "schema": { + "$ref": "#/definitions/Profile" + } + }, + "201": { + "description": "Resource 'Profile' create operation succeeded", + "schema": { + "$ref": "#/definitions/Profile" + }, + "headers": { + "Location": { + "type": "string", + "description": "The Location header contains the URL where the status of the long running operation can be checked." + }, + "Retry-After": { + "type": "integer", + "format": "int32", + "description": "The Retry-After header can indicate how long the client should wait before polling the operation status." + } + } + }, + "202": { + "description": "The request has been accepted for processing, but processing has not yet completed.", + "schema": { + "$ref": "#/definitions/Profile" + }, + "headers": { + "Location": { + "type": "string", + "description": "The Location header contains the URL where the status of the long running operation can be checked." + }, + "Retry-After": { + "type": "integer", + "format": "int32", + "description": "The Retry-After header can indicate how long the client should wait before polling the operation status." + } + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + } + }, + "x-ms-examples": { + "Creates an NetworkExperiment Profile in a Resource Group": { + "$ref": "./examples/NetworkExperimentCreateProfile.json" + } + }, + "x-ms-long-running-operation-options": { + "final-state-via": "location" + }, + "x-ms-long-running-operation": true + }, + "patch": { + "operationId": "NetworkExperimentProfiles_Update", + "tags": [ + "Profiles" + ], + "summary": "Updates an NetworkExperimentProfiles", + "description": "Updates an NetworkExperimentProfiles", + "parameters": [ + { + "$ref": "../../../../../common-types/resource-management/v3/types.json#/parameters/ApiVersionParameter" + }, + { + "$ref": "../../../../../common-types/resource-management/v3/types.json#/parameters/SubscriptionIdParameter" + }, + { + "$ref": "../../../../../common-types/resource-management/v3/types.json#/parameters/ResourceGroupNameParameter" + }, + { + "name": "profileName", + "in": "path", + "description": "The Profile identifier associated with the Tenant and Partner", + "required": true, + "type": "string", + "pattern": "^[a-zA-Z0-9_\\-\\(\\)\\.]*[^\\.]$" + }, + { + "name": "parameters", + "in": "body", + "description": "The Profile Update Model", + "required": true, + "schema": { + "$ref": "#/definitions/ProfileUpdateModel" + } + } + ], + "responses": { + "200": { + "description": "Azure operation completed successfully.", + "schema": { + "$ref": "#/definitions/Profile" + } + }, + "202": { + "description": "The request has been accepted for processing, but processing has not yet completed.", + "schema": { + "$ref": "#/definitions/Profile" + }, + "headers": { + "Location": { + "type": "string", + "description": "The Location header contains the URL where the status of the long running operation can be checked." + }, + "Retry-After": { + "type": "integer", + "format": "int32", + "description": "The Retry-After header can indicate how long the client should wait before polling the operation status." + } + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + } + }, + "x-ms-examples": { + "Updates an Experiment": { + "$ref": "./examples/NetworkExperimentUpdateProfile.json" + } + }, + "x-ms-long-running-operation-options": { + "final-state-via": "location" + }, + "x-ms-long-running-operation": true + }, + "delete": { + "operationId": "NetworkExperimentProfiles_Delete", + "tags": [ + "Profiles" + ], + "description": "Deletes an NetworkExperiment Profile by ProfileName", + "parameters": [ + { + "$ref": "../../../../../common-types/resource-management/v3/types.json#/parameters/ApiVersionParameter" + }, + { + "$ref": "../../../../../common-types/resource-management/v3/types.json#/parameters/SubscriptionIdParameter" + }, + { + "$ref": "../../../../../common-types/resource-management/v3/types.json#/parameters/ResourceGroupNameParameter" + }, + { + "name": "profileName", + "in": "path", + "description": "The Profile identifier associated with the Tenant and Partner", + "required": true, + "type": "string", + "pattern": "^[a-zA-Z0-9_\\-\\(\\)\\.]*[^\\.]$" + } + ], + "responses": { + "200": { + "description": "Resource deleted successfully." + }, + "202": { + "description": "Resource deletion accepted.", + "headers": { + "Location": { + "type": "string", + "description": "The Location header contains the URL where the status of the long running operation can be checked." + }, + "Retry-After": { + "type": "integer", + "format": "int32", + "description": "The Retry-After header can indicate how long the client should wait before polling the operation status." + } + } + }, + "204": { + "description": "Resource does not exist." + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + } + }, + "x-ms-examples": { + "Deletes an NetworkExperiment Profile by ProfileName": { + "$ref": "./examples/NetworkExperimentDeleteProfile.json" + } + }, + "x-ms-long-running-operation-options": { + "final-state-via": "location" + }, + "x-ms-long-running-operation": true + } + }, + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/NetworkExperimentProfiles/{profileName}/Experiments": { + "get": { + "operationId": "Experiments_ListByProfile", + "tags": [ + "Experiments" + ], + "summary": "Gets a list of Experiments", + "description": "Gets a list of Experiments", + "parameters": [ + { + "$ref": "../../../../../common-types/resource-management/v3/types.json#/parameters/ApiVersionParameter" + }, + { + "$ref": "../../../../../common-types/resource-management/v3/types.json#/parameters/SubscriptionIdParameter" + }, + { + "$ref": "../../../../../common-types/resource-management/v3/types.json#/parameters/ResourceGroupNameParameter" + }, + { + "name": "profileName", + "in": "path", + "description": "The Profile identifier associated with the Tenant and Partner", + "required": true, + "type": "string", + "pattern": "^[a-zA-Z0-9_\\-\\(\\)\\.]*[^\\.]$" + } + ], + "responses": { + "200": { + "description": "Azure operation completed successfully.", + "schema": { + "$ref": "#/definitions/ExperimentList" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + } + }, + "x-ms-examples": { + "Gets a list of Experiments": { + "$ref": "./examples/NetworkExperimentListExperiments.json" + } + }, + "x-ms-pageable": { + "nextLinkName": "nextLink" + } + } + }, + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/NetworkExperimentProfiles/{profileName}/Experiments/{experimentName}": { + "get": { + "operationId": "Experiments_Get", + "tags": [ + "Experiments" + ], + "summary": "Gets an Experiment by ExperimentName", + "description": "Gets an Experiment by ExperimentName", + "parameters": [ + { + "$ref": "../../../../../common-types/resource-management/v3/types.json#/parameters/ApiVersionParameter" + }, + { + "$ref": "../../../../../common-types/resource-management/v3/types.json#/parameters/SubscriptionIdParameter" + }, + { + "$ref": "../../../../../common-types/resource-management/v3/types.json#/parameters/ResourceGroupNameParameter" + }, + { + "name": "profileName", + "in": "path", + "description": "The Profile identifier associated with the Tenant and Partner", + "required": true, + "type": "string", + "pattern": "^[a-zA-Z0-9_\\-\\(\\)\\.]*[^\\.]$" + }, + { + "name": "experimentName", + "in": "path", + "description": "The Experiment identifier associated with the Experiment", + "required": true, + "type": "string", + "pattern": "^[a-zA-Z0-9_\\-\\(\\)\\.]*[^\\.]$" + } + ], + "responses": { + "200": { + "description": "Azure operation completed successfully.", + "schema": { + "$ref": "#/definitions/Experiment" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + } + }, + "x-ms-examples": { + "Gets an Experiment by ExperimentName": { + "$ref": "./examples/NetworkExperimentGetExperiment.json" + } + } + }, + "put": { + "operationId": "Experiments_CreateOrUpdate", + "tags": [ + "Experiments" + ], + "summary": "Creates or updates an Experiment", + "description": "Creates or updates an Experiment", + "parameters": [ + { + "$ref": "../../../../../common-types/resource-management/v3/types.json#/parameters/ApiVersionParameter" + }, + { + "$ref": "../../../../../common-types/resource-management/v3/types.json#/parameters/SubscriptionIdParameter" + }, + { + "$ref": "../../../../../common-types/resource-management/v3/types.json#/parameters/ResourceGroupNameParameter" + }, + { + "name": "profileName", + "in": "path", + "description": "The Profile identifier associated with the Tenant and Partner", + "required": true, + "type": "string", + "pattern": "^[a-zA-Z0-9_\\-\\(\\)\\.]*[^\\.]$" + }, + { + "name": "experimentName", + "in": "path", + "description": "The Experiment identifier associated with the Experiment", + "required": true, + "type": "string", + "pattern": "^[a-zA-Z0-9_\\-\\(\\)\\.]*[^\\.]$" + }, + { + "name": "parameters", + "in": "body", + "description": "The Experiment resource", + "required": true, + "schema": { + "$ref": "#/definitions/Experiment" + } + } + ], + "responses": { + "200": { + "description": "Resource 'Experiment' update operation succeeded", + "schema": { + "$ref": "#/definitions/Experiment" + } + }, + "201": { + "description": "Resource 'Experiment' create operation succeeded", + "schema": { + "$ref": "#/definitions/Experiment" + }, + "headers": { + "Location": { + "type": "string", + "description": "The Location header contains the URL where the status of the long running operation can be checked." + }, + "Retry-After": { + "type": "integer", + "format": "int32", + "description": "The Retry-After header can indicate how long the client should wait before polling the operation status." + } + } + }, + "202": { + "description": "The request has been accepted for processing, but processing has not yet completed.", + "schema": { + "$ref": "#/definitions/Experiment" + }, + "headers": { + "Location": { + "type": "string", + "description": "The Location header contains the URL where the status of the long running operation can be checked." + }, + "Retry-After": { + "type": "integer", + "format": "int32", + "description": "The Retry-After header can indicate how long the client should wait before polling the operation status." + } + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + } + }, + "x-ms-examples": { + "Creates an Experiment": { + "$ref": "./examples/NetworkExperimentCreateExperiment.json" + } + }, + "x-ms-long-running-operation-options": { + "final-state-via": "location" + }, + "x-ms-long-running-operation": true + }, + "patch": { + "operationId": "Experiments_Update", + "tags": [ + "Experiments" + ], + "summary": "Updates an Experiment by Experiment id", + "description": "Updates an Experiment", + "parameters": [ + { + "$ref": "../../../../../common-types/resource-management/v3/types.json#/parameters/ApiVersionParameter" + }, + { + "$ref": "../../../../../common-types/resource-management/v3/types.json#/parameters/SubscriptionIdParameter" + }, + { + "$ref": "../../../../../common-types/resource-management/v3/types.json#/parameters/ResourceGroupNameParameter" + }, + { + "name": "profileName", + "in": "path", + "description": "The Profile identifier associated with the Tenant and Partner", + "required": true, + "type": "string", + "pattern": "^[a-zA-Z0-9_\\-\\(\\)\\.]*[^\\.]$" + }, + { + "name": "experimentName", + "in": "path", + "description": "The Experiment identifier associated with the Experiment", + "required": true, + "type": "string", + "pattern": "^[a-zA-Z0-9_\\-\\(\\)\\.]*[^\\.]$" + }, + { + "name": "parameters", + "in": "body", + "description": "The Experiment Update Model", + "required": true, + "schema": { + "$ref": "#/definitions/ExperimentUpdateModel" + } + } + ], + "responses": { + "200": { + "description": "Azure operation completed successfully.", + "schema": { + "$ref": "#/definitions/Experiment" + } + }, + "202": { + "description": "The request has been accepted for processing, but processing has not yet completed.", + "schema": { + "$ref": "#/definitions/Experiment" + }, + "headers": { + "Location": { + "type": "string", + "description": "The Location header contains the URL where the status of the long running operation can be checked." + }, + "Retry-After": { + "type": "integer", + "format": "int32", + "description": "The Retry-After header can indicate how long the client should wait before polling the operation status." + } + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + } + }, + "x-ms-examples": { + "Updates an Experiment": { + "$ref": "./examples/NetworkExperimentUpdateExperiment.json" + } + }, + "x-ms-long-running-operation-options": { + "final-state-via": "location" + }, + "x-ms-long-running-operation": true + }, + "delete": { + "operationId": "Experiments_Delete", + "tags": [ + "Experiments" + ], + "summary": "Deletes an Experiment", + "description": "Deletes an Experiment", + "parameters": [ + { + "$ref": "../../../../../common-types/resource-management/v3/types.json#/parameters/ApiVersionParameter" + }, + { + "$ref": "../../../../../common-types/resource-management/v3/types.json#/parameters/SubscriptionIdParameter" + }, + { + "$ref": "../../../../../common-types/resource-management/v3/types.json#/parameters/ResourceGroupNameParameter" + }, + { + "name": "profileName", + "in": "path", + "description": "The Profile identifier associated with the Tenant and Partner", + "required": true, + "type": "string", + "pattern": "^[a-zA-Z0-9_\\-\\(\\)\\.]*[^\\.]$" + }, + { + "name": "experimentName", + "in": "path", + "description": "The Experiment identifier associated with the Experiment", + "required": true, + "type": "string", + "pattern": "^[a-zA-Z0-9_\\-\\(\\)\\.]*[^\\.]$" + } + ], + "responses": { + "200": { + "description": "Resource deleted successfully." + }, + "202": { + "description": "Resource deletion accepted.", + "headers": { + "Location": { + "type": "string", + "description": "The Location header contains the URL where the status of the long running operation can be checked." + }, + "Retry-After": { + "type": "integer", + "format": "int32", + "description": "The Retry-After header can indicate how long the client should wait before polling the operation status." + } + } + }, + "204": { + "description": "Resource does not exist." + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + } + }, + "x-ms-examples": { + "Deletes an Experiment": { + "$ref": "./examples/NetworkExperimentDeleteExperiment.json" + } + }, + "x-ms-long-running-operation-options": { + "final-state-via": "location" + }, + "x-ms-long-running-operation": true + } + }, + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/NetworkExperimentProfiles/{profileName}/Experiments/{experimentName}/latencyScorecard": { + "get": { + "operationId": "Reports_GetLatencyScorecards", + "tags": [ + "Experiments" + ], + "summary": "Gets a Latency Scorecard for a given Experiment", + "description": "Gets a Latency Scorecard for a given Experiment", + "parameters": [ + { + "$ref": "../../../../../common-types/resource-management/v3/types.json#/parameters/ApiVersionParameter" + }, + { + "$ref": "../../../../../common-types/resource-management/v3/types.json#/parameters/SubscriptionIdParameter" + }, + { + "$ref": "../../../../../common-types/resource-management/v3/types.json#/parameters/ResourceGroupNameParameter" + }, + { + "name": "profileName", + "in": "path", + "description": "The Profile identifier associated with the Tenant and Partner", + "required": true, + "type": "string", + "pattern": "^[a-zA-Z0-9_\\-\\(\\)\\.]*[^\\.]$" + }, + { + "name": "experimentName", + "in": "path", + "description": "The Experiment identifier associated with the Experiment", + "required": true, + "type": "string", + "pattern": "^[a-zA-Z0-9_\\-\\(\\)\\.]*[^\\.]$" + }, + { + "name": "endDateTimeUTC", + "in": "query", + "description": "The end DateTime of the Latency Scorecard in UTC", + "required": false, + "type": "string" + }, + { + "name": "country", + "in": "query", + "description": "The country associated with the Latency Scorecard. Values are country ISO codes as specified here- https://www.iso.org/iso-3166-country-codes.html", + "required": false, + "type": "string" + }, + { + "name": "aggregationInterval", + "in": "query", + "description": "The aggregation interval of the Latency Scorecard", + "required": true, + "type": "string", + "enum": [ + "Daily", + "Weekly", + "Monthly" + ], + "x-ms-enum": { + "name": "LatencyScorecardAggregationInterval", + "modelAsString": true, + "values": [ + { + "name": "Daily", + "value": "Daily", + "description": "Daily" + }, + { + "name": "Weekly", + "value": "Weekly", + "description": "Weekly" + }, + { + "name": "Monthly", + "value": "Monthly", + "description": "Monthly" + } + ] + } + } + ], + "responses": { + "200": { + "description": "Azure operation completed successfully.", + "schema": { + "$ref": "#/definitions/LatencyScorecard" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + } + }, + "x-ms-examples": { + "Gets a Latency Scorecard for a given Experiment": { + "$ref": "./examples/NetworkExperimentGetLatencyScorecard.json" + } + } + } + }, + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/NetworkExperimentProfiles/{profileName}/Experiments/{experimentName}/timeseries": { + "get": { + "operationId": "Reports_GetTimeseries", + "tags": [ + "Experiments" + ], + "summary": "Gets a Timeseries for a given Experiment", + "description": "Gets a Timeseries for a given Experiment", + "parameters": [ + { + "$ref": "../../../../../common-types/resource-management/v3/types.json#/parameters/ApiVersionParameter" + }, + { + "$ref": "../../../../../common-types/resource-management/v3/types.json#/parameters/SubscriptionIdParameter" + }, + { + "$ref": "../../../../../common-types/resource-management/v3/types.json#/parameters/ResourceGroupNameParameter" + }, + { + "name": "profileName", + "in": "path", + "description": "The Profile identifier associated with the Tenant and Partner", + "required": true, + "type": "string", + "pattern": "^[a-zA-Z0-9_\\-\\(\\)\\.]*[^\\.]$" + }, + { + "name": "experimentName", + "in": "path", + "description": "The Experiment identifier associated with the Experiment", + "required": true, + "type": "string", + "pattern": "^[a-zA-Z0-9_\\-\\(\\)\\.]*[^\\.]$" + }, + { + "name": "startDateTimeUTC", + "in": "query", + "description": "The start DateTime of the Timeseries in UTC", + "required": true, + "type": "string", + "format": "date-time" + }, + { + "name": "endDateTimeUTC", + "in": "query", + "description": "The end DateTime of the Timeseries in UTC", + "required": true, + "type": "string", + "format": "date-time" + }, + { + "name": "aggregationInterval", + "in": "query", + "description": "The aggregation interval of the Timeseries", + "required": true, + "type": "string", + "enum": [ + "Hourly", + "Daily" + ], + "x-ms-enum": { + "name": "TimeseriesAggregationInterval", + "modelAsString": true, + "values": [ + { + "name": "Hourly", + "value": "Hourly", + "description": "Hourly" + }, + { + "name": "Daily", + "value": "Daily", + "description": "Daily" + } + ] + } + }, + { + "name": "timeseriesType", + "in": "query", + "description": "The type of Timeseries", + "required": true, + "type": "string", + "enum": [ + "MeasurementCounts", + "LatencyP50", + "LatencyP75", + "LatencyP95" + ], + "x-ms-enum": { + "name": "TimeseriesType", + "modelAsString": true, + "values": [ + { + "name": "MeasurementCounts", + "value": "MeasurementCounts", + "description": "MeasurementCounts" + }, + { + "name": "LatencyP50", + "value": "LatencyP50", + "description": "LatencyP50" + }, + { + "name": "LatencyP75", + "value": "LatencyP75", + "description": "LatencyP75" + }, + { + "name": "LatencyP95", + "value": "LatencyP95", + "description": "LatencyP95" + } + ] + } + }, + { + "name": "endpoint", + "in": "query", + "description": "The specific endpoint", + "required": false, + "type": "string" + }, + { + "name": "country", + "in": "query", + "description": "The country associated with the Timeseries. Values are country ISO codes as specified here- https://www.iso.org/iso-3166-country-codes.html", + "required": false, + "type": "string" + } + ], + "responses": { + "200": { + "description": "Azure operation completed successfully.", + "schema": { + "$ref": "#/definitions/Timeseries" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + } + }, + "x-ms-examples": { + "Gets a Timeseries for a given Experiment": { + "$ref": "./examples/NetworkExperimentGetTimeseries.json" + } + } + } + }, + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/NetworkExperimentProfiles/{profileName}/preconfiguredEndpoints": { + "get": { + "operationId": "PreconfiguredEndpoints_List", + "tags": [ + "Profiles" + ], + "summary": "Gets a list of Preconfigured Endpoints", + "description": "Gets a list of Preconfigured Endpoints", + "parameters": [ + { + "$ref": "../../../../../common-types/resource-management/v3/types.json#/parameters/ApiVersionParameter" + }, + { + "$ref": "../../../../../common-types/resource-management/v3/types.json#/parameters/SubscriptionIdParameter" + }, + { + "$ref": "../../../../../common-types/resource-management/v3/types.json#/parameters/ResourceGroupNameParameter" + }, + { + "name": "profileName", + "in": "path", + "description": "The Profile identifier associated with the Tenant and Partner", + "required": true, + "type": "string", + "pattern": "^[a-zA-Z0-9_\\-\\(\\)\\.]*[^\\.]$" + } + ], + "responses": { + "200": { + "description": "Azure operation completed successfully.", + "schema": { + "$ref": "#/definitions/PreconfiguredEndpointList" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + } + }, + "x-ms-examples": { + "Gets a list of Preconfigured Endpoints": { + "$ref": "./examples/NetworkExperimentGetPreconfiguredEndpoints.json" + } + }, + "x-ms-pageable": { + "nextLinkName": "nextLink" + } + } + }, + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/frontDoors": { + "get": { + "operationId": "FrontDoors_ListByResourceGroup", + "tags": [ + "FrontDoors" + ], + "description": "Lists all of the Front Doors within a resource group under a subscription.", + "parameters": [ + { + "$ref": "../../../../../common-types/resource-management/v3/types.json#/parameters/ApiVersionParameter" + }, + { + "$ref": "../../../../../common-types/resource-management/v3/types.json#/parameters/SubscriptionIdParameter" + }, + { + "$ref": "../../../../../common-types/resource-management/v3/types.json#/parameters/ResourceGroupNameParameter" + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "schema": { + "$ref": "#/definitions/FrontDoorListResult" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + } + }, + "x-ms-examples": { + "List Front Doors in a Resource Group": { + "$ref": "./examples/FrontdoorList.json" + } + }, + "x-ms-pageable": { + "nextLinkName": "nextLink" + } + } + }, + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/frontDoors/{frontDoorName}": { + "get": { + "operationId": "FrontDoors_Get", + "tags": [ + "FrontDoors" + ], + "description": "Gets a Front Door with the specified Front Door name under the specified subscription and resource group.", + "parameters": [ + { + "$ref": "../../../../../common-types/resource-management/v3/types.json#/parameters/ApiVersionParameter" + }, + { + "$ref": "../../../../../common-types/resource-management/v3/types.json#/parameters/SubscriptionIdParameter" + }, + { + "$ref": "../../../../../common-types/resource-management/v3/types.json#/parameters/ResourceGroupNameParameter" + }, + { + "name": "frontDoorName", + "in": "path", + "description": "Name of the Front Door which is globally unique.", + "required": true, + "type": "string", + "minLength": 5, + "maxLength": 64, + "pattern": "^[a-zA-Z0-9]+([-a-zA-Z0-9]?[a-zA-Z0-9])*$" + } + ], + "responses": { + "200": { + "description": "Azure operation completed successfully.", + "schema": { + "$ref": "#/definitions/FrontDoor" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + } + }, + "x-ms-examples": { + "Get Front Door": { + "$ref": "./examples/FrontdoorGet.json" + } + } + }, + "put": { + "operationId": "FrontDoors_CreateOrUpdate", + "tags": [ + "FrontDoors" + ], + "description": "Creates a new Front Door with a Front Door name under the specified subscription and resource group.", + "parameters": [ + { + "$ref": "../../../../../common-types/resource-management/v3/types.json#/parameters/ApiVersionParameter" + }, + { + "$ref": "../../../../../common-types/resource-management/v3/types.json#/parameters/SubscriptionIdParameter" + }, + { + "$ref": "../../../../../common-types/resource-management/v3/types.json#/parameters/ResourceGroupNameParameter" + }, + { + "name": "frontDoorName", + "in": "path", + "description": "Name of the Front Door which is globally unique.", + "required": true, + "type": "string", + "minLength": 5, + "maxLength": 64, + "pattern": "^[a-zA-Z0-9]+([-a-zA-Z0-9]?[a-zA-Z0-9])*$" + }, + { + "name": "frontDoorParameters", + "in": "body", + "description": "Front Door properties needed to create a new Front Door.", + "required": true, + "schema": { + "$ref": "#/definitions/FrontDoor" + } + } + ], + "responses": { + "200": { + "description": "Resource 'FrontDoor' update operation succeeded", + "schema": { + "$ref": "#/definitions/FrontDoor" + } + }, + "201": { + "description": "Resource 'FrontDoor' create operation succeeded", + "schema": { + "$ref": "#/definitions/FrontDoor" + }, + "headers": { + "Azure-AsyncOperation": { + "type": "string", + "description": "A link to the status monitor" + }, + "Location": { + "type": "string", + "description": "The Location header contains the URL where the status of the long running operation can be checked." + }, + "Retry-After": { + "type": "integer", + "format": "int32", + "description": "The Retry-After header can indicate how long the client should wait before polling the operation status." + } + } + }, + "202": { + "description": "The request has been accepted for processing, but processing has not yet completed.", + "schema": { + "$ref": "#/definitions/FrontDoor" + }, + "headers": { + "Location": { + "type": "string", + "description": "The Location header contains the URL where the status of the long running operation can be checked." + }, + "Retry-After": { + "type": "integer", + "format": "int32", + "description": "The Retry-After header can indicate how long the client should wait before polling the operation status." + } + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + } + }, + "x-ms-examples": { + "Create or update specific Front Door": { + "$ref": "./examples/FrontdoorCreate.json" + } + }, + "x-ms-long-running-operation-options": { + "final-state-via": "azure-async-operation" + }, + "x-ms-long-running-operation": true + }, + "delete": { + "operationId": "FrontDoors_Delete", + "tags": [ + "FrontDoors" + ], + "description": "Deletes an existing Front Door with the specified parameters.", + "parameters": [ + { + "$ref": "../../../../../common-types/resource-management/v3/types.json#/parameters/ApiVersionParameter" + }, + { + "$ref": "../../../../../common-types/resource-management/v3/types.json#/parameters/SubscriptionIdParameter" + }, + { + "$ref": "../../../../../common-types/resource-management/v3/types.json#/parameters/ResourceGroupNameParameter" + }, + { + "name": "frontDoorName", + "in": "path", + "description": "Name of the Front Door which is globally unique.", + "required": true, + "type": "string", + "minLength": 5, + "maxLength": 64, + "pattern": "^[a-zA-Z0-9]+([-a-zA-Z0-9]?[a-zA-Z0-9])*$" + } + ], + "responses": { + "202": { + "description": "Resource deletion accepted.", + "headers": { + "Azure-AsyncOperation": { + "type": "string", + "description": "A link to the status monitor" + }, + "Retry-After": { + "type": "integer", + "format": "int32", + "description": "The Retry-After header can indicate how long the client should wait before polling the operation status." + } + } + }, + "204": { + "description": "Resource does not exist." + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + } + }, + "x-ms-examples": { + "Delete Front Door": { + "$ref": "./examples/FrontdoorDelete.json" + } + }, + "x-ms-long-running-operation-options": { + "final-state-via": "azure-async-operation" + }, + "x-ms-long-running-operation": true + } + }, + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/frontDoors/{frontDoorName}/frontendEndpoints": { + "get": { + "operationId": "FrontendEndpoints_ListByFrontDoor", + "tags": [ + "FrontendEndpoints" + ], + "description": "Lists all of the frontend endpoints within a Front Door.", + "parameters": [ + { + "$ref": "../../../../../common-types/resource-management/v3/types.json#/parameters/ApiVersionParameter" + }, + { + "$ref": "../../../../../common-types/resource-management/v3/types.json#/parameters/SubscriptionIdParameter" + }, + { + "$ref": "../../../../../common-types/resource-management/v3/types.json#/parameters/ResourceGroupNameParameter" + }, + { + "name": "frontDoorName", + "in": "path", + "description": "Name of the Front Door which is globally unique.", + "required": true, + "type": "string", + "minLength": 5, + "maxLength": 64, + "pattern": "^[a-zA-Z0-9]+([-a-zA-Z0-9]?[a-zA-Z0-9])*$" + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "schema": { + "$ref": "#/definitions/FrontendEndpointsListResult" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + } + }, + "x-ms-examples": { + "List Frontend endpoints in a Front Door": { + "$ref": "./examples/FrontdoorFrontendEndpointList.json" + } + }, + "x-ms-pageable": { + "nextLinkName": "nextLink" + } + } + }, + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/frontDoors/{frontDoorName}/frontendEndpoints/{frontendEndpointName}": { + "get": { + "operationId": "FrontendEndpoints_Get", + "tags": [ + "FrontendEndpoints" + ], + "description": "Gets a Frontend endpoint with the specified name within the specified Front Door.", + "parameters": [ + { + "$ref": "../../../../../common-types/resource-management/v3/types.json#/parameters/ApiVersionParameter" + }, + { + "$ref": "../../../../../common-types/resource-management/v3/types.json#/parameters/SubscriptionIdParameter" + }, + { + "$ref": "../../../../../common-types/resource-management/v3/types.json#/parameters/ResourceGroupNameParameter" + }, + { + "name": "frontDoorName", + "in": "path", + "description": "Name of the Front Door which is globally unique.", + "required": true, + "type": "string", + "minLength": 5, + "maxLength": 64, + "pattern": "^[a-zA-Z0-9]+([-a-zA-Z0-9]?[a-zA-Z0-9])*$" + }, + { + "name": "frontendEndpointName", + "in": "path", + "description": "Name of the Frontend endpoint which is unique within the Front Door.", + "required": true, + "type": "string", + "minLength": 1, + "maxLength": 255, + "pattern": "^[a-zA-Z0-9]+(-*[a-zA-Z0-9])*$" + } + ], + "responses": { + "200": { + "description": "Azure operation completed successfully.", + "schema": { + "$ref": "#/definitions/FrontendEndpoint" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + } + }, + "x-ms-examples": { + "Get Frontend Endpoint": { + "$ref": "./examples/FrontdoorFrontendEndpointGet.json" + } + } + } + }, + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/frontDoors/{frontDoorName}/frontendEndpoints/{frontendEndpointName}/disableHttps": { + "post": { + "operationId": "FrontendEndpoints_DisableHttps", + "tags": [ + "FrontendEndpoints" + ], + "description": "Disables a frontendEndpoint for HTTPS traffic", + "parameters": [ + { + "$ref": "../../../../../common-types/resource-management/v3/types.json#/parameters/ApiVersionParameter" + }, + { + "$ref": "../../../../../common-types/resource-management/v3/types.json#/parameters/SubscriptionIdParameter" + }, + { + "$ref": "../../../../../common-types/resource-management/v3/types.json#/parameters/ResourceGroupNameParameter" + }, + { + "name": "frontDoorName", + "in": "path", + "description": "Name of the Front Door which is globally unique.", + "required": true, + "type": "string", + "minLength": 5, + "maxLength": 64, + "pattern": "^[a-zA-Z0-9]+([-a-zA-Z0-9]?[a-zA-Z0-9])*$" + }, + { + "name": "frontendEndpointName", + "in": "path", + "description": "Name of the Frontend endpoint which is unique within the Front Door.", + "required": true, + "type": "string", + "minLength": 1, + "maxLength": 255, + "pattern": "^[a-zA-Z0-9]+(-*[a-zA-Z0-9])*$" + } + ], + "responses": { + "200": { + "description": "The request has succeeded." + }, + "202": { + "description": "Resource operation accepted.", + "headers": { + "Azure-AsyncOperation": { + "type": "string", + "description": "A link to the status monitor" + }, + "Retry-After": { + "type": "integer", + "format": "int32", + "description": "The Retry-After header can indicate how long the client should wait before polling the operation status." + } + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + } + }, + "x-ms-examples": { + "FrontendEndpoints_DisableHttps": { + "$ref": "./examples/FrontdoorDisableHttps.json" + } + }, + "x-ms-long-running-operation-options": { + "final-state-via": "azure-async-operation" + }, + "x-ms-long-running-operation": true + } + }, + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/frontDoors/{frontDoorName}/frontendEndpoints/{frontendEndpointName}/enableHttps": { + "post": { + "operationId": "FrontendEndpoints_EnableHttps", + "tags": [ + "FrontendEndpoints" + ], + "description": "Enables a frontendEndpoint for HTTPS traffic", + "parameters": [ + { + "$ref": "../../../../../common-types/resource-management/v3/types.json#/parameters/ApiVersionParameter" + }, + { + "$ref": "../../../../../common-types/resource-management/v3/types.json#/parameters/SubscriptionIdParameter" + }, + { + "$ref": "../../../../../common-types/resource-management/v3/types.json#/parameters/ResourceGroupNameParameter" + }, + { + "name": "frontDoorName", + "in": "path", + "description": "Name of the Front Door which is globally unique.", + "required": true, + "type": "string", + "minLength": 5, + "maxLength": 64, + "pattern": "^[a-zA-Z0-9]+([-a-zA-Z0-9]?[a-zA-Z0-9])*$" + }, + { + "name": "frontendEndpointName", + "in": "path", + "description": "Name of the Frontend endpoint which is unique within the Front Door.", + "required": true, + "type": "string", + "minLength": 1, + "maxLength": 255, + "pattern": "^[a-zA-Z0-9]+(-*[a-zA-Z0-9])*$" + }, + { + "name": "customHttpsConfiguration", + "in": "body", + "description": "The configuration specifying how to enable HTTPS", + "required": true, + "schema": { + "$ref": "#/definitions/CustomHttpsConfiguration" + } + } + ], + "responses": { + "200": { + "description": "The request has succeeded." + }, + "202": { + "description": "Resource operation accepted.", + "headers": { + "Azure-AsyncOperation": { + "type": "string", + "description": "A link to the status monitor" + }, + "Retry-After": { + "type": "integer", + "format": "int32", + "description": "The Retry-After header can indicate how long the client should wait before polling the operation status." + } + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + } + }, + "x-ms-examples": { + "FrontendEndpoints_EnableHttps": { + "$ref": "./examples/FrontdoorEnableHttps.json" + } + }, + "x-ms-long-running-operation-options": { + "final-state-via": "azure-async-operation" + }, + "x-ms-long-running-operation": true + } + }, + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/frontDoors/{frontDoorName}/purge": { + "post": { + "operationId": "Endpoints_PurgeContent", + "tags": [ + "FrontDoors" + ], + "description": "Removes a content from Front Door.", + "parameters": [ + { + "$ref": "../../../../../common-types/resource-management/v3/types.json#/parameters/ApiVersionParameter" + }, + { + "$ref": "../../../../../common-types/resource-management/v3/types.json#/parameters/SubscriptionIdParameter" + }, + { + "$ref": "../../../../../common-types/resource-management/v3/types.json#/parameters/ResourceGroupNameParameter" + }, + { + "name": "frontDoorName", + "in": "path", + "description": "Name of the Front Door which is globally unique.", + "required": true, + "type": "string", + "minLength": 5, + "maxLength": 64, + "pattern": "^[a-zA-Z0-9]+([-a-zA-Z0-9]?[a-zA-Z0-9])*$" + }, + { + "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" + } + } + ], + "responses": { + "200": { + "description": "The request has succeeded." + }, + "202": { + "description": "Resource operation accepted.", + "headers": { + "Azure-AsyncOperation": { + "type": "string", + "description": "A link to the status monitor" + }, + "Retry-After": { + "type": "integer", + "format": "int32", + "description": "The Retry-After header can indicate how long the client should wait before polling the operation status." + } + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + } + }, + "x-ms-examples": { + "Purge content from Front Door": { + "$ref": "./examples/FrontdoorPurgeContent.json" + } + }, + "x-ms-long-running-operation-options": { + "final-state-via": "azure-async-operation" + }, + "x-ms-long-running-operation": true + } + }, + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/frontDoors/{frontDoorName}/rulesEngines": { + "get": { + "operationId": "RulesEngines_ListByFrontDoor", + "tags": [ + "RulesEngines" + ], + "description": "Lists all of the Rules Engine Configurations within a Front Door.", + "parameters": [ + { + "$ref": "../../../../../common-types/resource-management/v3/types.json#/parameters/ApiVersionParameter" + }, + { + "$ref": "../../../../../common-types/resource-management/v3/types.json#/parameters/SubscriptionIdParameter" + }, + { + "$ref": "../../../../../common-types/resource-management/v3/types.json#/parameters/ResourceGroupNameParameter" + }, + { + "name": "frontDoorName", + "in": "path", + "description": "Name of the Front Door which is globally unique.", + "required": true, + "type": "string", + "minLength": 5, + "maxLength": 64, + "pattern": "^[a-zA-Z0-9]+([-a-zA-Z0-9]?[a-zA-Z0-9])*$" + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "schema": { + "$ref": "#/definitions/RulesEngineListResult" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + } + }, + "x-ms-examples": { + "List Rules Engine Configurations in a Front Door": { + "$ref": "./examples/FrontdoorRulesEngineList.json" + } + }, + "x-ms-pageable": { + "nextLinkName": "nextLink" + } + } + }, + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/frontDoors/{frontDoorName}/rulesEngines/{rulesEngineName}": { + "get": { + "operationId": "RulesEngines_Get", + "tags": [ + "RulesEngines" + ], + "description": "Gets a Rules Engine Configuration with the specified name within the specified Front Door.", + "parameters": [ + { + "$ref": "../../../../../common-types/resource-management/v3/types.json#/parameters/ApiVersionParameter" + }, + { + "$ref": "../../../../../common-types/resource-management/v3/types.json#/parameters/SubscriptionIdParameter" + }, + { + "$ref": "../../../../../common-types/resource-management/v3/types.json#/parameters/ResourceGroupNameParameter" + }, + { + "name": "frontDoorName", + "in": "path", + "description": "Name of the Front Door which is globally unique.", + "required": true, + "type": "string", + "minLength": 5, + "maxLength": 64, + "pattern": "^[a-zA-Z0-9]+([-a-zA-Z0-9]?[a-zA-Z0-9])*$" + }, + { + "name": "rulesEngineName", + "in": "path", + "description": "Name of the Rules Engine which is unique within the Front Door.", + "required": true, + "type": "string", + "minLength": 1, + "maxLength": 90, + "pattern": "^[a-zA-Z0-9]+(-*[a-zA-Z0-9])*$" + } + ], + "responses": { + "200": { + "description": "Azure operation completed successfully.", + "schema": { + "$ref": "#/definitions/RulesEngine" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + } + }, + "x-ms-examples": { + "Get Rules Engine Configuration": { + "$ref": "./examples/FrontdoorRulesEngineGet.json" + } + } + }, + "put": { + "operationId": "RulesEngines_CreateOrUpdate", + "tags": [ + "RulesEngines" + ], + "description": "Creates a new Rules Engine Configuration with the specified name within the specified Front Door.", + "parameters": [ + { + "$ref": "../../../../../common-types/resource-management/v3/types.json#/parameters/ApiVersionParameter" + }, + { + "$ref": "../../../../../common-types/resource-management/v3/types.json#/parameters/SubscriptionIdParameter" + }, + { + "$ref": "../../../../../common-types/resource-management/v3/types.json#/parameters/ResourceGroupNameParameter" + }, + { + "name": "frontDoorName", + "in": "path", + "description": "Name of the Front Door which is globally unique.", + "required": true, + "type": "string", + "minLength": 5, + "maxLength": 64, + "pattern": "^[a-zA-Z0-9]+([-a-zA-Z0-9]?[a-zA-Z0-9])*$" + }, + { + "name": "rulesEngineName", + "in": "path", + "description": "Name of the Rules Engine which is unique within the Front Door.", + "required": true, + "type": "string", + "minLength": 1, + "maxLength": 90, + "pattern": "^[a-zA-Z0-9]+(-*[a-zA-Z0-9])*$" + }, + { + "name": "rulesEngineParameters", + "in": "body", + "description": "Rules Engine Configuration properties needed to create a new Rules Engine Configuration.", + "required": true, + "schema": { + "$ref": "#/definitions/RulesEngine" + } + } + ], + "responses": { + "200": { + "description": "Resource 'RulesEngine' update operation succeeded", + "schema": { + "$ref": "#/definitions/RulesEngine" + } + }, + "201": { + "description": "Resource 'RulesEngine' create operation succeeded", + "schema": { + "$ref": "#/definitions/RulesEngine" + }, + "headers": { + "Azure-AsyncOperation": { + "type": "string", + "description": "A link to the status monitor" + }, + "Retry-After": { + "type": "integer", + "format": "int32", + "description": "The Retry-After header can indicate how long the client should wait before polling the operation status." + } + } + }, + "202": { + "description": "The request has been accepted for processing, but processing has not yet completed.", + "schema": { + "$ref": "#/definitions/RulesEngine" + }, + "headers": { + "Azure-AsyncOperation": { + "type": "string", + "description": "A link to the status monitor" + } + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + } + }, + "x-ms-examples": { + "Create or update a specific Rules Engine Configuration": { + "$ref": "./examples/FrontdoorRulesEngineCreate.json" + } + }, + "x-ms-long-running-operation-options": { + "final-state-via": "azure-async-operation" + }, + "x-ms-long-running-operation": true + }, + "delete": { + "operationId": "RulesEngines_Delete", + "tags": [ + "RulesEngines" + ], + "description": "Deletes an existing Rules Engine Configuration with the specified parameters.", + "parameters": [ + { + "$ref": "../../../../../common-types/resource-management/v3/types.json#/parameters/ApiVersionParameter" + }, + { + "$ref": "../../../../../common-types/resource-management/v3/types.json#/parameters/SubscriptionIdParameter" + }, + { + "$ref": "../../../../../common-types/resource-management/v3/types.json#/parameters/ResourceGroupNameParameter" + }, + { + "name": "frontDoorName", + "in": "path", + "description": "Name of the Front Door which is globally unique.", + "required": true, + "type": "string", + "minLength": 5, + "maxLength": 64, + "pattern": "^[a-zA-Z0-9]+([-a-zA-Z0-9]?[a-zA-Z0-9])*$" + }, + { + "name": "rulesEngineName", + "in": "path", + "description": "Name of the Rules Engine which is unique within the Front Door.", + "required": true, + "type": "string", + "minLength": 1, + "maxLength": 90, + "pattern": "^[a-zA-Z0-9]+(-*[a-zA-Z0-9])*$" + } + ], + "responses": { + "202": { + "description": "Resource deletion accepted.", + "headers": { + "Azure-AsyncOperation": { + "type": "string", + "description": "A link to the status monitor" + }, + "Retry-After": { + "type": "integer", + "format": "int32", + "description": "The Retry-After header can indicate how long the client should wait before polling the operation status." + } + } + }, + "204": { + "description": "Resource does not exist." + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + } + }, + "x-ms-examples": { + "Delete Rules Engine Configuration": { + "$ref": "./examples/FrontdoorRulesEngineDelete.json" + } + }, + "x-ms-long-running-operation-options": { + "final-state-via": "azure-async-operation" + }, + "x-ms-long-running-operation": true + } + }, + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/frontDoors/{frontDoorName}/validateCustomDomain": { + "post": { + "operationId": "FrontDoors_ValidateCustomDomain", + "tags": [ + "FrontDoors" + ], + "description": "Validates the custom domain mapping to ensure it maps to the correct Front Door endpoint in DNS.", + "parameters": [ + { + "$ref": "../../../../../common-types/resource-management/v3/types.json#/parameters/ApiVersionParameter" + }, + { + "$ref": "../../../../../common-types/resource-management/v3/types.json#/parameters/SubscriptionIdParameter" + }, + { + "$ref": "../../../../../common-types/resource-management/v3/types.json#/parameters/ResourceGroupNameParameter" + }, + { + "name": "frontDoorName", + "in": "path", + "description": "Name of the Front Door which is globally unique.", + "required": true, + "type": "string", + "minLength": 5, + "maxLength": 64, + "pattern": "^[a-zA-Z0-9]+([-a-zA-Z0-9]?[a-zA-Z0-9])*$" + }, + { + "name": "customDomainProperties", + "in": "body", + "description": "Custom domain to be validated.", + "required": true, + "schema": { + "$ref": "#/definitions/ValidateCustomDomainInput" + } + } + ], + "responses": { + "200": { + "description": "Azure operation completed successfully.", + "schema": { + "$ref": "#/definitions/ValidateCustomDomainOutput" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + } + }, + "x-ms-examples": { + "FrontDoor_ValidateCustomDomain": { + "$ref": "./examples/FrontdoorValidateCustomDomain.json" + } + } + } + } + }, + "definitions": { + "ActionType": { + "type": "string", + "description": "Defines the action to take on rule match.", + "enum": [ + "Allow", + "Block", + "Log", + "Redirect", + "AnomalyScoring", + "JSChallenge", + "CAPTCHA" + ], + "x-ms-enum": { + "name": "ActionType", + "modelAsString": true, + "values": [ + { + "name": "Allow", + "value": "Allow", + "description": "Allow" + }, + { + "name": "Block", + "value": "Block", + "description": "Block" + }, + { + "name": "Log", + "value": "Log", + "description": "Log" + }, + { + "name": "Redirect", + "value": "Redirect", + "description": "Redirect" + }, + { + "name": "AnomalyScoring", + "value": "AnomalyScoring", + "description": "AnomalyScoring" + }, + { + "name": "JSChallenge", + "value": "JSChallenge", + "description": "JSChallenge" + }, + { + "name": "CAPTCHA", + "value": "CAPTCHA", + "description": "CAPTCHA" + } + ] + } + }, + "AggregationInterval": { + "type": "string", + "description": "The aggregation interval of the Timeseries", + "enum": [ + "Hourly", + "Daily" + ], + "x-ms-enum": { + "name": "AggregationInterval", + "modelAsString": true, + "values": [ + { + "name": "Hourly", + "value": "Hourly", + "description": "Hourly" + }, + { + "name": "Daily", + "value": "Daily", + "description": "Daily" + } + ] + } + }, + "Availability": { + "type": "string", + "description": "Indicates whether the name is available.", + "enum": [ + "Available", + "Unavailable" + ], + "x-ms-enum": { + "name": "Availability", + "modelAsString": true, + "values": [ + { + "name": "Available", + "value": "Available", + "description": "Available" + }, + { + "name": "Unavailable", + "value": "Unavailable", + "description": "Unavailable" + } + ] + } + }, + "Backend": { + "type": "object", + "description": "Backend address of a frontDoor load balancer.", + "properties": { + "address": { + "type": "string", + "description": "Location of the backend (IP address or FQDN)" + }, + "privateLinkAlias": { + "type": "string", + "description": "The Alias of the Private Link resource. Populating this optional field indicates that this backend is 'Private'" + }, + "privateLinkResourceId": { + "type": "string", + "description": "The Resource Id of the Private Link resource. Populating this optional field indicates that this backend is 'Private'" + }, + "privateLinkLocation": { + "type": "string", + "description": "The location of the Private Link resource. Required only if 'privateLinkResourceId' is populated" + }, + "privateEndpointStatus": { + "$ref": "#/definitions/PrivateEndpointStatus", + "description": "The Approval status for the connection to the Private Link", + "readOnly": true + }, + "privateLinkApprovalMessage": { + "type": "string", + "description": "A custom message to be included in the approval request to connect to the Private Link" + }, + "httpPort": { + "type": "integer", + "format": "int32", + "description": "The HTTP TCP port number. Must be between 1 and 65535.", + "minimum": 1, + "maximum": 65535 + }, + "httpsPort": { + "type": "integer", + "format": "int32", + "description": "The HTTPS TCP port number. Must be between 1 and 65535.", + "minimum": 1, + "maximum": 65535 + }, + "enabledState": { + "$ref": "#/definitions/BackendEnabledState", + "description": "Whether to enable use of this backend. Permitted values are 'Enabled' or 'Disabled'" + }, + "priority": { + "type": "integer", + "format": "int32", + "description": "Priority to use for load balancing. Higher priorities will not be used for load balancing if any lower priority backend is healthy.", + "minimum": 1, + "maximum": 5 + }, + "weight": { + "type": "integer", + "format": "int32", + "description": "Weight of this endpoint for load balancing purposes.", + "minimum": 1, + "maximum": 1000 + }, + "backendHostHeader": { + "type": "string", + "description": "The value to use as the host header sent to the backend. If blank or unspecified, this defaults to the incoming host." + } + } + }, + "BackendEnabledState": { + "type": "string", + "description": "Whether to enable use of this backend. Permitted values are 'Enabled' or 'Disabled'", + "enum": [ + "Enabled", + "Disabled" + ], + "x-ms-enum": { + "name": "BackendEnabledState", + "modelAsString": true, + "values": [ + { + "name": "Enabled", + "value": "Enabled", + "description": "Enabled" + }, + { + "name": "Disabled", + "value": "Disabled", + "description": "Disabled" + } + ] + } + }, + "BackendPool": { + "type": "object", + "description": "A backend pool is a collection of backends that can be routed to.", + "properties": { + "properties": { + "$ref": "#/definitions/BackendPoolProperties", + "description": "Properties of the Front Door Backend Pool", + "x-ms-client-flatten": true + }, + "name": { + "type": "string", + "description": "Resource name." + }, + "type": { + "type": "string", + "description": "Resource type.", + "readOnly": true + } + }, + "allOf": [ + { + "$ref": "#/definitions/SubResource" + } + ] + }, + "BackendPoolProperties": { + "type": "object", + "description": "The JSON object that contains the properties required to create a Backend Pool.", + "properties": { + "resourceState": { + "$ref": "#/definitions/FrontDoorResourceState", + "title": "Resource status of the Front Door or Front Door SubResource.", + "description": "Resource status.", + "readOnly": true + } + }, + "allOf": [ + { + "$ref": "#/definitions/BackendPoolUpdateParameters" + } + ] + }, + "BackendPoolUpdateParameters": { + "type": "object", + "description": "A collection of backends that can be routed to.", + "properties": { + "backends": { + "type": "array", + "description": "The set of backends for this pool", + "items": { + "$ref": "#/definitions/Backend" + } + }, + "loadBalancingSettings": { + "$ref": "#/definitions/SubResource", + "description": "Load balancing settings for a backend pool" + }, + "healthProbeSettings": { + "$ref": "#/definitions/SubResource", + "description": "L7 health probe settings for a backend pool" + } + } + }, + "BackendPoolsSettings": { + "type": "object", + "description": "Settings that apply to all backend pools.", + "properties": { + "enforceCertificateNameCheck": { + "type": "string", + "description": "Whether to enforce certificate name check on HTTPS requests to all backend pools. No effect on non-HTTPS requests.", + "default": "Enabled", + "enum": [ + "Enabled", + "Disabled" + ], + "x-ms-enum": { + "name": "EnforceCertificateNameCheckEnabledState", + "modelAsString": true, + "values": [ + { + "name": "Enabled", + "value": "Enabled", + "description": "Enabled" + }, + { + "name": "Disabled", + "value": "Disabled", + "description": "Disabled" + } + ] + } + }, + "sendRecvTimeoutSeconds": { + "type": "integer", + "format": "int32", + "description": "Send and receive timeout on forwarding request to the backend. When timeout is reached, the request fails and returns.", + "minimum": 16 + } + } + }, + "CacheConfiguration": { + "type": "object", + "description": "Caching settings for a caching-type route. To disable caching, do not provide a cacheConfiguration object.", + "properties": { + "queryParameterStripDirective": { + "$ref": "#/definitions/FrontDoorQuery", + "description": "Treatment of URL query terms when forming the cache key." + }, + "queryParameters": { + "type": "string", + "description": "query parameters to include or exclude (comma separated)." + }, + "dynamicCompression": { + "$ref": "#/definitions/DynamicCompressionEnabled", + "description": "Whether to use dynamic compression for cached content" + }, + "cacheDuration": { + "type": "string", + "format": "duration", + "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" + } + } + }, + "CheckNameAvailabilityInput": { + "type": "object", + "description": "Input of CheckNameAvailability API.", + "properties": { + "name": { + "type": "string", + "description": "The resource name to validate." + }, + "type": { + "$ref": "#/definitions/ResourceType", + "description": "The type of the resource whose name is to be validated." + } + }, + "required": [ + "name", + "type" + ] + }, + "CheckNameAvailabilityOutput": { + "type": "object", + "description": "Output of check name availability API.", + "properties": { + "nameAvailability": { + "$ref": "#/definitions/Availability", + "description": "Indicates whether the name is available.", + "readOnly": true + }, + "reason": { + "type": "string", + "description": "The reason why the name is not available.", + "readOnly": true + }, + "message": { + "type": "string", + "description": "The detailed error message describing why the name is not available.", + "readOnly": true + } + } + }, + "CustomHttpsConfiguration": { + "type": "object", + "description": "Https settings for a domain", + "properties": { + "certificateSource": { + "$ref": "#/definitions/FrontDoorCertificateSource", + "description": "Defines the source of the SSL certificate" + }, + "protocolType": { + "$ref": "#/definitions/FrontDoorTlsProtocolType", + "description": "Defines the TLS extension protocol that is used for secure delivery" + }, + "minimumTlsVersion": { + "$ref": "#/definitions/MinimumTLSVersion", + "description": "The minimum TLS version required from the clients to establish an SSL handshake with Front Door." + }, + "keyVaultCertificateSourceParameters": { + "$ref": "#/definitions/KeyVaultCertificateSourceParameters", + "description": "KeyVault certificate source parameters (if certificateSource=AzureKeyVault)", + "x-ms-client-flatten": true + }, + "frontDoorCertificateSourceParameters": { + "$ref": "#/definitions/FrontDoorCertificateSourceParameters", + "description": "Parameters required for enabling SSL with Front Door-managed certificates (if certificateSource=FrontDoor)", + "x-ms-client-flatten": true + } + }, + "required": [ + "certificateSource", + "protocolType", + "minimumTlsVersion" + ] + }, + "CustomHttpsProvisioningState": { + "type": "string", + "description": "Provisioning status of Custom Https of the frontendEndpoint.", + "enum": [ + "Enabling", + "Enabled", + "Disabling", + "Disabled", + "Failed" + ], + "x-ms-enum": { + "name": "CustomHttpsProvisioningState", + "modelAsString": true, + "values": [ + { + "name": "Enabling", + "value": "Enabling", + "description": "Enabling" + }, + { + "name": "Enabled", + "value": "Enabled", + "description": "Enabled" + }, + { + "name": "Disabling", + "value": "Disabling", + "description": "Disabling" + }, + { + "name": "Disabled", + "value": "Disabled", + "description": "Disabled" + }, + { + "name": "Failed", + "value": "Failed", + "description": "Failed" + } + ] + } + }, + "CustomHttpsProvisioningSubstate": { + "type": "string", + "description": "Provisioning substate shows the progress of custom HTTPS enabling/disabling process step by step.", + "enum": [ + "SubmittingDomainControlValidationRequest", + "PendingDomainControlValidationREquestApproval", + "DomainControlValidationRequestApproved", + "DomainControlValidationRequestRejected", + "DomainControlValidationRequestTimedOut", + "IssuingCertificate", + "DeployingCertificate", + "CertificateDeployed", + "DeletingCertificate", + "CertificateDeleted" + ], + "x-ms-enum": { + "name": "CustomHttpsProvisioningSubstate", + "modelAsString": true, + "values": [ + { + "name": "SubmittingDomainControlValidationRequest", + "value": "SubmittingDomainControlValidationRequest", + "description": "SubmittingDomainControlValidationRequest" + }, + { + "name": "PendingDomainControlValidationREquestApproval", + "value": "PendingDomainControlValidationREquestApproval", + "description": "PendingDomainControlValidationREquestApproval" + }, + { + "name": "DomainControlValidationRequestApproved", + "value": "DomainControlValidationRequestApproved", + "description": "DomainControlValidationRequestApproved" + }, + { + "name": "DomainControlValidationRequestRejected", + "value": "DomainControlValidationRequestRejected", + "description": "DomainControlValidationRequestRejected" + }, + { + "name": "DomainControlValidationRequestTimedOut", + "value": "DomainControlValidationRequestTimedOut", + "description": "DomainControlValidationRequestTimedOut" + }, + { + "name": "IssuingCertificate", + "value": "IssuingCertificate", + "description": "IssuingCertificate" + }, + { + "name": "DeployingCertificate", + "value": "DeployingCertificate", + "description": "DeployingCertificate" + }, + { + "name": "CertificateDeployed", + "value": "CertificateDeployed", + "description": "CertificateDeployed" + }, + { + "name": "DeletingCertificate", + "value": "DeletingCertificate", + "description": "DeletingCertificate" + }, + { + "name": "CertificateDeleted", + "value": "CertificateDeleted", + "description": "CertificateDeleted" + } + ] + } + }, + "CustomRule": { + "type": "object", + "description": "Defines contents of a web application rule", + "properties": { + "name": { + "type": "string", + "description": "Describes the name of the rule.", + "maxLength": 128 + }, + "priority": { + "type": "integer", + "format": "int32", + "description": "Describes priority of the rule. Rules with a lower value will be evaluated before rules with a higher value." + }, + "enabledState": { + "$ref": "#/definitions/CustomRuleEnabledState", + "description": "Describes if the custom rule is in enabled or disabled state. Defaults to Enabled if not specified." + }, + "ruleType": { + "$ref": "#/definitions/RuleType", + "description": "Describes type of rule." + }, + "rateLimitDurationInMinutes": { + "type": "integer", + "format": "int32", + "description": "Time window for resetting the rate limit count. Default is 1 minute.", + "minimum": 0, + "maximum": 5 + }, + "rateLimitThreshold": { + "type": "integer", + "format": "int32", + "description": "Number of allowed requests per client within the time window.", + "minimum": 0 + }, + "groupBy": { + "type": "array", + "description": "Describes the list of variables to group the rate limit requests", + "items": { + "$ref": "#/definitions/GroupByVariable" + }, + "x-ms-identifiers": [] + }, + "matchConditions": { + "type": "array", + "description": "List of match conditions.", + "items": { + "$ref": "#/definitions/MatchCondition" + } + }, + "action": { + "$ref": "#/definitions/ActionType", + "description": "Describes what action to be applied when rule matches." + } + }, + "required": [ + "priority", + "ruleType", + "matchConditions", + "action" + ] + }, + "CustomRuleEnabledState": { + "type": "string", + "description": "Describes if the custom rule is in enabled or disabled state. Defaults to Enabled if not specified.", + "enum": [ + "Disabled", + "Enabled" + ], + "x-ms-enum": { + "name": "CustomRuleEnabledState", + "modelAsString": true, + "values": [ + { + "name": "Disabled", + "value": "Disabled", + "description": "Disabled" + }, + { + "name": "Enabled", + "value": "Enabled", + "description": "Enabled" + } + ] + } + }, + "CustomRuleList": { + "type": "object", + "description": "Defines contents of custom rules", + "properties": { + "rules": { + "type": "array", + "description": "List of rules", + "items": { + "$ref": "#/definitions/CustomRule" + } + } + } + }, + "DefaultErrorResponse": { + "type": "object", + "description": "Error response indicates Front Door service is not able to process the incoming request. The reason is provided in the error message.", + "properties": { + "error": { + "$ref": "#/definitions/DefaultErrorResponseError", + "description": "Error model." + } + } + }, + "DefaultErrorResponseError": { + "type": "object", + "description": "Error model.", + "properties": { + "code": { + "type": "string", + "description": "Error code.", + "readOnly": true + }, + "message": { + "type": "string", + "description": "Error message indicating why the operation failed.", + "readOnly": true + } + } + }, + "DynamicCompressionEnabled": { + "type": "string", + "description": "Whether to use dynamic compression for cached content", + "enum": [ + "Enabled", + "Disabled" + ], + "x-ms-enum": { + "name": "DynamicCompressionEnabled", + "modelAsString": true, + "values": [ + { + "name": "Enabled", + "value": "Enabled", + "description": "Enabled" + }, + { + "name": "Disabled", + "value": "Disabled", + "description": "Disabled" + } + ] + } + }, + "Endpoint": { + "type": "object", + "description": "Defines the endpoint properties", + "properties": { + "name": { + "type": "string", + "description": "The name of the endpoint" + }, + "endpoint": { + "type": "string", + "description": "The endpoint URL" + } + } + }, + "EndpointType": { + "type": "string", + "description": "The type of endpoint", + "enum": [ + "AFD", + "AzureRegion", + "CDN", + "ATM" + ], + "x-ms-enum": { + "name": "EndpointType", + "modelAsString": true, + "values": [ + { + "name": "AFD", + "value": "AFD", + "description": "AFD" + }, + { + "name": "AzureRegion", + "value": "AzureRegion", + "description": "AzureRegion" + }, + { + "name": "CDN", + "value": "CDN", + "description": "CDN" + }, + { + "name": "ATM", + "value": "ATM", + "description": "ATM" + } + ] + } + }, + "ErrorResponse": { + "type": "object", + "description": "Error response indicates Front Door service is not able to process the incoming request. The reason is provided in the error message.", + "properties": { + "code": { + "type": "string", + "description": "Error code.", + "readOnly": true + }, + "message": { + "type": "string", + "description": "Error message indicating why the operation failed.", + "readOnly": true + } + } + }, + "Experiment": { + "type": "object", + "description": "Defines the properties of an Experiment", + "properties": { + "properties": { + "$ref": "#/definitions/ExperimentProperties", + "description": "The properties of an Experiment", + "x-ms-client-flatten": true + }, + "location": { + "type": "string", + "description": "Resource location." + }, + "tags": { + "type": "object", + "description": "Resource tags.", + "additionalProperties": { + "type": "string" + } + } + }, + "allOf": [ + { + "$ref": "../../../../../common-types/resource-management/v3/types.json#/definitions/ProxyResource" + } + ] + }, + "ExperimentList": { + "type": "object", + "description": "Defines a list of Experiments. It contains a list of Experiment objects and a URL link to get the next set of results.", + "properties": { + "value": { + "type": "array", + "description": "The Experiment items on this page", + "items": { + "$ref": "#/definitions/Experiment" + }, + "readOnly": true + }, + "nextLink": { + "type": "string", + "format": "uri", + "description": "The link to the next page of items" + } + }, + "required": [ + "value" + ] + }, + "ExperimentProperties": { + "type": "object", + "description": "Defines the properties of an experiment", + "properties": { + "description": { + "type": "string", + "description": "The description of the details or intents of the Experiment" + }, + "endpointA": { + "$ref": "#/definitions/Endpoint", + "description": "The endpoint A of an experiment" + }, + "endpointB": { + "$ref": "#/definitions/Endpoint", + "description": "The endpoint B of an experiment" + }, + "enabledState": { + "$ref": "#/definitions/State", + "description": "The state of the Experiment" + }, + "resourceState": { + "$ref": "#/definitions/NetworkExperimentResourceState", + "description": "Resource status.", + "readOnly": true + }, + "status": { + "type": "string", + "description": "The description of Experiment status from the server side", + "readOnly": true + }, + "scriptFileUri": { + "type": "string", + "description": "The uri to the Script used in the Experiment", + "readOnly": true + } + } + }, + "ExperimentUpdateModel": { + "type": "object", + "description": "Defines modifiable attributes of an Experiment", + "properties": { + "tags": { + "type": "object", + "description": "Resource tags.", + "additionalProperties": { + "type": "string" + } + }, + "properties": { + "$ref": "#/definitions/ExperimentUpdateProperties", + "description": "The properties of a Profile", + "x-ms-client-flatten": true + } + } + }, + "ExperimentUpdateProperties": { + "type": "object", + "description": "Defines the properties of an experiment", + "properties": { + "description": { + "type": "string", + "description": "The description of the intent or details of the Experiment" + }, + "enabledState": { + "$ref": "#/definitions/State", + "description": "The state of the Experiment" + } + } + }, + "ForwardingConfiguration": { + "type": "object", + "description": "Describes Forwarding Route.", + "properties": { + "customForwardingPath": { + "type": "string", + "description": "A custom path used to rewrite resource paths matched by this rule. Leave empty to use incoming path." + }, + "forwardingProtocol": { + "$ref": "#/definitions/FrontDoorForwardingProtocol", + "description": "Protocol this rule will use when forwarding traffic to backends." + }, + "cacheConfiguration": { + "$ref": "#/definitions/CacheConfiguration", + "description": "The caching configuration associated with this rule." + }, + "backendPool": { + "$ref": "#/definitions/SubResource", + "description": "A reference to the BackendPool which this rule routes to." + } + }, + "allOf": [ + { + "$ref": "#/definitions/RouteConfiguration" + } + ], + "x-ms-discriminator-value": "#Microsoft.Azure.FrontDoor.Models.FrontdoorForwardingConfiguration" + }, + "FrontDoor": { + "type": "object", + "description": "Front Door represents a collection of backend endpoints to route traffic to along with rules that specify how traffic is sent there.", + "properties": { + "properties": { + "$ref": "#/definitions/FrontDoorProperties", + "description": "Properties of the Front Door Load Balancer", + "x-ms-client-flatten": true + }, + "location": { + "type": "string", + "description": "Resource location." + }, + "tags": { + "type": "object", + "description": "Resource tags.", + "additionalProperties": { + "type": "string" + } + } + }, + "allOf": [ + { + "$ref": "../../../../../common-types/resource-management/v3/types.json#/definitions/ProxyResource" + } + ] + }, + "FrontDoorCertificateSource": { + "type": "string", + "description": "Defines the source of the SSL certificate", + "enum": [ + "AzureKeyVault", + "FrontDoor" + ], + "x-ms-enum": { + "name": "FrontDoorCertificateSource", + "modelAsString": true, + "values": [ + { + "name": "AzureKeyVault", + "value": "AzureKeyVault", + "description": "AzureKeyVault" + }, + { + "name": "FrontDoor", + "value": "FrontDoor", + "description": "FrontDoor" + } + ] + } + }, + "FrontDoorCertificateSourceParameters": { + "type": "object", + "description": "Parameters required for enabling SSL with Front Door-managed certificates", + "properties": { + "certificateType": { + "$ref": "#/definitions/FrontDoorCertificateType", + "description": "Defines the type of the certificate used for secure connections to a frontendEndpoint" + } + } + }, + "FrontDoorCertificateType": { + "type": "string", + "description": "Defines the type of the certificate used for secure connections to a frontendEndpoint", + "enum": [ + "Dedicated" + ], + "x-ms-enum": { + "name": "FrontDoorCertificateType", + "modelAsString": true, + "values": [ + { + "name": "Dedicated", + "value": "Dedicated", + "description": "Dedicated" + } + ] + } + }, + "FrontDoorEnabledState": { + "type": "string", + "description": "Operational status of the Front Door load balancer. Permitted values are 'Enabled' or 'Disabled'", + "enum": [ + "Enabled", + "Disabled" + ], + "x-ms-enum": { + "name": "FrontDoorEnabledState", + "modelAsString": true, + "values": [ + { + "name": "Enabled", + "value": "Enabled", + "description": "Enabled" + }, + { + "name": "Disabled", + "value": "Disabled", + "description": "Disabled" + } + ] + } + }, + "FrontDoorForwardingProtocol": { + "type": "string", + "description": "Protocol this rule will use when forwarding traffic to backends.", + "enum": [ + "HttpOnly", + "HttpsOnly", + "MatchRequest" + ], + "x-ms-enum": { + "name": "FrontDoorForwardingProtocol", + "modelAsString": true, + "values": [ + { + "name": "HttpOnly", + "value": "HttpOnly", + "description": "HttpOnly" + }, + { + "name": "HttpsOnly", + "value": "HttpsOnly", + "description": "HttpsOnly" + }, + { + "name": "MatchRequest", + "value": "MatchRequest", + "description": "MatchRequest" + } + ] + } + }, + "FrontDoorListResult": { + "type": "object", + "description": "Paged collection of FrontDoor items", + "properties": { + "value": { + "type": "array", + "description": "The FrontDoor items on this page", + "items": { + "$ref": "#/definitions/FrontDoor" + }, + "readOnly": true + }, + "nextLink": { + "type": "string", + "format": "uri", + "description": "The link to the next page of items" + } + }, + "required": [ + "value" + ] + }, + "FrontDoorProperties": { + "type": "object", + "description": "The JSON object that contains the properties required to create an endpoint.", + "properties": { + "resourceState": { + "$ref": "#/definitions/FrontDoorResourceState", + "title": "Resource status of the Front Door or Front Door SubResource.", + "description": "Resource status of the Front Door.", + "readOnly": true + }, + "provisioningState": { + "type": "string", + "description": "Provisioning state of the Front Door.", + "readOnly": true + }, + "cname": { + "type": "string", + "description": "The host that each frontendEndpoint must CNAME to.", + "readOnly": true + }, + "frontdoorId": { + "type": "string", + "description": "The Id of the frontdoor.", + "readOnly": true + }, + "rulesEngines": { + "type": "array", + "description": "Rules Engine Configurations available to routing rules.", + "items": { + "$ref": "#/definitions/RulesEngine" + }, + "readOnly": true + }, + "extendedProperties": { + "type": "object", + "description": "Key-Value pair representing additional properties for frontdoor.", + "additionalProperties": { + "type": "string" + }, + "readOnly": true + } + }, + "allOf": [ + { + "$ref": "#/definitions/FrontDoorUpdateParameters" + } + ] + }, + "FrontDoorProtocol": { + "type": "string", + "description": "Accepted protocol schemes.", + "enum": [ + "Http", + "Https" + ], + "x-ms-enum": { + "name": "FrontDoorProtocol", + "modelAsString": true, + "values": [ + { + "name": "Http", + "value": "Http", + "description": "Http" + }, + { + "name": "Https", + "value": "Https", + "description": "Https" + } + ] + } + }, + "FrontDoorQuery": { + "type": "string", + "description": "Treatment of URL query terms when forming the cache key.", + "enum": [ + "StripNone", + "StripAll", + "StripOnly", + "StripAllExcept" + ], + "x-ms-enum": { + "name": "FrontDoorQuery", + "modelAsString": true, + "values": [ + { + "name": "StripNone", + "value": "StripNone", + "description": "StripNone" + }, + { + "name": "StripAll", + "value": "StripAll", + "description": "StripAll" + }, + { + "name": "StripOnly", + "value": "StripOnly", + "description": "StripOnly" + }, + { + "name": "StripAllExcept", + "value": "StripAllExcept", + "description": "StripAllExcept" + } + ] + } + }, + "FrontDoorRedirectProtocol": { + "type": "string", + "description": "The protocol of the destination to where the traffic is redirected", + "enum": [ + "HttpOnly", + "HttpsOnly", + "MatchRequest" + ], + "x-ms-enum": { + "name": "FrontDoorRedirectProtocol", + "modelAsString": true, + "values": [ + { + "name": "HttpOnly", + "value": "HttpOnly", + "description": "HttpOnly" + }, + { + "name": "HttpsOnly", + "value": "HttpsOnly", + "description": "HttpsOnly" + }, + { + "name": "MatchRequest", + "value": "MatchRequest", + "description": "MatchRequest" + } + ] + } + }, + "FrontDoorRedirectType": { + "type": "string", + "description": "The redirect type the rule will use when redirecting traffic.", + "enum": [ + "Moved", + "Found", + "TemporaryRedirect", + "PermanentRedirect" + ], + "x-ms-enum": { + "name": "FrontDoorRedirectType", + "modelAsString": true, + "values": [ + { + "name": "Moved", + "value": "Moved", + "description": "Moved" + }, + { + "name": "Found", + "value": "Found", + "description": "Found" + }, + { + "name": "TemporaryRedirect", + "value": "TemporaryRedirect", + "description": "TemporaryRedirect" + }, + { + "name": "PermanentRedirect", + "value": "PermanentRedirect", + "description": "PermanentRedirect" + } + ] + } + }, + "FrontDoorResourceState": { + "type": "string", + "description": "Resource status of the Front Door or Front Door SubResource.", + "enum": [ + "Creating", + "Enabling", + "Enabled", + "Disabling", + "Disabled", + "Deleting", + "Migrating", + "Migrated" + ], + "x-ms-enum": { + "name": "FrontDoorResourceState", + "modelAsString": true, + "values": [ + { + "name": "Creating", + "value": "Creating", + "description": "Creating" + }, + { + "name": "Enabling", + "value": "Enabling", + "description": "Enabling" + }, + { + "name": "Enabled", + "value": "Enabled", + "description": "Enabled" + }, + { + "name": "Disabling", + "value": "Disabling", + "description": "Disabling" + }, + { + "name": "Disabled", + "value": "Disabled", + "description": "Disabled" + }, + { + "name": "Deleting", + "value": "Deleting", + "description": "Deleting" + }, + { + "name": "Migrating", + "value": "Migrating", + "description": "Migrating" + }, + { + "name": "Migrated", + "value": "Migrated", + "description": "Migrated" + } + ] + } + }, + "FrontDoorTlsProtocolType": { + "type": "string", + "description": "Defines the TLS extension protocol that is used for secure delivery", + "enum": [ + "ServerNameIndication" + ], + "x-ms-enum": { + "name": "FrontDoorTlsProtocolType", + "modelAsString": true, + "values": [ + { + "name": "ServerNameIndication", + "value": "ServerNameIndication", + "description": "ServerNameIndication" + } + ] + } + }, + "FrontDoorUpdateParameters": { + "type": "object", + "description": "The properties needed to update a Front Door", + "properties": { + "friendlyName": { + "type": "string", + "description": "A friendly name for the frontDoor" + }, + "routingRules": { + "type": "array", + "description": "Routing rules associated with this Front Door.", + "items": { + "$ref": "#/definitions/RoutingRule" + } + }, + "loadBalancingSettings": { + "type": "array", + "description": "Load balancing settings associated with this Front Door instance.", + "items": { + "$ref": "#/definitions/LoadBalancingSettingsModel" + } + }, + "healthProbeSettings": { + "type": "array", + "description": "Health probe settings associated with this Front Door instance.", + "items": { + "$ref": "#/definitions/HealthProbeSettingsModel" + } + }, + "backendPools": { + "type": "array", + "description": "Backend pools available to routing rules.", + "items": { + "$ref": "#/definitions/BackendPool" + } + }, + "frontendEndpoints": { + "type": "array", + "description": "Frontend endpoints available to routing rules.", + "items": { + "$ref": "#/definitions/FrontendEndpoint" + } + }, + "backendPoolsSettings": { + "$ref": "#/definitions/BackendPoolsSettings", + "description": "Settings for all backendPools" + }, + "enabledState": { + "$ref": "#/definitions/FrontDoorEnabledState", + "description": "Operational status of the Front Door load balancer. Permitted values are 'Enabled' or 'Disabled'" + } + } + }, + "FrontendEndpoint": { + "type": "object", + "description": "A frontend endpoint used for routing.", + "properties": { + "id": { + "type": "string", + "description": "Resource ID." + }, + "name": { + "type": "string", + "description": "Resource name." + }, + "type": { + "type": "string", + "description": "Resource type.", + "readOnly": true + }, + "properties": { + "$ref": "#/definitions/FrontendEndpointProperties", + "description": "Properties of the Frontend endpoint", + "x-ms-client-flatten": true + } + } + }, + "FrontendEndpointLink": { + "type": "object", + "description": "Defines the Resource ID for a Frontend Endpoint.", + "properties": { + "id": { + "type": "string", + "description": "Resource ID." + } + } + }, + "FrontendEndpointProperties": { + "type": "object", + "description": "The JSON object that contains the properties required to create a frontend endpoint.", + "properties": { + "resourceState": { + "$ref": "#/definitions/FrontDoorResourceState", + "title": "Resource status of the Front Door or Front Door SubResource.", + "description": "Resource status.", + "readOnly": true + }, + "customHttpsProvisioningState": { + "$ref": "#/definitions/CustomHttpsProvisioningState", + "description": "Provisioning status of Custom Https of the frontendEndpoint.", + "readOnly": true + }, + "customHttpsProvisioningSubstate": { + "$ref": "#/definitions/CustomHttpsProvisioningSubstate", + "description": "Provisioning substate shows the progress of custom HTTPS enabling/disabling process step by step.", + "readOnly": true + }, + "customHttpsConfiguration": { + "$ref": "#/definitions/CustomHttpsConfiguration", + "description": "The configuration specifying how to enable HTTPS", + "readOnly": true + } + }, + "allOf": [ + { + "$ref": "#/definitions/FrontendEndpointUpdateParameters" + } + ] + }, + "FrontendEndpointUpdateParameters": { + "type": "object", + "description": "Frontend endpoint used in routing rule", + "properties": { + "hostName": { + "type": "string", + "description": "The host name of the frontendEndpoint. Must be a domain name." + }, + "sessionAffinityEnabledState": { + "$ref": "#/definitions/SessionAffinityEnabledState", + "description": "Whether to allow session affinity on this host. Valid options are 'Enabled' or 'Disabled'" + }, + "sessionAffinityTtlSeconds": { + "type": "integer", + "format": "int32", + "description": "UNUSED. This field will be ignored. The TTL to use in seconds for session affinity, if applicable." + }, + "webApplicationFirewallPolicyLink": { + "type": "object", + "description": "Defines the Web Application Firewall policy for each host (if applicable)", + "properties": { + "id": { + "type": "string", + "description": "Resource ID." + } + } + } + } + }, + "FrontendEndpointsListResult": { + "type": "object", + "description": "Paged collection of FrontendEndpoint items", + "properties": { + "value": { + "type": "array", + "description": "The FrontendEndpoint items on this page", + "items": { + "$ref": "#/definitions/FrontendEndpoint" + }, + "readOnly": true + }, + "nextLink": { + "type": "string", + "format": "uri", + "description": "The link to the next page of items" + } + }, + "required": [ + "value" + ] + }, + "GroupByVariable": { + "type": "object", + "description": "Describes the variables available to group the rate limit requests", + "properties": { + "variableName": { + "$ref": "#/definitions/VariableName", + "description": "Describes the supported variable for group by" + } + }, + "required": [ + "variableName" + ] + }, + "HeaderAction": { + "type": "object", + "description": "An action that can manipulate an http header.", + "properties": { + "headerActionType": { + "$ref": "#/definitions/HeaderActionType", + "description": "Which type of manipulation to apply to the header." + }, + "headerName": { + "type": "string", + "description": "The name of the header this action will apply to." + }, + "value": { + "type": "string", + "description": "The value to update the given header name with. This value is not used if the actionType is Delete." + } + }, + "required": [ + "headerActionType", + "headerName" + ] + }, + "HeaderActionType": { + "type": "string", + "description": "Which type of manipulation to apply to the header.", + "enum": [ + "Append", + "Delete", + "Overwrite" + ], + "x-ms-enum": { + "name": "HeaderActionType", + "modelAsString": true, + "values": [ + { + "name": "Append", + "value": "Append", + "description": "Append" + }, + { + "name": "Delete", + "value": "Delete", + "description": "Delete" + }, + { + "name": "Overwrite", + "value": "Overwrite", + "description": "Overwrite" + } + ] + } + }, + "HealthProbeEnabled": { + "type": "string", + "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.", + "enum": [ + "Enabled", + "Disabled" + ], + "x-ms-enum": { + "name": "HealthProbeEnabled", + "modelAsString": true, + "values": [ + { + "name": "Enabled", + "value": "Enabled", + "description": "Enabled" + }, + { + "name": "Disabled", + "value": "Disabled", + "description": "Disabled" + } + ] + } + }, + "HealthProbeSettingsModel": { + "type": "object", + "description": "Load balancing settings for a backend pool", + "properties": { + "properties": { + "$ref": "#/definitions/HealthProbeSettingsProperties", + "description": "Properties of the health probe settings", + "x-ms-client-flatten": true + }, + "name": { + "type": "string", + "description": "Resource name." + }, + "type": { + "type": "string", + "description": "Resource type.", + "readOnly": true + } + }, + "allOf": [ + { + "$ref": "#/definitions/SubResource" + } + ] + }, + "HealthProbeSettingsProperties": { + "type": "object", + "description": "The JSON object that contains the properties required to create a health probe settings.", + "properties": { + "resourceState": { + "$ref": "#/definitions/FrontDoorResourceState", + "title": "Resource status of the Front Door or Front Door SubResource.", + "description": "Resource status.", + "readOnly": true + } + }, + "allOf": [ + { + "$ref": "#/definitions/HealthProbeSettingsUpdateParameters" + } + ] + }, + "HealthProbeSettingsUpdateParameters": { + "type": "object", + "description": "L7 health probe settings for a backend pool", + "properties": { + "path": { + "type": "string", + "description": "The path to use for the health probe. Default is /" + }, + "protocol": { + "$ref": "#/definitions/FrontDoorProtocol", + "description": "Protocol scheme to use for this probe" + }, + "intervalInSeconds": { + "type": "integer", + "format": "int32", + "description": "The number of seconds between health probes." + }, + "healthProbeMethod": { + "type": "string", + "description": "Configures which HTTP method to use to probe the backends defined under backendPools.", + "default": "HEAD", + "enum": [ + "GET", + "HEAD" + ], + "x-ms-enum": { + "name": "FrontDoorHealthProbeMethod", + "modelAsString": true, + "values": [ + { + "name": "GET", + "value": "GET", + "description": "GET" + }, + { + "name": "HEAD", + "value": "HEAD", + "description": "HEAD" + } + ] + } + }, + "enabledState": { + "$ref": "#/definitions/HealthProbeEnabled", + "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." + } + } + }, + "KeyVaultCertificateSourceParameters": { + "type": "object", + "description": "Parameters required for bring-your-own-certification via Key Vault", + "properties": { + "vault": { + "type": "object", + "description": "The Key Vault containing the SSL certificate", + "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" + } + } + }, + "LatencyMetric": { + "type": "object", + "description": "Defines the properties of a latency metric used in the latency scorecard", + "properties": { + "name": { + "type": "string", + "description": "The name of the Latency Metric", + "readOnly": true + }, + "endDateTimeUTC": { + "type": "string", + "description": "The end time of the Latency Scorecard in UTC", + "readOnly": true + }, + "aValue": { + "type": "number", + "format": "float", + "description": "The metric value of the A endpoint", + "readOnly": true + }, + "bValue": { + "type": "number", + "format": "float", + "description": "The metric value of the B endpoint", + "readOnly": true + }, + "delta": { + "type": "number", + "format": "float", + "description": "The difference in value between endpoint A and B", + "readOnly": true + }, + "deltaPercent": { + "type": "number", + "format": "float", + "description": "The percent difference between endpoint A and B", + "readOnly": true + }, + "aCLower95CI": { + "type": "number", + "format": "float", + "description": "The lower end of the 95% confidence interval for endpoint A", + "readOnly": true + }, + "aHUpper95CI": { + "type": "number", + "format": "float", + "description": "The upper end of the 95% confidence interval for endpoint A", + "readOnly": true + }, + "bCLower95CI": { + "type": "number", + "format": "float", + "description": "The lower end of the 95% confidence interval for endpoint B", + "readOnly": true + }, + "bUpper95CI": { + "type": "number", + "format": "float", + "description": "The upper end of the 95% confidence interval for endpoint B", + "readOnly": true + } + } + }, + "LatencyScorecard": { + "type": "object", + "description": "Defines the LatencyScorecard", + "properties": { + "properties": { + "$ref": "#/definitions/LatencyScorecardProperties", + "description": "The properties of a latency scorecard", + "x-ms-client-flatten": true + } + }, + "allOf": [ + { + "$ref": "#/definitions/Resource" + } + ] + }, + "LatencyScorecardProperties": { + "type": "object", + "description": "Defines a the properties of a Latency Scorecard", + "properties": { + "id": { + "type": "string", + "description": "The unique identifier of the Latency Scorecard", + "readOnly": true + }, + "name": { + "type": "string", + "description": "The name of the Latency Scorecard", + "readOnly": true + }, + "description": { + "type": "string", + "description": "The description of the Latency Scorecard", + "readOnly": true + }, + "endpointA": { + "type": "string", + "description": "The A endpoint in the scorecard", + "readOnly": true + }, + "endpointB": { + "type": "string", + "description": "The B endpoint in the scorecard", + "readOnly": true + }, + "startDateTimeUTC": { + "type": "string", + "format": "date-time", + "description": "The start time of the Latency Scorecard in UTC", + "readOnly": true + }, + "endDateTimeUTC": { + "type": "string", + "format": "date-time", + "description": "The end time of the Latency Scorecard in UTC", + "readOnly": true + }, + "country": { + "type": "string", + "description": "The country associated with the Latency Scorecard. Values are country ISO codes as specified here- https://www.iso.org/iso-3166-country-codes.html", + "readOnly": true + }, + "latencyMetrics": { + "type": "array", + "description": "The latency metrics of the Latency Scorecard", + "items": { + "$ref": "#/definitions/LatencyMetric" + } + } + } + }, + "LoadBalancingSettingsModel": { + "type": "object", + "description": "Load balancing settings for a backend pool", + "properties": { + "properties": { + "$ref": "#/definitions/LoadBalancingSettingsProperties", + "description": "Properties of the load balancing settings", + "x-ms-client-flatten": true + }, + "name": { + "type": "string", + "description": "Resource name." + }, + "type": { + "type": "string", + "description": "Resource type.", + "readOnly": true + } + }, + "allOf": [ + { + "$ref": "#/definitions/SubResource" + } + ] + }, + "LoadBalancingSettingsProperties": { + "type": "object", + "description": "The JSON object that contains the properties required to create load balancing settings", + "properties": { + "resourceState": { + "$ref": "#/definitions/FrontDoorResourceState", + "title": "Resource status of the Front Door or Front Door SubResource.", + "description": "Resource status.", + "readOnly": true + } + }, + "allOf": [ + { + "$ref": "#/definitions/LoadBalancingSettingsUpdateParameters" + } + ] + }, + "LoadBalancingSettingsUpdateParameters": { + "type": "object", + "description": "Round-Robin load balancing settings for a backend pool", + "properties": { + "sampleSize": { + "type": "integer", + "format": "int32", + "description": "The number of samples to consider for load balancing decisions" + }, + "successfulSamplesRequired": { + "type": "integer", + "format": "int32", + "description": "The number of samples within the sample period that must succeed" + }, + "additionalLatencyMilliseconds": { + "type": "integer", + "format": "int32", + "description": "The additional latency in milliseconds for probes to fall into the lowest latency bucket" + } + } + }, + "ManagedRuleDefinition": { + "type": "object", + "description": "Describes a managed rule definition.", + "properties": { + "ruleId": { + "type": "string", + "description": "Identifier for the managed rule.", + "readOnly": true + }, + "defaultState": { + "$ref": "#/definitions/ManagedRuleEnabledState", + "description": "Describes the default state for the managed rule.", + "readOnly": true + }, + "defaultAction": { + "$ref": "#/definitions/ActionType", + "description": "Describes the default action to be applied when the managed rule matches.", + "readOnly": true + }, + "defaultSensitivity": { + "$ref": "#/definitions/SensitivityType", + "description": "Describes the default sensitivity to be applied when the managed rule matches.", + "readOnly": true + }, + "description": { + "type": "string", + "description": "Describes the functionality of the managed rule.", + "readOnly": true + } + } + }, + "ManagedRuleEnabledState": { + "type": "string", + "description": "Describes if the managed rule is in enabled or disabled state.", + "enum": [ + "Disabled", + "Enabled" + ], + "x-ms-enum": { + "name": "ManagedRuleEnabledState", + "modelAsString": true, + "values": [ + { + "name": "Disabled", + "value": "Disabled", + "description": "Disabled" + }, + { + "name": "Enabled", + "value": "Enabled", + "description": "Enabled" + } + ] + } + }, + "ManagedRuleExclusion": { + "type": "object", + "description": "Exclude variables from managed rule evaluation.", + "properties": { + "matchVariable": { + "$ref": "#/definitions/ManagedRuleExclusionMatchVariable", + "description": "The variable type to be excluded." + }, + "selectorMatchOperator": { + "$ref": "#/definitions/ManagedRuleExclusionSelectorMatchOperator", + "description": "Comparison operator to apply to the selector when specifying which elements in the collection this exclusion applies to." + }, + "selector": { + "type": "string", + "description": "Selector value for which elements in the collection this exclusion applies to." + } + }, + "required": [ + "matchVariable", + "selectorMatchOperator", + "selector" + ] + }, + "ManagedRuleExclusionMatchVariable": { + "type": "string", + "description": "The variable type to be excluded.", + "enum": [ + "RequestHeaderNames", + "RequestCookieNames", + "QueryStringArgNames", + "RequestBodyPostArgNames", + "RequestBodyJsonArgNames" + ], + "x-ms-enum": { + "name": "ManagedRuleExclusionMatchVariable", + "modelAsString": true, + "values": [ + { + "name": "RequestHeaderNames", + "value": "RequestHeaderNames", + "description": "RequestHeaderNames" + }, + { + "name": "RequestCookieNames", + "value": "RequestCookieNames", + "description": "RequestCookieNames" + }, + { + "name": "QueryStringArgNames", + "value": "QueryStringArgNames", + "description": "QueryStringArgNames" + }, + { + "name": "RequestBodyPostArgNames", + "value": "RequestBodyPostArgNames", + "description": "RequestBodyPostArgNames" + }, + { + "name": "RequestBodyJsonArgNames", + "value": "RequestBodyJsonArgNames", + "description": "RequestBodyJsonArgNames" + } + ] + } + }, + "ManagedRuleExclusionSelectorMatchOperator": { + "type": "string", + "description": "Comparison operator to apply to the selector when specifying which elements in the collection this exclusion applies to.", + "enum": [ + "Equals", + "Contains", + "StartsWith", + "EndsWith", + "EqualsAny" + ], + "x-ms-enum": { + "name": "ManagedRuleExclusionSelectorMatchOperator", + "modelAsString": true, + "values": [ + { + "name": "Equals", + "value": "Equals", + "description": "Equals" + }, + { + "name": "Contains", + "value": "Contains", + "description": "Contains" + }, + { + "name": "StartsWith", + "value": "StartsWith", + "description": "StartsWith" + }, + { + "name": "EndsWith", + "value": "EndsWith", + "description": "EndsWith" + }, + { + "name": "EqualsAny", + "value": "EqualsAny", + "description": "EqualsAny" + } + ] + } + }, + "ManagedRuleGroupDefinition": { + "type": "object", + "description": "Describes a managed rule group.", + "properties": { + "ruleGroupName": { + "type": "string", + "description": "Name of the managed rule group.", + "readOnly": true + }, + "description": { + "type": "string", + "description": "Description of the managed rule group.", + "readOnly": true + }, + "rules": { + "type": "array", + "description": "List of rules within the managed rule group.", + "items": { + "$ref": "#/definitions/ManagedRuleDefinition" + }, + "readOnly": true + } + } + }, + "ManagedRuleGroupOverride": { + "type": "object", + "description": "Defines a managed rule group override setting.", + "properties": { + "ruleGroupName": { + "type": "string", + "description": "Describes the managed rule group to override." + }, + "exclusions": { + "type": "array", + "description": "Describes the exclusions that are applied to all rules in the group.", + "items": { + "$ref": "#/definitions/ManagedRuleExclusion" + } + }, + "rules": { + "type": "array", + "description": "List of rules that will be disabled. If none specified, all rules in the group will be disabled.", + "items": { + "$ref": "#/definitions/ManagedRuleOverride" + } + } + }, + "required": [ + "ruleGroupName" + ] + }, + "ManagedRuleOverride": { + "type": "object", + "description": "Defines a managed rule group override setting.", + "properties": { + "ruleId": { + "type": "string", + "description": "Identifier for the managed rule." + }, + "enabledState": { + "$ref": "#/definitions/ManagedRuleEnabledState", + "description": "Describes if the managed rule is in enabled or disabled state. Defaults to Disabled if not specified." + }, + "action": { + "$ref": "#/definitions/ActionType", + "description": "Describes the override action to be applied when rule matches." + }, + "sensitivity": { + "$ref": "#/definitions/SensitivityType", + "description": "Describes the override sensitivity to be applied when rule matches." + }, + "exclusions": { + "type": "array", + "description": "Describes the exclusions that are applied to this specific rule.", + "items": { + "$ref": "#/definitions/ManagedRuleExclusion" + } + } + }, + "required": [ + "ruleId" + ] + }, + "ManagedRuleSet": { + "type": "object", + "description": "Defines a managed rule set.", + "properties": { + "ruleSetType": { + "type": "string", + "description": "Defines the rule set type to use." + }, + "ruleSetVersion": { + "type": "string", + "description": "Defines the version of the rule set to use." + }, + "ruleSetAction": { + "$ref": "#/definitions/ManagedRuleSetActionType", + "title": "ruleSetAction", + "description": "Defines the rule set action." + }, + "exclusions": { + "type": "array", + "description": "Describes the exclusions that are applied to all rules in the set.", + "items": { + "$ref": "#/definitions/ManagedRuleExclusion" + } + }, + "ruleGroupOverrides": { + "type": "array", + "description": "Defines the rule group overrides to apply to the rule set.", + "items": { + "$ref": "#/definitions/ManagedRuleGroupOverride" + } + } + }, + "required": [ + "ruleSetType", + "ruleSetVersion" + ] + }, + "ManagedRuleSetActionType": { + "type": "string", + "description": "Defines the action to take when a managed rule set score threshold is met.", + "enum": [ + "Block", + "Log", + "Redirect" + ], + "x-ms-enum": { + "name": "ManagedRuleSetActionType", + "modelAsString": true, + "values": [ + { + "name": "Block", + "value": "Block", + "description": "Block" + }, + { + "name": "Log", + "value": "Log", + "description": "Log" + }, + { + "name": "Redirect", + "value": "Redirect", + "description": "Redirect" + } + ] + } + }, + "ManagedRuleSetDefinition": { + "type": "object", + "description": "Describes the a managed rule set definition.", + "properties": { + "properties": { + "$ref": "#/definitions/ManagedRuleSetDefinitionProperties", + "description": "Properties for a managed rule set definition.", + "x-ms-client-flatten": true + } + }, + "allOf": [ + { + "$ref": "#/definitions/Resource" + } + ] + }, + "ManagedRuleSetDefinitionList": { + "type": "object", + "description": "List of managed rule set definitions available for use in a policy.", + "properties": { + "value": { + "type": "array", + "description": "The ManagedRuleSetDefinition items on this page", + "items": { + "$ref": "#/definitions/ManagedRuleSetDefinition" + }, + "readOnly": true + }, + "nextLink": { + "type": "string", + "format": "uri", + "description": "The link to the next page of items" + } + }, + "required": [ + "value" + ] + }, + "ManagedRuleSetDefinitionProperties": { + "type": "object", + "description": "Properties for a managed rule set definition.", + "properties": { + "provisioningState": { + "type": "string", + "description": "Provisioning state of the managed rule set.", + "readOnly": true + }, + "ruleSetId": { + "type": "string", + "description": "Id of the managed rule set.", + "readOnly": true + }, + "ruleSetType": { + "type": "string", + "description": "Type of the managed rule set.", + "readOnly": true + }, + "ruleSetVersion": { + "type": "string", + "description": "Version of the managed rule set type.", + "readOnly": true + }, + "ruleGroups": { + "type": "array", + "description": "Rule groups of the managed rule set.", + "items": { + "$ref": "#/definitions/ManagedRuleGroupDefinition" + }, + "readOnly": true + } + } + }, + "ManagedRuleSetList": { + "type": "object", + "description": "Defines the list of managed rule sets for the policy.", + "properties": { + "managedRuleSets": { + "type": "array", + "description": "List of rule sets.", + "items": { + "$ref": "#/definitions/ManagedRuleSet" + } + } + } + }, + "MatchCondition": { + "type": "object", + "description": "Define a match condition.", + "properties": { + "matchVariable": { + "$ref": "#/definitions/MatchVariable", + "description": "Request variable to compare with." + }, + "selector": { + "type": "string", + "description": "Match against a specific key from the QueryString, PostArgs, RequestHeader or Cookies variables. Default is null." + }, + "operator": { + "$ref": "#/definitions/Operator", + "description": "Comparison type to use for matching with the variable value." + }, + "negateCondition": { + "type": "boolean", + "description": "Describes if the result of this condition should be negated." + }, + "matchValue": { + "type": "array", + "description": "List of possible match values.", + "items": { + "type": "string" + } + }, + "transforms": { + "type": "array", + "description": "List of transforms.", + "items": { + "$ref": "#/definitions/TransformType" + } + } + }, + "required": [ + "matchVariable", + "operator", + "matchValue" + ] + }, + "MatchProcessingBehavior": { + "type": "string", + "description": "If this rule is a match should the rules engine continue running the remaining rules or stop. If not present, defaults to Continue.", + "enum": [ + "Continue", + "Stop" + ], + "x-ms-enum": { + "name": "MatchProcessingBehavior", + "modelAsString": true, + "values": [ + { + "name": "Continue", + "value": "Continue", + "description": "Continue" + }, + { + "name": "Stop", + "value": "Stop", + "description": "Stop" + } + ] + } + }, + "MatchVariable": { + "type": "string", + "description": "Request variable to compare with.", + "enum": [ + "RemoteAddr", + "RequestMethod", + "QueryString", + "PostArgs", + "RequestUri", + "RequestHeader", + "RequestBody", + "Cookies", + "SocketAddr" + ], + "x-ms-enum": { + "name": "MatchVariable", + "modelAsString": true, + "values": [ + { + "name": "RemoteAddr", + "value": "RemoteAddr", + "description": "RemoteAddr" + }, + { + "name": "RequestMethod", + "value": "RequestMethod", + "description": "RequestMethod" + }, + { + "name": "QueryString", + "value": "QueryString", + "description": "QueryString" + }, + { + "name": "PostArgs", + "value": "PostArgs", + "description": "PostArgs" + }, + { + "name": "RequestUri", + "value": "RequestUri", + "description": "RequestUri" + }, + { + "name": "RequestHeader", + "value": "RequestHeader", + "description": "RequestHeader" + }, + { + "name": "RequestBody", + "value": "RequestBody", + "description": "RequestBody" + }, + { + "name": "Cookies", + "value": "Cookies", + "description": "Cookies" + }, + { + "name": "SocketAddr", + "value": "SocketAddr", + "description": "SocketAddr" + } + ] + } + }, + "MinimumTLSVersion": { + "type": "string", + "description": "The minimum TLS version required from the clients to establish an SSL handshake with Front Door.", + "enum": [ + "1.0", + "1.2" + ], + "x-ms-enum": { + "name": "MinimumTLSVersion", + "modelAsString": true, + "values": [ + { + "name": "1.0", + "value": "1.0", + "description": "1.0" + }, + { + "name": "1.2", + "value": "1.2", + "description": "1.2" + } + ] + } + }, + "NetworkExperimentResourceState": { + "type": "string", + "description": "Defines the server side resource status", + "enum": [ + "Creating", + "Enabling", + "Enabled", + "Disabling", + "Disabled", + "Deleting" + ], + "x-ms-enum": { + "name": "NetworkExperimentResourceState", + "modelAsString": true, + "values": [ + { + "name": "Creating", + "value": "Creating", + "description": "Creating" + }, + { + "name": "Enabling", + "value": "Enabling", + "description": "Enabling" + }, + { + "name": "Enabled", + "value": "Enabled", + "description": "Enabled" + }, + { + "name": "Disabling", + "value": "Disabling", + "description": "Disabling" + }, + { + "name": "Disabled", + "value": "Disabled", + "description": "Disabled" + }, + { + "name": "Deleting", + "value": "Deleting", + "description": "Deleting" + } + ] + } + }, + "Operator": { + "type": "string", + "description": "Comparison type to use for matching with the variable value.", + "enum": [ + "Any", + "IPMatch", + "GeoMatch", + "Equal", + "Contains", + "LessThan", + "GreaterThan", + "LessThanOrEqual", + "GreaterThanOrEqual", + "BeginsWith", + "EndsWith", + "RegEx", + "ServiceTagMatch" + ], + "x-ms-enum": { + "name": "Operator", + "modelAsString": true, + "values": [ + { + "name": "Any", + "value": "Any", + "description": "Any" + }, + { + "name": "IPMatch", + "value": "IPMatch", + "description": "IPMatch" + }, + { + "name": "GeoMatch", + "value": "GeoMatch", + "description": "GeoMatch" + }, + { + "name": "Equal", + "value": "Equal", + "description": "Equal" + }, + { + "name": "Contains", + "value": "Contains", + "description": "Contains" + }, + { + "name": "LessThan", + "value": "LessThan", + "description": "LessThan" + }, + { + "name": "GreaterThan", + "value": "GreaterThan", + "description": "GreaterThan" + }, + { + "name": "LessThanOrEqual", + "value": "LessThanOrEqual", + "description": "LessThanOrEqual" + }, + { + "name": "GreaterThanOrEqual", + "value": "GreaterThanOrEqual", + "description": "GreaterThanOrEqual" + }, + { + "name": "BeginsWith", + "value": "BeginsWith", + "description": "BeginsWith" + }, + { + "name": "EndsWith", + "value": "EndsWith", + "description": "EndsWith" + }, + { + "name": "RegEx", + "value": "RegEx", + "description": "RegEx" + }, + { + "name": "ServiceTagMatch", + "value": "ServiceTagMatch", + "description": "ServiceTagMatch" + } + ] + } + }, + "PolicyEnabledState": { + "type": "string", + "description": "Describes if the policy is in enabled or disabled state. Defaults to Enabled if not specified.", + "enum": [ + "Disabled", + "Enabled" + ], + "x-ms-enum": { + "name": "PolicyEnabledState", + "modelAsString": true, + "values": [ + { + "name": "Disabled", + "value": "Disabled", + "description": "Disabled" + }, + { + "name": "Enabled", + "value": "Enabled", + "description": "Enabled" + } + ] + } + }, + "PolicyMode": { + "type": "string", + "description": "Describes if it is in detection mode or prevention mode at policy level.", + "enum": [ + "Prevention", + "Detection" + ], + "x-ms-enum": { + "name": "PolicyMode", + "modelAsString": true, + "values": [ + { + "name": "Prevention", + "value": "Prevention", + "description": "Prevention" + }, + { + "name": "Detection", + "value": "Detection", + "description": "Detection" + } + ] + } + }, + "PolicyRequestBodyCheck": { + "type": "string", + "description": "Describes if policy managed rules will inspect the request body content.", + "enum": [ + "Disabled", + "Enabled" + ], + "x-ms-enum": { + "name": "PolicyRequestBodyCheck", + "modelAsString": true, + "values": [ + { + "name": "Disabled", + "value": "Disabled", + "description": "Disabled" + }, + { + "name": "Enabled", + "value": "Enabled", + "description": "Enabled" + } + ] + } + }, + "PolicyResourceState": { + "type": "string", + "description": "Resource status of the policy.", + "enum": [ + "Creating", + "Enabling", + "Enabled", + "Disabling", + "Disabled", + "Deleting" + ], + "x-ms-enum": { + "name": "PolicyResourceState", + "modelAsString": true, + "values": [ + { + "name": "Creating", + "value": "Creating", + "description": "Creating" + }, + { + "name": "Enabling", + "value": "Enabling", + "description": "Enabling" + }, + { + "name": "Enabled", + "value": "Enabled", + "description": "Enabled" + }, + { + "name": "Disabling", + "value": "Disabling", + "description": "Disabling" + }, + { + "name": "Disabled", + "value": "Disabled", + "description": "Disabled" + }, + { + "name": "Deleting", + "value": "Deleting", + "description": "Deleting" + } + ] + } + }, + "PolicySettings": { + "type": "object", + "description": "Defines top-level WebApplicationFirewallPolicy configuration settings.", + "properties": { + "enabledState": { + "$ref": "#/definitions/PolicyEnabledState", + "description": "Describes if the policy is in enabled or disabled state. Defaults to Enabled if not specified." + }, + "mode": { + "$ref": "#/definitions/PolicyMode", + "description": "Describes if it is in detection mode or prevention mode at policy level." + }, + "redirectUrl": { + "type": "string", + "description": "If action type is redirect, this field represents redirect URL for the client." + }, + "customBlockResponseStatusCode": { + "type": "integer", + "format": "int32", + "description": "If the action type is block, customer can override the response status code." + }, + "customBlockResponseBody": { + "type": "string", + "description": "If the action type is block, customer can override the response body. The body must be specified in base64 encoding.", + "pattern": "^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=|[A-Za-z0-9+/]{4})$" + }, + "requestBodyCheck": { + "$ref": "#/definitions/PolicyRequestBodyCheck", + "description": "Describes if policy managed rules will inspect the request body content." + }, + "javascriptChallengeExpirationInMinutes": { + "type": "integer", + "format": "int32", + "description": "Defines the JavaScript challenge cookie validity lifetime in minutes. This setting is only applicable to Premium_AzureFrontDoor. Value must be an integer between 5 and 1440 with the default value being 30.", + "minimum": 5, + "maximum": 1440 + }, + "captchaExpirationInMinutes": { + "type": "integer", + "format": "int32", + "description": "Defines the Captcha cookie validity lifetime in minutes. This setting is only applicable to Premium_AzureFrontDoor. Value must be an integer between 5 and 1440 with the default value being 30.", + "minimum": 5, + "maximum": 1440 + }, + "logScrubbing": { + "$ref": "#/definitions/PolicySettingsLogScrubbing", + "description": "Defines rules that scrub sensitive fields in the Web Application Firewall logs.", + "x-ms-client-flatten": true + } + } + }, + "PolicySettingsLogScrubbing": { + "type": "object", + "description": "Defines rules that scrub sensitive fields in the Web Application Firewall logs.", + "properties": { + "state": { + "$ref": "#/definitions/WebApplicationFirewallScrubbingState", + "description": "State of the log scrubbing config. Default value is Enabled." + }, + "scrubbingRules": { + "type": "array", + "description": "List of log scrubbing rules applied to the Web Application Firewall logs.", + "items": { + "$ref": "#/definitions/WebApplicationFirewallScrubbingRules" + }, + "x-ms-identifiers": [] + } + } + }, + "PreconfiguredEndpoint": { + "type": "object", + "description": "Defines the properties of a preconfigured endpoint", + "properties": { + "properties": { + "$ref": "#/definitions/PreconfiguredEndpointProperties", + "description": "The properties of a preconfiguredEndpoint", + "x-ms-client-flatten": true + }, + "id": { + "type": "string", + "description": "Resource ID.", + "readOnly": true + }, + "name": { + "type": "string", + "description": "The name of the endpoint." + }, + "type": { + "type": "string", + "description": "Resource type.", + "readOnly": true + }, + "location": { + "type": "string", + "description": "Resource location." + }, + "tags": { + "type": "object", + "description": "Resource tags.", + "additionalProperties": { + "type": "string" + } + } + } + }, + "PreconfiguredEndpointList": { + "type": "object", + "description": "Defines a list of preconfigured endpoints.", + "properties": { + "value": { + "type": "array", + "description": "The PreconfiguredEndpoint items on this page", + "items": { + "$ref": "#/definitions/PreconfiguredEndpoint" + }, + "readOnly": true + }, + "nextLink": { + "type": "string", + "format": "uri", + "description": "The link to the next page of items" + } + }, + "required": [ + "value" + ] + }, + "PreconfiguredEndpointProperties": { + "type": "object", + "description": "Defines the properties of a preconfigured endpoint", + "properties": { + "description": { + "type": "string", + "description": "The description of the endpoint" + }, + "endpoint": { + "type": "string", + "description": "The endpoint that is preconfigured" + }, + "endpointType": { + "$ref": "#/definitions/EndpointType", + "description": "The type of endpoint" + }, + "backend": { + "type": "string", + "description": "The preconfigured endpoint backend" + } + } + }, + "PrivateEndpointStatus": { + "type": "string", + "description": "The Approval status for the connection to the Private Link", + "enum": [ + "Pending", + "Approved", + "Rejected", + "Disconnected", + "Timeout" + ], + "x-ms-enum": { + "name": "PrivateEndpointStatus", + "modelAsString": true, + "values": [ + { + "name": "Pending", + "value": "Pending", + "description": "Pending" + }, + { + "name": "Approved", + "value": "Approved", + "description": "Approved" + }, + { + "name": "Rejected", + "value": "Rejected", + "description": "Rejected" + }, + { + "name": "Disconnected", + "value": "Disconnected", + "description": "Disconnected" + }, + { + "name": "Timeout", + "value": "Timeout", + "description": "Timeout" + } + ] + } + }, + "Profile": { + "type": "object", + "description": "Defines an Network Experiment Profile and lists of Experiments", + "properties": { + "properties": { + "$ref": "#/definitions/ProfileProperties", + "description": "The properties of a Profile", + "x-ms-client-flatten": true + }, + "etag": { + "type": "string", + "description": "Gets a unique read-only string that changes whenever the resource is updated." + }, + "location": { + "type": "string", + "description": "Resource location." + }, + "tags": { + "type": "object", + "description": "Resource tags.", + "additionalProperties": { + "type": "string" + } + } + }, + "allOf": [ + { + "$ref": "../../../../../common-types/resource-management/v3/types.json#/definitions/ProxyResource" + } + ] + }, + "ProfileList": { + "type": "object", + "description": "Defines a list of Profiles. It contains a list of Profile objects and a URL link to get the next set of results.", + "properties": { + "value": { + "type": "array", + "description": "The Profile items on this page", + "items": { + "$ref": "#/definitions/Profile" + }, + "readOnly": true + }, + "nextLink": { + "type": "string", + "format": "uri", + "description": "The link to the next page of items" + } + }, + "required": [ + "value" + ] + }, + "ProfileProperties": { + "type": "object", + "description": "Defines the properties of an experiment", + "properties": { + "resourceState": { + "$ref": "#/definitions/NetworkExperimentResourceState", + "description": "Resource status.", + "readOnly": true + }, + "enabledState": { + "$ref": "#/definitions/State", + "description": "The state of the Experiment" + } + } + }, + "ProfileUpdateModel": { + "type": "object", + "description": "Defines modifiable attributes of a Profile", + "properties": { + "properties": { + "$ref": "#/definitions/ProfileUpdateProperties", + "description": "The properties of a Profile", + "x-ms-client-flatten": true + }, + "tags": { + "type": "object", + "description": "Resource tags.", + "additionalProperties": { + "type": "string" + } + } + } + }, + "ProfileUpdateProperties": { + "type": "object", + "description": "Defines the properties of an experiment", + "properties": { + "enabledState": { + "$ref": "#/definitions/State", + "description": "The enabled state of the Profile" + } + } + }, + "PurgeParameters": { + "type": "object", + "description": "Parameters required for content purge.", + "properties": { + "contentPaths": { + "type": "array", + "description": "The path to the content to be purged. Can describe a file path or a wild card directory.", + "items": { + "type": "string" + } + } + }, + "required": [ + "contentPaths" + ] + }, + "RedirectConfiguration": { + "type": "object", + "description": "Describes Redirect Route.", + "properties": { + "redirectType": { + "$ref": "#/definitions/FrontDoorRedirectType", + "description": "The redirect type the rule will use when redirecting traffic." + }, + "redirectProtocol": { + "$ref": "#/definitions/FrontDoorRedirectProtocol", + "description": "The protocol of the destination to where the traffic is redirected" + }, + "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": { + "type": "string", + "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 &." + } + }, + "allOf": [ + { + "$ref": "#/definitions/RouteConfiguration" + } + ], + "x-ms-discriminator-value": "#Microsoft.Azure.FrontDoor.Models.FrontdoorRedirectConfiguration" + }, + "Resource": { + "type": "object", + "description": "Common resource representation.", + "properties": { + "id": { + "type": "string", + "description": "Resource ID.", + "readOnly": true + }, + "name": { + "type": "string", + "description": "Resource name.", + "readOnly": true + }, + "type": { + "type": "string", + "description": "Resource type.", + "readOnly": true + }, + "location": { + "type": "string", + "description": "Resource location." + }, + "tags": { + "type": "object", + "description": "Resource tags.", + "additionalProperties": { + "type": "string" + } + } + } + }, + "ResourceType": { + "type": "string", + "description": "Type of Front Door resource used in CheckNameAvailability.", + "enum": [ + "Microsoft.Network/frontDoors", + "Microsoft.Network/frontDoors/frontendEndpoints" + ], + "x-ms-enum": { + "name": "ResourceType", + "modelAsString": false, + "values": [ + { + "name": "Microsoft.Network/frontDoors", + "value": "Microsoft.Network/frontDoors", + "description": "Microsoft.Network/frontDoors" + }, + { + "name": "Microsoft.Network/frontDoors/frontendEndpoints", + "value": "Microsoft.Network/frontDoors/frontendEndpoints", + "description": "Microsoft.Network/frontDoors/frontendEndpoints" + } + ] + } + }, + "RouteConfiguration": { + "type": "object", + "description": "Base class for all types of Route.", + "properties": { + "@odata.type": { + "type": "string" + } + }, + "discriminator": "@odata.type", + "required": [ + "@odata.type" + ] + }, + "RoutingRule": { + "type": "object", + "description": "A routing rule represents a specification for traffic to treat and where to send it, along with health probe information.", + "properties": { + "properties": { + "$ref": "#/definitions/RoutingRuleProperties", + "description": "Properties of the Front Door Routing Rule", + "x-ms-client-flatten": true + }, + "name": { + "type": "string", + "description": "Resource name." + }, + "type": { + "type": "string", + "description": "Resource type.", + "readOnly": true + } + }, + "allOf": [ + { + "$ref": "#/definitions/SubResource" + } + ] + }, + "RoutingRuleEnabledState": { + "type": "string", + "description": "Whether to enable use of this rule. Permitted values are 'Enabled' or 'Disabled'", + "enum": [ + "Enabled", + "Disabled" + ], + "x-ms-enum": { + "name": "RoutingRuleEnabledState", + "modelAsString": true, + "values": [ + { + "name": "Enabled", + "value": "Enabled", + "description": "Enabled" + }, + { + "name": "Disabled", + "value": "Disabled", + "description": "Disabled" + } + ] + } + }, + "RoutingRuleLink": { + "type": "object", + "description": "Defines the Resource ID for a Routing Rule.", + "properties": { + "id": { + "type": "string", + "description": "Resource ID." + } + } + }, + "RoutingRuleProperties": { + "type": "object", + "description": "The JSON object that contains the properties required to create a routing rule.", + "properties": { + "resourceState": { + "$ref": "#/definitions/FrontDoorResourceState", + "title": "Resource status of the Front Door or Front Door SubResource.", + "description": "Resource status.", + "readOnly": true + } + }, + "allOf": [ + { + "$ref": "#/definitions/RoutingRuleUpdateParameters" + } + ] + }, + "RoutingRuleUpdateParameters": { + "type": "object", + "description": "Routing rules to apply to an endpoint", + "properties": { + "frontendEndpoints": { + "type": "array", + "description": "Frontend endpoints associated with this rule", + "items": { + "$ref": "#/definitions/SubResource" + } + }, + "acceptedProtocols": { + "type": "array", + "description": "Protocol schemes to match for this rule", + "items": { + "$ref": "#/definitions/FrontDoorProtocol" + } + }, + "patternsToMatch": { + "type": "array", + "description": "The route patterns of the rule.", + "items": { + "type": "string" + } + }, + "enabledState": { + "$ref": "#/definitions/RoutingRuleEnabledState", + "description": "Whether to enable use of this rule. Permitted values are 'Enabled' or 'Disabled'" + }, + "routeConfiguration": { + "$ref": "#/definitions/RouteConfiguration", + "description": "A reference to the routing configuration." + }, + "rulesEngine": { + "$ref": "#/definitions/SubResource", + "description": "A reference to a specific Rules Engine Configuration to apply to this route." + }, + "webApplicationFirewallPolicyLink": { + "type": "object", + "description": "Defines the Web Application Firewall policy for each routing rule (if applicable)", + "properties": { + "id": { + "type": "string", + "description": "Resource ID." + } + } + } + } + }, + "RuleType": { + "type": "string", + "description": "Describes type of rule.", + "enum": [ + "MatchRule", + "RateLimitRule" + ], + "x-ms-enum": { + "name": "RuleType", + "modelAsString": true, + "values": [ + { + "name": "MatchRule", + "value": "MatchRule", + "description": "MatchRule" + }, + { + "name": "RateLimitRule", + "value": "RateLimitRule", + "description": "RateLimitRule" + } + ] + } + }, + "RulesEngine": { + "type": "object", + "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": { + "$ref": "#/definitions/RulesEngineProperties", + "description": "Properties of the Rules Engine Configuration.", + "x-ms-client-flatten": true + } + }, + "allOf": [ + { + "$ref": "../../../../../common-types/resource-management/v3/types.json#/definitions/ProxyResource" + } + ] + }, + "RulesEngineAction": { + "type": "object", + "description": "One or more actions that will execute, modifying the request and/or response.", + "properties": { + "requestHeaderActions": { + "type": "array", + "description": "A list of header actions to apply from the request from AFD to the origin.", + "items": { + "$ref": "#/definitions/HeaderAction" + } + }, + "responseHeaderActions": { + "type": "array", + "description": "A list of header actions to apply from the response from AFD to the client.", + "items": { + "$ref": "#/definitions/HeaderAction" + } + }, + "routeConfigurationOverride": { + "$ref": "#/definitions/RouteConfiguration", + "description": "Override the route configuration." + } + } + }, + "RulesEngineListResult": { + "type": "object", + "description": "Paged collection of RulesEngine items", + "properties": { + "value": { + "type": "array", + "description": "The RulesEngine items on this page", + "items": { + "$ref": "#/definitions/RulesEngine" + }, + "readOnly": true + }, + "nextLink": { + "type": "string", + "format": "uri", + "description": "The link to the next page of items" + } + }, + "required": [ + "value" + ] + }, + "RulesEngineMatchCondition": { + "type": "object", + "description": "Define a match condition", + "properties": { + "rulesEngineMatchVariable": { + "$ref": "#/definitions/RulesEngineMatchVariable", + "description": "Match Variable" + }, + "selector": { + "type": "string", + "description": "Name of selector in RequestHeader or RequestBody to be matched" + }, + "rulesEngineOperator": { + "$ref": "#/definitions/RulesEngineOperator", + "description": "Describes operator to apply to the match condition." + }, + "negateCondition": { + "type": "boolean", + "description": "Describes if this is negate condition or not" + }, + "rulesEngineMatchValue": { + "type": "array", + "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.", + "items": { + "type": "string" + } + }, + "transforms": { + "type": "array", + "description": "List of transforms", + "items": { + "$ref": "#/definitions/Transform" + } + } + }, + "required": [ + "rulesEngineMatchVariable", + "rulesEngineOperator", + "rulesEngineMatchValue" + ] + }, + "RulesEngineMatchVariable": { + "type": "string", + "description": "Match Variable", + "enum": [ + "IsMobile", + "RemoteAddr", + "RequestMethod", + "QueryString", + "PostArgs", + "RequestUri", + "RequestPath", + "RequestFilename", + "RequestFilenameExtension", + "RequestHeader", + "RequestBody", + "RequestScheme" + ], + "x-ms-enum": { + "name": "RulesEngineMatchVariable", + "modelAsString": true, + "values": [ + { + "name": "IsMobile", + "value": "IsMobile", + "description": "IsMobile" + }, + { + "name": "RemoteAddr", + "value": "RemoteAddr", + "description": "RemoteAddr" + }, + { + "name": "RequestMethod", + "value": "RequestMethod", + "description": "RequestMethod" + }, + { + "name": "QueryString", + "value": "QueryString", + "description": "QueryString" + }, + { + "name": "PostArgs", + "value": "PostArgs", + "description": "PostArgs" + }, + { + "name": "RequestUri", + "value": "RequestUri", + "description": "RequestUri" + }, + { + "name": "RequestPath", + "value": "RequestPath", + "description": "RequestPath" + }, + { + "name": "RequestFilename", + "value": "RequestFilename", + "description": "RequestFilename" + }, + { + "name": "RequestFilenameExtension", + "value": "RequestFilenameExtension", + "description": "RequestFilenameExtension" + }, + { + "name": "RequestHeader", + "value": "RequestHeader", + "description": "RequestHeader" + }, + { + "name": "RequestBody", + "value": "RequestBody", + "description": "RequestBody" + }, + { + "name": "RequestScheme", + "value": "RequestScheme", + "description": "RequestScheme" + } + ] + } + }, + "RulesEngineOperator": { + "type": "string", + "description": "Describes operator to apply to the match condition.", + "enum": [ + "Any", + "IPMatch", + "GeoMatch", + "Equal", + "Contains", + "LessThan", + "GreaterThan", + "LessThanOrEqual", + "GreaterThanOrEqual", + "BeginsWith", + "EndsWith" + ], + "x-ms-enum": { + "name": "RulesEngineOperator", + "modelAsString": true, + "values": [ + { + "name": "Any", + "value": "Any", + "description": "Any" + }, + { + "name": "IPMatch", + "value": "IPMatch", + "description": "IPMatch" + }, + { + "name": "GeoMatch", + "value": "GeoMatch", + "description": "GeoMatch" + }, + { + "name": "Equal", + "value": "Equal", + "description": "Equal" + }, + { + "name": "Contains", + "value": "Contains", + "description": "Contains" + }, + { + "name": "LessThan", + "value": "LessThan", + "description": "LessThan" + }, + { + "name": "GreaterThan", + "value": "GreaterThan", + "description": "GreaterThan" + }, + { + "name": "LessThanOrEqual", + "value": "LessThanOrEqual", + "description": "LessThanOrEqual" + }, + { + "name": "GreaterThanOrEqual", + "value": "GreaterThanOrEqual", + "description": "GreaterThanOrEqual" + }, + { + "name": "BeginsWith", + "value": "BeginsWith", + "description": "BeginsWith" + }, + { + "name": "EndsWith", + "value": "EndsWith", + "description": "EndsWith" + } + ] + } + }, + "RulesEngineProperties": { + "type": "object", + "description": "The JSON object that contains the properties required to create a Rules Engine Configuration.", + "properties": { + "resourceState": { + "$ref": "#/definitions/FrontDoorResourceState", + "title": "Resource status of the Front Door or Front Door SubResource.", + "description": "Resource status.", + "readOnly": true + } + }, + "allOf": [ + { + "$ref": "#/definitions/RulesEngineUpdateParameters" + } + ] + }, + "RulesEngineRule": { + "type": "object", + "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.", + "properties": { + "name": { + "type": "string", + "description": "A name to refer to this specific rule." + }, + "priority": { + "type": "integer", + "format": "int32", + "description": "A priority assigned to this rule." + }, + "action": { + "$ref": "#/definitions/RulesEngineAction", + "description": "Actions to perform on the request and response if all of the match conditions are met." + }, + "matchConditions": { + "type": "array", + "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.", + "items": { + "$ref": "#/definitions/RulesEngineMatchCondition" + } + }, + "matchProcessingBehavior": { + "$ref": "#/definitions/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." + } + }, + "required": [ + "name", + "priority", + "action" + ] + }, + "RulesEngineUpdateParameters": { + "type": "object", + "description": "Rules Engine Configuration to apply to a Routing Rule.", + "properties": { + "rules": { + "type": "array", + "description": "A list of rules that define a particular Rules Engine Configuration.", + "items": { + "$ref": "#/definitions/RulesEngineRule" + } + } + } + }, + "ScrubbingRuleEntryMatchVariable": { + "type": "string", + "description": "The variable to be scrubbed from the logs.", + "enum": [ + "RequestIPAddress", + "RequestUri", + "QueryStringArgNames", + "RequestHeaderNames", + "RequestCookieNames", + "RequestBodyPostArgNames", + "RequestBodyJsonArgNames" + ], + "x-ms-enum": { + "name": "ScrubbingRuleEntryMatchVariable", + "modelAsString": true, + "values": [ + { + "name": "RequestIPAddress", + "value": "RequestIPAddress", + "description": "RequestIPAddress" + }, + { + "name": "RequestUri", + "value": "RequestUri", + "description": "RequestUri" + }, + { + "name": "QueryStringArgNames", + "value": "QueryStringArgNames", + "description": "QueryStringArgNames" + }, + { + "name": "RequestHeaderNames", + "value": "RequestHeaderNames", + "description": "RequestHeaderNames" + }, + { + "name": "RequestCookieNames", + "value": "RequestCookieNames", + "description": "RequestCookieNames" + }, + { + "name": "RequestBodyPostArgNames", + "value": "RequestBodyPostArgNames", + "description": "RequestBodyPostArgNames" + }, + { + "name": "RequestBodyJsonArgNames", + "value": "RequestBodyJsonArgNames", + "description": "RequestBodyJsonArgNames" + } + ] + } + }, + "SecurityPolicyLink": { + "type": "object", + "description": "Defines the Resource ID for a Security Policy.", + "properties": { + "id": { + "type": "string", + "description": "Resource ID." + } + } + }, + "SensitivityType": { + "type": "string", + "description": "Defines the sensitivity for the rule.", + "enum": [ + "Low", + "Medium", + "High" + ], + "x-ms-enum": { + "name": "SensitivityType", + "modelAsString": true, + "values": [ + { + "name": "Low", + "value": "Low", + "description": "Low Sensitivity - triggers the rule by larger spikes in traffic" + }, + { + "name": "Medium", + "value": "Medium", + "description": "Medium Sensitivity - triggers the rule by moderate spikes in traffic" + }, + { + "name": "High", + "value": "High", + "description": "High Sensitivity - triggers the rule by smaller spikes in traffic" + } + ] + } + }, + "SessionAffinityEnabledState": { + "type": "string", + "description": "Whether to allow session affinity on this host. Valid options are 'Enabled' or 'Disabled'", + "enum": [ + "Enabled", + "Disabled" + ], + "x-ms-enum": { + "name": "SessionAffinityEnabledState", + "modelAsString": true, + "values": [ + { + "name": "Enabled", + "value": "Enabled", + "description": "Enabled" + }, + { + "name": "Disabled", + "value": "Disabled", + "description": "Disabled" + } + ] + } + }, + "Sku": { + "type": "object", + "description": "The pricing tier of the web application firewall policy.", + "properties": { + "name": { + "$ref": "#/definitions/SkuName", + "description": "Name of the pricing tier." + } + } + }, + "SkuName": { + "type": "string", + "description": "Name of the pricing tier.", + "enum": [ + "Classic_AzureFrontDoor", + "Standard_AzureFrontDoor", + "Premium_AzureFrontDoor" + ], + "x-ms-enum": { + "name": "SkuName", + "modelAsString": true, + "values": [ + { + "name": "Classic_AzureFrontDoor", + "value": "Classic_AzureFrontDoor", + "description": "Classic_AzureFrontDoor" + }, + { + "name": "Standard_AzureFrontDoor", + "value": "Standard_AzureFrontDoor", + "description": "Standard_AzureFrontDoor" + }, + { + "name": "Premium_AzureFrontDoor", + "value": "Premium_AzureFrontDoor", + "description": "Premium_AzureFrontDoor" + } + ] + } + }, + "State": { + "type": "string", + "description": "The state of the Experiment", + "enum": [ + "Enabled", + "Disabled" + ], + "x-ms-enum": { + "name": "State", + "modelAsString": true, + "values": [ + { + "name": "Enabled", + "value": "Enabled", + "description": "Enabled" + }, + { + "name": "Disabled", + "value": "Disabled", + "description": "Disabled" + } + ] + } + }, + "SubResource": { + "type": "object", + "description": "Reference to another subresource.", + "properties": { + "id": { + "type": "string", + "description": "Resource ID." + } + } + }, + "TagsObject": { + "type": "object", + "description": "Tags object for patch operations.", + "properties": { + "tags": { + "type": "object", + "description": "Resource tags.", + "additionalProperties": { + "type": "string" + } + } + } + }, + "Timeseries": { + "type": "object", + "description": "Defines the Timeseries", + "properties": { + "properties": { + "$ref": "#/definitions/TimeseriesProperties", + "description": "The properties of a Timeseries", + "x-ms-client-flatten": true + } + }, + "allOf": [ + { + "$ref": "#/definitions/Resource" + } + ] + }, + "TimeseriesDataPoint": { + "type": "object", + "description": "Defines a timeseries datapoint used in a timeseries", + "properties": { + "dateTimeUTC": { + "type": "string", + "description": "The DateTime of the Timeseries data point in UTC" + }, + "value": { + "type": "number", + "format": "float", + "description": "The Value of the Timeseries data point" + } + } + }, + "TimeseriesProperties": { + "type": "object", + "description": "Defines the properties of a timeseries", + "properties": { + "endpoint": { + "type": "string", + "description": "The endpoint associated with the Timeseries data point" + }, + "startDateTimeUTC": { + "type": "string", + "description": "The start DateTime of the Timeseries in UTC" + }, + "endDateTimeUTC": { + "type": "string", + "description": "The end DateTime of the Timeseries in UTC" + }, + "aggregationInterval": { + "$ref": "#/definitions/AggregationInterval", + "description": "The aggregation interval of the Timeseries" + }, + "timeseriesType": { + "$ref": "#/definitions/TimeseriesType", + "description": "The type of Timeseries" + }, + "country": { + "type": "string", + "description": "The country associated with the Timeseries. Values are country ISO codes as specified here- https://www.iso.org/iso-3166-country-codes.html" + }, + "timeseriesData": { + "type": "array", + "description": "The set of data points for the timeseries", + "items": { + "$ref": "#/definitions/TimeseriesDataPoint" + } + } + } + }, + "TimeseriesType": { + "type": "string", + "description": "The type of Timeseries", + "enum": [ + "MeasurementCounts", + "LatencyP50", + "LatencyP75", + "LatencyP95" + ], + "x-ms-enum": { + "name": "TimeseriesType", + "modelAsString": true, + "values": [ + { + "name": "MeasurementCounts", + "value": "MeasurementCounts", + "description": "MeasurementCounts" + }, + { + "name": "LatencyP50", + "value": "LatencyP50", + "description": "LatencyP50" + }, + { + "name": "LatencyP75", + "value": "LatencyP75", + "description": "LatencyP75" + }, + { + "name": "LatencyP95", + "value": "LatencyP95", + "description": "LatencyP95" + } + ] + } + }, + "Transform": { + "type": "string", + "description": "Describes what transforms are applied before matching", + "enum": [ + "Lowercase", + "Uppercase", + "Trim", + "UrlDecode", + "UrlEncode", + "RemoveNulls" + ], + "x-ms-enum": { + "name": "Transform", + "modelAsString": true, + "values": [ + { + "name": "Lowercase", + "value": "Lowercase", + "description": "Lowercase" + }, + { + "name": "Uppercase", + "value": "Uppercase", + "description": "Uppercase" + }, + { + "name": "Trim", + "value": "Trim", + "description": "Trim" + }, + { + "name": "UrlDecode", + "value": "UrlDecode", + "description": "UrlDecode" + }, + { + "name": "UrlEncode", + "value": "UrlEncode", + "description": "UrlEncode" + }, + { + "name": "RemoveNulls", + "value": "RemoveNulls", + "description": "RemoveNulls" + } + ] + } + }, + "TransformType": { + "type": "string", + "description": "Describes what transforms applied before matching.", + "enum": [ + "Lowercase", + "Uppercase", + "Trim", + "UrlDecode", + "UrlEncode", + "RemoveNulls" + ], + "x-ms-enum": { + "name": "TransformType", + "modelAsString": true, + "values": [ + { + "name": "Lowercase", + "value": "Lowercase", + "description": "Lowercase" + }, + { + "name": "Uppercase", + "value": "Uppercase", + "description": "Uppercase" + }, + { + "name": "Trim", + "value": "Trim", + "description": "Trim" + }, + { + "name": "UrlDecode", + "value": "UrlDecode", + "description": "UrlDecode" + }, + { + "name": "UrlEncode", + "value": "UrlEncode", + "description": "UrlEncode" + }, + { + "name": "RemoveNulls", + "value": "RemoveNulls", + "description": "RemoveNulls" + } + ] + } + }, + "ValidateCustomDomainInput": { + "type": "object", + "description": "Input of the custom domain to be validated for DNS mapping.", + "properties": { + "hostName": { + "type": "string", + "description": "The host name of the custom domain. Must be a domain name." + } + }, + "required": [ + "hostName" + ] + }, + "ValidateCustomDomainOutput": { + "type": "object", + "description": "Output of custom domain validation.", + "properties": { + "customDomainValidated": { + "type": "boolean", + "description": "Indicates whether the custom domain is valid or not.", + "readOnly": true + }, + "reason": { + "type": "string", + "description": "The reason why the custom domain is not valid.", + "readOnly": true + }, + "message": { + "type": "string", + "description": "Error message describing why the custom domain is not valid.", + "readOnly": true + } + } + }, + "VariableName": { + "type": "string", + "description": "Describes the supported variable for group by", + "enum": [ + "SocketAddr", + "GeoLocation", + "None" + ], + "x-ms-enum": { + "name": "VariableName", + "modelAsString": true, + "values": [ + { + "name": "SocketAddr", + "value": "SocketAddr", + "description": "SocketAddr" + }, + { + "name": "GeoLocation", + "value": "GeoLocation", + "description": "GeoLocation" + }, + { + "name": "None", + "value": "None", + "description": "None" + } + ] + } + }, + "WebApplicationFirewallPolicy": { + "type": "object", + "description": "Defines web application firewall policy.", + "properties": { + "properties": { + "$ref": "#/definitions/WebApplicationFirewallPolicyProperties", + "description": "Properties of the web application firewall policy.", + "x-ms-client-flatten": true + }, + "etag": { + "type": "string", + "description": "Gets a unique read-only string that changes whenever the resource is updated." + }, + "sku": { + "$ref": "#/definitions/Sku", + "description": "The pricing tier of web application firewall policy. Defaults to Classic_AzureFrontDoor if not specified." + } + }, + "allOf": [ + { + "$ref": "../../../../../common-types/resource-management/v3/types.json#/definitions/TrackedResource" + } + ] + }, + "WebApplicationFirewallPolicyList": { + "type": "object", + "description": "Defines a list of WebApplicationFirewallPolicies. It contains a list of WebApplicationFirewallPolicy objects and a URL link to get the next set of results.", + "properties": { + "value": { + "type": "array", + "description": "The WebApplicationFirewallPolicy items on this page", + "items": { + "$ref": "#/definitions/WebApplicationFirewallPolicy" + }, + "readOnly": true + }, + "nextLink": { + "type": "string", + "format": "uri", + "description": "The link to the next page of items" + } + }, + "required": [ + "value" + ] + }, + "WebApplicationFirewallPolicyProperties": { + "type": "object", + "description": "Defines web application firewall policy properties.", + "properties": { + "policySettings": { + "$ref": "#/definitions/PolicySettings", + "description": "Describes settings for the policy." + }, + "customRules": { + "$ref": "#/definitions/CustomRuleList", + "description": "Describes custom rules inside the policy." + }, + "managedRules": { + "$ref": "#/definitions/ManagedRuleSetList", + "description": "Describes managed rules inside the policy." + }, + "frontendEndpointLinks": { + "type": "array", + "description": "Describes Frontend Endpoints associated with this Web Application Firewall policy.", + "items": { + "$ref": "#/definitions/FrontendEndpointLink" + }, + "readOnly": true + }, + "routingRuleLinks": { + "type": "array", + "description": "Describes Routing Rules associated with this Web Application Firewall policy.", + "items": { + "$ref": "#/definitions/RoutingRuleLink" + }, + "readOnly": true + }, + "securityPolicyLinks": { + "type": "array", + "description": "Describes Security Policy associated with this Web Application Firewall policy.", + "items": { + "$ref": "#/definitions/SecurityPolicyLink" + }, + "readOnly": true + }, + "provisioningState": { + "type": "string", + "description": "Provisioning state of the policy.", + "readOnly": true + }, + "resourceState": { + "$ref": "#/definitions/PolicyResourceState", + "title": "Resource status of the policy.", + "description": "Resource status of the policy.", + "readOnly": true + } + } + }, + "WebApplicationFirewallScrubbingRules": { + "type": "object", + "description": "Defines the contents of the log scrubbing rules.", + "properties": { + "matchVariable": { + "$ref": "#/definitions/ScrubbingRuleEntryMatchVariable", + "description": "The variable to be scrubbed from the logs." + }, + "selectorMatchOperator": { + "$ref": "#/definitions/scrubbingRuleEntryMatchOperator", + "description": "When matchVariable is a collection, operate on the selector to specify which elements in the collection this rule applies to." + }, + "selector": { + "type": "string", + "description": "When matchVariable is a collection, operator used to specify which elements in the collection this rule applies to." + }, + "state": { + "$ref": "#/definitions/scrubbingRuleEntryState", + "description": "Defines the state of a log scrubbing rule. Default value is enabled." + } + }, + "required": [ + "matchVariable", + "selectorMatchOperator" + ] + }, + "WebApplicationFirewallScrubbingState": { + "type": "string", + "description": "State of the log scrubbing config. Default value is Enabled.", + "enum": [ + "Enabled", + "Disabled" + ], + "x-ms-enum": { + "name": "WebApplicationFirewallScrubbingState", + "modelAsString": true, + "values": [ + { + "name": "Enabled", + "value": "Enabled", + "description": "Enabled" + }, + { + "name": "Disabled", + "value": "Disabled", + "description": "Disabled" + } + ] + } + }, + "scrubbingRuleEntryMatchOperator": { + "type": "string", + "description": "When matchVariable is a collection, operate on the selector to specify which elements in the collection this rule applies to.", + "enum": [ + "EqualsAny", + "Equals" + ], + "x-ms-enum": { + "name": "scrubbingRuleEntryMatchOperator", + "modelAsString": true, + "values": [ + { + "name": "EqualsAny", + "value": "EqualsAny", + "description": "EqualsAny" + }, + { + "name": "Equals", + "value": "Equals", + "description": "Equals" + } + ] + } + }, + "scrubbingRuleEntryState": { + "type": "string", + "description": "Defines the state of a log scrubbing rule. Default value is enabled.", + "enum": [ + "Enabled", + "Disabled" + ], + "x-ms-enum": { + "name": "scrubbingRuleEntryState", + "modelAsString": true, + "values": [ + { + "name": "Enabled", + "value": "Enabled", + "description": "Enabled" + }, + { + "name": "Disabled", + "value": "Disabled", + "description": "Disabled" + } + ] + } + } + }, + "parameters": {} +} diff --git a/specification/frontdoor/resource-manager/Microsoft.Network/stable/2025-10-01/webapplicationfirewall.json b/specification/frontdoor/resource-manager/Microsoft.Network/stable/2025-10-01/webapplicationfirewall.json deleted file mode 100644 index 390bde359288..000000000000 --- a/specification/frontdoor/resource-manager/Microsoft.Network/stable/2025-10-01/webapplicationfirewall.json +++ /dev/null @@ -1,1252 +0,0 @@ -{ - "swagger": "2.0", - "info": { - "version": "2025-10-01", - "title": "WebApplicationFirewallManagement", - "description": "APIs to manage web application firewall rules." - }, - "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": { - "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/frontDoorWebApplicationFirewallPolicies": { - "get": { - "tags": [ - "WebApplicationFirewallPolicies" - ], - "description": "Lists all of the protection policies within a resource group.", - "operationId": "Policies_List", - "parameters": [ - { - "$ref": "#/parameters/ResourceGroupNameParameter" - }, - { - "$ref": "./network.json#/parameters/SubscriptionIdParameter" - }, - { - "$ref": "./network.json#/parameters/ApiVersionParameter" - } - ], - "responses": { - "200": { - "description": "OK. The request has succeeded.", - "schema": { - "$ref": "#/definitions/WebApplicationFirewallPolicyList" - } - }, - "default": { - "description": "Error response describing why the operation failed.", - "schema": { - "$ref": "#/definitions/ErrorResponse" - } - } - }, - "x-ms-pageable": { - "nextLinkName": "nextLink" - }, - "x-ms-examples": { - "Get all Policies in a Resource Group": { - "$ref": "./examples/WafListPolicies.json" - } - } - } - }, - "/subscriptions/{subscriptionId}/providers/Microsoft.Network/frontDoorWebApplicationFirewallPolicies": { - "get": { - "tags": [ - "WebApplicationFirewallPolicies" - ], - "description": "Lists all of the protection policies within a subscription.", - "operationId": "Policies_ListBySubscription", - "parameters": [ - { - "$ref": "./network.json#/parameters/SubscriptionIdParameter" - }, - { - "$ref": "./network.json#/parameters/ApiVersionParameter" - } - ], - "responses": { - "200": { - "description": "OK. The request has succeeded.", - "schema": { - "$ref": "#/definitions/WebApplicationFirewallPolicyList" - } - }, - "default": { - "description": "Error response describing why the operation failed.", - "schema": { - "$ref": "#/definitions/DefaultErrorResponse" - } - } - }, - "x-ms-pageable": { - "nextLinkName": "nextLink" - }, - "x-ms-examples": { - "Get all Policies in a Resource Group": { - "$ref": "./examples/WafListPoliciesUnderSubscription.json" - } - } - } - }, - "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/FrontDoorWebApplicationFirewallPolicies/{policyName}": { - "get": { - "tags": [ - "WebApplicationFirewallPolicies" - ], - "description": "Retrieve protection policy with specified name within a resource group.", - "operationId": "Policies_Get", - "parameters": [ - { - "$ref": "#/parameters/ResourceGroupNameParameter" - }, - { - "$ref": "#/parameters/PolicyNameParameter" - }, - { - "$ref": "./network.json#/parameters/SubscriptionIdParameter" - }, - { - "$ref": "./network.json#/parameters/ApiVersionParameter" - } - ], - "responses": { - "200": { - "description": "OK. The request has succeeded.", - "schema": { - "$ref": "#/definitions/WebApplicationFirewallPolicy" - } - }, - "default": { - "description": "Error response describing why the operation failed.", - "schema": { - "$ref": "#/definitions/ErrorResponse" - } - } - }, - "x-ms-examples": { - "Get Policy": { - "$ref": "./examples/WafPolicyGet.json" - } - } - }, - "put": { - "tags": [ - "WebApplicationFirewallPolicies" - ], - "description": "Create or update policy with specified rule set name within a resource group.", - "operationId": "Policies_CreateOrUpdate", - "parameters": [ - { - "$ref": "#/parameters/ResourceGroupNameParameter" - }, - { - "$ref": "#/parameters/PolicyNameParameter" - }, - { - "$ref": "./network.json#/parameters/SubscriptionIdParameter" - }, - { - "$ref": "./network.json#/parameters/ApiVersionParameter" - }, - { - "description": "Policy to be created.", - "in": "body", - "name": "parameters", - "required": true, - "schema": { - "$ref": "#/definitions/WebApplicationFirewallPolicy" - } - } - ], - "responses": { - "200": { - "description": "OK. The request has succeeded.", - "schema": { - "$ref": "#/definitions/WebApplicationFirewallPolicy" - } - }, - "201": { - "description": "Created. The request has been fulfilled and a new protection policy has been created.", - "schema": { - "$ref": "#/definitions/WebApplicationFirewallPolicy" - } - }, - "202": { - "description": "Accepted. The request has been accepted for processing and the operation will complete asynchronously.", - "schema": { - "$ref": "#/definitions/WebApplicationFirewallPolicy" - } - }, - "default": { - "description": "Error response describing why the operation failed.", - "schema": { - "$ref": "#/definitions/ErrorResponse" - } - } - }, - "x-ms-examples": { - "Creates specific policy": { - "$ref": "./examples/WafPolicyCreateOrUpdate.json" - } - }, - "x-ms-long-running-operation": true - }, - "patch": { - "tags": [ - "WebApplicationFirewallPolicies" - ], - "description": "Patch a specific frontdoor webApplicationFirewall policy for tags update under the specified subscription and resource group.", - "operationId": "Policies_Update", - "parameters": [ - { - "$ref": "#/parameters/ResourceGroupNameParameter" - }, - { - "$ref": "#/parameters/PolicyNameParameter" - }, - { - "$ref": "./network.json#/parameters/SubscriptionIdParameter" - }, - { - "$ref": "./network.json#/parameters/ApiVersionParameter" - }, - { - "description": "FrontdoorWebApplicationFirewallPolicy parameters to be patched.", - "in": "body", - "name": "parameters", - "required": true, - "schema": { - "$ref": "./network.json#/definitions/TagsObject" - } - } - ], - "responses": { - "200": { - "description": "OK. The request has succeeded.", - "schema": { - "$ref": "#/definitions/WebApplicationFirewallPolicy" - } - }, - "default": { - "description": "Error response describing why the operation failed.", - "schema": { - "$ref": "#/definitions/ErrorResponse" - } - } - }, - "x-ms-examples": { - "Patches specific policy": { - "$ref": "./examples/WafPolicyPatch.json" - } - }, - "x-ms-long-running-operation": true - }, - "delete": { - "tags": [ - "WebApplicationFirewallPolicies" - ], - "description": "Deletes Policy", - "operationId": "Policies_Delete", - "parameters": [ - { - "$ref": "#/parameters/ResourceGroupNameParameter" - }, - { - "$ref": "#/parameters/PolicyNameParameter" - }, - { - "$ref": "./network.json#/parameters/SubscriptionIdParameter" - }, - { - "$ref": "./network.json#/parameters/ApiVersionParameter" - } - ], - "responses": { - "200": { - "description": "Delete successful." - }, - "202": { - "description": "Accepted. The request has been accepted for processing and the operation will complete asynchronously." - }, - "204": { - "description": "No Content. The request has been accepted but the policy was not found." - } - }, - "x-ms-examples": { - "Delete protection policy": { - "$ref": "./examples/WafPolicyDelete.json" - } - }, - "x-ms-long-running-operation": true - } - }, - "/subscriptions/{subscriptionId}/providers/Microsoft.Network/FrontDoorWebApplicationFirewallManagedRuleSets": { - "get": { - "tags": [ - "WebApplicationFirewallManagedRuleSets" - ], - "description": "Lists all available managed rule sets.", - "operationId": "ManagedRuleSets_List", - "parameters": [ - { - "$ref": "./network.json#/parameters/SubscriptionIdParameter" - }, - { - "$ref": "./network.json#/parameters/ApiVersionParameter" - } - ], - "responses": { - "200": { - "description": "Success. The operation returns a list of all available web application firewall managed rule sets.", - "schema": { - "$ref": "#/definitions/ManagedRuleSetDefinitionList" - } - }, - "default": { - "description": "Error response describing why the operation failed.", - "schema": { - "$ref": "#/definitions/ErrorResponse" - } - } - }, - "x-ms-pageable": { - "nextLinkName": "nextLink" - }, - "x-ms-examples": { - "List Policies ManagedRuleSets in a Resource Group": { - "$ref": "./examples/WafListManagedRuleSets.json" - } - } - } - } - }, - "definitions": { - "WebApplicationFirewallPolicy": { - "description": "Defines web application firewall policy.", - "properties": { - "properties": { - "x-ms-client-flatten": true, - "description": "Properties of the web application firewall policy.", - "$ref": "#/definitions/WebApplicationFirewallPolicyProperties" - }, - "etag": { - "type": "string", - "description": "Gets a unique read-only string that changes whenever the resource is updated." - }, - "sku": { - "description": "The pricing tier of web application firewall policy. Defaults to Classic_AzureFrontDoor if not specified.", - "$ref": "#/definitions/Sku" - } - }, - "allOf": [ - { - "$ref": "./network.json#/definitions/Resource" - } - ] - }, - "WebApplicationFirewallPolicyProperties": { - "description": "Defines web application firewall policy properties.", - "properties": { - "policySettings": { - "description": "Describes settings for the policy.", - "$ref": "#/definitions/PolicySettings" - }, - "customRules": { - "description": "Describes custom rules inside the policy.", - "$ref": "#/definitions/CustomRuleList" - }, - "managedRules": { - "description": "Describes managed rules inside the policy.", - "$ref": "#/definitions/ManagedRuleSetList" - }, - "frontendEndpointLinks": { - "description": "Describes Frontend Endpoints associated with this Web Application Firewall policy.", - "type": "array", - "readOnly": true, - "items": { - "$ref": "#/definitions/FrontendEndpointLink" - } - }, - "routingRuleLinks": { - "description": "Describes Routing Rules associated with this Web Application Firewall policy.", - "type": "array", - "readOnly": true, - "items": { - "$ref": "#/definitions/RoutingRuleLink" - } - }, - "securityPolicyLinks": { - "description": "Describes Security Policy associated with this Web Application Firewall policy.", - "type": "array", - "readOnly": true, - "items": { - "$ref": "#/definitions/SecurityPolicyLink" - } - }, - "provisioningState": { - "readOnly": true, - "type": "string", - "description": "Provisioning state of the policy." - }, - "resourceState": { - "title": "Resource status of the policy.", - "readOnly": true, - "enum": [ - "Creating", - "Enabling", - "Enabled", - "Disabling", - "Disabled", - "Deleting" - ], - "type": "string", - "x-ms-enum": { - "name": "PolicyResourceState", - "modelAsString": true - } - } - } - }, - "Sku": { - "description": "The pricing tier of the web application firewall policy.", - "properties": { - "name": { - "description": "Name of the pricing tier.", - "enum": [ - "Classic_AzureFrontDoor", - "Standard_AzureFrontDoor", - "Premium_AzureFrontDoor" - ], - "type": "string", - "x-ms-enum": { - "name": "SkuName", - "modelAsString": true - } - } - }, - "type": "object" - }, - "WebApplicationFirewallPolicyList": { - "description": "Defines a list of WebApplicationFirewallPolicies. It contains a list of WebApplicationFirewallPolicy objects and a URL link to get the next set of results.", - "properties": { - "value": { - "type": "array", - "readOnly": true, - "items": { - "$ref": "#/definitions/WebApplicationFirewallPolicy" - }, - "description": "List of WebApplicationFirewallPolicies within a resource group." - }, - "nextLink": { - "type": "string", - "description": "URL to get the next set of WebApplicationFirewallPolicy objects if there are any." - } - } - }, - "PolicySettings": { - "description": "Defines top-level WebApplicationFirewallPolicy configuration settings.", - "properties": { - "enabledState": { - "description": "Describes if the policy is in enabled or disabled state. Defaults to Enabled if not specified.", - "type": "string", - "enum": [ - "Disabled", - "Enabled" - ], - "x-ms-enum": { - "name": "PolicyEnabledState", - "modelAsString": true - } - }, - "mode": { - "description": "Describes if it is in detection mode or prevention mode at policy level.", - "type": "string", - "enum": [ - "Prevention", - "Detection" - ], - "x-ms-enum": { - "name": "PolicyMode", - "modelAsString": true - } - }, - "redirectUrl": { - "description": "If action type is redirect, this field represents redirect URL for the client.", - "type": "string" - }, - "customBlockResponseStatusCode": { - "description": "If the action type is block, customer can override the response status code.", - "type": "integer" - }, - "customBlockResponseBody": { - "description": "If the action type is block, customer can override the response body. The body must be specified in base64 encoding.", - "type": "string", - "pattern": "^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=|[A-Za-z0-9+/]{4})$" - }, - "requestBodyCheck": { - "description": "Describes if policy managed rules will inspect the request body content.", - "type": "string", - "enum": [ - "Disabled", - "Enabled" - ], - "x-ms-enum": { - "name": "PolicyRequestBodyCheck", - "modelAsString": true - } - }, - "javascriptChallengeExpirationInMinutes": { - "description": "Defines the JavaScript challenge cookie validity lifetime in minutes. This setting is only applicable to Premium_AzureFrontDoor. Value must be an integer between 5 and 1440 with the default value being 30.", - "type": "integer", - "format": "int32", - "minimum": 5, - "maximum": 1440 - }, - "captchaExpirationInMinutes": { - "description": "Defines the Captcha cookie validity lifetime in minutes. This setting is only applicable to Premium_AzureFrontDoor. Value must be an integer between 5 and 1440 with the default value being 30.", - "type": "integer", - "format": "int32", - "minimum": 5, - "maximum": 1440 - }, - "logScrubbing": { - "description": "Defines rules that scrub sensitive fields in the Web Application Firewall logs.", - "type": "object", - "x-ms-client-flatten": true, - "properties": { - "state": { - "type": "string", - "description": "State of the log scrubbing config. Default value is Enabled.", - "enum": [ - "Enabled", - "Disabled" - ], - "x-ms-enum": { - "name": "WebApplicationFirewallScrubbingState", - "modelAsString": true - } - }, - "scrubbingRules": { - "type": "array", - "items": { - "$ref": "#/definitions/WebApplicationFirewallScrubbingRules" - }, - "x-ms-identifiers": [], - "description": "List of log scrubbing rules applied to the Web Application Firewall logs." - } - } - } - } - }, - "CustomRuleList": { - "description": "Defines contents of custom rules", - "properties": { - "rules": { - "description": "List of rules", - "type": "array", - "items": { - "$ref": "#/definitions/CustomRule" - } - } - } - }, - "CustomRule": { - "description": "Defines contents of a web application rule", - "required": [ - "priority", - "ruleType", - "matchConditions", - "action" - ], - "properties": { - "name": { - "type": "string", - "description": "Describes the name of the rule.", - "maxLength": 128 - }, - "priority": { - "description": "Describes priority of the rule. Rules with a lower value will be evaluated before rules with a higher value.", - "type": "integer" - }, - "enabledState": { - "description": "Describes if the custom rule is in enabled or disabled state. Defaults to Enabled if not specified.", - "type": "string", - "enum": [ - "Disabled", - "Enabled" - ], - "x-ms-enum": { - "name": "CustomRuleEnabledState", - "modelAsString": true - } - }, - "ruleType": { - "description": "Describes type of rule.", - "type": "string", - "enum": [ - "MatchRule", - "RateLimitRule" - ], - "x-ms-enum": { - "name": "RuleType", - "modelAsString": true - } - }, - "rateLimitDurationInMinutes": { - "description": "Time window for resetting the rate limit count. Default is 1 minute.", - "type": "integer", - "minimum": 0, - "maximum": 5 - }, - "rateLimitThreshold": { - "description": "Number of allowed requests per client within the time window.", - "type": "integer", - "minimum": 0 - }, - "groupBy": { - "description": "Describes the list of variables to group the rate limit requests", - "type": "array", - "items": { - "$ref": "#/definitions/GroupByVariable" - }, - "x-ms-identifiers": [] - }, - "matchConditions": { - "description": "List of match conditions.", - "type": "array", - "items": { - "$ref": "#/definitions/MatchCondition" - } - }, - "action": { - "description": "Describes what action to be applied when rule matches.", - "$ref": "#/definitions/ActionType" - } - } - }, - "GroupByVariable": { - "description": "Describes the variables available to group the rate limit requests", - "required": [ - "variableName" - ], - "type": "object", - "properties": { - "variableName": { - "description": "Describes the supported variable for group by", - "type": "string", - "enum": [ - "SocketAddr", - "GeoLocation", - "None" - ], - "x-ms-enum": { - "name": "VariableName", - "modelAsString": true - } - } - } - }, - "TransformType": { - "description": "Describes what transforms applied before matching.", - "type": "string", - "enum": [ - "Lowercase", - "Uppercase", - "Trim", - "UrlDecode", - "UrlEncode", - "RemoveNulls" - ], - "x-ms-enum": { - "name": "TransformType", - "modelAsString": true - } - }, - "MatchCondition": { - "description": "Define a match condition.", - "required": [ - "matchVariable", - "operator", - "matchValue" - ], - "properties": { - "matchVariable": { - "description": "Request variable to compare with.", - "type": "string", - "enum": [ - "RemoteAddr", - "RequestMethod", - "QueryString", - "PostArgs", - "RequestUri", - "RequestHeader", - "RequestBody", - "Cookies", - "SocketAddr" - ], - "x-ms-enum": { - "name": "MatchVariable", - "modelAsString": true - } - }, - "selector": { - "description": "Match against a specific key from the QueryString, PostArgs, RequestHeader or Cookies variables. Default is null.", - "type": "string" - }, - "operator": { - "description": "Comparison type to use for matching with the variable value.", - "type": "string", - "enum": [ - "Any", - "IPMatch", - "GeoMatch", - "Equal", - "Contains", - "LessThan", - "GreaterThan", - "LessThanOrEqual", - "GreaterThanOrEqual", - "BeginsWith", - "EndsWith", - "RegEx", - "ServiceTagMatch" - ], - "x-ms-enum": { - "name": "Operator", - "modelAsString": true - } - }, - "negateCondition": { - "description": "Describes if the result of this condition should be negated.", - "type": "boolean" - }, - "matchValue": { - "description": "List of possible match values.", - "type": "array", - "items": { - "type": "string" - } - }, - "transforms": { - "description": "List of transforms.", - "type": "array", - "items": { - "$ref": "#/definitions/TransformType" - } - } - } - }, - "ManagedRuleSetList": { - "description": "Defines the list of managed rule sets for the policy.", - "properties": { - "managedRuleSets": { - "description": "List of rule sets.", - "type": "array", - "items": { - "$ref": "#/definitions/ManagedRuleSet" - } - } - } - }, - "ManagedRuleSet": { - "type": "object", - "description": "Defines a managed rule set.", - "required": [ - "ruleSetType", - "ruleSetVersion" - ], - "properties": { - "ruleSetType": { - "description": "Defines the rule set type to use.", - "type": "string" - }, - "ruleSetVersion": { - "description": "Defines the version of the rule set to use.", - "type": "string" - }, - "ruleSetAction": { - "description": "Defines the rule set action.", - "title": "ruleSetAction", - "$ref": "#/definitions/ManagedRuleSetActionType" - }, - "exclusions": { - "type": "array", - "items": { - "$ref": "#/definitions/ManagedRuleExclusion" - }, - "description": "Describes the exclusions that are applied to all rules in the set." - }, - "ruleGroupOverrides": { - "description": "Defines the rule group overrides to apply to the rule set.", - "type": "array", - "items": { - "$ref": "#/definitions/ManagedRuleGroupOverride" - } - } - } - }, - "ManagedRuleGroupOverride": { - "description": "Defines a managed rule group override setting.", - "required": [ - "ruleGroupName" - ], - "properties": { - "ruleGroupName": { - "description": "Describes the managed rule group to override.", - "type": "string" - }, - "exclusions": { - "type": "array", - "items": { - "$ref": "#/definitions/ManagedRuleExclusion" - }, - "description": "Describes the exclusions that are applied to all rules in the group." - }, - "rules": { - "description": "List of rules that will be disabled. If none specified, all rules in the group will be disabled.", - "type": "array", - "items": { - "$ref": "#/definitions/ManagedRuleOverride" - } - } - } - }, - "ManagedRuleOverride": { - "description": "Defines a managed rule group override setting.", - "required": [ - "ruleId" - ], - "properties": { - "ruleId": { - "description": "Identifier for the managed rule.", - "type": "string" - }, - "enabledState": { - "description": "Describes if the managed rule is in enabled or disabled state. Defaults to Disabled if not specified.", - "$ref": "#/definitions/ManagedRuleEnabledState" - }, - "action": { - "description": "Describes the override action to be applied when rule matches.", - "$ref": "#/definitions/ActionType" - }, - "sensitivity": { - "description": "Describes the override sensitivity to be applied when rule matches.", - "$ref": "#/definitions/SensitivityType" - }, - "exclusions": { - "type": "array", - "items": { - "$ref": "#/definitions/ManagedRuleExclusion" - }, - "description": "Describes the exclusions that are applied to this specific rule." - } - } - }, - "ManagedRuleSetDefinitionList": { - "description": "List of managed rule set definitions available for use in a policy.", - "properties": { - "value": { - "description": "List of managed rule set definitions.", - "readOnly": true, - "type": "array", - "items": { - "$ref": "#/definitions/ManagedRuleSetDefinition" - } - }, - "nextLink": { - "type": "string", - "description": "URL to retrieve next set of managed rule set definitions." - } - } - }, - "ManagedRuleSetDefinition": { - "description": "Describes the a managed rule set definition.", - "properties": { - "properties": { - "description": "Properties for a managed rule set definition.", - "x-ms-client-flatten": true, - "$ref": "#/definitions/ManagedRuleSetDefinitionProperties" - } - }, - "allOf": [ - { - "$ref": "./network.json#/definitions/Resource" - } - ] - }, - "ManagedRuleSetDefinitionProperties": { - "description": "Properties for a managed rule set definition.", - "properties": { - "provisioningState": { - "type": "string", - "readOnly": true, - "description": "Provisioning state of the managed rule set." - }, - "ruleSetId": { - "type": "string", - "readOnly": true, - "description": "Id of the managed rule set." - }, - "ruleSetType": { - "type": "string", - "readOnly": true, - "description": "Type of the managed rule set." - }, - "ruleSetVersion": { - "type": "string", - "readOnly": true, - "description": "Version of the managed rule set type." - }, - "ruleGroups": { - "type": "array", - "readOnly": true, - "items": { - "$ref": "#/definitions/ManagedRuleGroupDefinition" - }, - "description": "Rule groups of the managed rule set." - } - } - }, - "ManagedRuleGroupDefinition": { - "description": "Describes a managed rule group.", - "properties": { - "ruleGroupName": { - "type": "string", - "readOnly": true, - "description": "Name of the managed rule group." - }, - "description": { - "type": "string", - "readOnly": true, - "description": "Description of the managed rule group." - }, - "rules": { - "type": "array", - "readOnly": true, - "items": { - "$ref": "#/definitions/ManagedRuleDefinition" - }, - "description": "List of rules within the managed rule group." - } - } - }, - "ManagedRuleDefinition": { - "description": "Describes a managed rule definition.", - "properties": { - "ruleId": { - "description": "Identifier for the managed rule.", - "readOnly": true, - "type": "string" - }, - "defaultState": { - "description": "Describes the default state for the managed rule.", - "readOnly": true, - "$ref": "#/definitions/ManagedRuleEnabledState" - }, - "defaultAction": { - "description": "Describes the default action to be applied when the managed rule matches.", - "readOnly": true, - "$ref": "#/definitions/ActionType" - }, - "defaultSensitivity": { - "description": "Describes the default sensitivity to be applied when the managed rule matches.", - "readOnly": true, - "$ref": "#/definitions/SensitivityType" - }, - "description": { - "description": "Describes the functionality of the managed rule.", - "readOnly": true, - "type": "string" - } - } - }, - "ManagedRuleExclusion": { - "required": [ - "matchVariable", - "selectorMatchOperator", - "selector" - ], - "description": "Exclude variables from managed rule evaluation.", - "properties": { - "matchVariable": { - "type": "string", - "enum": [ - "RequestHeaderNames", - "RequestCookieNames", - "QueryStringArgNames", - "RequestBodyPostArgNames", - "RequestBodyJsonArgNames" - ], - "description": "The variable type to be excluded.", - "x-ms-enum": { - "name": "ManagedRuleExclusionMatchVariable", - "modelAsString": true - } - }, - "selectorMatchOperator": { - "type": "string", - "enum": [ - "Equals", - "Contains", - "StartsWith", - "EndsWith", - "EqualsAny" - ], - "description": "Comparison operator to apply to the selector when specifying which elements in the collection this exclusion applies to.", - "x-ms-enum": { - "name": "ManagedRuleExclusionSelectorMatchOperator", - "modelAsString": true - } - }, - "selector": { - "type": "string", - "description": "Selector value for which elements in the collection this exclusion applies to." - } - } - }, - "ActionType": { - "description": "Defines the action to take on rule match.", - "type": "string", - "enum": [ - "Allow", - "Block", - "Log", - "Redirect", - "AnomalyScoring", - "JSChallenge", - "CAPTCHA" - ], - "x-ms-enum": { - "name": "ActionType", - "modelAsString": true - } - }, - "SensitivityType": { - "description": "Defines the sensitivity for the rule.", - "type": "string", - "enum": [ - "Low", - "Medium", - "High" - ], - "x-ms-enum": { - "name": "SensitivityType", - "modelAsString": true, - "values": [ - { - "value": "Low", - "description": "Low Sensitivity - triggers the rule by larger spikes in traffic" - }, - { - "value": "Medium", - "description": "Medium Sensitivity - triggers the rule by moderate spikes in traffic" - }, - { - "value": "High", - "description": "High Sensitivity - triggers the rule by smaller spikes in traffic" - } - ] - } - }, - "WebApplicationFirewallScrubbingRules": { - "description": "Defines the contents of the log scrubbing rules.", - "type": "object", - "required": [ - "matchVariable", - "selectorMatchOperator" - ], - "properties": { - "matchVariable": { - "type": "string", - "enum": [ - "RequestIPAddress", - "RequestUri", - "QueryStringArgNames", - "RequestHeaderNames", - "RequestCookieNames", - "RequestBodyPostArgNames", - "RequestBodyJsonArgNames" - ], - "description": "The variable to be scrubbed from the logs.", - "x-ms-enum": { - "name": "scrubbingRuleEntryMatchVariable", - "modelAsString": true - } - }, - "selectorMatchOperator": { - "type": "string", - "enum": [ - "EqualsAny", - "Equals" - ], - "description": "When matchVariable is a collection, operate on the selector to specify which elements in the collection this rule applies to.", - "x-ms-enum": { - "name": " scrubbingRuleEntryMatchOperator", - "modelAsString": true - } - }, - "selector": { - "type": "string", - "description": "When matchVariable is a collection, operator used to specify which elements in the collection this rule applies to." - }, - "state": { - "type": "string", - "enum": [ - "Enabled", - "Disabled" - ], - "description": "Defines the state of a log scrubbing rule. Default value is enabled.", - "x-ms-enum": { - "name": " scrubbingRuleEntryState", - "modelAsString": true - } - } - } - }, - "ManagedRuleSetActionType": { - "description": "Defines the action to take when a managed rule set score threshold is met.", - "type": "string", - "enum": [ - "Block", - "Log", - "Redirect" - ], - "x-ms-enum": { - "name": "ManagedRuleSetActionType", - "modelAsString": true - } - }, - "ManagedRuleEnabledState": { - "description": "Describes if the managed rule is in enabled or disabled state.", - "type": "string", - "enum": [ - "Disabled", - "Enabled" - ], - "x-ms-enum": { - "name": "ManagedRuleEnabledState", - "modelAsString": true - } - }, - "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" - } - } - }, - "DefaultErrorResponse": { - "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": { - "error": { - "description": "Error model.", - "type": "object", - "properties": { - "code": { - "description": "Error code.", - "readOnly": true, - "type": "string" - }, - "message": { - "description": "Error message indicating why the operation failed.", - "readOnly": true, - "type": "string" - } - } - } - } - }, - "FrontendEndpointLink": { - "description": "Defines the Resource ID for a Frontend Endpoint.", - "type": "object", - "readOnly": true, - "properties": { - "id": { - "type": "string", - "description": "Resource ID." - } - } - }, - "RoutingRuleLink": { - "description": "Defines the Resource ID for a Routing Rule.", - "type": "object", - "readOnly": true, - "properties": { - "id": { - "type": "string", - "description": "Resource ID." - } - } - }, - "SecurityPolicyLink": { - "description": "Defines the Resource ID for a Security Policy.", - "type": "object", - "readOnly": true, - "properties": { - "id": { - "type": "string", - "description": "Resource ID." - } - } - } - }, - "parameters": { - "PolicyNameParameter": { - "name": "policyName", - "in": "path", - "required": true, - "type": "string", - "maxLength": 128, - "x-ms-parameter-location": "method", - "description": "The name of the Web Application Firewall Policy." - }, - "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." - } - } -} diff --git a/specification/frontdoor/resource-manager/readme.md b/specification/frontdoor/resource-manager/readme.md index 4de591297a5b..a64073acf806 100644 --- a/specification/frontdoor/resource-manager/readme.md +++ b/specification/frontdoor/resource-manager/readme.md @@ -37,10 +37,7 @@ These settings apply only when `--tag=package-2025-10` is specified on the comma ```yaml $(tag) == 'package-2025-10' input-file: - - Microsoft.Network/stable/2025-10-01/network.json - - Microsoft.Network/stable/2025-10-01/webapplicationfirewall.json - - Microsoft.Network/stable/2025-10-01/frontdoor.json - - Microsoft.Network/stable/2025-10-01/networkexperiment.json + - Microsoft.Network/stable/2025-10-01/openapi.json ``` ### Tag: package-2025-03