list(String scope);
+
+    /**
+     * For the specified scope, get the current quota requests for a one year period ending at the time is made. Use the
+     * **oData** filter to select quota requests.
+     *
+     * @param scope The target Azure resource URI. For example,
+     *     `/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/qms-test/providers/Microsoft.Batch/batchAccounts/testAccount/`.
+     *     This is the target Azure resource URI for the List GET operation. If a `{resourceName}` is added after
+     *     `/quotas`, then it's the target Azure resource URI in the GET operation for the specific resource.
+     * @param filter | Field | Supported operators |---------------------|------------------------
+     *     |requestSubmitTime | ge, le, eq, gt, lt |provisioningState eq {QuotaRequestState} |resourceName eq
+     *     {resourceName}.
+     * @param top Number of records to return.
+     * @param skiptoken The **Skiptoken** parameter is used only if a previous operation returned a partial result. If a
+     *     previous response contains a **nextLink** element, its value includes a **skiptoken** parameter that
+     *     specifies a starting point to use for subsequent calls.
+     * @param context The context to associate with this operation.
+     * @throws IllegalArgumentException thrown if parameters fail the validation.
+     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+     * @return quota request information.
+     */
+    @ServiceMethod(returns = ReturnType.COLLECTION)
+    PagedIterable list(
+        String scope, String filter, Integer top, String skiptoken, Context context);
+}
diff --git a/sdk/quota/azure-resourcemanager-quota/src/main/java/com/azure/resourcemanager/quota/fluent/QuotasClient.java b/sdk/quota/azure-resourcemanager-quota/src/main/java/com/azure/resourcemanager/quota/fluent/QuotasClient.java
new file mode 100644
index 000000000000..034a676241b9
--- /dev/null
+++ b/sdk/quota/azure-resourcemanager-quota/src/main/java/com/azure/resourcemanager/quota/fluent/QuotasClient.java
@@ -0,0 +1,282 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.quota.fluent;
+
+import com.azure.core.annotation.ReturnType;
+import com.azure.core.annotation.ServiceMethod;
+import com.azure.core.http.rest.PagedIterable;
+import com.azure.core.management.polling.PollResult;
+import com.azure.core.util.Context;
+import com.azure.core.util.polling.SyncPoller;
+import com.azure.resourcemanager.quota.fluent.models.CurrentQuotaLimitBaseInner;
+import com.azure.resourcemanager.quota.models.QuotasGetResponse;
+
+/** An instance of this class provides access to all the operations defined in QuotasClient. */
+public interface QuotasClient {
+    /**
+     * Get the quota limit of a resource. The response can be used to determine the remaining quota to calculate a new
+     * quota limit that can be submitted with a PUT request.
+     *
+     * @param resourceName Resource name for a given resource provider. For example: - SKU name for Microsoft.Compute -
+     *     SKU or TotalLowPriorityCores for Microsoft.MachineLearningServices For Microsoft.Network PublicIPAddresses.
+     * @param scope The target Azure resource URI. For example,
+     *     `/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/qms-test/providers/Microsoft.Batch/batchAccounts/testAccount/`.
+     *     This is the target Azure resource URI for the List GET operation. If a `{resourceName}` is added after
+     *     `/quotas`, then it's the target Azure resource URI in the GET operation for the specific resource.
+     * @throws IllegalArgumentException thrown if parameters fail the validation.
+     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+     * @return the quota limit of a resource.
+     */
+    @ServiceMethod(returns = ReturnType.SINGLE)
+    CurrentQuotaLimitBaseInner get(String resourceName, String scope);
+
+    /**
+     * Get the quota limit of a resource. The response can be used to determine the remaining quota to calculate a new
+     * quota limit that can be submitted with a PUT request.
+     *
+     * @param resourceName Resource name for a given resource provider. For example: - SKU name for Microsoft.Compute -
+     *     SKU or TotalLowPriorityCores for Microsoft.MachineLearningServices For Microsoft.Network PublicIPAddresses.
+     * @param scope The target Azure resource URI. For example,
+     *     `/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/qms-test/providers/Microsoft.Batch/batchAccounts/testAccount/`.
+     *     This is the target Azure resource URI for the List GET operation. If a `{resourceName}` is added after
+     *     `/quotas`, then it's the target Azure resource URI in the GET operation for the specific resource.
+     * @param context The context to associate with this operation.
+     * @throws IllegalArgumentException thrown if parameters fail the validation.
+     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+     * @return the quota limit of a resource.
+     */
+    @ServiceMethod(returns = ReturnType.SINGLE)
+    QuotasGetResponse getWithResponse(String resourceName, String scope, Context context);
+
+    /**
+     * Create or update the quota limit for the specified resource with the requested value. To update the quota, follow
+     * these steps: 1. Use the GET operation for quotas and usages to determine how much quota remains for the specific
+     * resource and to calculate the new quota limit. These steps are detailed in [this
+     * example](https://techcommunity.microsoft.com/t5/azure-governance-and-management/using-the-new-quota-rest-api/ba-p/2183670).
+     * 2. Use this PUT operation to update the quota limit. Please check the URI in location header for the detailed
+     * status of the request.
+     *
+     * @param resourceName Resource name for a given resource provider. For example: - SKU name for Microsoft.Compute -
+     *     SKU or TotalLowPriorityCores for Microsoft.MachineLearningServices For Microsoft.Network PublicIPAddresses.
+     * @param scope The target Azure resource URI. For example,
+     *     `/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/qms-test/providers/Microsoft.Batch/batchAccounts/testAccount/`.
+     *     This is the target Azure resource URI for the List GET operation. If a `{resourceName}` is added after
+     *     `/quotas`, then it's the target Azure resource URI in the GET operation for the specific resource.
+     * @param createQuotaRequest Quota request payload.
+     * @throws IllegalArgumentException thrown if parameters fail the validation.
+     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+     * @return quota limit.
+     */
+    @ServiceMethod(returns = ReturnType.SINGLE)
+    SyncPoller, CurrentQuotaLimitBaseInner> beginCreateOrUpdate(
+        String resourceName, String scope, CurrentQuotaLimitBaseInner createQuotaRequest);
+
+    /**
+     * Create or update the quota limit for the specified resource with the requested value. To update the quota, follow
+     * these steps: 1. Use the GET operation for quotas and usages to determine how much quota remains for the specific
+     * resource and to calculate the new quota limit. These steps are detailed in [this
+     * example](https://techcommunity.microsoft.com/t5/azure-governance-and-management/using-the-new-quota-rest-api/ba-p/2183670).
+     * 2. Use this PUT operation to update the quota limit. Please check the URI in location header for the detailed
+     * status of the request.
+     *
+     * @param resourceName Resource name for a given resource provider. For example: - SKU name for Microsoft.Compute -
+     *     SKU or TotalLowPriorityCores for Microsoft.MachineLearningServices For Microsoft.Network PublicIPAddresses.
+     * @param scope The target Azure resource URI. For example,
+     *     `/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/qms-test/providers/Microsoft.Batch/batchAccounts/testAccount/`.
+     *     This is the target Azure resource URI for the List GET operation. If a `{resourceName}` is added after
+     *     `/quotas`, then it's the target Azure resource URI in the GET operation for the specific resource.
+     * @param createQuotaRequest Quota request payload.
+     * @param context The context to associate with this operation.
+     * @throws IllegalArgumentException thrown if parameters fail the validation.
+     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+     * @return quota limit.
+     */
+    @ServiceMethod(returns = ReturnType.SINGLE)
+    SyncPoller, CurrentQuotaLimitBaseInner> beginCreateOrUpdate(
+        String resourceName, String scope, CurrentQuotaLimitBaseInner createQuotaRequest, Context context);
+
+    /**
+     * Create or update the quota limit for the specified resource with the requested value. To update the quota, follow
+     * these steps: 1. Use the GET operation for quotas and usages to determine how much quota remains for the specific
+     * resource and to calculate the new quota limit. These steps are detailed in [this
+     * example](https://techcommunity.microsoft.com/t5/azure-governance-and-management/using-the-new-quota-rest-api/ba-p/2183670).
+     * 2. Use this PUT operation to update the quota limit. Please check the URI in location header for the detailed
+     * status of the request.
+     *
+     * @param resourceName Resource name for a given resource provider. For example: - SKU name for Microsoft.Compute -
+     *     SKU or TotalLowPriorityCores for Microsoft.MachineLearningServices For Microsoft.Network PublicIPAddresses.
+     * @param scope The target Azure resource URI. For example,
+     *     `/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/qms-test/providers/Microsoft.Batch/batchAccounts/testAccount/`.
+     *     This is the target Azure resource URI for the List GET operation. If a `{resourceName}` is added after
+     *     `/quotas`, then it's the target Azure resource URI in the GET operation for the specific resource.
+     * @param createQuotaRequest Quota request payload.
+     * @throws IllegalArgumentException thrown if parameters fail the validation.
+     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+     * @return quota limit.
+     */
+    @ServiceMethod(returns = ReturnType.SINGLE)
+    CurrentQuotaLimitBaseInner createOrUpdate(
+        String resourceName, String scope, CurrentQuotaLimitBaseInner createQuotaRequest);
+
+    /**
+     * Create or update the quota limit for the specified resource with the requested value. To update the quota, follow
+     * these steps: 1. Use the GET operation for quotas and usages to determine how much quota remains for the specific
+     * resource and to calculate the new quota limit. These steps are detailed in [this
+     * example](https://techcommunity.microsoft.com/t5/azure-governance-and-management/using-the-new-quota-rest-api/ba-p/2183670).
+     * 2. Use this PUT operation to update the quota limit. Please check the URI in location header for the detailed
+     * status of the request.
+     *
+     * @param resourceName Resource name for a given resource provider. For example: - SKU name for Microsoft.Compute -
+     *     SKU or TotalLowPriorityCores for Microsoft.MachineLearningServices For Microsoft.Network PublicIPAddresses.
+     * @param scope The target Azure resource URI. For example,
+     *     `/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/qms-test/providers/Microsoft.Batch/batchAccounts/testAccount/`.
+     *     This is the target Azure resource URI for the List GET operation. If a `{resourceName}` is added after
+     *     `/quotas`, then it's the target Azure resource URI in the GET operation for the specific resource.
+     * @param createQuotaRequest Quota request payload.
+     * @param context The context to associate with this operation.
+     * @throws IllegalArgumentException thrown if parameters fail the validation.
+     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+     * @return quota limit.
+     */
+    @ServiceMethod(returns = ReturnType.SINGLE)
+    CurrentQuotaLimitBaseInner createOrUpdate(
+        String resourceName, String scope, CurrentQuotaLimitBaseInner createQuotaRequest, Context context);
+
+    /**
+     * Update the quota limit for a specific resource to the specified value: 1. Use the Usages-GET and Quota-GET
+     * operations to determine the remaining quota for the specific resource and to calculate the new quota limit. These
+     * steps are detailed in [this
+     * example](https://techcommunity.microsoft.com/t5/azure-governance-and-management/using-the-new-quota-rest-api/ba-p/2183670).
+     * 2. Use this PUT operation to update the quota limit. Please check the URI in location header for the detailed
+     * status of the request.
+     *
+     * @param resourceName Resource name for a given resource provider. For example: - SKU name for Microsoft.Compute -
+     *     SKU or TotalLowPriorityCores for Microsoft.MachineLearningServices For Microsoft.Network PublicIPAddresses.
+     * @param scope The target Azure resource URI. For example,
+     *     `/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/qms-test/providers/Microsoft.Batch/batchAccounts/testAccount/`.
+     *     This is the target Azure resource URI for the List GET operation. If a `{resourceName}` is added after
+     *     `/quotas`, then it's the target Azure resource URI in the GET operation for the specific resource.
+     * @param createQuotaRequest Quota requests payload.
+     * @throws IllegalArgumentException thrown if parameters fail the validation.
+     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+     * @return quota limit.
+     */
+    @ServiceMethod(returns = ReturnType.SINGLE)
+    SyncPoller, CurrentQuotaLimitBaseInner> beginUpdate(
+        String resourceName, String scope, CurrentQuotaLimitBaseInner createQuotaRequest);
+
+    /**
+     * Update the quota limit for a specific resource to the specified value: 1. Use the Usages-GET and Quota-GET
+     * operations to determine the remaining quota for the specific resource and to calculate the new quota limit. These
+     * steps are detailed in [this
+     * example](https://techcommunity.microsoft.com/t5/azure-governance-and-management/using-the-new-quota-rest-api/ba-p/2183670).
+     * 2. Use this PUT operation to update the quota limit. Please check the URI in location header for the detailed
+     * status of the request.
+     *
+     * @param resourceName Resource name for a given resource provider. For example: - SKU name for Microsoft.Compute -
+     *     SKU or TotalLowPriorityCores for Microsoft.MachineLearningServices For Microsoft.Network PublicIPAddresses.
+     * @param scope The target Azure resource URI. For example,
+     *     `/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/qms-test/providers/Microsoft.Batch/batchAccounts/testAccount/`.
+     *     This is the target Azure resource URI for the List GET operation. If a `{resourceName}` is added after
+     *     `/quotas`, then it's the target Azure resource URI in the GET operation for the specific resource.
+     * @param createQuotaRequest Quota requests payload.
+     * @param context The context to associate with this operation.
+     * @throws IllegalArgumentException thrown if parameters fail the validation.
+     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+     * @return quota limit.
+     */
+    @ServiceMethod(returns = ReturnType.SINGLE)
+    SyncPoller, CurrentQuotaLimitBaseInner> beginUpdate(
+        String resourceName, String scope, CurrentQuotaLimitBaseInner createQuotaRequest, Context context);
+
+    /**
+     * Update the quota limit for a specific resource to the specified value: 1. Use the Usages-GET and Quota-GET
+     * operations to determine the remaining quota for the specific resource and to calculate the new quota limit. These
+     * steps are detailed in [this
+     * example](https://techcommunity.microsoft.com/t5/azure-governance-and-management/using-the-new-quota-rest-api/ba-p/2183670).
+     * 2. Use this PUT operation to update the quota limit. Please check the URI in location header for the detailed
+     * status of the request.
+     *
+     * @param resourceName Resource name for a given resource provider. For example: - SKU name for Microsoft.Compute -
+     *     SKU or TotalLowPriorityCores for Microsoft.MachineLearningServices For Microsoft.Network PublicIPAddresses.
+     * @param scope The target Azure resource URI. For example,
+     *     `/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/qms-test/providers/Microsoft.Batch/batchAccounts/testAccount/`.
+     *     This is the target Azure resource URI for the List GET operation. If a `{resourceName}` is added after
+     *     `/quotas`, then it's the target Azure resource URI in the GET operation for the specific resource.
+     * @param createQuotaRequest Quota requests payload.
+     * @throws IllegalArgumentException thrown if parameters fail the validation.
+     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+     * @return quota limit.
+     */
+    @ServiceMethod(returns = ReturnType.SINGLE)
+    CurrentQuotaLimitBaseInner update(String resourceName, String scope, CurrentQuotaLimitBaseInner createQuotaRequest);
+
+    /**
+     * Update the quota limit for a specific resource to the specified value: 1. Use the Usages-GET and Quota-GET
+     * operations to determine the remaining quota for the specific resource and to calculate the new quota limit. These
+     * steps are detailed in [this
+     * example](https://techcommunity.microsoft.com/t5/azure-governance-and-management/using-the-new-quota-rest-api/ba-p/2183670).
+     * 2. Use this PUT operation to update the quota limit. Please check the URI in location header for the detailed
+     * status of the request.
+     *
+     * @param resourceName Resource name for a given resource provider. For example: - SKU name for Microsoft.Compute -
+     *     SKU or TotalLowPriorityCores for Microsoft.MachineLearningServices For Microsoft.Network PublicIPAddresses.
+     * @param scope The target Azure resource URI. For example,
+     *     `/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/qms-test/providers/Microsoft.Batch/batchAccounts/testAccount/`.
+     *     This is the target Azure resource URI for the List GET operation. If a `{resourceName}` is added after
+     *     `/quotas`, then it's the target Azure resource URI in the GET operation for the specific resource.
+     * @param createQuotaRequest Quota requests payload.
+     * @param context The context to associate with this operation.
+     * @throws IllegalArgumentException thrown if parameters fail the validation.
+     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+     * @return quota limit.
+     */
+    @ServiceMethod(returns = ReturnType.SINGLE)
+    CurrentQuotaLimitBaseInner update(
+        String resourceName, String scope, CurrentQuotaLimitBaseInner createQuotaRequest, Context context);
+
+    /**
+     * Get a list of current quota limits of all resources for the specified scope. The response from this GET operation
+     * can be leveraged to submit requests to update a quota.
+     *
+     * @param scope The target Azure resource URI. For example,
+     *     `/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/qms-test/providers/Microsoft.Batch/batchAccounts/testAccount/`.
+     *     This is the target Azure resource URI for the List GET operation. If a `{resourceName}` is added after
+     *     `/quotas`, then it's the target Azure resource URI in the GET operation for the specific resource.
+     * @throws IllegalArgumentException thrown if parameters fail the validation.
+     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+     * @return a list of current quota limits of all resources for the specified scope.
+     */
+    @ServiceMethod(returns = ReturnType.COLLECTION)
+    PagedIterable list(String scope);
+
+    /**
+     * Get a list of current quota limits of all resources for the specified scope. The response from this GET operation
+     * can be leveraged to submit requests to update a quota.
+     *
+     * @param scope The target Azure resource URI. For example,
+     *     `/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/qms-test/providers/Microsoft.Batch/batchAccounts/testAccount/`.
+     *     This is the target Azure resource URI for the List GET operation. If a `{resourceName}` is added after
+     *     `/quotas`, then it's the target Azure resource URI in the GET operation for the specific resource.
+     * @param context The context to associate with this operation.
+     * @throws IllegalArgumentException thrown if parameters fail the validation.
+     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+     * @return a list of current quota limits of all resources for the specified scope.
+     */
+    @ServiceMethod(returns = ReturnType.COLLECTION)
+    PagedIterable list(String scope, Context context);
+}
diff --git a/sdk/quota/azure-resourcemanager-quota/src/main/java/com/azure/resourcemanager/quota/fluent/UsagesClient.java b/sdk/quota/azure-resourcemanager-quota/src/main/java/com/azure/resourcemanager/quota/fluent/UsagesClient.java
new file mode 100644
index 000000000000..d310edd06f01
--- /dev/null
+++ b/sdk/quota/azure-resourcemanager-quota/src/main/java/com/azure/resourcemanager/quota/fluent/UsagesClient.java
@@ -0,0 +1,81 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.quota.fluent;
+
+import com.azure.core.annotation.ReturnType;
+import com.azure.core.annotation.ServiceMethod;
+import com.azure.core.http.rest.PagedIterable;
+import com.azure.core.util.Context;
+import com.azure.resourcemanager.quota.fluent.models.CurrentUsagesBaseInner;
+import com.azure.resourcemanager.quota.models.UsagesGetResponse;
+
+/** An instance of this class provides access to all the operations defined in UsagesClient. */
+public interface UsagesClient {
+    /**
+     * Get the current usage of a resource.
+     *
+     * @param resourceName Resource name for a given resource provider. For example: - SKU name for Microsoft.Compute -
+     *     SKU or TotalLowPriorityCores for Microsoft.MachineLearningServices For Microsoft.Network PublicIPAddresses.
+     * @param scope The target Azure resource URI. For example,
+     *     `/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/qms-test/providers/Microsoft.Batch/batchAccounts/testAccount/`.
+     *     This is the target Azure resource URI for the List GET operation. If a `{resourceName}` is added after
+     *     `/quotas`, then it's the target Azure resource URI in the GET operation for the specific resource.
+     * @throws IllegalArgumentException thrown if parameters fail the validation.
+     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+     * @return the current usage of a resource.
+     */
+    @ServiceMethod(returns = ReturnType.SINGLE)
+    CurrentUsagesBaseInner get(String resourceName, String scope);
+
+    /**
+     * Get the current usage of a resource.
+     *
+     * @param resourceName Resource name for a given resource provider. For example: - SKU name for Microsoft.Compute -
+     *     SKU or TotalLowPriorityCores for Microsoft.MachineLearningServices For Microsoft.Network PublicIPAddresses.
+     * @param scope The target Azure resource URI. For example,
+     *     `/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/qms-test/providers/Microsoft.Batch/batchAccounts/testAccount/`.
+     *     This is the target Azure resource URI for the List GET operation. If a `{resourceName}` is added after
+     *     `/quotas`, then it's the target Azure resource URI in the GET operation for the specific resource.
+     * @param context The context to associate with this operation.
+     * @throws IllegalArgumentException thrown if parameters fail the validation.
+     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+     * @return the current usage of a resource.
+     */
+    @ServiceMethod(returns = ReturnType.SINGLE)
+    UsagesGetResponse getWithResponse(String resourceName, String scope, Context context);
+
+    /**
+     * Get a list of current usage for all resources for the scope specified.
+     *
+     * @param scope The target Azure resource URI. For example,
+     *     `/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/qms-test/providers/Microsoft.Batch/batchAccounts/testAccount/`.
+     *     This is the target Azure resource URI for the List GET operation. If a `{resourceName}` is added after
+     *     `/quotas`, then it's the target Azure resource URI in the GET operation for the specific resource.
+     * @throws IllegalArgumentException thrown if parameters fail the validation.
+     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+     * @return a list of current usage for all resources for the scope specified.
+     */
+    @ServiceMethod(returns = ReturnType.COLLECTION)
+    PagedIterable list(String scope);
+
+    /**
+     * Get a list of current usage for all resources for the scope specified.
+     *
+     * @param scope The target Azure resource URI. For example,
+     *     `/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/qms-test/providers/Microsoft.Batch/batchAccounts/testAccount/`.
+     *     This is the target Azure resource URI for the List GET operation. If a `{resourceName}` is added after
+     *     `/quotas`, then it's the target Azure resource URI in the GET operation for the specific resource.
+     * @param context The context to associate with this operation.
+     * @throws IllegalArgumentException thrown if parameters fail the validation.
+     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+     * @return a list of current usage for all resources for the scope specified.
+     */
+    @ServiceMethod(returns = ReturnType.COLLECTION)
+    PagedIterable list(String scope, Context context);
+}
diff --git a/sdk/quota/azure-resourcemanager-quota/src/main/java/com/azure/resourcemanager/quota/fluent/models/CurrentQuotaLimitBaseInner.java b/sdk/quota/azure-resourcemanager-quota/src/main/java/com/azure/resourcemanager/quota/fluent/models/CurrentQuotaLimitBaseInner.java
new file mode 100644
index 000000000000..f745135c494f
--- /dev/null
+++ b/sdk/quota/azure-resourcemanager-quota/src/main/java/com/azure/resourcemanager/quota/fluent/models/CurrentQuotaLimitBaseInner.java
@@ -0,0 +1,58 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.quota.fluent.models;
+
+import com.azure.core.annotation.Fluent;
+import com.azure.core.management.ProxyResource;
+import com.azure.core.util.logging.ClientLogger;
+import com.azure.resourcemanager.quota.models.QuotaProperties;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/** Quota limit. */
+@Fluent
+public final class CurrentQuotaLimitBaseInner extends ProxyResource {
+    @JsonIgnore private final ClientLogger logger = new ClientLogger(CurrentQuotaLimitBaseInner.class);
+
+    /*
+     * Quota properties for the specified resource, based on the API called,
+     * Quotas or Usages.
+     */
+    @JsonProperty(value = "properties")
+    private QuotaProperties properties;
+
+    /**
+     * Get the properties property: Quota properties for the specified resource, based on the API called, Quotas or
+     * Usages.
+     *
+     * @return the properties value.
+     */
+    public QuotaProperties properties() {
+        return this.properties;
+    }
+
+    /**
+     * Set the properties property: Quota properties for the specified resource, based on the API called, Quotas or
+     * Usages.
+     *
+     * @param properties the properties value to set.
+     * @return the CurrentQuotaLimitBaseInner object itself.
+     */
+    public CurrentQuotaLimitBaseInner withProperties(QuotaProperties properties) {
+        this.properties = properties;
+        return this;
+    }
+
+    /**
+     * Validates the instance.
+     *
+     * @throws IllegalArgumentException thrown if the instance is not valid.
+     */
+    public void validate() {
+        if (properties() != null) {
+            properties().validate();
+        }
+    }
+}
diff --git a/sdk/quota/azure-resourcemanager-quota/src/main/java/com/azure/resourcemanager/quota/fluent/models/CurrentUsagesBaseInner.java b/sdk/quota/azure-resourcemanager-quota/src/main/java/com/azure/resourcemanager/quota/fluent/models/CurrentUsagesBaseInner.java
new file mode 100644
index 000000000000..95f30df1b0b4
--- /dev/null
+++ b/sdk/quota/azure-resourcemanager-quota/src/main/java/com/azure/resourcemanager/quota/fluent/models/CurrentUsagesBaseInner.java
@@ -0,0 +1,55 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.quota.fluent.models;
+
+import com.azure.core.annotation.Fluent;
+import com.azure.core.management.ProxyResource;
+import com.azure.core.util.logging.ClientLogger;
+import com.azure.resourcemanager.quota.models.UsagesProperties;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/** Resource usage. */
+@Fluent
+public final class CurrentUsagesBaseInner extends ProxyResource {
+    @JsonIgnore private final ClientLogger logger = new ClientLogger(CurrentUsagesBaseInner.class);
+
+    /*
+     * Usage properties for the specified resource.
+     */
+    @JsonProperty(value = "properties")
+    private UsagesProperties properties;
+
+    /**
+     * Get the properties property: Usage properties for the specified resource.
+     *
+     * @return the properties value.
+     */
+    public UsagesProperties properties() {
+        return this.properties;
+    }
+
+    /**
+     * Set the properties property: Usage properties for the specified resource.
+     *
+     * @param properties the properties value to set.
+     * @return the CurrentUsagesBaseInner object itself.
+     */
+    public CurrentUsagesBaseInner withProperties(UsagesProperties properties) {
+        this.properties = properties;
+        return this;
+    }
+
+    /**
+     * Validates the instance.
+     *
+     * @throws IllegalArgumentException thrown if the instance is not valid.
+     */
+    public void validate() {
+        if (properties() != null) {
+            properties().validate();
+        }
+    }
+}
diff --git a/sdk/quota/azure-resourcemanager-quota/src/main/java/com/azure/resourcemanager/quota/fluent/models/OperationResponseInner.java b/sdk/quota/azure-resourcemanager-quota/src/main/java/com/azure/resourcemanager/quota/fluent/models/OperationResponseInner.java
new file mode 100644
index 000000000000..68486082b5cd
--- /dev/null
+++ b/sdk/quota/azure-resourcemanager-quota/src/main/java/com/azure/resourcemanager/quota/fluent/models/OperationResponseInner.java
@@ -0,0 +1,106 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.quota.fluent.models;
+
+import com.azure.core.annotation.Fluent;
+import com.azure.core.util.logging.ClientLogger;
+import com.azure.resourcemanager.quota.models.OperationDisplay;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/** The OperationResponse model. */
+@Fluent
+public final class OperationResponseInner {
+    @JsonIgnore private final ClientLogger logger = new ClientLogger(OperationResponseInner.class);
+
+    /*
+     * The name property.
+     */
+    @JsonProperty(value = "name")
+    private String name;
+
+    /*
+     * The display property.
+     */
+    @JsonProperty(value = "display")
+    private OperationDisplay display;
+
+    /*
+     * The origin property.
+     */
+    @JsonProperty(value = "origin")
+    private String origin;
+
+    /**
+     * Get the name property: The name property.
+     *
+     * @return the name value.
+     */
+    public String name() {
+        return this.name;
+    }
+
+    /**
+     * Set the name property: The name property.
+     *
+     * @param name the name value to set.
+     * @return the OperationResponseInner object itself.
+     */
+    public OperationResponseInner withName(String name) {
+        this.name = name;
+        return this;
+    }
+
+    /**
+     * Get the display property: The display property.
+     *
+     * @return the display value.
+     */
+    public OperationDisplay display() {
+        return this.display;
+    }
+
+    /**
+     * Set the display property: The display property.
+     *
+     * @param display the display value to set.
+     * @return the OperationResponseInner object itself.
+     */
+    public OperationResponseInner withDisplay(OperationDisplay display) {
+        this.display = display;
+        return this;
+    }
+
+    /**
+     * Get the origin property: The origin property.
+     *
+     * @return the origin value.
+     */
+    public String origin() {
+        return this.origin;
+    }
+
+    /**
+     * Set the origin property: The origin property.
+     *
+     * @param origin the origin value to set.
+     * @return the OperationResponseInner object itself.
+     */
+    public OperationResponseInner withOrigin(String origin) {
+        this.origin = origin;
+        return this;
+    }
+
+    /**
+     * Validates the instance.
+     *
+     * @throws IllegalArgumentException thrown if the instance is not valid.
+     */
+    public void validate() {
+        if (display() != null) {
+            display().validate();
+        }
+    }
+}
diff --git a/sdk/quota/azure-resourcemanager-quota/src/main/java/com/azure/resourcemanager/quota/fluent/models/QuotaRequestDetailsInner.java b/sdk/quota/azure-resourcemanager-quota/src/main/java/com/azure/resourcemanager/quota/fluent/models/QuotaRequestDetailsInner.java
new file mode 100644
index 000000000000..0a556291bcea
--- /dev/null
+++ b/sdk/quota/azure-resourcemanager-quota/src/main/java/com/azure/resourcemanager/quota/fluent/models/QuotaRequestDetailsInner.java
@@ -0,0 +1,181 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.quota.fluent.models;
+
+import com.azure.core.annotation.Fluent;
+import com.azure.core.annotation.JsonFlatten;
+import com.azure.core.util.logging.ClientLogger;
+import com.azure.resourcemanager.quota.models.QuotaRequestState;
+import com.azure.resourcemanager.quota.models.ServiceErrorDetail;
+import com.azure.resourcemanager.quota.models.SubRequest;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import java.time.OffsetDateTime;
+import java.util.List;
+
+/** List of quota requests with details. */
+@JsonFlatten
+@Fluent
+public class QuotaRequestDetailsInner {
+    @JsonIgnore private final ClientLogger logger = new ClientLogger(QuotaRequestDetailsInner.class);
+
+    /*
+     * Quota request ID.
+     */
+    @JsonProperty(value = "id", access = JsonProperty.Access.WRITE_ONLY)
+    private String id;
+
+    /*
+     * Quota request name.
+     */
+    @JsonProperty(value = "name", access = JsonProperty.Access.WRITE_ONLY)
+    private String name;
+
+    /*
+     * Resource type. "Microsoft.Quota/quotas".
+     */
+    @JsonProperty(value = "type", access = JsonProperty.Access.WRITE_ONLY)
+    private String type;
+
+    /*
+     * The quota request status.
+     */
+    @JsonProperty(value = "properties.provisioningState", access = JsonProperty.Access.WRITE_ONLY)
+    private QuotaRequestState provisioningState;
+
+    /*
+     * User-friendly status message.
+     */
+    @JsonProperty(value = "properties.message", access = JsonProperty.Access.WRITE_ONLY)
+    private String message;
+
+    /*
+     * Error details of the quota request.
+     */
+    @JsonProperty(value = "properties.error")
+    private ServiceErrorDetail error;
+
+    /*
+     * The quota request submission time. The date conforms to the following
+     * format specified by the ISO 8601 standard: yyyy-MM-ddTHH:mm:ssZ
+     */
+    @JsonProperty(value = "properties.requestSubmitTime", access = JsonProperty.Access.WRITE_ONLY)
+    private OffsetDateTime requestSubmitTime;
+
+    /*
+     * Quota request details.
+     */
+    @JsonProperty(value = "properties.value")
+    private List value;
+
+    /**
+     * Get the id property: Quota request ID.
+     *
+     * @return the id value.
+     */
+    public String id() {
+        return this.id;
+    }
+
+    /**
+     * Get the name property: Quota request name.
+     *
+     * @return the name value.
+     */
+    public String name() {
+        return this.name;
+    }
+
+    /**
+     * Get the type property: Resource type. "Microsoft.Quota/quotas".
+     *
+     * @return the type value.
+     */
+    public String type() {
+        return this.type;
+    }
+
+    /**
+     * Get the provisioningState property: The quota request status.
+     *
+     * @return the provisioningState value.
+     */
+    public QuotaRequestState provisioningState() {
+        return this.provisioningState;
+    }
+
+    /**
+     * Get the message property: User-friendly status message.
+     *
+     * @return the message value.
+     */
+    public String message() {
+        return this.message;
+    }
+
+    /**
+     * Get the error property: Error details of the quota request.
+     *
+     * @return the error value.
+     */
+    public ServiceErrorDetail error() {
+        return this.error;
+    }
+
+    /**
+     * Set the error property: Error details of the quota request.
+     *
+     * @param error the error value to set.
+     * @return the QuotaRequestDetailsInner object itself.
+     */
+    public QuotaRequestDetailsInner withError(ServiceErrorDetail error) {
+        this.error = error;
+        return this;
+    }
+
+    /**
+     * Get the requestSubmitTime property: The quota request submission time. The date conforms to the following format
+     * specified by the ISO 8601 standard: yyyy-MM-ddTHH:mm:ssZ.
+     *
+     * @return the requestSubmitTime value.
+     */
+    public OffsetDateTime requestSubmitTime() {
+        return this.requestSubmitTime;
+    }
+
+    /**
+     * Get the value property: Quota request details.
+     *
+     * @return the value value.
+     */
+    public List value() {
+        return this.value;
+    }
+
+    /**
+     * Set the value property: Quota request details.
+     *
+     * @param value the value value to set.
+     * @return the QuotaRequestDetailsInner object itself.
+     */
+    public QuotaRequestDetailsInner withValue(List value) {
+        this.value = value;
+        return this;
+    }
+
+    /**
+     * Validates the instance.
+     *
+     * @throws IllegalArgumentException thrown if the instance is not valid.
+     */
+    public void validate() {
+        if (error() != null) {
+            error().validate();
+        }
+        if (value() != null) {
+            value().forEach(e -> e.validate());
+        }
+    }
+}
diff --git a/sdk/quota/azure-resourcemanager-quota/src/main/java/com/azure/resourcemanager/quota/fluent/models/package-info.java b/sdk/quota/azure-resourcemanager-quota/src/main/java/com/azure/resourcemanager/quota/fluent/models/package-info.java
new file mode 100644
index 000000000000..674fb9e78bb0
--- /dev/null
+++ b/sdk/quota/azure-resourcemanager-quota/src/main/java/com/azure/resourcemanager/quota/fluent/models/package-info.java
@@ -0,0 +1,6 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+/** Package containing the inner data models for AzureQuotaExtensionApi. Microsoft Azure Quota Resource Provider. */
+package com.azure.resourcemanager.quota.fluent.models;
diff --git a/sdk/quota/azure-resourcemanager-quota/src/main/java/com/azure/resourcemanager/quota/fluent/package-info.java b/sdk/quota/azure-resourcemanager-quota/src/main/java/com/azure/resourcemanager/quota/fluent/package-info.java
new file mode 100644
index 000000000000..f9b7490e09e3
--- /dev/null
+++ b/sdk/quota/azure-resourcemanager-quota/src/main/java/com/azure/resourcemanager/quota/fluent/package-info.java
@@ -0,0 +1,6 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+/** Package containing the service clients for AzureQuotaExtensionApi. Microsoft Azure Quota Resource Provider. */
+package com.azure.resourcemanager.quota.fluent;
diff --git a/sdk/quota/azure-resourcemanager-quota/src/main/java/com/azure/resourcemanager/quota/implementation/AzureQuotaExtensionApiBuilder.java b/sdk/quota/azure-resourcemanager-quota/src/main/java/com/azure/resourcemanager/quota/implementation/AzureQuotaExtensionApiBuilder.java
new file mode 100644
index 000000000000..3b8210d62047
--- /dev/null
+++ b/sdk/quota/azure-resourcemanager-quota/src/main/java/com/azure/resourcemanager/quota/implementation/AzureQuotaExtensionApiBuilder.java
@@ -0,0 +1,129 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.quota.implementation;
+
+import com.azure.core.annotation.ServiceClientBuilder;
+import com.azure.core.http.HttpPipeline;
+import com.azure.core.http.HttpPipelineBuilder;
+import com.azure.core.http.policy.CookiePolicy;
+import com.azure.core.http.policy.RetryPolicy;
+import com.azure.core.http.policy.UserAgentPolicy;
+import com.azure.core.management.AzureEnvironment;
+import com.azure.core.management.serializer.SerializerFactory;
+import com.azure.core.util.serializer.SerializerAdapter;
+import java.time.Duration;
+
+/** A builder for creating a new instance of the AzureQuotaExtensionApiImpl type. */
+@ServiceClientBuilder(serviceClients = {AzureQuotaExtensionApiImpl.class})
+public final class AzureQuotaExtensionApiBuilder {
+    /*
+     * server parameter
+     */
+    private String endpoint;
+
+    /**
+     * Sets server parameter.
+     *
+     * @param endpoint the endpoint value.
+     * @return the AzureQuotaExtensionApiBuilder.
+     */
+    public AzureQuotaExtensionApiBuilder endpoint(String endpoint) {
+        this.endpoint = endpoint;
+        return this;
+    }
+
+    /*
+     * The environment to connect to
+     */
+    private AzureEnvironment environment;
+
+    /**
+     * Sets The environment to connect to.
+     *
+     * @param environment the environment value.
+     * @return the AzureQuotaExtensionApiBuilder.
+     */
+    public AzureQuotaExtensionApiBuilder environment(AzureEnvironment environment) {
+        this.environment = environment;
+        return this;
+    }
+
+    /*
+     * The default poll interval for long-running operation
+     */
+    private Duration defaultPollInterval;
+
+    /**
+     * Sets The default poll interval for long-running operation.
+     *
+     * @param defaultPollInterval the defaultPollInterval value.
+     * @return the AzureQuotaExtensionApiBuilder.
+     */
+    public AzureQuotaExtensionApiBuilder defaultPollInterval(Duration defaultPollInterval) {
+        this.defaultPollInterval = defaultPollInterval;
+        return this;
+    }
+
+    /*
+     * The HTTP pipeline to send requests through
+     */
+    private HttpPipeline pipeline;
+
+    /**
+     * Sets The HTTP pipeline to send requests through.
+     *
+     * @param pipeline the pipeline value.
+     * @return the AzureQuotaExtensionApiBuilder.
+     */
+    public AzureQuotaExtensionApiBuilder pipeline(HttpPipeline pipeline) {
+        this.pipeline = pipeline;
+        return this;
+    }
+
+    /*
+     * The serializer to serialize an object into a string
+     */
+    private SerializerAdapter serializerAdapter;
+
+    /**
+     * Sets The serializer to serialize an object into a string.
+     *
+     * @param serializerAdapter the serializerAdapter value.
+     * @return the AzureQuotaExtensionApiBuilder.
+     */
+    public AzureQuotaExtensionApiBuilder serializerAdapter(SerializerAdapter serializerAdapter) {
+        this.serializerAdapter = serializerAdapter;
+        return this;
+    }
+
+    /**
+     * Builds an instance of AzureQuotaExtensionApiImpl with the provided parameters.
+     *
+     * @return an instance of AzureQuotaExtensionApiImpl.
+     */
+    public AzureQuotaExtensionApiImpl buildClient() {
+        if (endpoint == null) {
+            this.endpoint = "https://management.azure.com";
+        }
+        if (environment == null) {
+            this.environment = AzureEnvironment.AZURE;
+        }
+        if (defaultPollInterval == null) {
+            this.defaultPollInterval = Duration.ofSeconds(30);
+        }
+        if (pipeline == null) {
+            this.pipeline =
+                new HttpPipelineBuilder()
+                    .policies(new UserAgentPolicy(), new RetryPolicy(), new CookiePolicy())
+                    .build();
+        }
+        if (serializerAdapter == null) {
+            this.serializerAdapter = SerializerFactory.createDefaultManagementSerializerAdapter();
+        }
+        AzureQuotaExtensionApiImpl client =
+            new AzureQuotaExtensionApiImpl(pipeline, serializerAdapter, defaultPollInterval, environment, endpoint);
+        return client;
+    }
+}
diff --git a/sdk/quota/azure-resourcemanager-quota/src/main/java/com/azure/resourcemanager/quota/implementation/AzureQuotaExtensionApiImpl.java b/sdk/quota/azure-resourcemanager-quota/src/main/java/com/azure/resourcemanager/quota/implementation/AzureQuotaExtensionApiImpl.java
new file mode 100644
index 000000000000..9c2ea5b83654
--- /dev/null
+++ b/sdk/quota/azure-resourcemanager-quota/src/main/java/com/azure/resourcemanager/quota/implementation/AzureQuotaExtensionApiImpl.java
@@ -0,0 +1,320 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.quota.implementation;
+
+import com.azure.core.annotation.ServiceClient;
+import com.azure.core.http.HttpHeaders;
+import com.azure.core.http.HttpPipeline;
+import com.azure.core.http.HttpResponse;
+import com.azure.core.http.rest.Response;
+import com.azure.core.management.AzureEnvironment;
+import com.azure.core.management.exception.ManagementError;
+import com.azure.core.management.exception.ManagementException;
+import com.azure.core.management.polling.PollResult;
+import com.azure.core.management.polling.PollerFactory;
+import com.azure.core.util.Context;
+import com.azure.core.util.logging.ClientLogger;
+import com.azure.core.util.polling.AsyncPollResponse;
+import com.azure.core.util.polling.LongRunningOperationStatus;
+import com.azure.core.util.polling.PollerFlux;
+import com.azure.core.util.serializer.SerializerAdapter;
+import com.azure.core.util.serializer.SerializerEncoding;
+import com.azure.resourcemanager.quota.fluent.AzureQuotaExtensionApi;
+import com.azure.resourcemanager.quota.fluent.OperationsClient;
+import com.azure.resourcemanager.quota.fluent.QuotaRequestStatusClient;
+import com.azure.resourcemanager.quota.fluent.QuotasClient;
+import com.azure.resourcemanager.quota.fluent.UsagesClient;
+import java.io.IOException;
+import java.lang.reflect.Type;
+import java.nio.ByteBuffer;
+import java.nio.charset.Charset;
+import java.nio.charset.StandardCharsets;
+import java.time.Duration;
+import java.util.Map;
+import reactor.core.publisher.Flux;
+import reactor.core.publisher.Mono;
+
+/** Initializes a new instance of the AzureQuotaExtensionApiImpl type. */
+@ServiceClient(builder = AzureQuotaExtensionApiBuilder.class)
+public final class AzureQuotaExtensionApiImpl implements AzureQuotaExtensionApi {
+    private final ClientLogger logger = new ClientLogger(AzureQuotaExtensionApiImpl.class);
+
+    /** server parameter. */
+    private final String endpoint;
+
+    /**
+     * Gets server parameter.
+     *
+     * @return the endpoint value.
+     */
+    public String getEndpoint() {
+        return this.endpoint;
+    }
+
+    /** Api Version. */
+    private final String apiVersion;
+
+    /**
+     * Gets Api Version.
+     *
+     * @return the apiVersion value.
+     */
+    public String getApiVersion() {
+        return this.apiVersion;
+    }
+
+    /** The HTTP pipeline to send requests through. */
+    private final HttpPipeline httpPipeline;
+
+    /**
+     * Gets The HTTP pipeline to send requests through.
+     *
+     * @return the httpPipeline value.
+     */
+    public HttpPipeline getHttpPipeline() {
+        return this.httpPipeline;
+    }
+
+    /** The serializer to serialize an object into a string. */
+    private final SerializerAdapter serializerAdapter;
+
+    /**
+     * Gets The serializer to serialize an object into a string.
+     *
+     * @return the serializerAdapter value.
+     */
+    SerializerAdapter getSerializerAdapter() {
+        return this.serializerAdapter;
+    }
+
+    /** The default poll interval for long-running operation. */
+    private final Duration defaultPollInterval;
+
+    /**
+     * Gets The default poll interval for long-running operation.
+     *
+     * @return the defaultPollInterval value.
+     */
+    public Duration getDefaultPollInterval() {
+        return this.defaultPollInterval;
+    }
+
+    /** The UsagesClient object to access its operations. */
+    private final UsagesClient usages;
+
+    /**
+     * Gets the UsagesClient object to access its operations.
+     *
+     * @return the UsagesClient object.
+     */
+    public UsagesClient getUsages() {
+        return this.usages;
+    }
+
+    /** The QuotasClient object to access its operations. */
+    private final QuotasClient quotas;
+
+    /**
+     * Gets the QuotasClient object to access its operations.
+     *
+     * @return the QuotasClient object.
+     */
+    public QuotasClient getQuotas() {
+        return this.quotas;
+    }
+
+    /** The QuotaRequestStatusClient object to access its operations. */
+    private final QuotaRequestStatusClient quotaRequestStatus;
+
+    /**
+     * Gets the QuotaRequestStatusClient object to access its operations.
+     *
+     * @return the QuotaRequestStatusClient object.
+     */
+    public QuotaRequestStatusClient getQuotaRequestStatus() {
+        return this.quotaRequestStatus;
+    }
+
+    /** The OperationsClient object to access its operations. */
+    private final OperationsClient operations;
+
+    /**
+     * Gets the OperationsClient object to access its operations.
+     *
+     * @return the OperationsClient object.
+     */
+    public OperationsClient getOperations() {
+        return this.operations;
+    }
+
+    /**
+     * Initializes an instance of AzureQuotaExtensionApi client.
+     *
+     * @param httpPipeline The HTTP pipeline to send requests through.
+     * @param serializerAdapter The serializer to serialize an object into a string.
+     * @param defaultPollInterval The default poll interval for long-running operation.
+     * @param environment The Azure environment.
+     * @param endpoint server parameter.
+     */
+    AzureQuotaExtensionApiImpl(
+        HttpPipeline httpPipeline,
+        SerializerAdapter serializerAdapter,
+        Duration defaultPollInterval,
+        AzureEnvironment environment,
+        String endpoint) {
+        this.httpPipeline = httpPipeline;
+        this.serializerAdapter = serializerAdapter;
+        this.defaultPollInterval = defaultPollInterval;
+        this.endpoint = endpoint;
+        this.apiVersion = "2021-03-15-preview";
+        this.usages = new UsagesClientImpl(this);
+        this.quotas = new QuotasClientImpl(this);
+        this.quotaRequestStatus = new QuotaRequestStatusClientImpl(this);
+        this.operations = new OperationsClientImpl(this);
+    }
+
+    /**
+     * Gets default client context.
+     *
+     * @return the default client context.
+     */
+    public Context getContext() {
+        return Context.NONE;
+    }
+
+    /**
+     * Merges default client context with provided context.
+     *
+     * @param context the context to be merged with default client context.
+     * @return the merged context.
+     */
+    public Context mergeContext(Context context) {
+        for (Map.Entry entry : this.getContext().getValues().entrySet()) {
+            context = context.addData(entry.getKey(), entry.getValue());
+        }
+        return context;
+    }
+
+    /**
+     * Gets long running operation result.
+     *
+     * @param activationResponse the response of activation operation.
+     * @param httpPipeline the http pipeline.
+     * @param pollResultType type of poll result.
+     * @param finalResultType type of final result.
+     * @param context the context shared by all requests.
+     * @param  type of poll result.
+     * @param  type of final result.
+     * @return poller flux for poll result and final result.
+     */
+    public  PollerFlux, U> getLroResult(
+        Mono>> activationResponse,
+        HttpPipeline httpPipeline,
+        Type pollResultType,
+        Type finalResultType,
+        Context context) {
+        return PollerFactory
+            .create(
+                serializerAdapter,
+                httpPipeline,
+                pollResultType,
+                finalResultType,
+                defaultPollInterval,
+                activationResponse,
+                context);
+    }
+
+    /**
+     * Gets the final result, or an error, based on last async poll response.
+     *
+     * @param response the last async poll response.
+     * @param  type of poll result.
+     * @param  type of final result.
+     * @return the final result, or an error.
+     */
+    public  Mono getLroFinalResultOrError(AsyncPollResponse, U> response) {
+        if (response.getStatus() != LongRunningOperationStatus.SUCCESSFULLY_COMPLETED) {
+            String errorMessage;
+            ManagementError managementError = null;
+            HttpResponse errorResponse = null;
+            PollResult.Error lroError = response.getValue().getError();
+            if (lroError != null) {
+                errorResponse =
+                    new HttpResponseImpl(
+                        lroError.getResponseStatusCode(), lroError.getResponseHeaders(), lroError.getResponseBody());
+
+                errorMessage = response.getValue().getError().getMessage();
+                String errorBody = response.getValue().getError().getResponseBody();
+                if (errorBody != null) {
+                    // try to deserialize error body to ManagementError
+                    try {
+                        managementError =
+                            this
+                                .getSerializerAdapter()
+                                .deserialize(errorBody, ManagementError.class, SerializerEncoding.JSON);
+                        if (managementError.getCode() == null || managementError.getMessage() == null) {
+                            managementError = null;
+                        }
+                    } catch (IOException | RuntimeException ioe) {
+                        logger.logThrowableAsWarning(ioe);
+                    }
+                }
+            } else {
+                // fallback to default error message
+                errorMessage = "Long running operation failed.";
+            }
+            if (managementError == null) {
+                // fallback to default ManagementError
+                managementError = new ManagementError(response.getStatus().toString(), errorMessage);
+            }
+            return Mono.error(new ManagementException(errorMessage, errorResponse, managementError));
+        } else {
+            return response.getFinalResult();
+        }
+    }
+
+    private static final class HttpResponseImpl extends HttpResponse {
+        private final int statusCode;
+
+        private final byte[] responseBody;
+
+        private final HttpHeaders httpHeaders;
+
+        HttpResponseImpl(int statusCode, HttpHeaders httpHeaders, String responseBody) {
+            super(null);
+            this.statusCode = statusCode;
+            this.httpHeaders = httpHeaders;
+            this.responseBody = responseBody == null ? null : responseBody.getBytes(StandardCharsets.UTF_8);
+        }
+
+        public int getStatusCode() {
+            return statusCode;
+        }
+
+        public String getHeaderValue(String s) {
+            return httpHeaders.getValue(s);
+        }
+
+        public HttpHeaders getHeaders() {
+            return httpHeaders;
+        }
+
+        public Flux getBody() {
+            return Flux.just(ByteBuffer.wrap(responseBody));
+        }
+
+        public Mono getBodyAsByteArray() {
+            return Mono.just(responseBody);
+        }
+
+        public Mono getBodyAsString() {
+            return Mono.just(new String(responseBody, StandardCharsets.UTF_8));
+        }
+
+        public Mono getBodyAsString(Charset charset) {
+            return Mono.just(new String(responseBody, charset));
+        }
+    }
+}
diff --git a/sdk/quota/azure-resourcemanager-quota/src/main/java/com/azure/resourcemanager/quota/implementation/CurrentQuotaLimitBaseImpl.java b/sdk/quota/azure-resourcemanager-quota/src/main/java/com/azure/resourcemanager/quota/implementation/CurrentQuotaLimitBaseImpl.java
new file mode 100644
index 000000000000..689dec0359d0
--- /dev/null
+++ b/sdk/quota/azure-resourcemanager-quota/src/main/java/com/azure/resourcemanager/quota/implementation/CurrentQuotaLimitBaseImpl.java
@@ -0,0 +1,118 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.quota.implementation;
+
+import com.azure.core.util.Context;
+import com.azure.resourcemanager.quota.fluent.models.CurrentQuotaLimitBaseInner;
+import com.azure.resourcemanager.quota.models.CurrentQuotaLimitBase;
+import com.azure.resourcemanager.quota.models.QuotaProperties;
+
+public final class CurrentQuotaLimitBaseImpl
+    implements CurrentQuotaLimitBase, CurrentQuotaLimitBase.Definition, CurrentQuotaLimitBase.Update {
+    private CurrentQuotaLimitBaseInner innerObject;
+
+    private final com.azure.resourcemanager.quota.QuotaManager serviceManager;
+
+    public String id() {
+        return this.innerModel().id();
+    }
+
+    public String name() {
+        return this.innerModel().name();
+    }
+
+    public String type() {
+        return this.innerModel().type();
+    }
+
+    public QuotaProperties properties() {
+        return this.innerModel().properties();
+    }
+
+    public CurrentQuotaLimitBaseInner innerModel() {
+        return this.innerObject;
+    }
+
+    private com.azure.resourcemanager.quota.QuotaManager manager() {
+        return this.serviceManager;
+    }
+
+    private String resourceName;
+
+    private String scope;
+
+    public CurrentQuotaLimitBaseImpl withExistingScope(String scope) {
+        this.scope = scope;
+        return this;
+    }
+
+    public CurrentQuotaLimitBase create() {
+        this.innerObject =
+            serviceManager
+                .serviceClient()
+                .getQuotas()
+                .createOrUpdate(resourceName, scope, this.innerModel(), Context.NONE);
+        return this;
+    }
+
+    public CurrentQuotaLimitBase create(Context context) {
+        this.innerObject =
+            serviceManager.serviceClient().getQuotas().createOrUpdate(resourceName, scope, this.innerModel(), context);
+        return this;
+    }
+
+    CurrentQuotaLimitBaseImpl(String name, com.azure.resourcemanager.quota.QuotaManager serviceManager) {
+        this.innerObject = new CurrentQuotaLimitBaseInner();
+        this.serviceManager = serviceManager;
+        this.resourceName = name;
+    }
+
+    public CurrentQuotaLimitBaseImpl update() {
+        return this;
+    }
+
+    public CurrentQuotaLimitBase apply() {
+        this.innerObject =
+            serviceManager.serviceClient().getQuotas().update(resourceName, scope, this.innerModel(), Context.NONE);
+        return this;
+    }
+
+    public CurrentQuotaLimitBase apply(Context context) {
+        this.innerObject =
+            serviceManager.serviceClient().getQuotas().update(resourceName, scope, this.innerModel(), context);
+        return this;
+    }
+
+    CurrentQuotaLimitBaseImpl(
+        CurrentQuotaLimitBaseInner innerObject, com.azure.resourcemanager.quota.QuotaManager serviceManager) {
+        this.innerObject = innerObject;
+        this.serviceManager = serviceManager;
+        this.resourceName =
+            Utils
+                .getValueFromIdByParameterName(
+                    innerObject.id(), "/{scope}/providers/Microsoft.Quota/quotas/{resourceName}", "resourceName");
+        this.scope =
+            Utils
+                .getValueFromIdByParameterName(
+                    innerObject.id(), "/{scope}/providers/Microsoft.Quota/quotas/{resourceName}", "scope");
+    }
+
+    public CurrentQuotaLimitBase refresh() {
+        this.innerObject =
+            serviceManager.serviceClient().getQuotas().getWithResponse(resourceName, scope, Context.NONE).getValue();
+        return this;
+    }
+
+    public CurrentQuotaLimitBase refresh(Context context) {
+        this.innerObject =
+            serviceManager.serviceClient().getQuotas().getWithResponse(resourceName, scope, context).getValue();
+        return this;
+    }
+
+    public CurrentQuotaLimitBaseImpl withProperties(QuotaProperties properties) {
+        this.innerModel().withProperties(properties);
+        return this;
+    }
+}
diff --git a/sdk/quota/azure-resourcemanager-quota/src/main/java/com/azure/resourcemanager/quota/implementation/CurrentUsagesBaseImpl.java b/sdk/quota/azure-resourcemanager-quota/src/main/java/com/azure/resourcemanager/quota/implementation/CurrentUsagesBaseImpl.java
new file mode 100644
index 000000000000..1a1fb6f75eba
--- /dev/null
+++ b/sdk/quota/azure-resourcemanager-quota/src/main/java/com/azure/resourcemanager/quota/implementation/CurrentUsagesBaseImpl.java
@@ -0,0 +1,45 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.quota.implementation;
+
+import com.azure.resourcemanager.quota.fluent.models.CurrentUsagesBaseInner;
+import com.azure.resourcemanager.quota.models.CurrentUsagesBase;
+import com.azure.resourcemanager.quota.models.UsagesProperties;
+
+public final class CurrentUsagesBaseImpl implements CurrentUsagesBase {
+    private CurrentUsagesBaseInner innerObject;
+
+    private final com.azure.resourcemanager.quota.QuotaManager serviceManager;
+
+    CurrentUsagesBaseImpl(
+        CurrentUsagesBaseInner innerObject, com.azure.resourcemanager.quota.QuotaManager serviceManager) {
+        this.innerObject = innerObject;
+        this.serviceManager = serviceManager;
+    }
+
+    public String id() {
+        return this.innerModel().id();
+    }
+
+    public String name() {
+        return this.innerModel().name();
+    }
+
+    public String type() {
+        return this.innerModel().type();
+    }
+
+    public UsagesProperties properties() {
+        return this.innerModel().properties();
+    }
+
+    public CurrentUsagesBaseInner innerModel() {
+        return this.innerObject;
+    }
+
+    private com.azure.resourcemanager.quota.QuotaManager manager() {
+        return this.serviceManager;
+    }
+}
diff --git a/sdk/quota/azure-resourcemanager-quota/src/main/java/com/azure/resourcemanager/quota/implementation/OperationResponseImpl.java b/sdk/quota/azure-resourcemanager-quota/src/main/java/com/azure/resourcemanager/quota/implementation/OperationResponseImpl.java
new file mode 100644
index 000000000000..a175ac88897d
--- /dev/null
+++ b/sdk/quota/azure-resourcemanager-quota/src/main/java/com/azure/resourcemanager/quota/implementation/OperationResponseImpl.java
@@ -0,0 +1,41 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.quota.implementation;
+
+import com.azure.resourcemanager.quota.fluent.models.OperationResponseInner;
+import com.azure.resourcemanager.quota.models.OperationDisplay;
+import com.azure.resourcemanager.quota.models.OperationResponse;
+
+public final class OperationResponseImpl implements OperationResponse {
+    private OperationResponseInner innerObject;
+
+    private final com.azure.resourcemanager.quota.QuotaManager serviceManager;
+
+    OperationResponseImpl(
+        OperationResponseInner innerObject, com.azure.resourcemanager.quota.QuotaManager serviceManager) {
+        this.innerObject = innerObject;
+        this.serviceManager = serviceManager;
+    }
+
+    public String name() {
+        return this.innerModel().name();
+    }
+
+    public OperationDisplay display() {
+        return this.innerModel().display();
+    }
+
+    public String origin() {
+        return this.innerModel().origin();
+    }
+
+    public OperationResponseInner innerModel() {
+        return this.innerObject;
+    }
+
+    private com.azure.resourcemanager.quota.QuotaManager manager() {
+        return this.serviceManager;
+    }
+}
diff --git a/sdk/quota/azure-resourcemanager-quota/src/main/java/com/azure/resourcemanager/quota/implementation/OperationsClientImpl.java b/sdk/quota/azure-resourcemanager-quota/src/main/java/com/azure/resourcemanager/quota/implementation/OperationsClientImpl.java
new file mode 100644
index 000000000000..0f1e4152c642
--- /dev/null
+++ b/sdk/quota/azure-resourcemanager-quota/src/main/java/com/azure/resourcemanager/quota/implementation/OperationsClientImpl.java
@@ -0,0 +1,269 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.quota.implementation;
+
+import com.azure.core.annotation.ExpectedResponses;
+import com.azure.core.annotation.Get;
+import com.azure.core.annotation.HeaderParam;
+import com.azure.core.annotation.Headers;
+import com.azure.core.annotation.Host;
+import com.azure.core.annotation.HostParam;
+import com.azure.core.annotation.PathParam;
+import com.azure.core.annotation.QueryParam;
+import com.azure.core.annotation.ReturnType;
+import com.azure.core.annotation.ServiceInterface;
+import com.azure.core.annotation.ServiceMethod;
+import com.azure.core.annotation.UnexpectedResponseExceptionType;
+import com.azure.core.http.rest.PagedFlux;
+import com.azure.core.http.rest.PagedIterable;
+import com.azure.core.http.rest.PagedResponse;
+import com.azure.core.http.rest.PagedResponseBase;
+import com.azure.core.http.rest.Response;
+import com.azure.core.http.rest.RestProxy;
+import com.azure.core.management.exception.ManagementException;
+import com.azure.core.util.Context;
+import com.azure.core.util.FluxUtil;
+import com.azure.core.util.logging.ClientLogger;
+import com.azure.resourcemanager.quota.fluent.OperationsClient;
+import com.azure.resourcemanager.quota.fluent.models.OperationResponseInner;
+import com.azure.resourcemanager.quota.models.OperationList;
+import reactor.core.publisher.Mono;
+
+/** An instance of this class provides access to all the operations defined in OperationsClient. */
+public final class OperationsClientImpl implements OperationsClient {
+    private final ClientLogger logger = new ClientLogger(OperationsClientImpl.class);
+
+    /** The proxy service used to perform REST calls. */
+    private final OperationsService service;
+
+    /** The service client containing this operation class. */
+    private final AzureQuotaExtensionApiImpl client;
+
+    /**
+     * Initializes an instance of OperationsClientImpl.
+     *
+     * @param client the instance of the service client containing this operation class.
+     */
+    OperationsClientImpl(AzureQuotaExtensionApiImpl client) {
+        this.service =
+            RestProxy.create(OperationsService.class, client.getHttpPipeline(), client.getSerializerAdapter());
+        this.client = client;
+    }
+
+    /**
+     * The interface defining all the services for AzureQuotaExtensionApiOperations to be used by the proxy service to
+     * perform REST calls.
+     */
+    @Host("{$host}")
+    @ServiceInterface(name = "AzureQuotaExtensionA")
+    private interface OperationsService {
+        @Headers({"Content-Type: application/json"})
+        @Get("/providers/Microsoft.Quota/operations")
+        @ExpectedResponses({200})
+        @UnexpectedResponseExceptionType(ManagementException.class)
+        Mono> list(
+            @HostParam("$host") String endpoint,
+            @QueryParam("api-version") String apiVersion,
+            @HeaderParam("Accept") String accept,
+            Context context);
+
+        @Headers({"Content-Type: application/json"})
+        @Get("{nextLink}")
+        @ExpectedResponses({200})
+        @UnexpectedResponseExceptionType(ManagementException.class)
+        Mono> listNext(
+            @PathParam(value = "nextLink", encoded = true) String nextLink,
+            @HostParam("$host") String endpoint,
+            @HeaderParam("Accept") String accept,
+            Context context);
+    }
+
+    /**
+     * List all the operations supported by the Microsoft.Quota resource provider.
+     *
+     * @throws ManagementException thrown if the request is rejected by server.
+     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+     * @return the response.
+     */
+    @ServiceMethod(returns = ReturnType.SINGLE)
+    private Mono> listSinglePageAsync() {
+        if (this.client.getEndpoint() == null) {
+            return Mono
+                .error(
+                    new IllegalArgumentException(
+                        "Parameter this.client.getEndpoint() is required and cannot be null."));
+        }
+        final String accept = "application/json";
+        return FluxUtil
+            .withContext(
+                context -> service.list(this.client.getEndpoint(), this.client.getApiVersion(), accept, context))
+            .>map(
+                res ->
+                    new PagedResponseBase<>(
+                        res.getRequest(),
+                        res.getStatusCode(),
+                        res.getHeaders(),
+                        res.getValue().value(),
+                        res.getValue().nextLink(),
+                        null))
+            .contextWrite(context -> context.putAll(FluxUtil.toReactorContext(this.client.getContext()).readOnly()));
+    }
+
+    /**
+     * List all the operations supported by the Microsoft.Quota resource provider.
+     *
+     * @param context The context to associate with this operation.
+     * @throws IllegalArgumentException thrown if parameters fail the validation.
+     * @throws ManagementException thrown if the request is rejected by server.
+     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+     * @return the response.
+     */
+    @ServiceMethod(returns = ReturnType.SINGLE)
+    private Mono> listSinglePageAsync(Context context) {
+        if (this.client.getEndpoint() == null) {
+            return Mono
+                .error(
+                    new IllegalArgumentException(
+                        "Parameter this.client.getEndpoint() is required and cannot be null."));
+        }
+        final String accept = "application/json";
+        context = this.client.mergeContext(context);
+        return service
+            .list(this.client.getEndpoint(), this.client.getApiVersion(), accept, context)
+            .map(
+                res ->
+                    new PagedResponseBase<>(
+                        res.getRequest(),
+                        res.getStatusCode(),
+                        res.getHeaders(),
+                        res.getValue().value(),
+                        res.getValue().nextLink(),
+                        null));
+    }
+
+    /**
+     * List all the operations supported by the Microsoft.Quota resource provider.
+     *
+     * @throws ManagementException thrown if the request is rejected by server.
+     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+     * @return the response.
+     */
+    @ServiceMethod(returns = ReturnType.COLLECTION)
+    private PagedFlux listAsync() {
+        return new PagedFlux<>(() -> listSinglePageAsync(), nextLink -> listNextSinglePageAsync(nextLink));
+    }
+
+    /**
+     * List all the operations supported by the Microsoft.Quota resource provider.
+     *
+     * @param context The context to associate with this operation.
+     * @throws IllegalArgumentException thrown if parameters fail the validation.
+     * @throws ManagementException thrown if the request is rejected by server.
+     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+     * @return the response.
+     */
+    @ServiceMethod(returns = ReturnType.COLLECTION)
+    private PagedFlux listAsync(Context context) {
+        return new PagedFlux<>(
+            () -> listSinglePageAsync(context), nextLink -> listNextSinglePageAsync(nextLink, context));
+    }
+
+    /**
+     * List all the operations supported by the Microsoft.Quota resource provider.
+     *
+     * @throws ManagementException thrown if the request is rejected by server.
+     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+     * @return the response.
+     */
+    @ServiceMethod(returns = ReturnType.COLLECTION)
+    public PagedIterable list() {
+        return new PagedIterable<>(listAsync());
+    }
+
+    /**
+     * List all the operations supported by the Microsoft.Quota resource provider.
+     *
+     * @param context The context to associate with this operation.
+     * @throws IllegalArgumentException thrown if parameters fail the validation.
+     * @throws ManagementException thrown if the request is rejected by server.
+     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+     * @return the response.
+     */
+    @ServiceMethod(returns = ReturnType.COLLECTION)
+    public PagedIterable list(Context context) {
+        return new PagedIterable<>(listAsync(context));
+    }
+
+    /**
+     * Get the next page of items.
+     *
+     * @param nextLink The nextLink parameter.
+     * @throws IllegalArgumentException thrown if parameters fail the validation.
+     * @throws ManagementException thrown if the request is rejected by server.
+     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+     * @return the response.
+     */
+    @ServiceMethod(returns = ReturnType.SINGLE)
+    private Mono> listNextSinglePageAsync(String nextLink) {
+        if (nextLink == null) {
+            return Mono.error(new IllegalArgumentException("Parameter nextLink is required and cannot be null."));
+        }
+        if (this.client.getEndpoint() == null) {
+            return Mono
+                .error(
+                    new IllegalArgumentException(
+                        "Parameter this.client.getEndpoint() is required and cannot be null."));
+        }
+        final String accept = "application/json";
+        return FluxUtil
+            .withContext(context -> service.listNext(nextLink, this.client.getEndpoint(), accept, context))
+            .>map(
+                res ->
+                    new PagedResponseBase<>(
+                        res.getRequest(),
+                        res.getStatusCode(),
+                        res.getHeaders(),
+                        res.getValue().value(),
+                        res.getValue().nextLink(),
+                        null))
+            .contextWrite(context -> context.putAll(FluxUtil.toReactorContext(this.client.getContext()).readOnly()));
+    }
+
+    /**
+     * Get the next page of items.
+     *
+     * @param nextLink The nextLink parameter.
+     * @param context The context to associate with this operation.
+     * @throws IllegalArgumentException thrown if parameters fail the validation.
+     * @throws ManagementException thrown if the request is rejected by server.
+     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+     * @return the response.
+     */
+    @ServiceMethod(returns = ReturnType.SINGLE)
+    private Mono> listNextSinglePageAsync(String nextLink, Context context) {
+        if (nextLink == null) {
+            return Mono.error(new IllegalArgumentException("Parameter nextLink is required and cannot be null."));
+        }
+        if (this.client.getEndpoint() == null) {
+            return Mono
+                .error(
+                    new IllegalArgumentException(
+                        "Parameter this.client.getEndpoint() is required and cannot be null."));
+        }
+        final String accept = "application/json";
+        context = this.client.mergeContext(context);
+        return service
+            .listNext(nextLink, this.client.getEndpoint(), accept, context)
+            .map(
+                res ->
+                    new PagedResponseBase<>(
+                        res.getRequest(),
+                        res.getStatusCode(),
+                        res.getHeaders(),
+                        res.getValue().value(),
+                        res.getValue().nextLink(),
+                        null));
+    }
+}
diff --git a/sdk/quota/azure-resourcemanager-quota/src/main/java/com/azure/resourcemanager/quota/implementation/OperationsImpl.java b/sdk/quota/azure-resourcemanager-quota/src/main/java/com/azure/resourcemanager/quota/implementation/OperationsImpl.java
new file mode 100644
index 000000000000..bfe495bd8e2c
--- /dev/null
+++ b/sdk/quota/azure-resourcemanager-quota/src/main/java/com/azure/resourcemanager/quota/implementation/OperationsImpl.java
@@ -0,0 +1,45 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.quota.implementation;
+
+import com.azure.core.http.rest.PagedIterable;
+import com.azure.core.util.Context;
+import com.azure.core.util.logging.ClientLogger;
+import com.azure.resourcemanager.quota.fluent.OperationsClient;
+import com.azure.resourcemanager.quota.fluent.models.OperationResponseInner;
+import com.azure.resourcemanager.quota.models.OperationResponse;
+import com.azure.resourcemanager.quota.models.Operations;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+
+public final class OperationsImpl implements Operations {
+    @JsonIgnore private final ClientLogger logger = new ClientLogger(OperationsImpl.class);
+
+    private final OperationsClient innerClient;
+
+    private final com.azure.resourcemanager.quota.QuotaManager serviceManager;
+
+    public OperationsImpl(OperationsClient innerClient, com.azure.resourcemanager.quota.QuotaManager serviceManager) {
+        this.innerClient = innerClient;
+        this.serviceManager = serviceManager;
+    }
+
+    public PagedIterable list() {
+        PagedIterable inner = this.serviceClient().list();
+        return Utils.mapPage(inner, inner1 -> new OperationResponseImpl(inner1, this.manager()));
+    }
+
+    public PagedIterable list(Context context) {
+        PagedIterable inner = this.serviceClient().list(context);
+        return Utils.mapPage(inner, inner1 -> new OperationResponseImpl(inner1, this.manager()));
+    }
+
+    private OperationsClient serviceClient() {
+        return this.innerClient;
+    }
+
+    private com.azure.resourcemanager.quota.QuotaManager manager() {
+        return this.serviceManager;
+    }
+}
diff --git a/sdk/quota/azure-resourcemanager-quota/src/main/java/com/azure/resourcemanager/quota/implementation/QuotaRequestDetailsImpl.java b/sdk/quota/azure-resourcemanager-quota/src/main/java/com/azure/resourcemanager/quota/implementation/QuotaRequestDetailsImpl.java
new file mode 100644
index 000000000000..0f716c8e90b3
--- /dev/null
+++ b/sdk/quota/azure-resourcemanager-quota/src/main/java/com/azure/resourcemanager/quota/implementation/QuotaRequestDetailsImpl.java
@@ -0,0 +1,71 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.quota.implementation;
+
+import com.azure.resourcemanager.quota.fluent.models.QuotaRequestDetailsInner;
+import com.azure.resourcemanager.quota.models.QuotaRequestDetails;
+import com.azure.resourcemanager.quota.models.QuotaRequestState;
+import com.azure.resourcemanager.quota.models.ServiceErrorDetail;
+import com.azure.resourcemanager.quota.models.SubRequest;
+import java.time.OffsetDateTime;
+import java.util.Collections;
+import java.util.List;
+
+public final class QuotaRequestDetailsImpl implements QuotaRequestDetails {
+    private QuotaRequestDetailsInner innerObject;
+
+    private final com.azure.resourcemanager.quota.QuotaManager serviceManager;
+
+    QuotaRequestDetailsImpl(
+        QuotaRequestDetailsInner innerObject, com.azure.resourcemanager.quota.QuotaManager serviceManager) {
+        this.innerObject = innerObject;
+        this.serviceManager = serviceManager;
+    }
+
+    public String id() {
+        return this.innerModel().id();
+    }
+
+    public String name() {
+        return this.innerModel().name();
+    }
+
+    public String type() {
+        return this.innerModel().type();
+    }
+
+    public QuotaRequestState provisioningState() {
+        return this.innerModel().provisioningState();
+    }
+
+    public String message() {
+        return this.innerModel().message();
+    }
+
+    public ServiceErrorDetail error() {
+        return this.innerModel().error();
+    }
+
+    public OffsetDateTime requestSubmitTime() {
+        return this.innerModel().requestSubmitTime();
+    }
+
+    public List value() {
+        List inner = this.innerModel().value();
+        if (inner != null) {
+            return Collections.unmodifiableList(inner);
+        } else {
+            return Collections.emptyList();
+        }
+    }
+
+    public QuotaRequestDetailsInner innerModel() {
+        return this.innerObject;
+    }
+
+    private com.azure.resourcemanager.quota.QuotaManager manager() {
+        return this.serviceManager;
+    }
+}
diff --git a/sdk/quota/azure-resourcemanager-quota/src/main/java/com/azure/resourcemanager/quota/implementation/QuotaRequestStatusClientImpl.java b/sdk/quota/azure-resourcemanager-quota/src/main/java/com/azure/resourcemanager/quota/implementation/QuotaRequestStatusClientImpl.java
new file mode 100644
index 000000000000..cb58b7953fab
--- /dev/null
+++ b/sdk/quota/azure-resourcemanager-quota/src/main/java/com/azure/resourcemanager/quota/implementation/QuotaRequestStatusClientImpl.java
@@ -0,0 +1,542 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.quota.implementation;
+
+import com.azure.core.annotation.ExpectedResponses;
+import com.azure.core.annotation.Get;
+import com.azure.core.annotation.HeaderParam;
+import com.azure.core.annotation.Headers;
+import com.azure.core.annotation.Host;
+import com.azure.core.annotation.HostParam;
+import com.azure.core.annotation.PathParam;
+import com.azure.core.annotation.QueryParam;
+import com.azure.core.annotation.ReturnType;
+import com.azure.core.annotation.ServiceInterface;
+import com.azure.core.annotation.ServiceMethod;
+import com.azure.core.annotation.UnexpectedResponseExceptionType;
+import com.azure.core.http.rest.PagedFlux;
+import com.azure.core.http.rest.PagedIterable;
+import com.azure.core.http.rest.PagedResponse;
+import com.azure.core.http.rest.PagedResponseBase;
+import com.azure.core.http.rest.Response;
+import com.azure.core.http.rest.RestProxy;
+import com.azure.core.management.exception.ManagementException;
+import com.azure.core.util.Context;
+import com.azure.core.util.FluxUtil;
+import com.azure.core.util.logging.ClientLogger;
+import com.azure.resourcemanager.quota.fluent.QuotaRequestStatusClient;
+import com.azure.resourcemanager.quota.fluent.models.QuotaRequestDetailsInner;
+import com.azure.resourcemanager.quota.models.QuotaRequestDetailsList;
+import reactor.core.publisher.Mono;
+
+/** An instance of this class provides access to all the operations defined in QuotaRequestStatusClient. */
+public final class QuotaRequestStatusClientImpl implements QuotaRequestStatusClient {
+    private final ClientLogger logger = new ClientLogger(QuotaRequestStatusClientImpl.class);
+
+    /** The proxy service used to perform REST calls. */
+    private final QuotaRequestStatusService service;
+
+    /** The service client containing this operation class. */
+    private final AzureQuotaExtensionApiImpl client;
+
+    /**
+     * Initializes an instance of QuotaRequestStatusClientImpl.
+     *
+     * @param client the instance of the service client containing this operation class.
+     */
+    QuotaRequestStatusClientImpl(AzureQuotaExtensionApiImpl client) {
+        this.service =
+            RestProxy.create(QuotaRequestStatusService.class, client.getHttpPipeline(), client.getSerializerAdapter());
+        this.client = client;
+    }
+
+    /**
+     * The interface defining all the services for AzureQuotaExtensionApiQuotaRequestStatus to be used by the proxy
+     * service to perform REST calls.
+     */
+    @Host("{$host}")
+    @ServiceInterface(name = "AzureQuotaExtensionA")
+    private interface QuotaRequestStatusService {
+        @Headers({"Content-Type: application/json"})
+        @Get("/{scope}/providers/Microsoft.Quota/quotaRequests/{id}")
+        @ExpectedResponses({200})
+        @UnexpectedResponseExceptionType(ManagementException.class)
+        Mono> get(
+            @HostParam("$host") String endpoint,
+            @PathParam("id") String id,
+            @QueryParam("api-version") String apiVersion,
+            @PathParam(value = "scope", encoded = true) String scope,
+            @HeaderParam("Accept") String accept,
+            Context context);
+
+        @Headers({"Content-Type: application/json"})
+        @Get("/{scope}/providers/Microsoft.Quota/quotaRequests")
+        @ExpectedResponses({200})
+        @UnexpectedResponseExceptionType(ManagementException.class)
+        Mono> list(
+            @HostParam("$host") String endpoint,
+            @QueryParam("api-version") String apiVersion,
+            @PathParam(value = "scope", encoded = true) String scope,
+            @QueryParam("$filter") String filter,
+            @QueryParam("$top") Integer top,
+            @QueryParam("$skiptoken") String skiptoken,
+            @HeaderParam("Accept") String accept,
+            Context context);
+
+        @Headers({"Content-Type: application/json"})
+        @Get("{nextLink}")
+        @ExpectedResponses({200})
+        @UnexpectedResponseExceptionType(ManagementException.class)
+        Mono> listNext(
+            @PathParam(value = "nextLink", encoded = true) String nextLink,
+            @HostParam("$host") String endpoint,
+            @HeaderParam("Accept") String accept,
+            Context context);
+    }
+
+    /**
+     * Get the quota request details and status by quota request ID for the resources of the resource provider at a
+     * specific location. The quota request ID **id** is returned in the response of the PUT operation.
+     *
+     * @param id Quota request ID.
+     * @param scope The target Azure resource URI. For example,
+     *     `/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/qms-test/providers/Microsoft.Batch/batchAccounts/testAccount/`.
+     *     This is the target Azure resource URI for the List GET operation. If a `{resourceName}` is added after
+     *     `/quotas`, then it's the target Azure resource URI in the GET operation for the specific resource.
+     * @throws IllegalArgumentException thrown if parameters fail the validation.
+     * @throws ManagementException thrown if the request is rejected by server.
+     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+     * @return the quota request details and status by quota request ID for the resources of the resource provider at a
+     *     specific location.
+     */
+    @ServiceMethod(returns = ReturnType.SINGLE)
+    private Mono> getWithResponseAsync(String id, String scope) {
+        if (this.client.getEndpoint() == null) {
+            return Mono
+                .error(
+                    new IllegalArgumentException(
+                        "Parameter this.client.getEndpoint() is required and cannot be null."));
+        }
+        if (id == null) {
+            return Mono.error(new IllegalArgumentException("Parameter id is required and cannot be null."));
+        }
+        if (scope == null) {
+            return Mono.error(new IllegalArgumentException("Parameter scope is required and cannot be null."));
+        }
+        final String accept = "application/json";
+        return FluxUtil
+            .withContext(
+                context ->
+                    service.get(this.client.getEndpoint(), id, this.client.getApiVersion(), scope, accept, context))
+            .contextWrite(context -> context.putAll(FluxUtil.toReactorContext(this.client.getContext()).readOnly()));
+    }
+
+    /**
+     * Get the quota request details and status by quota request ID for the resources of the resource provider at a
+     * specific location. The quota request ID **id** is returned in the response of the PUT operation.
+     *
+     * @param id Quota request ID.
+     * @param scope The target Azure resource URI. For example,
+     *     `/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/qms-test/providers/Microsoft.Batch/batchAccounts/testAccount/`.
+     *     This is the target Azure resource URI for the List GET operation. If a `{resourceName}` is added after
+     *     `/quotas`, then it's the target Azure resource URI in the GET operation for the specific resource.
+     * @param context The context to associate with this operation.
+     * @throws IllegalArgumentException thrown if parameters fail the validation.
+     * @throws ManagementException thrown if the request is rejected by server.
+     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+     * @return the quota request details and status by quota request ID for the resources of the resource provider at a
+     *     specific location.
+     */
+    @ServiceMethod(returns = ReturnType.SINGLE)
+    private Mono> getWithResponseAsync(String id, String scope, Context context) {
+        if (this.client.getEndpoint() == null) {
+            return Mono
+                .error(
+                    new IllegalArgumentException(
+                        "Parameter this.client.getEndpoint() is required and cannot be null."));
+        }
+        if (id == null) {
+            return Mono.error(new IllegalArgumentException("Parameter id is required and cannot be null."));
+        }
+        if (scope == null) {
+            return Mono.error(new IllegalArgumentException("Parameter scope is required and cannot be null."));
+        }
+        final String accept = "application/json";
+        context = this.client.mergeContext(context);
+        return service.get(this.client.getEndpoint(), id, this.client.getApiVersion(), scope, accept, context);
+    }
+
+    /**
+     * Get the quota request details and status by quota request ID for the resources of the resource provider at a
+     * specific location. The quota request ID **id** is returned in the response of the PUT operation.
+     *
+     * @param id Quota request ID.
+     * @param scope The target Azure resource URI. For example,
+     *     `/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/qms-test/providers/Microsoft.Batch/batchAccounts/testAccount/`.
+     *     This is the target Azure resource URI for the List GET operation. If a `{resourceName}` is added after
+     *     `/quotas`, then it's the target Azure resource URI in the GET operation for the specific resource.
+     * @throws IllegalArgumentException thrown if parameters fail the validation.
+     * @throws ManagementException thrown if the request is rejected by server.
+     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+     * @return the quota request details and status by quota request ID for the resources of the resource provider at a
+     *     specific location.
+     */
+    @ServiceMethod(returns = ReturnType.SINGLE)
+    private Mono getAsync(String id, String scope) {
+        return getWithResponseAsync(id, scope)
+            .flatMap(
+                (Response res) -> {
+                    if (res.getValue() != null) {
+                        return Mono.just(res.getValue());
+                    } else {
+                        return Mono.empty();
+                    }
+                });
+    }
+
+    /**
+     * Get the quota request details and status by quota request ID for the resources of the resource provider at a
+     * specific location. The quota request ID **id** is returned in the response of the PUT operation.
+     *
+     * @param id Quota request ID.
+     * @param scope The target Azure resource URI. For example,
+     *     `/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/qms-test/providers/Microsoft.Batch/batchAccounts/testAccount/`.
+     *     This is the target Azure resource URI for the List GET operation. If a `{resourceName}` is added after
+     *     `/quotas`, then it's the target Azure resource URI in the GET operation for the specific resource.
+     * @throws IllegalArgumentException thrown if parameters fail the validation.
+     * @throws ManagementException thrown if the request is rejected by server.
+     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+     * @return the quota request details and status by quota request ID for the resources of the resource provider at a
+     *     specific location.
+     */
+    @ServiceMethod(returns = ReturnType.SINGLE)
+    public QuotaRequestDetailsInner get(String id, String scope) {
+        return getAsync(id, scope).block();
+    }
+
+    /**
+     * Get the quota request details and status by quota request ID for the resources of the resource provider at a
+     * specific location. The quota request ID **id** is returned in the response of the PUT operation.
+     *
+     * @param id Quota request ID.
+     * @param scope The target Azure resource URI. For example,
+     *     `/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/qms-test/providers/Microsoft.Batch/batchAccounts/testAccount/`.
+     *     This is the target Azure resource URI for the List GET operation. If a `{resourceName}` is added after
+     *     `/quotas`, then it's the target Azure resource URI in the GET operation for the specific resource.
+     * @param context The context to associate with this operation.
+     * @throws IllegalArgumentException thrown if parameters fail the validation.
+     * @throws ManagementException thrown if the request is rejected by server.
+     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+     * @return the quota request details and status by quota request ID for the resources of the resource provider at a
+     *     specific location.
+     */
+    @ServiceMethod(returns = ReturnType.SINGLE)
+    public Response getWithResponse(String id, String scope, Context context) {
+        return getWithResponseAsync(id, scope, context).block();
+    }
+
+    /**
+     * For the specified scope, get the current quota requests for a one year period ending at the time is made. Use the
+     * **oData** filter to select quota requests.
+     *
+     * @param scope The target Azure resource URI. For example,
+     *     `/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/qms-test/providers/Microsoft.Batch/batchAccounts/testAccount/`.
+     *     This is the target Azure resource URI for the List GET operation. If a `{resourceName}` is added after
+     *     `/quotas`, then it's the target Azure resource URI in the GET operation for the specific resource.
+     * @param filter | Field | Supported operators |---------------------|------------------------
+     *     |requestSubmitTime | ge, le, eq, gt, lt |provisioningState eq {QuotaRequestState} |resourceName eq
+     *     {resourceName}.
+     * @param top Number of records to return.
+     * @param skiptoken The **Skiptoken** parameter is used only if a previous operation returned a partial result. If a
+     *     previous response contains a **nextLink** element, its value includes a **skiptoken** parameter that
+     *     specifies a starting point to use for subsequent calls.
+     * @throws IllegalArgumentException thrown if parameters fail the validation.
+     * @throws ManagementException thrown if the request is rejected by server.
+     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+     * @return quota request information.
+     */
+    @ServiceMethod(returns = ReturnType.SINGLE)
+    private Mono> listSinglePageAsync(
+        String scope, String filter, Integer top, String skiptoken) {
+        if (this.client.getEndpoint() == null) {
+            return Mono
+                .error(
+                    new IllegalArgumentException(
+                        "Parameter this.client.getEndpoint() is required and cannot be null."));
+        }
+        if (scope == null) {
+            return Mono.error(new IllegalArgumentException("Parameter scope is required and cannot be null."));
+        }
+        final String accept = "application/json";
+        return FluxUtil
+            .withContext(
+                context ->
+                    service
+                        .list(
+                            this.client.getEndpoint(),
+                            this.client.getApiVersion(),
+                            scope,
+                            filter,
+                            top,
+                            skiptoken,
+                            accept,
+                            context))
+            .>map(
+                res ->
+                    new PagedResponseBase<>(
+                        res.getRequest(),
+                        res.getStatusCode(),
+                        res.getHeaders(),
+                        res.getValue().value(),
+                        res.getValue().nextLink(),
+                        null))
+            .contextWrite(context -> context.putAll(FluxUtil.toReactorContext(this.client.getContext()).readOnly()));
+    }
+
+    /**
+     * For the specified scope, get the current quota requests for a one year period ending at the time is made. Use the
+     * **oData** filter to select quota requests.
+     *
+     * @param scope The target Azure resource URI. For example,
+     *     `/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/qms-test/providers/Microsoft.Batch/batchAccounts/testAccount/`.
+     *     This is the target Azure resource URI for the List GET operation. If a `{resourceName}` is added after
+     *     `/quotas`, then it's the target Azure resource URI in the GET operation for the specific resource.
+     * @param filter | Field | Supported operators |---------------------|------------------------
+     *     |requestSubmitTime | ge, le, eq, gt, lt |provisioningState eq {QuotaRequestState} |resourceName eq
+     *     {resourceName}.
+     * @param top Number of records to return.
+     * @param skiptoken The **Skiptoken** parameter is used only if a previous operation returned a partial result. If a
+     *     previous response contains a **nextLink** element, its value includes a **skiptoken** parameter that
+     *     specifies a starting point to use for subsequent calls.
+     * @param context The context to associate with this operation.
+     * @throws IllegalArgumentException thrown if parameters fail the validation.
+     * @throws ManagementException thrown if the request is rejected by server.
+     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+     * @return quota request information.
+     */
+    @ServiceMethod(returns = ReturnType.SINGLE)
+    private Mono> listSinglePageAsync(
+        String scope, String filter, Integer top, String skiptoken, Context context) {
+        if (this.client.getEndpoint() == null) {
+            return Mono
+                .error(
+                    new IllegalArgumentException(
+                        "Parameter this.client.getEndpoint() is required and cannot be null."));
+        }
+        if (scope == null) {
+            return Mono.error(new IllegalArgumentException("Parameter scope is required and cannot be null."));
+        }
+        final String accept = "application/json";
+        context = this.client.mergeContext(context);
+        return service
+            .list(
+                this.client.getEndpoint(), this.client.getApiVersion(), scope, filter, top, skiptoken, accept, context)
+            .map(
+                res ->
+                    new PagedResponseBase<>(
+                        res.getRequest(),
+                        res.getStatusCode(),
+                        res.getHeaders(),
+                        res.getValue().value(),
+                        res.getValue().nextLink(),
+                        null));
+    }
+
+    /**
+     * For the specified scope, get the current quota requests for a one year period ending at the time is made. Use the
+     * **oData** filter to select quota requests.
+     *
+     * @param scope The target Azure resource URI. For example,
+     *     `/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/qms-test/providers/Microsoft.Batch/batchAccounts/testAccount/`.
+     *     This is the target Azure resource URI for the List GET operation. If a `{resourceName}` is added after
+     *     `/quotas`, then it's the target Azure resource URI in the GET operation for the specific resource.
+     * @param filter | Field | Supported operators |---------------------|------------------------
+     *     |requestSubmitTime | ge, le, eq, gt, lt |provisioningState eq {QuotaRequestState} |resourceName eq
+     *     {resourceName}.
+     * @param top Number of records to return.
+     * @param skiptoken The **Skiptoken** parameter is used only if a previous operation returned a partial result. If a
+     *     previous response contains a **nextLink** element, its value includes a **skiptoken** parameter that
+     *     specifies a starting point to use for subsequent calls.
+     * @throws IllegalArgumentException thrown if parameters fail the validation.
+     * @throws ManagementException thrown if the request is rejected by server.
+     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+     * @return quota request information.
+     */
+    @ServiceMethod(returns = ReturnType.COLLECTION)
+    private PagedFlux listAsync(String scope, String filter, Integer top, String skiptoken) {
+        return new PagedFlux<>(
+            () -> listSinglePageAsync(scope, filter, top, skiptoken), nextLink -> listNextSinglePageAsync(nextLink));
+    }
+
+    /**
+     * For the specified scope, get the current quota requests for a one year period ending at the time is made. Use the
+     * **oData** filter to select quota requests.
+     *
+     * @param scope The target Azure resource URI. For example,
+     *     `/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/qms-test/providers/Microsoft.Batch/batchAccounts/testAccount/`.
+     *     This is the target Azure resource URI for the List GET operation. If a `{resourceName}` is added after
+     *     `/quotas`, then it's the target Azure resource URI in the GET operation for the specific resource.
+     * @throws IllegalArgumentException thrown if parameters fail the validation.
+     * @throws ManagementException thrown if the request is rejected by server.
+     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+     * @return quota request information.
+     */
+    @ServiceMethod(returns = ReturnType.COLLECTION)
+    private PagedFlux listAsync(String scope) {
+        final String filter = null;
+        final Integer top = null;
+        final String skiptoken = null;
+        return new PagedFlux<>(
+            () -> listSinglePageAsync(scope, filter, top, skiptoken), nextLink -> listNextSinglePageAsync(nextLink));
+    }
+
+    /**
+     * For the specified scope, get the current quota requests for a one year period ending at the time is made. Use the
+     * **oData** filter to select quota requests.
+     *
+     * @param scope The target Azure resource URI. For example,
+     *     `/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/qms-test/providers/Microsoft.Batch/batchAccounts/testAccount/`.
+     *     This is the target Azure resource URI for the List GET operation. If a `{resourceName}` is added after
+     *     `/quotas`, then it's the target Azure resource URI in the GET operation for the specific resource.
+     * @param filter | Field | Supported operators |---------------------|------------------------
+     *     |requestSubmitTime | ge, le, eq, gt, lt |provisioningState eq {QuotaRequestState} |resourceName eq
+     *     {resourceName}.
+     * @param top Number of records to return.
+     * @param skiptoken The **Skiptoken** parameter is used only if a previous operation returned a partial result. If a
+     *     previous response contains a **nextLink** element, its value includes a **skiptoken** parameter that
+     *     specifies a starting point to use for subsequent calls.
+     * @param context The context to associate with this operation.
+     * @throws IllegalArgumentException thrown if parameters fail the validation.
+     * @throws ManagementException thrown if the request is rejected by server.
+     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+     * @return quota request information.
+     */
+    @ServiceMethod(returns = ReturnType.COLLECTION)
+    private PagedFlux listAsync(
+        String scope, String filter, Integer top, String skiptoken, Context context) {
+        return new PagedFlux<>(
+            () -> listSinglePageAsync(scope, filter, top, skiptoken, context),
+            nextLink -> listNextSinglePageAsync(nextLink, context));
+    }
+
+    /**
+     * For the specified scope, get the current quota requests for a one year period ending at the time is made. Use the
+     * **oData** filter to select quota requests.
+     *
+     * @param scope The target Azure resource URI. For example,
+     *     `/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/qms-test/providers/Microsoft.Batch/batchAccounts/testAccount/`.
+     *     This is the target Azure resource URI for the List GET operation. If a `{resourceName}` is added after
+     *     `/quotas`, then it's the target Azure resource URI in the GET operation for the specific resource.
+     * @throws IllegalArgumentException thrown if parameters fail the validation.
+     * @throws ManagementException thrown if the request is rejected by server.
+     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+     * @return quota request information.
+     */
+    @ServiceMethod(returns = ReturnType.COLLECTION)
+    public PagedIterable list(String scope) {
+        final String filter = null;
+        final Integer top = null;
+        final String skiptoken = null;
+        return new PagedIterable<>(listAsync(scope, filter, top, skiptoken));
+    }
+
+    /**
+     * For the specified scope, get the current quota requests for a one year period ending at the time is made. Use the
+     * **oData** filter to select quota requests.
+     *
+     * @param scope The target Azure resource URI. For example,
+     *     `/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/qms-test/providers/Microsoft.Batch/batchAccounts/testAccount/`.
+     *     This is the target Azure resource URI for the List GET operation. If a `{resourceName}` is added after
+     *     `/quotas`, then it's the target Azure resource URI in the GET operation for the specific resource.
+     * @param filter | Field | Supported operators |---------------------|------------------------
+     *     |requestSubmitTime | ge, le, eq, gt, lt |provisioningState eq {QuotaRequestState} |resourceName eq
+     *     {resourceName}.
+     * @param top Number of records to return.
+     * @param skiptoken The **Skiptoken** parameter is used only if a previous operation returned a partial result. If a
+     *     previous response contains a **nextLink** element, its value includes a **skiptoken** parameter that
+     *     specifies a starting point to use for subsequent calls.
+     * @param context The context to associate with this operation.
+     * @throws IllegalArgumentException thrown if parameters fail the validation.
+     * @throws ManagementException thrown if the request is rejected by server.
+     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+     * @return quota request information.
+     */
+    @ServiceMethod(returns = ReturnType.COLLECTION)
+    public PagedIterable list(
+        String scope, String filter, Integer top, String skiptoken, Context context) {
+        return new PagedIterable<>(listAsync(scope, filter, top, skiptoken, context));
+    }
+
+    /**
+     * Get the next page of items.
+     *
+     * @param nextLink The nextLink parameter.
+     * @throws IllegalArgumentException thrown if parameters fail the validation.
+     * @throws ManagementException thrown if the request is rejected by server.
+     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+     * @return quota request information.
+     */
+    @ServiceMethod(returns = ReturnType.SINGLE)
+    private Mono> listNextSinglePageAsync(String nextLink) {
+        if (nextLink == null) {
+            return Mono.error(new IllegalArgumentException("Parameter nextLink is required and cannot be null."));
+        }
+        if (this.client.getEndpoint() == null) {
+            return Mono
+                .error(
+                    new IllegalArgumentException(
+                        "Parameter this.client.getEndpoint() is required and cannot be null."));
+        }
+        final String accept = "application/json";
+        return FluxUtil
+            .withContext(context -> service.listNext(nextLink, this.client.getEndpoint(), accept, context))
+            .>map(
+                res ->
+                    new PagedResponseBase<>(
+                        res.getRequest(),
+                        res.getStatusCode(),
+                        res.getHeaders(),
+                        res.getValue().value(),
+                        res.getValue().nextLink(),
+                        null))
+            .contextWrite(context -> context.putAll(FluxUtil.toReactorContext(this.client.getContext()).readOnly()));
+    }
+
+    /**
+     * Get the next page of items.
+     *
+     * @param nextLink The nextLink parameter.
+     * @param context The context to associate with this operation.
+     * @throws IllegalArgumentException thrown if parameters fail the validation.
+     * @throws ManagementException thrown if the request is rejected by server.
+     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+     * @return quota request information.
+     */
+    @ServiceMethod(returns = ReturnType.SINGLE)
+    private Mono> listNextSinglePageAsync(String nextLink, Context context) {
+        if (nextLink == null) {
+            return Mono.error(new IllegalArgumentException("Parameter nextLink is required and cannot be null."));
+        }
+        if (this.client.getEndpoint() == null) {
+            return Mono
+                .error(
+                    new IllegalArgumentException(
+                        "Parameter this.client.getEndpoint() is required and cannot be null."));
+        }
+        final String accept = "application/json";
+        context = this.client.mergeContext(context);
+        return service
+            .listNext(nextLink, this.client.getEndpoint(), accept, context)
+            .map(
+                res ->
+                    new PagedResponseBase<>(
+                        res.getRequest(),
+                        res.getStatusCode(),
+                        res.getHeaders(),
+                        res.getValue().value(),
+                        res.getValue().nextLink(),
+                        null));
+    }
+}
diff --git a/sdk/quota/azure-resourcemanager-quota/src/main/java/com/azure/resourcemanager/quota/implementation/QuotaRequestStatusImpl.java b/sdk/quota/azure-resourcemanager-quota/src/main/java/com/azure/resourcemanager/quota/implementation/QuotaRequestStatusImpl.java
new file mode 100644
index 000000000000..6b25090f3197
--- /dev/null
+++ b/sdk/quota/azure-resourcemanager-quota/src/main/java/com/azure/resourcemanager/quota/implementation/QuotaRequestStatusImpl.java
@@ -0,0 +1,72 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.quota.implementation;
+
+import com.azure.core.http.rest.PagedIterable;
+import com.azure.core.http.rest.Response;
+import com.azure.core.http.rest.SimpleResponse;
+import com.azure.core.util.Context;
+import com.azure.core.util.logging.ClientLogger;
+import com.azure.resourcemanager.quota.fluent.QuotaRequestStatusClient;
+import com.azure.resourcemanager.quota.fluent.models.QuotaRequestDetailsInner;
+import com.azure.resourcemanager.quota.models.QuotaRequestDetails;
+import com.azure.resourcemanager.quota.models.QuotaRequestStatus;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+
+public final class QuotaRequestStatusImpl implements QuotaRequestStatus {
+    @JsonIgnore private final ClientLogger logger = new ClientLogger(QuotaRequestStatusImpl.class);
+
+    private final QuotaRequestStatusClient innerClient;
+
+    private final com.azure.resourcemanager.quota.QuotaManager serviceManager;
+
+    public QuotaRequestStatusImpl(
+        QuotaRequestStatusClient innerClient, com.azure.resourcemanager.quota.QuotaManager serviceManager) {
+        this.innerClient = innerClient;
+        this.serviceManager = serviceManager;
+    }
+
+    public QuotaRequestDetails get(String id, String scope) {
+        QuotaRequestDetailsInner inner = this.serviceClient().get(id, scope);
+        if (inner != null) {
+            return new QuotaRequestDetailsImpl(inner, this.manager());
+        } else {
+            return null;
+        }
+    }
+
+    public Response getWithResponse(String id, String scope, Context context) {
+        Response inner = this.serviceClient().getWithResponse(id, scope, context);
+        if (inner != null) {
+            return new SimpleResponse<>(
+                inner.getRequest(),
+                inner.getStatusCode(),
+                inner.getHeaders(),
+                new QuotaRequestDetailsImpl(inner.getValue(), this.manager()));
+        } else {
+            return null;
+        }
+    }
+
+    public PagedIterable list(String scope) {
+        PagedIterable inner = this.serviceClient().list(scope);
+        return Utils.mapPage(inner, inner1 -> new QuotaRequestDetailsImpl(inner1, this.manager()));
+    }
+
+    public PagedIterable list(
+        String scope, String filter, Integer top, String skiptoken, Context context) {
+        PagedIterable inner =
+            this.serviceClient().list(scope, filter, top, skiptoken, context);
+        return Utils.mapPage(inner, inner1 -> new QuotaRequestDetailsImpl(inner1, this.manager()));
+    }
+
+    private QuotaRequestStatusClient serviceClient() {
+        return this.innerClient;
+    }
+
+    private com.azure.resourcemanager.quota.QuotaManager manager() {
+        return this.serviceManager;
+    }
+}
diff --git a/sdk/quota/azure-resourcemanager-quota/src/main/java/com/azure/resourcemanager/quota/implementation/QuotasClientImpl.java b/sdk/quota/azure-resourcemanager-quota/src/main/java/com/azure/resourcemanager/quota/implementation/QuotasClientImpl.java
new file mode 100644
index 000000000000..6c064b48185d
--- /dev/null
+++ b/sdk/quota/azure-resourcemanager-quota/src/main/java/com/azure/resourcemanager/quota/implementation/QuotasClientImpl.java
@@ -0,0 +1,1198 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.quota.implementation;
+
+import com.azure.core.annotation.BodyParam;
+import com.azure.core.annotation.ExpectedResponses;
+import com.azure.core.annotation.Get;
+import com.azure.core.annotation.HeaderParam;
+import com.azure.core.annotation.Headers;
+import com.azure.core.annotation.Host;
+import com.azure.core.annotation.HostParam;
+import com.azure.core.annotation.Patch;
+import com.azure.core.annotation.PathParam;
+import com.azure.core.annotation.Put;
+import com.azure.core.annotation.QueryParam;
+import com.azure.core.annotation.ReturnType;
+import com.azure.core.annotation.ServiceInterface;
+import com.azure.core.annotation.ServiceMethod;
+import com.azure.core.annotation.UnexpectedResponseExceptionType;
+import com.azure.core.http.rest.PagedFlux;
+import com.azure.core.http.rest.PagedIterable;
+import com.azure.core.http.rest.PagedResponse;
+import com.azure.core.http.rest.PagedResponseBase;
+import com.azure.core.http.rest.Response;
+import com.azure.core.http.rest.RestProxy;
+import com.azure.core.management.exception.ManagementException;
+import com.azure.core.management.polling.PollResult;
+import com.azure.core.util.Context;
+import com.azure.core.util.FluxUtil;
+import com.azure.core.util.logging.ClientLogger;
+import com.azure.core.util.polling.PollerFlux;
+import com.azure.core.util.polling.SyncPoller;
+import com.azure.resourcemanager.quota.fluent.QuotasClient;
+import com.azure.resourcemanager.quota.fluent.models.CurrentQuotaLimitBaseInner;
+import com.azure.resourcemanager.quota.models.QuotasGetResponse;
+import com.azure.resourcemanager.quota.models.QuotasListNextResponse;
+import com.azure.resourcemanager.quota.models.QuotasListResponse;
+import java.nio.ByteBuffer;
+import reactor.core.publisher.Flux;
+import reactor.core.publisher.Mono;
+
+/** An instance of this class provides access to all the operations defined in QuotasClient. */
+public final class QuotasClientImpl implements QuotasClient {
+    private final ClientLogger logger = new ClientLogger(QuotasClientImpl.class);
+
+    /** The proxy service used to perform REST calls. */
+    private final QuotasService service;
+
+    /** The service client containing this operation class. */
+    private final AzureQuotaExtensionApiImpl client;
+
+    /**
+     * Initializes an instance of QuotasClientImpl.
+     *
+     * @param client the instance of the service client containing this operation class.
+     */
+    QuotasClientImpl(AzureQuotaExtensionApiImpl client) {
+        this.service = RestProxy.create(QuotasService.class, client.getHttpPipeline(), client.getSerializerAdapter());
+        this.client = client;
+    }
+
+    /**
+     * The interface defining all the services for AzureQuotaExtensionApiQuotas to be used by the proxy service to
+     * perform REST calls.
+     */
+    @Host("{$host}")
+    @ServiceInterface(name = "AzureQuotaExtensionA")
+    private interface QuotasService {
+        @Headers({"Content-Type: application/json"})
+        @Get("/{scope}/providers/Microsoft.Quota/quotas/{resourceName}")
+        @ExpectedResponses({200})
+        @UnexpectedResponseExceptionType(ManagementException.class)
+        Mono get(
+            @HostParam("$host") String endpoint,
+            @PathParam("resourceName") String resourceName,
+            @QueryParam("api-version") String apiVersion,
+            @PathParam(value = "scope", encoded = true) String scope,
+            @HeaderParam("Accept") String accept,
+            Context context);
+
+        @Headers({"Content-Type: application/json"})
+        @Put("/{scope}/providers/Microsoft.Quota/quotas/{resourceName}")
+        @ExpectedResponses({200, 202})
+        @UnexpectedResponseExceptionType(ManagementException.class)
+        Mono>> createOrUpdate(
+            @HostParam("$host") String endpoint,
+            @PathParam("resourceName") String resourceName,
+            @QueryParam("api-version") String apiVersion,
+            @PathParam(value = "scope", encoded = true) String scope,
+            @BodyParam("application/json") CurrentQuotaLimitBaseInner createQuotaRequest,
+            @HeaderParam("Accept") String accept,
+            Context context);
+
+        @Headers({"Content-Type: application/json"})
+        @Patch("/{scope}/providers/Microsoft.Quota/quotas/{resourceName}")
+        @ExpectedResponses({200, 202})
+        @UnexpectedResponseExceptionType(ManagementException.class)
+        Mono>> update(
+            @HostParam("$host") String endpoint,
+            @PathParam("resourceName") String resourceName,
+            @QueryParam("api-version") String apiVersion,
+            @PathParam(value = "scope", encoded = true) String scope,
+            @BodyParam("application/json") CurrentQuotaLimitBaseInner createQuotaRequest,
+            @HeaderParam("Accept") String accept,
+            Context context);
+
+        @Headers({"Content-Type: application/json"})
+        @Get("/{scope}/providers/Microsoft.Quota/quotas")
+        @ExpectedResponses({200})
+        @UnexpectedResponseExceptionType(ManagementException.class)
+        Mono list(
+            @HostParam("$host") String endpoint,
+            @QueryParam("api-version") String apiVersion,
+            @PathParam(value = "scope", encoded = true) String scope,
+            @HeaderParam("Accept") String accept,
+            Context context);
+
+        @Headers({"Content-Type: application/json"})
+        @Get("{nextLink}")
+        @ExpectedResponses({200})
+        @UnexpectedResponseExceptionType(ManagementException.class)
+        Mono listNext(
+            @PathParam(value = "nextLink", encoded = true) String nextLink,
+            @HostParam("$host") String endpoint,
+            @HeaderParam("Accept") String accept,
+            Context context);
+    }
+
+    /**
+     * Get the quota limit of a resource. The response can be used to determine the remaining quota to calculate a new
+     * quota limit that can be submitted with a PUT request.
+     *
+     * @param resourceName Resource name for a given resource provider. For example: - SKU name for Microsoft.Compute -
+     *     SKU or TotalLowPriorityCores for Microsoft.MachineLearningServices For Microsoft.Network PublicIPAddresses.
+     * @param scope The target Azure resource URI. For example,
+     *     `/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/qms-test/providers/Microsoft.Batch/batchAccounts/testAccount/`.
+     *     This is the target Azure resource URI for the List GET operation. If a `{resourceName}` is added after
+     *     `/quotas`, then it's the target Azure resource URI in the GET operation for the specific resource.
+     * @throws IllegalArgumentException thrown if parameters fail the validation.
+     * @throws ManagementException thrown if the request is rejected by server.
+     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+     * @return the quota limit of a resource.
+     */
+    @ServiceMethod(returns = ReturnType.SINGLE)
+    private Mono getWithResponseAsync(String resourceName, String scope) {
+        if (this.client.getEndpoint() == null) {
+            return Mono
+                .error(
+                    new IllegalArgumentException(
+                        "Parameter this.client.getEndpoint() is required and cannot be null."));
+        }
+        if (resourceName == null) {
+            return Mono.error(new IllegalArgumentException("Parameter resourceName is required and cannot be null."));
+        }
+        if (scope == null) {
+            return Mono.error(new IllegalArgumentException("Parameter scope is required and cannot be null."));
+        }
+        final String accept = "application/json";
+        return FluxUtil
+            .withContext(
+                context ->
+                    service
+                        .get(
+                            this.client.getEndpoint(),
+                            resourceName,
+                            this.client.getApiVersion(),
+                            scope,
+                            accept,
+                            context))
+            .contextWrite(context -> context.putAll(FluxUtil.toReactorContext(this.client.getContext()).readOnly()));
+    }
+
+    /**
+     * Get the quota limit of a resource. The response can be used to determine the remaining quota to calculate a new
+     * quota limit that can be submitted with a PUT request.
+     *
+     * @param resourceName Resource name for a given resource provider. For example: - SKU name for Microsoft.Compute -
+     *     SKU or TotalLowPriorityCores for Microsoft.MachineLearningServices For Microsoft.Network PublicIPAddresses.
+     * @param scope The target Azure resource URI. For example,
+     *     `/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/qms-test/providers/Microsoft.Batch/batchAccounts/testAccount/`.
+     *     This is the target Azure resource URI for the List GET operation. If a `{resourceName}` is added after
+     *     `/quotas`, then it's the target Azure resource URI in the GET operation for the specific resource.
+     * @param context The context to associate with this operation.
+     * @throws IllegalArgumentException thrown if parameters fail the validation.
+     * @throws ManagementException thrown if the request is rejected by server.
+     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+     * @return the quota limit of a resource.
+     */
+    @ServiceMethod(returns = ReturnType.SINGLE)
+    private Mono getWithResponseAsync(String resourceName, String scope, Context context) {
+        if (this.client.getEndpoint() == null) {
+            return Mono
+                .error(
+                    new IllegalArgumentException(
+                        "Parameter this.client.getEndpoint() is required and cannot be null."));
+        }
+        if (resourceName == null) {
+            return Mono.error(new IllegalArgumentException("Parameter resourceName is required and cannot be null."));
+        }
+        if (scope == null) {
+            return Mono.error(new IllegalArgumentException("Parameter scope is required and cannot be null."));
+        }
+        final String accept = "application/json";
+        context = this.client.mergeContext(context);
+        return service
+            .get(this.client.getEndpoint(), resourceName, this.client.getApiVersion(), scope, accept, context);
+    }
+
+    /**
+     * Get the quota limit of a resource. The response can be used to determine the remaining quota to calculate a new
+     * quota limit that can be submitted with a PUT request.
+     *
+     * @param resourceName Resource name for a given resource provider. For example: - SKU name for Microsoft.Compute -
+     *     SKU or TotalLowPriorityCores for Microsoft.MachineLearningServices For Microsoft.Network PublicIPAddresses.
+     * @param scope The target Azure resource URI. For example,
+     *     `/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/qms-test/providers/Microsoft.Batch/batchAccounts/testAccount/`.
+     *     This is the target Azure resource URI for the List GET operation. If a `{resourceName}` is added after
+     *     `/quotas`, then it's the target Azure resource URI in the GET operation for the specific resource.
+     * @throws IllegalArgumentException thrown if parameters fail the validation.
+     * @throws ManagementException thrown if the request is rejected by server.
+     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+     * @return the quota limit of a resource.
+     */
+    @ServiceMethod(returns = ReturnType.SINGLE)
+    private Mono getAsync(String resourceName, String scope) {
+        return getWithResponseAsync(resourceName, scope)
+            .flatMap(
+                (QuotasGetResponse res) -> {
+                    if (res.getValue() != null) {
+                        return Mono.just(res.getValue());
+                    } else {
+                        return Mono.empty();
+                    }
+                });
+    }
+
+    /**
+     * Get the quota limit of a resource. The response can be used to determine the remaining quota to calculate a new
+     * quota limit that can be submitted with a PUT request.
+     *
+     * @param resourceName Resource name for a given resource provider. For example: - SKU name for Microsoft.Compute -
+     *     SKU or TotalLowPriorityCores for Microsoft.MachineLearningServices For Microsoft.Network PublicIPAddresses.
+     * @param scope The target Azure resource URI. For example,
+     *     `/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/qms-test/providers/Microsoft.Batch/batchAccounts/testAccount/`.
+     *     This is the target Azure resource URI for the List GET operation. If a `{resourceName}` is added after
+     *     `/quotas`, then it's the target Azure resource URI in the GET operation for the specific resource.
+     * @throws IllegalArgumentException thrown if parameters fail the validation.
+     * @throws ManagementException thrown if the request is rejected by server.
+     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+     * @return the quota limit of a resource.
+     */
+    @ServiceMethod(returns = ReturnType.SINGLE)
+    public CurrentQuotaLimitBaseInner get(String resourceName, String scope) {
+        return getAsync(resourceName, scope).block();
+    }
+
+    /**
+     * Get the quota limit of a resource. The response can be used to determine the remaining quota to calculate a new
+     * quota limit that can be submitted with a PUT request.
+     *
+     * @param resourceName Resource name for a given resource provider. For example: - SKU name for Microsoft.Compute -
+     *     SKU or TotalLowPriorityCores for Microsoft.MachineLearningServices For Microsoft.Network PublicIPAddresses.
+     * @param scope The target Azure resource URI. For example,
+     *     `/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/qms-test/providers/Microsoft.Batch/batchAccounts/testAccount/`.
+     *     This is the target Azure resource URI for the List GET operation. If a `{resourceName}` is added after
+     *     `/quotas`, then it's the target Azure resource URI in the GET operation for the specific resource.
+     * @param context The context to associate with this operation.
+     * @throws IllegalArgumentException thrown if parameters fail the validation.
+     * @throws ManagementException thrown if the request is rejected by server.
+     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+     * @return the quota limit of a resource.
+     */
+    @ServiceMethod(returns = ReturnType.SINGLE)
+    public QuotasGetResponse getWithResponse(String resourceName, String scope, Context context) {
+        return getWithResponseAsync(resourceName, scope, context).block();
+    }
+
+    /**
+     * Create or update the quota limit for the specified resource with the requested value. To update the quota, follow
+     * these steps: 1. Use the GET operation for quotas and usages to determine how much quota remains for the specific
+     * resource and to calculate the new quota limit. These steps are detailed in [this
+     * example](https://techcommunity.microsoft.com/t5/azure-governance-and-management/using-the-new-quota-rest-api/ba-p/2183670).
+     * 2. Use this PUT operation to update the quota limit. Please check the URI in location header for the detailed
+     * status of the request.
+     *
+     * @param resourceName Resource name for a given resource provider. For example: - SKU name for Microsoft.Compute -
+     *     SKU or TotalLowPriorityCores for Microsoft.MachineLearningServices For Microsoft.Network PublicIPAddresses.
+     * @param scope The target Azure resource URI. For example,
+     *     `/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/qms-test/providers/Microsoft.Batch/batchAccounts/testAccount/`.
+     *     This is the target Azure resource URI for the List GET operation. If a `{resourceName}` is added after
+     *     `/quotas`, then it's the target Azure resource URI in the GET operation for the specific resource.
+     * @param createQuotaRequest Quota request payload.
+     * @throws IllegalArgumentException thrown if parameters fail the validation.
+     * @throws ManagementException thrown if the request is rejected by server.
+     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+     * @return quota limit.
+     */
+    @ServiceMethod(returns = ReturnType.SINGLE)
+    private Mono>> createOrUpdateWithResponseAsync(
+        String resourceName, String scope, CurrentQuotaLimitBaseInner createQuotaRequest) {
+        if (this.client.getEndpoint() == null) {
+            return Mono
+                .error(
+                    new IllegalArgumentException(
+                        "Parameter this.client.getEndpoint() is required and cannot be null."));
+        }
+        if (resourceName == null) {
+            return Mono.error(new IllegalArgumentException("Parameter resourceName is required and cannot be null."));
+        }
+        if (scope == null) {
+            return Mono.error(new IllegalArgumentException("Parameter scope is required and cannot be null."));
+        }
+        if (createQuotaRequest == null) {
+            return Mono
+                .error(new IllegalArgumentException("Parameter createQuotaRequest is required and cannot be null."));
+        } else {
+            createQuotaRequest.validate();
+        }
+        final String accept = "application/json";
+        return FluxUtil
+            .withContext(
+                context ->
+                    service
+                        .createOrUpdate(
+                            this.client.getEndpoint(),
+                            resourceName,
+                            this.client.getApiVersion(),
+                            scope,
+                            createQuotaRequest,
+                            accept,
+                            context))
+            .contextWrite(context -> context.putAll(FluxUtil.toReactorContext(this.client.getContext()).readOnly()));
+    }
+
+    /**
+     * Create or update the quota limit for the specified resource with the requested value. To update the quota, follow
+     * these steps: 1. Use the GET operation for quotas and usages to determine how much quota remains for the specific
+     * resource and to calculate the new quota limit. These steps are detailed in [this
+     * example](https://techcommunity.microsoft.com/t5/azure-governance-and-management/using-the-new-quota-rest-api/ba-p/2183670).
+     * 2. Use this PUT operation to update the quota limit. Please check the URI in location header for the detailed
+     * status of the request.
+     *
+     * @param resourceName Resource name for a given resource provider. For example: - SKU name for Microsoft.Compute -
+     *     SKU or TotalLowPriorityCores for Microsoft.MachineLearningServices For Microsoft.Network PublicIPAddresses.
+     * @param scope The target Azure resource URI. For example,
+     *     `/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/qms-test/providers/Microsoft.Batch/batchAccounts/testAccount/`.
+     *     This is the target Azure resource URI for the List GET operation. If a `{resourceName}` is added after
+     *     `/quotas`, then it's the target Azure resource URI in the GET operation for the specific resource.
+     * @param createQuotaRequest Quota request payload.
+     * @param context The context to associate with this operation.
+     * @throws IllegalArgumentException thrown if parameters fail the validation.
+     * @throws ManagementException thrown if the request is rejected by server.
+     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+     * @return quota limit.
+     */
+    @ServiceMethod(returns = ReturnType.SINGLE)
+    private Mono>> createOrUpdateWithResponseAsync(
+        String resourceName, String scope, CurrentQuotaLimitBaseInner createQuotaRequest, Context context) {
+        if (this.client.getEndpoint() == null) {
+            return Mono
+                .error(
+                    new IllegalArgumentException(
+                        "Parameter this.client.getEndpoint() is required and cannot be null."));
+        }
+        if (resourceName == null) {
+            return Mono.error(new IllegalArgumentException("Parameter resourceName is required and cannot be null."));
+        }
+        if (scope == null) {
+            return Mono.error(new IllegalArgumentException("Parameter scope is required and cannot be null."));
+        }
+        if (createQuotaRequest == null) {
+            return Mono
+                .error(new IllegalArgumentException("Parameter createQuotaRequest is required and cannot be null."));
+        } else {
+            createQuotaRequest.validate();
+        }
+        final String accept = "application/json";
+        context = this.client.mergeContext(context);
+        return service
+            .createOrUpdate(
+                this.client.getEndpoint(),
+                resourceName,
+                this.client.getApiVersion(),
+                scope,
+                createQuotaRequest,
+                accept,
+                context);
+    }
+
+    /**
+     * Create or update the quota limit for the specified resource with the requested value. To update the quota, follow
+     * these steps: 1. Use the GET operation for quotas and usages to determine how much quota remains for the specific
+     * resource and to calculate the new quota limit. These steps are detailed in [this
+     * example](https://techcommunity.microsoft.com/t5/azure-governance-and-management/using-the-new-quota-rest-api/ba-p/2183670).
+     * 2. Use this PUT operation to update the quota limit. Please check the URI in location header for the detailed
+     * status of the request.
+     *
+     * @param resourceName Resource name for a given resource provider. For example: - SKU name for Microsoft.Compute -
+     *     SKU or TotalLowPriorityCores for Microsoft.MachineLearningServices For Microsoft.Network PublicIPAddresses.
+     * @param scope The target Azure resource URI. For example,
+     *     `/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/qms-test/providers/Microsoft.Batch/batchAccounts/testAccount/`.
+     *     This is the target Azure resource URI for the List GET operation. If a `{resourceName}` is added after
+     *     `/quotas`, then it's the target Azure resource URI in the GET operation for the specific resource.
+     * @param createQuotaRequest Quota request payload.
+     * @throws IllegalArgumentException thrown if parameters fail the validation.
+     * @throws ManagementException thrown if the request is rejected by server.
+     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+     * @return quota limit.
+     */
+    @ServiceMethod(returns = ReturnType.SINGLE)
+    private PollerFlux, CurrentQuotaLimitBaseInner> beginCreateOrUpdateAsync(
+        String resourceName, String scope, CurrentQuotaLimitBaseInner createQuotaRequest) {
+        Mono>> mono =
+            createOrUpdateWithResponseAsync(resourceName, scope, createQuotaRequest);
+        return this
+            .client
+            .getLroResult(
+                mono,
+                this.client.getHttpPipeline(),
+                CurrentQuotaLimitBaseInner.class,
+                CurrentQuotaLimitBaseInner.class,
+                Context.NONE);
+    }
+
+    /**
+     * Create or update the quota limit for the specified resource with the requested value. To update the quota, follow
+     * these steps: 1. Use the GET operation for quotas and usages to determine how much quota remains for the specific
+     * resource and to calculate the new quota limit. These steps are detailed in [this
+     * example](https://techcommunity.microsoft.com/t5/azure-governance-and-management/using-the-new-quota-rest-api/ba-p/2183670).
+     * 2. Use this PUT operation to update the quota limit. Please check the URI in location header for the detailed
+     * status of the request.
+     *
+     * @param resourceName Resource name for a given resource provider. For example: - SKU name for Microsoft.Compute -
+     *     SKU or TotalLowPriorityCores for Microsoft.MachineLearningServices For Microsoft.Network PublicIPAddresses.
+     * @param scope The target Azure resource URI. For example,
+     *     `/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/qms-test/providers/Microsoft.Batch/batchAccounts/testAccount/`.
+     *     This is the target Azure resource URI for the List GET operation. If a `{resourceName}` is added after
+     *     `/quotas`, then it's the target Azure resource URI in the GET operation for the specific resource.
+     * @param createQuotaRequest Quota request payload.
+     * @param context The context to associate with this operation.
+     * @throws IllegalArgumentException thrown if parameters fail the validation.
+     * @throws ManagementException thrown if the request is rejected by server.
+     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+     * @return quota limit.
+     */
+    @ServiceMethod(returns = ReturnType.SINGLE)
+    private PollerFlux, CurrentQuotaLimitBaseInner> beginCreateOrUpdateAsync(
+        String resourceName, String scope, CurrentQuotaLimitBaseInner createQuotaRequest, Context context) {
+        context = this.client.mergeContext(context);
+        Mono>> mono =
+            createOrUpdateWithResponseAsync(resourceName, scope, createQuotaRequest, context);
+        return this
+            .client
+            .getLroResult(
+                mono,
+                this.client.getHttpPipeline(),
+                CurrentQuotaLimitBaseInner.class,
+                CurrentQuotaLimitBaseInner.class,
+                context);
+    }
+
+    /**
+     * Create or update the quota limit for the specified resource with the requested value. To update the quota, follow
+     * these steps: 1. Use the GET operation for quotas and usages to determine how much quota remains for the specific
+     * resource and to calculate the new quota limit. These steps are detailed in [this
+     * example](https://techcommunity.microsoft.com/t5/azure-governance-and-management/using-the-new-quota-rest-api/ba-p/2183670).
+     * 2. Use this PUT operation to update the quota limit. Please check the URI in location header for the detailed
+     * status of the request.
+     *
+     * @param resourceName Resource name for a given resource provider. For example: - SKU name for Microsoft.Compute -
+     *     SKU or TotalLowPriorityCores for Microsoft.MachineLearningServices For Microsoft.Network PublicIPAddresses.
+     * @param scope The target Azure resource URI. For example,
+     *     `/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/qms-test/providers/Microsoft.Batch/batchAccounts/testAccount/`.
+     *     This is the target Azure resource URI for the List GET operation. If a `{resourceName}` is added after
+     *     `/quotas`, then it's the target Azure resource URI in the GET operation for the specific resource.
+     * @param createQuotaRequest Quota request payload.
+     * @throws IllegalArgumentException thrown if parameters fail the validation.
+     * @throws ManagementException thrown if the request is rejected by server.
+     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+     * @return quota limit.
+     */
+    @ServiceMethod(returns = ReturnType.SINGLE)
+    public SyncPoller, CurrentQuotaLimitBaseInner> beginCreateOrUpdate(
+        String resourceName, String scope, CurrentQuotaLimitBaseInner createQuotaRequest) {
+        return beginCreateOrUpdateAsync(resourceName, scope, createQuotaRequest).getSyncPoller();
+    }
+
+    /**
+     * Create or update the quota limit for the specified resource with the requested value. To update the quota, follow
+     * these steps: 1. Use the GET operation for quotas and usages to determine how much quota remains for the specific
+     * resource and to calculate the new quota limit. These steps are detailed in [this
+     * example](https://techcommunity.microsoft.com/t5/azure-governance-and-management/using-the-new-quota-rest-api/ba-p/2183670).
+     * 2. Use this PUT operation to update the quota limit. Please check the URI in location header for the detailed
+     * status of the request.
+     *
+     * @param resourceName Resource name for a given resource provider. For example: - SKU name for Microsoft.Compute -
+     *     SKU or TotalLowPriorityCores for Microsoft.MachineLearningServices For Microsoft.Network PublicIPAddresses.
+     * @param scope The target Azure resource URI. For example,
+     *     `/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/qms-test/providers/Microsoft.Batch/batchAccounts/testAccount/`.
+     *     This is the target Azure resource URI for the List GET operation. If a `{resourceName}` is added after
+     *     `/quotas`, then it's the target Azure resource URI in the GET operation for the specific resource.
+     * @param createQuotaRequest Quota request payload.
+     * @param context The context to associate with this operation.
+     * @throws IllegalArgumentException thrown if parameters fail the validation.
+     * @throws ManagementException thrown if the request is rejected by server.
+     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+     * @return quota limit.
+     */
+    @ServiceMethod(returns = ReturnType.SINGLE)
+    public SyncPoller, CurrentQuotaLimitBaseInner> beginCreateOrUpdate(
+        String resourceName, String scope, CurrentQuotaLimitBaseInner createQuotaRequest, Context context) {
+        return beginCreateOrUpdateAsync(resourceName, scope, createQuotaRequest, context).getSyncPoller();
+    }
+
+    /**
+     * Create or update the quota limit for the specified resource with the requested value. To update the quota, follow
+     * these steps: 1. Use the GET operation for quotas and usages to determine how much quota remains for the specific
+     * resource and to calculate the new quota limit. These steps are detailed in [this
+     * example](https://techcommunity.microsoft.com/t5/azure-governance-and-management/using-the-new-quota-rest-api/ba-p/2183670).
+     * 2. Use this PUT operation to update the quota limit. Please check the URI in location header for the detailed
+     * status of the request.
+     *
+     * @param resourceName Resource name for a given resource provider. For example: - SKU name for Microsoft.Compute -
+     *     SKU or TotalLowPriorityCores for Microsoft.MachineLearningServices For Microsoft.Network PublicIPAddresses.
+     * @param scope The target Azure resource URI. For example,
+     *     `/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/qms-test/providers/Microsoft.Batch/batchAccounts/testAccount/`.
+     *     This is the target Azure resource URI for the List GET operation. If a `{resourceName}` is added after
+     *     `/quotas`, then it's the target Azure resource URI in the GET operation for the specific resource.
+     * @param createQuotaRequest Quota request payload.
+     * @throws IllegalArgumentException thrown if parameters fail the validation.
+     * @throws ManagementException thrown if the request is rejected by server.
+     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+     * @return quota limit.
+     */
+    @ServiceMethod(returns = ReturnType.SINGLE)
+    private Mono createOrUpdateAsync(
+        String resourceName, String scope, CurrentQuotaLimitBaseInner createQuotaRequest) {
+        return beginCreateOrUpdateAsync(resourceName, scope, createQuotaRequest)
+            .last()
+            .flatMap(this.client::getLroFinalResultOrError);
+    }
+
+    /**
+     * Create or update the quota limit for the specified resource with the requested value. To update the quota, follow
+     * these steps: 1. Use the GET operation for quotas and usages to determine how much quota remains for the specific
+     * resource and to calculate the new quota limit. These steps are detailed in [this
+     * example](https://techcommunity.microsoft.com/t5/azure-governance-and-management/using-the-new-quota-rest-api/ba-p/2183670).
+     * 2. Use this PUT operation to update the quota limit. Please check the URI in location header for the detailed
+     * status of the request.
+     *
+     * @param resourceName Resource name for a given resource provider. For example: - SKU name for Microsoft.Compute -
+     *     SKU or TotalLowPriorityCores for Microsoft.MachineLearningServices For Microsoft.Network PublicIPAddresses.
+     * @param scope The target Azure resource URI. For example,
+     *     `/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/qms-test/providers/Microsoft.Batch/batchAccounts/testAccount/`.
+     *     This is the target Azure resource URI for the List GET operation. If a `{resourceName}` is added after
+     *     `/quotas`, then it's the target Azure resource URI in the GET operation for the specific resource.
+     * @param createQuotaRequest Quota request payload.
+     * @param context The context to associate with this operation.
+     * @throws IllegalArgumentException thrown if parameters fail the validation.
+     * @throws ManagementException thrown if the request is rejected by server.
+     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+     * @return quota limit.
+     */
+    @ServiceMethod(returns = ReturnType.SINGLE)
+    private Mono createOrUpdateAsync(
+        String resourceName, String scope, CurrentQuotaLimitBaseInner createQuotaRequest, Context context) {
+        return beginCreateOrUpdateAsync(resourceName, scope, createQuotaRequest, context)
+            .last()
+            .flatMap(this.client::getLroFinalResultOrError);
+    }
+
+    /**
+     * Create or update the quota limit for the specified resource with the requested value. To update the quota, follow
+     * these steps: 1. Use the GET operation for quotas and usages to determine how much quota remains for the specific
+     * resource and to calculate the new quota limit. These steps are detailed in [this
+     * example](https://techcommunity.microsoft.com/t5/azure-governance-and-management/using-the-new-quota-rest-api/ba-p/2183670).
+     * 2. Use this PUT operation to update the quota limit. Please check the URI in location header for the detailed
+     * status of the request.
+     *
+     * @param resourceName Resource name for a given resource provider. For example: - SKU name for Microsoft.Compute -
+     *     SKU or TotalLowPriorityCores for Microsoft.MachineLearningServices For Microsoft.Network PublicIPAddresses.
+     * @param scope The target Azure resource URI. For example,
+     *     `/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/qms-test/providers/Microsoft.Batch/batchAccounts/testAccount/`.
+     *     This is the target Azure resource URI for the List GET operation. If a `{resourceName}` is added after
+     *     `/quotas`, then it's the target Azure resource URI in the GET operation for the specific resource.
+     * @param createQuotaRequest Quota request payload.
+     * @throws IllegalArgumentException thrown if parameters fail the validation.
+     * @throws ManagementException thrown if the request is rejected by server.
+     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+     * @return quota limit.
+     */
+    @ServiceMethod(returns = ReturnType.SINGLE)
+    public CurrentQuotaLimitBaseInner createOrUpdate(
+        String resourceName, String scope, CurrentQuotaLimitBaseInner createQuotaRequest) {
+        return createOrUpdateAsync(resourceName, scope, createQuotaRequest).block();
+    }
+
+    /**
+     * Create or update the quota limit for the specified resource with the requested value. To update the quota, follow
+     * these steps: 1. Use the GET operation for quotas and usages to determine how much quota remains for the specific
+     * resource and to calculate the new quota limit. These steps are detailed in [this
+     * example](https://techcommunity.microsoft.com/t5/azure-governance-and-management/using-the-new-quota-rest-api/ba-p/2183670).
+     * 2. Use this PUT operation to update the quota limit. Please check the URI in location header for the detailed
+     * status of the request.
+     *
+     * @param resourceName Resource name for a given resource provider. For example: - SKU name for Microsoft.Compute -
+     *     SKU or TotalLowPriorityCores for Microsoft.MachineLearningServices For Microsoft.Network PublicIPAddresses.
+     * @param scope The target Azure resource URI. For example,
+     *     `/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/qms-test/providers/Microsoft.Batch/batchAccounts/testAccount/`.
+     *     This is the target Azure resource URI for the List GET operation. If a `{resourceName}` is added after
+     *     `/quotas`, then it's the target Azure resource URI in the GET operation for the specific resource.
+     * @param createQuotaRequest Quota request payload.
+     * @param context The context to associate with this operation.
+     * @throws IllegalArgumentException thrown if parameters fail the validation.
+     * @throws ManagementException thrown if the request is rejected by server.
+     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+     * @return quota limit.
+     */
+    @ServiceMethod(returns = ReturnType.SINGLE)
+    public CurrentQuotaLimitBaseInner createOrUpdate(
+        String resourceName, String scope, CurrentQuotaLimitBaseInner createQuotaRequest, Context context) {
+        return createOrUpdateAsync(resourceName, scope, createQuotaRequest, context).block();
+    }
+
+    /**
+     * Update the quota limit for a specific resource to the specified value: 1. Use the Usages-GET and Quota-GET
+     * operations to determine the remaining quota for the specific resource and to calculate the new quota limit. These
+     * steps are detailed in [this
+     * example](https://techcommunity.microsoft.com/t5/azure-governance-and-management/using-the-new-quota-rest-api/ba-p/2183670).
+     * 2. Use this PUT operation to update the quota limit. Please check the URI in location header for the detailed
+     * status of the request.
+     *
+     * @param resourceName Resource name for a given resource provider. For example: - SKU name for Microsoft.Compute -
+     *     SKU or TotalLowPriorityCores for Microsoft.MachineLearningServices For Microsoft.Network PublicIPAddresses.
+     * @param scope The target Azure resource URI. For example,
+     *     `/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/qms-test/providers/Microsoft.Batch/batchAccounts/testAccount/`.
+     *     This is the target Azure resource URI for the List GET operation. If a `{resourceName}` is added after
+     *     `/quotas`, then it's the target Azure resource URI in the GET operation for the specific resource.
+     * @param createQuotaRequest Quota requests payload.
+     * @throws IllegalArgumentException thrown if parameters fail the validation.
+     * @throws ManagementException thrown if the request is rejected by server.
+     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+     * @return quota limit.
+     */
+    @ServiceMethod(returns = ReturnType.SINGLE)
+    private Mono>> updateWithResponseAsync(
+        String resourceName, String scope, CurrentQuotaLimitBaseInner createQuotaRequest) {
+        if (this.client.getEndpoint() == null) {
+            return Mono
+                .error(
+                    new IllegalArgumentException(
+                        "Parameter this.client.getEndpoint() is required and cannot be null."));
+        }
+        if (resourceName == null) {
+            return Mono.error(new IllegalArgumentException("Parameter resourceName is required and cannot be null."));
+        }
+        if (scope == null) {
+            return Mono.error(new IllegalArgumentException("Parameter scope is required and cannot be null."));
+        }
+        if (createQuotaRequest == null) {
+            return Mono
+                .error(new IllegalArgumentException("Parameter createQuotaRequest is required and cannot be null."));
+        } else {
+            createQuotaRequest.validate();
+        }
+        final String accept = "application/json";
+        return FluxUtil
+            .withContext(
+                context ->
+                    service
+                        .update(
+                            this.client.getEndpoint(),
+                            resourceName,
+                            this.client.getApiVersion(),
+                            scope,
+                            createQuotaRequest,
+                            accept,
+                            context))
+            .contextWrite(context -> context.putAll(FluxUtil.toReactorContext(this.client.getContext()).readOnly()));
+    }
+
+    /**
+     * Update the quota limit for a specific resource to the specified value: 1. Use the Usages-GET and Quota-GET
+     * operations to determine the remaining quota for the specific resource and to calculate the new quota limit. These
+     * steps are detailed in [this
+     * example](https://techcommunity.microsoft.com/t5/azure-governance-and-management/using-the-new-quota-rest-api/ba-p/2183670).
+     * 2. Use this PUT operation to update the quota limit. Please check the URI in location header for the detailed
+     * status of the request.
+     *
+     * @param resourceName Resource name for a given resource provider. For example: - SKU name for Microsoft.Compute -
+     *     SKU or TotalLowPriorityCores for Microsoft.MachineLearningServices For Microsoft.Network PublicIPAddresses.
+     * @param scope The target Azure resource URI. For example,
+     *     `/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/qms-test/providers/Microsoft.Batch/batchAccounts/testAccount/`.
+     *     This is the target Azure resource URI for the List GET operation. If a `{resourceName}` is added after
+     *     `/quotas`, then it's the target Azure resource URI in the GET operation for the specific resource.
+     * @param createQuotaRequest Quota requests payload.
+     * @param context The context to associate with this operation.
+     * @throws IllegalArgumentException thrown if parameters fail the validation.
+     * @throws ManagementException thrown if the request is rejected by server.
+     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+     * @return quota limit.
+     */
+    @ServiceMethod(returns = ReturnType.SINGLE)
+    private Mono>> updateWithResponseAsync(
+        String resourceName, String scope, CurrentQuotaLimitBaseInner createQuotaRequest, Context context) {
+        if (this.client.getEndpoint() == null) {
+            return Mono
+                .error(
+                    new IllegalArgumentException(
+                        "Parameter this.client.getEndpoint() is required and cannot be null."));
+        }
+        if (resourceName == null) {
+            return Mono.error(new IllegalArgumentException("Parameter resourceName is required and cannot be null."));
+        }
+        if (scope == null) {
+            return Mono.error(new IllegalArgumentException("Parameter scope is required and cannot be null."));
+        }
+        if (createQuotaRequest == null) {
+            return Mono
+                .error(new IllegalArgumentException("Parameter createQuotaRequest is required and cannot be null."));
+        } else {
+            createQuotaRequest.validate();
+        }
+        final String accept = "application/json";
+        context = this.client.mergeContext(context);
+        return service
+            .update(
+                this.client.getEndpoint(),
+                resourceName,
+                this.client.getApiVersion(),
+                scope,
+                createQuotaRequest,
+                accept,
+                context);
+    }
+
+    /**
+     * Update the quota limit for a specific resource to the specified value: 1. Use the Usages-GET and Quota-GET
+     * operations to determine the remaining quota for the specific resource and to calculate the new quota limit. These
+     * steps are detailed in [this
+     * example](https://techcommunity.microsoft.com/t5/azure-governance-and-management/using-the-new-quota-rest-api/ba-p/2183670).
+     * 2. Use this PUT operation to update the quota limit. Please check the URI in location header for the detailed
+     * status of the request.
+     *
+     * @param resourceName Resource name for a given resource provider. For example: - SKU name for Microsoft.Compute -
+     *     SKU or TotalLowPriorityCores for Microsoft.MachineLearningServices For Microsoft.Network PublicIPAddresses.
+     * @param scope The target Azure resource URI. For example,
+     *     `/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/qms-test/providers/Microsoft.Batch/batchAccounts/testAccount/`.
+     *     This is the target Azure resource URI for the List GET operation. If a `{resourceName}` is added after
+     *     `/quotas`, then it's the target Azure resource URI in the GET operation for the specific resource.
+     * @param createQuotaRequest Quota requests payload.
+     * @throws IllegalArgumentException thrown if parameters fail the validation.
+     * @throws ManagementException thrown if the request is rejected by server.
+     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+     * @return quota limit.
+     */
+    @ServiceMethod(returns = ReturnType.SINGLE)
+    private PollerFlux, CurrentQuotaLimitBaseInner> beginUpdateAsync(
+        String resourceName, String scope, CurrentQuotaLimitBaseInner createQuotaRequest) {
+        Mono>> mono = updateWithResponseAsync(resourceName, scope, createQuotaRequest);
+        return this
+            .client
+            .getLroResult(
+                mono,
+                this.client.getHttpPipeline(),
+                CurrentQuotaLimitBaseInner.class,
+                CurrentQuotaLimitBaseInner.class,
+                Context.NONE);
+    }
+
+    /**
+     * Update the quota limit for a specific resource to the specified value: 1. Use the Usages-GET and Quota-GET
+     * operations to determine the remaining quota for the specific resource and to calculate the new quota limit. These
+     * steps are detailed in [this
+     * example](https://techcommunity.microsoft.com/t5/azure-governance-and-management/using-the-new-quota-rest-api/ba-p/2183670).
+     * 2. Use this PUT operation to update the quota limit. Please check the URI in location header for the detailed
+     * status of the request.
+     *
+     * @param resourceName Resource name for a given resource provider. For example: - SKU name for Microsoft.Compute -
+     *     SKU or TotalLowPriorityCores for Microsoft.MachineLearningServices For Microsoft.Network PublicIPAddresses.
+     * @param scope The target Azure resource URI. For example,
+     *     `/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/qms-test/providers/Microsoft.Batch/batchAccounts/testAccount/`.
+     *     This is the target Azure resource URI for the List GET operation. If a `{resourceName}` is added after
+     *     `/quotas`, then it's the target Azure resource URI in the GET operation for the specific resource.
+     * @param createQuotaRequest Quota requests payload.
+     * @param context The context to associate with this operation.
+     * @throws IllegalArgumentException thrown if parameters fail the validation.
+     * @throws ManagementException thrown if the request is rejected by server.
+     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+     * @return quota limit.
+     */
+    @ServiceMethod(returns = ReturnType.SINGLE)
+    private PollerFlux, CurrentQuotaLimitBaseInner> beginUpdateAsync(
+        String resourceName, String scope, CurrentQuotaLimitBaseInner createQuotaRequest, Context context) {
+        context = this.client.mergeContext(context);
+        Mono>> mono =
+            updateWithResponseAsync(resourceName, scope, createQuotaRequest, context);
+        return this
+            .client
+            .getLroResult(
+                mono,
+                this.client.getHttpPipeline(),
+                CurrentQuotaLimitBaseInner.class,
+                CurrentQuotaLimitBaseInner.class,
+                context);
+    }
+
+    /**
+     * Update the quota limit for a specific resource to the specified value: 1. Use the Usages-GET and Quota-GET
+     * operations to determine the remaining quota for the specific resource and to calculate the new quota limit. These
+     * steps are detailed in [this
+     * example](https://techcommunity.microsoft.com/t5/azure-governance-and-management/using-the-new-quota-rest-api/ba-p/2183670).
+     * 2. Use this PUT operation to update the quota limit. Please check the URI in location header for the detailed
+     * status of the request.
+     *
+     * @param resourceName Resource name for a given resource provider. For example: - SKU name for Microsoft.Compute -
+     *     SKU or TotalLowPriorityCores for Microsoft.MachineLearningServices For Microsoft.Network PublicIPAddresses.
+     * @param scope The target Azure resource URI. For example,
+     *     `/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/qms-test/providers/Microsoft.Batch/batchAccounts/testAccount/`.
+     *     This is the target Azure resource URI for the List GET operation. If a `{resourceName}` is added after
+     *     `/quotas`, then it's the target Azure resource URI in the GET operation for the specific resource.
+     * @param createQuotaRequest Quota requests payload.
+     * @throws IllegalArgumentException thrown if parameters fail the validation.
+     * @throws ManagementException thrown if the request is rejected by server.
+     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+     * @return quota limit.
+     */
+    @ServiceMethod(returns = ReturnType.SINGLE)
+    public SyncPoller, CurrentQuotaLimitBaseInner> beginUpdate(
+        String resourceName, String scope, CurrentQuotaLimitBaseInner createQuotaRequest) {
+        return beginUpdateAsync(resourceName, scope, createQuotaRequest).getSyncPoller();
+    }
+
+    /**
+     * Update the quota limit for a specific resource to the specified value: 1. Use the Usages-GET and Quota-GET
+     * operations to determine the remaining quota for the specific resource and to calculate the new quota limit. These
+     * steps are detailed in [this
+     * example](https://techcommunity.microsoft.com/t5/azure-governance-and-management/using-the-new-quota-rest-api/ba-p/2183670).
+     * 2. Use this PUT operation to update the quota limit. Please check the URI in location header for the detailed
+     * status of the request.
+     *
+     * @param resourceName Resource name for a given resource provider. For example: - SKU name for Microsoft.Compute -
+     *     SKU or TotalLowPriorityCores for Microsoft.MachineLearningServices For Microsoft.Network PublicIPAddresses.
+     * @param scope The target Azure resource URI. For example,
+     *     `/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/qms-test/providers/Microsoft.Batch/batchAccounts/testAccount/`.
+     *     This is the target Azure resource URI for the List GET operation. If a `{resourceName}` is added after
+     *     `/quotas`, then it's the target Azure resource URI in the GET operation for the specific resource.
+     * @param createQuotaRequest Quota requests payload.
+     * @param context The context to associate with this operation.
+     * @throws IllegalArgumentException thrown if parameters fail the validation.
+     * @throws ManagementException thrown if the request is rejected by server.
+     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+     * @return quota limit.
+     */
+    @ServiceMethod(returns = ReturnType.SINGLE)
+    public SyncPoller, CurrentQuotaLimitBaseInner> beginUpdate(
+        String resourceName, String scope, CurrentQuotaLimitBaseInner createQuotaRequest, Context context) {
+        return beginUpdateAsync(resourceName, scope, createQuotaRequest, context).getSyncPoller();
+    }
+
+    /**
+     * Update the quota limit for a specific resource to the specified value: 1. Use the Usages-GET and Quota-GET
+     * operations to determine the remaining quota for the specific resource and to calculate the new quota limit. These
+     * steps are detailed in [this
+     * example](https://techcommunity.microsoft.com/t5/azure-governance-and-management/using-the-new-quota-rest-api/ba-p/2183670).
+     * 2. Use this PUT operation to update the quota limit. Please check the URI in location header for the detailed
+     * status of the request.
+     *
+     * @param resourceName Resource name for a given resource provider. For example: - SKU name for Microsoft.Compute -
+     *     SKU or TotalLowPriorityCores for Microsoft.MachineLearningServices For Microsoft.Network PublicIPAddresses.
+     * @param scope The target Azure resource URI. For example,
+     *     `/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/qms-test/providers/Microsoft.Batch/batchAccounts/testAccount/`.
+     *     This is the target Azure resource URI for the List GET operation. If a `{resourceName}` is added after
+     *     `/quotas`, then it's the target Azure resource URI in the GET operation for the specific resource.
+     * @param createQuotaRequest Quota requests payload.
+     * @throws IllegalArgumentException thrown if parameters fail the validation.
+     * @throws ManagementException thrown if the request is rejected by server.
+     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+     * @return quota limit.
+     */
+    @ServiceMethod(returns = ReturnType.SINGLE)
+    private Mono updateAsync(
+        String resourceName, String scope, CurrentQuotaLimitBaseInner createQuotaRequest) {
+        return beginUpdateAsync(resourceName, scope, createQuotaRequest)
+            .last()
+            .flatMap(this.client::getLroFinalResultOrError);
+    }
+
+    /**
+     * Update the quota limit for a specific resource to the specified value: 1. Use the Usages-GET and Quota-GET
+     * operations to determine the remaining quota for the specific resource and to calculate the new quota limit. These
+     * steps are detailed in [this
+     * example](https://techcommunity.microsoft.com/t5/azure-governance-and-management/using-the-new-quota-rest-api/ba-p/2183670).
+     * 2. Use this PUT operation to update the quota limit. Please check the URI in location header for the detailed
+     * status of the request.
+     *
+     * @param resourceName Resource name for a given resource provider. For example: - SKU name for Microsoft.Compute -
+     *     SKU or TotalLowPriorityCores for Microsoft.MachineLearningServices For Microsoft.Network PublicIPAddresses.
+     * @param scope The target Azure resource URI. For example,
+     *     `/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/qms-test/providers/Microsoft.Batch/batchAccounts/testAccount/`.
+     *     This is the target Azure resource URI for the List GET operation. If a `{resourceName}` is added after
+     *     `/quotas`, then it's the target Azure resource URI in the GET operation for the specific resource.
+     * @param createQuotaRequest Quota requests payload.
+     * @param context The context to associate with this operation.
+     * @throws IllegalArgumentException thrown if parameters fail the validation.
+     * @throws ManagementException thrown if the request is rejected by server.
+     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+     * @return quota limit.
+     */
+    @ServiceMethod(returns = ReturnType.SINGLE)
+    private Mono updateAsync(
+        String resourceName, String scope, CurrentQuotaLimitBaseInner createQuotaRequest, Context context) {
+        return beginUpdateAsync(resourceName, scope, createQuotaRequest, context)
+            .last()
+            .flatMap(this.client::getLroFinalResultOrError);
+    }
+
+    /**
+     * Update the quota limit for a specific resource to the specified value: 1. Use the Usages-GET and Quota-GET
+     * operations to determine the remaining quota for the specific resource and to calculate the new quota limit. These
+     * steps are detailed in [this
+     * example](https://techcommunity.microsoft.com/t5/azure-governance-and-management/using-the-new-quota-rest-api/ba-p/2183670).
+     * 2. Use this PUT operation to update the quota limit. Please check the URI in location header for the detailed
+     * status of the request.
+     *
+     * @param resourceName Resource name for a given resource provider. For example: - SKU name for Microsoft.Compute -
+     *     SKU or TotalLowPriorityCores for Microsoft.MachineLearningServices For Microsoft.Network PublicIPAddresses.
+     * @param scope The target Azure resource URI. For example,
+     *     `/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/qms-test/providers/Microsoft.Batch/batchAccounts/testAccount/`.
+     *     This is the target Azure resource URI for the List GET operation. If a `{resourceName}` is added after
+     *     `/quotas`, then it's the target Azure resource URI in the GET operation for the specific resource.
+     * @param createQuotaRequest Quota requests payload.
+     * @throws IllegalArgumentException thrown if parameters fail the validation.
+     * @throws ManagementException thrown if the request is rejected by server.
+     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+     * @return quota limit.
+     */
+    @ServiceMethod(returns = ReturnType.SINGLE)
+    public CurrentQuotaLimitBaseInner update(
+        String resourceName, String scope, CurrentQuotaLimitBaseInner createQuotaRequest) {
+        return updateAsync(resourceName, scope, createQuotaRequest).block();
+    }
+
+    /**
+     * Update the quota limit for a specific resource to the specified value: 1. Use the Usages-GET and Quota-GET
+     * operations to determine the remaining quota for the specific resource and to calculate the new quota limit. These
+     * steps are detailed in [this
+     * example](https://techcommunity.microsoft.com/t5/azure-governance-and-management/using-the-new-quota-rest-api/ba-p/2183670).
+     * 2. Use this PUT operation to update the quota limit. Please check the URI in location header for the detailed
+     * status of the request.
+     *
+     * @param resourceName Resource name for a given resource provider. For example: - SKU name for Microsoft.Compute -
+     *     SKU or TotalLowPriorityCores for Microsoft.MachineLearningServices For Microsoft.Network PublicIPAddresses.
+     * @param scope The target Azure resource URI. For example,
+     *     `/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/qms-test/providers/Microsoft.Batch/batchAccounts/testAccount/`.
+     *     This is the target Azure resource URI for the List GET operation. If a `{resourceName}` is added after
+     *     `/quotas`, then it's the target Azure resource URI in the GET operation for the specific resource.
+     * @param createQuotaRequest Quota requests payload.
+     * @param context The context to associate with this operation.
+     * @throws IllegalArgumentException thrown if parameters fail the validation.
+     * @throws ManagementException thrown if the request is rejected by server.
+     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+     * @return quota limit.
+     */
+    @ServiceMethod(returns = ReturnType.SINGLE)
+    public CurrentQuotaLimitBaseInner update(
+        String resourceName, String scope, CurrentQuotaLimitBaseInner createQuotaRequest, Context context) {
+        return updateAsync(resourceName, scope, createQuotaRequest, context).block();
+    }
+
+    /**
+     * Get a list of current quota limits of all resources for the specified scope. The response from this GET operation
+     * can be leveraged to submit requests to update a quota.
+     *
+     * @param scope The target Azure resource URI. For example,
+     *     `/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/qms-test/providers/Microsoft.Batch/batchAccounts/testAccount/`.
+     *     This is the target Azure resource URI for the List GET operation. If a `{resourceName}` is added after
+     *     `/quotas`, then it's the target Azure resource URI in the GET operation for the specific resource.
+     * @throws IllegalArgumentException thrown if parameters fail the validation.
+     * @throws ManagementException thrown if the request is rejected by server.
+     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+     * @return a list of current quota limits of all resources for the specified scope.
+     */
+    @ServiceMethod(returns = ReturnType.SINGLE)
+    private Mono> listSinglePageAsync(String scope) {
+        if (this.client.getEndpoint() == null) {
+            return Mono
+                .error(
+                    new IllegalArgumentException(
+                        "Parameter this.client.getEndpoint() is required and cannot be null."));
+        }
+        if (scope == null) {
+            return Mono.error(new IllegalArgumentException("Parameter scope is required and cannot be null."));
+        }
+        final String accept = "application/json";
+        return FluxUtil
+            .withContext(
+                context -> service.list(this.client.getEndpoint(), this.client.getApiVersion(), scope, accept, context))
+            .>map(
+                res ->
+                    new PagedResponseBase<>(
+                        res.getRequest(),
+                        res.getStatusCode(),
+                        res.getHeaders(),
+                        res.getValue().value(),
+                        res.getValue().nextLink(),
+                        res.getDeserializedHeaders()))
+            .contextWrite(context -> context.putAll(FluxUtil.toReactorContext(this.client.getContext()).readOnly()));
+    }
+
+    /**
+     * Get a list of current quota limits of all resources for the specified scope. The response from this GET operation
+     * can be leveraged to submit requests to update a quota.
+     *
+     * @param scope The target Azure resource URI. For example,
+     *     `/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/qms-test/providers/Microsoft.Batch/batchAccounts/testAccount/`.
+     *     This is the target Azure resource URI for the List GET operation. If a `{resourceName}` is added after
+     *     `/quotas`, then it's the target Azure resource URI in the GET operation for the specific resource.
+     * @param context The context to associate with this operation.
+     * @throws IllegalArgumentException thrown if parameters fail the validation.
+     * @throws ManagementException thrown if the request is rejected by server.
+     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+     * @return a list of current quota limits of all resources for the specified scope.
+     */
+    @ServiceMethod(returns = ReturnType.SINGLE)
+    private Mono> listSinglePageAsync(String scope, Context context) {
+        if (this.client.getEndpoint() == null) {
+            return Mono
+                .error(
+                    new IllegalArgumentException(
+                        "Parameter this.client.getEndpoint() is required and cannot be null."));
+        }
+        if (scope == null) {
+            return Mono.error(new IllegalArgumentException("Parameter scope is required and cannot be null."));
+        }
+        final String accept = "application/json";
+        context = this.client.mergeContext(context);
+        return service
+            .list(this.client.getEndpoint(), this.client.getApiVersion(), scope, accept, context)
+            .map(
+                res ->
+                    new PagedResponseBase<>(
+                        res.getRequest(),
+                        res.getStatusCode(),
+                        res.getHeaders(),
+                        res.getValue().value(),
+                        res.getValue().nextLink(),
+                        res.getDeserializedHeaders()));
+    }
+
+    /**
+     * Get a list of current quota limits of all resources for the specified scope. The response from this GET operation
+     * can be leveraged to submit requests to update a quota.
+     *
+     * @param scope The target Azure resource URI. For example,
+     *     `/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/qms-test/providers/Microsoft.Batch/batchAccounts/testAccount/`.
+     *     This is the target Azure resource URI for the List GET operation. If a `{resourceName}` is added after
+     *     `/quotas`, then it's the target Azure resource URI in the GET operation for the specific resource.
+     * @throws IllegalArgumentException thrown if parameters fail the validation.
+     * @throws ManagementException thrown if the request is rejected by server.
+     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+     * @return a list of current quota limits of all resources for the specified scope.
+     */
+    @ServiceMethod(returns = ReturnType.COLLECTION)
+    private PagedFlux listAsync(String scope) {
+        return new PagedFlux<>(() -> listSinglePageAsync(scope), nextLink -> listNextSinglePageAsync(nextLink));
+    }
+
+    /**
+     * Get a list of current quota limits of all resources for the specified scope. The response from this GET operation
+     * can be leveraged to submit requests to update a quota.
+     *
+     * @param scope The target Azure resource URI. For example,
+     *     `/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/qms-test/providers/Microsoft.Batch/batchAccounts/testAccount/`.
+     *     This is the target Azure resource URI for the List GET operation. If a `{resourceName}` is added after
+     *     `/quotas`, then it's the target Azure resource URI in the GET operation for the specific resource.
+     * @param context The context to associate with this operation.
+     * @throws IllegalArgumentException thrown if parameters fail the validation.
+     * @throws ManagementException thrown if the request is rejected by server.
+     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+     * @return a list of current quota limits of all resources for the specified scope.
+     */
+    @ServiceMethod(returns = ReturnType.COLLECTION)
+    private PagedFlux listAsync(String scope, Context context) {
+        return new PagedFlux<>(
+            () -> listSinglePageAsync(scope, context), nextLink -> listNextSinglePageAsync(nextLink, context));
+    }
+
+    /**
+     * Get a list of current quota limits of all resources for the specified scope. The response from this GET operation
+     * can be leveraged to submit requests to update a quota.
+     *
+     * @param scope The target Azure resource URI. For example,
+     *     `/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/qms-test/providers/Microsoft.Batch/batchAccounts/testAccount/`.
+     *     This is the target Azure resource URI for the List GET operation. If a `{resourceName}` is added after
+     *     `/quotas`, then it's the target Azure resource URI in the GET operation for the specific resource.
+     * @throws IllegalArgumentException thrown if parameters fail the validation.
+     * @throws ManagementException thrown if the request is rejected by server.
+     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+     * @return a list of current quota limits of all resources for the specified scope.
+     */
+    @ServiceMethod(returns = ReturnType.COLLECTION)
+    public PagedIterable list(String scope) {
+        return new PagedIterable<>(listAsync(scope));
+    }
+
+    /**
+     * Get a list of current quota limits of all resources for the specified scope. The response from this GET operation
+     * can be leveraged to submit requests to update a quota.
+     *
+     * @param scope The target Azure resource URI. For example,
+     *     `/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/qms-test/providers/Microsoft.Batch/batchAccounts/testAccount/`.
+     *     This is the target Azure resource URI for the List GET operation. If a `{resourceName}` is added after
+     *     `/quotas`, then it's the target Azure resource URI in the GET operation for the specific resource.
+     * @param context The context to associate with this operation.
+     * @throws IllegalArgumentException thrown if parameters fail the validation.
+     * @throws ManagementException thrown if the request is rejected by server.
+     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+     * @return a list of current quota limits of all resources for the specified scope.
+     */
+    @ServiceMethod(returns = ReturnType.COLLECTION)
+    public PagedIterable list(String scope, Context context) {
+        return new PagedIterable<>(listAsync(scope, context));
+    }
+
+    /**
+     * Get the next page of items.
+     *
+     * @param nextLink The nextLink parameter.
+     * @throws IllegalArgumentException thrown if parameters fail the validation.
+     * @throws ManagementException thrown if the request is rejected by server.
+     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+     * @return quota limits.
+     */
+    @ServiceMethod(returns = ReturnType.SINGLE)
+    private Mono> listNextSinglePageAsync(String nextLink) {
+        if (nextLink == null) {
+            return Mono.error(new IllegalArgumentException("Parameter nextLink is required and cannot be null."));
+        }
+        if (this.client.getEndpoint() == null) {
+            return Mono
+                .error(
+                    new IllegalArgumentException(
+                        "Parameter this.client.getEndpoint() is required and cannot be null."));
+        }
+        final String accept = "application/json";
+        return FluxUtil
+            .withContext(context -> service.listNext(nextLink, this.client.getEndpoint(), accept, context))
+            .>map(
+                res ->
+                    new PagedResponseBase<>(
+                        res.getRequest(),
+                        res.getStatusCode(),
+                        res.getHeaders(),
+                        res.getValue().value(),
+                        res.getValue().nextLink(),
+                        res.getDeserializedHeaders()))
+            .contextWrite(context -> context.putAll(FluxUtil.toReactorContext(this.client.getContext()).readOnly()));
+    }
+
+    /**
+     * Get the next page of items.
+     *
+     * @param nextLink The nextLink parameter.
+     * @param context The context to associate with this operation.
+     * @throws IllegalArgumentException thrown if parameters fail the validation.
+     * @throws ManagementException thrown if the request is rejected by server.
+     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+     * @return quota limits.
+     */
+    @ServiceMethod(returns = ReturnType.SINGLE)
+    private Mono> listNextSinglePageAsync(String nextLink, Context context) {
+        if (nextLink == null) {
+            return Mono.error(new IllegalArgumentException("Parameter nextLink is required and cannot be null."));
+        }
+        if (this.client.getEndpoint() == null) {
+            return Mono
+                .error(
+                    new IllegalArgumentException(
+                        "Parameter this.client.getEndpoint() is required and cannot be null."));
+        }
+        final String accept = "application/json";
+        context = this.client.mergeContext(context);
+        return service
+            .listNext(nextLink, this.client.getEndpoint(), accept, context)
+            .map(
+                res ->
+                    new PagedResponseBase<>(
+                        res.getRequest(),
+                        res.getStatusCode(),
+                        res.getHeaders(),
+                        res.getValue().value(),
+                        res.getValue().nextLink(),
+                        res.getDeserializedHeaders()));
+    }
+}
diff --git a/sdk/quota/azure-resourcemanager-quota/src/main/java/com/azure/resourcemanager/quota/implementation/QuotasImpl.java b/sdk/quota/azure-resourcemanager-quota/src/main/java/com/azure/resourcemanager/quota/implementation/QuotasImpl.java
new file mode 100644
index 000000000000..9eeeaeebd3c7
--- /dev/null
+++ b/sdk/quota/azure-resourcemanager-quota/src/main/java/com/azure/resourcemanager/quota/implementation/QuotasImpl.java
@@ -0,0 +1,120 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.quota.implementation;
+
+import com.azure.core.http.rest.PagedIterable;
+import com.azure.core.http.rest.Response;
+import com.azure.core.http.rest.SimpleResponse;
+import com.azure.core.util.Context;
+import com.azure.core.util.logging.ClientLogger;
+import com.azure.resourcemanager.quota.fluent.QuotasClient;
+import com.azure.resourcemanager.quota.fluent.models.CurrentQuotaLimitBaseInner;
+import com.azure.resourcemanager.quota.models.CurrentQuotaLimitBase;
+import com.azure.resourcemanager.quota.models.Quotas;
+import com.azure.resourcemanager.quota.models.QuotasGetResponse;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+
+public final class QuotasImpl implements Quotas {
+    @JsonIgnore private final ClientLogger logger = new ClientLogger(QuotasImpl.class);
+
+    private final QuotasClient innerClient;
+
+    private final com.azure.resourcemanager.quota.QuotaManager serviceManager;
+
+    public QuotasImpl(QuotasClient innerClient, com.azure.resourcemanager.quota.QuotaManager serviceManager) {
+        this.innerClient = innerClient;
+        this.serviceManager = serviceManager;
+    }
+
+    public CurrentQuotaLimitBase get(String resourceName, String scope) {
+        CurrentQuotaLimitBaseInner inner = this.serviceClient().get(resourceName, scope);
+        if (inner != null) {
+            return new CurrentQuotaLimitBaseImpl(inner, this.manager());
+        } else {
+            return null;
+        }
+    }
+
+    public Response getWithResponse(String resourceName, String scope, Context context) {
+        QuotasGetResponse inner = this.serviceClient().getWithResponse(resourceName, scope, context);
+        if (inner != null) {
+            return new SimpleResponse<>(
+                inner.getRequest(),
+                inner.getStatusCode(),
+                inner.getHeaders(),
+                new CurrentQuotaLimitBaseImpl(inner.getValue(), this.manager()));
+        } else {
+            return null;
+        }
+    }
+
+    public PagedIterable list(String scope) {
+        PagedIterable inner = this.serviceClient().list(scope);
+        return Utils.mapPage(inner, inner1 -> new CurrentQuotaLimitBaseImpl(inner1, this.manager()));
+    }
+
+    public PagedIterable list(String scope, Context context) {
+        PagedIterable inner = this.serviceClient().list(scope, context);
+        return Utils.mapPage(inner, inner1 -> new CurrentQuotaLimitBaseImpl(inner1, this.manager()));
+    }
+
+    public CurrentQuotaLimitBase getById(String id) {
+        String resourceName =
+            Utils
+                .getValueFromIdByParameterName(
+                    id, "/{scope}/providers/Microsoft.Quota/quotas/{resourceName}", "resourceName");
+        if (resourceName == null) {
+            throw logger
+                .logExceptionAsError(
+                    new IllegalArgumentException(
+                        String.format("The resource ID '%s' is not valid. Missing path segment 'quotas'.", id)));
+        }
+        String scope =
+            Utils
+                .getValueFromIdByParameterName(id, "/{scope}/providers/Microsoft.Quota/quotas/{resourceName}", "scope");
+        if (scope == null) {
+            throw logger
+                .logExceptionAsError(
+                    new IllegalArgumentException(
+                        String.format("The resource ID '%s' is not valid. Missing path segment 'scope'.", id)));
+        }
+        return this.getWithResponse(resourceName, scope, Context.NONE).getValue();
+    }
+
+    public Response getByIdWithResponse(String id, Context context) {
+        String resourceName =
+            Utils
+                .getValueFromIdByParameterName(
+                    id, "/{scope}/providers/Microsoft.Quota/quotas/{resourceName}", "resourceName");
+        if (resourceName == null) {
+            throw logger
+                .logExceptionAsError(
+                    new IllegalArgumentException(
+                        String.format("The resource ID '%s' is not valid. Missing path segment 'quotas'.", id)));
+        }
+        String scope =
+            Utils
+                .getValueFromIdByParameterName(id, "/{scope}/providers/Microsoft.Quota/quotas/{resourceName}", "scope");
+        if (scope == null) {
+            throw logger
+                .logExceptionAsError(
+                    new IllegalArgumentException(
+                        String.format("The resource ID '%s' is not valid. Missing path segment 'scope'.", id)));
+        }
+        return this.getWithResponse(resourceName, scope, context);
+    }
+
+    private QuotasClient serviceClient() {
+        return this.innerClient;
+    }
+
+    private com.azure.resourcemanager.quota.QuotaManager manager() {
+        return this.serviceManager;
+    }
+
+    public CurrentQuotaLimitBaseImpl define(String name) {
+        return new CurrentQuotaLimitBaseImpl(name, this.manager());
+    }
+}
diff --git a/sdk/quota/azure-resourcemanager-quota/src/main/java/com/azure/resourcemanager/quota/implementation/UsagesClientImpl.java b/sdk/quota/azure-resourcemanager-quota/src/main/java/com/azure/resourcemanager/quota/implementation/UsagesClientImpl.java
new file mode 100644
index 000000000000..08061c51e22b
--- /dev/null
+++ b/sdk/quota/azure-resourcemanager-quota/src/main/java/com/azure/resourcemanager/quota/implementation/UsagesClientImpl.java
@@ -0,0 +1,459 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.quota.implementation;
+
+import com.azure.core.annotation.ExpectedResponses;
+import com.azure.core.annotation.Get;
+import com.azure.core.annotation.HeaderParam;
+import com.azure.core.annotation.Headers;
+import com.azure.core.annotation.Host;
+import com.azure.core.annotation.HostParam;
+import com.azure.core.annotation.PathParam;
+import com.azure.core.annotation.QueryParam;
+import com.azure.core.annotation.ReturnType;
+import com.azure.core.annotation.ServiceInterface;
+import com.azure.core.annotation.ServiceMethod;
+import com.azure.core.annotation.UnexpectedResponseExceptionType;
+import com.azure.core.http.rest.PagedFlux;
+import com.azure.core.http.rest.PagedIterable;
+import com.azure.core.http.rest.PagedResponse;
+import com.azure.core.http.rest.PagedResponseBase;
+import com.azure.core.http.rest.RestProxy;
+import com.azure.core.management.exception.ManagementException;
+import com.azure.core.util.Context;
+import com.azure.core.util.FluxUtil;
+import com.azure.core.util.logging.ClientLogger;
+import com.azure.resourcemanager.quota.fluent.UsagesClient;
+import com.azure.resourcemanager.quota.fluent.models.CurrentUsagesBaseInner;
+import com.azure.resourcemanager.quota.models.UsagesGetResponse;
+import com.azure.resourcemanager.quota.models.UsagesListNextResponse;
+import com.azure.resourcemanager.quota.models.UsagesListResponse;
+import reactor.core.publisher.Mono;
+
+/** An instance of this class provides access to all the operations defined in UsagesClient. */
+public final class UsagesClientImpl implements UsagesClient {
+    private final ClientLogger logger = new ClientLogger(UsagesClientImpl.class);
+
+    /** The proxy service used to perform REST calls. */
+    private final UsagesService service;
+
+    /** The service client containing this operation class. */
+    private final AzureQuotaExtensionApiImpl client;
+
+    /**
+     * Initializes an instance of UsagesClientImpl.
+     *
+     * @param client the instance of the service client containing this operation class.
+     */
+    UsagesClientImpl(AzureQuotaExtensionApiImpl client) {
+        this.service = RestProxy.create(UsagesService.class, client.getHttpPipeline(), client.getSerializerAdapter());
+        this.client = client;
+    }
+
+    /**
+     * The interface defining all the services for AzureQuotaExtensionApiUsages to be used by the proxy service to
+     * perform REST calls.
+     */
+    @Host("{$host}")
+    @ServiceInterface(name = "AzureQuotaExtensionA")
+    private interface UsagesService {
+        @Headers({"Content-Type: application/json"})
+        @Get("/{scope}/providers/Microsoft.Quota/usages/{resourceName}")
+        @ExpectedResponses({200})
+        @UnexpectedResponseExceptionType(ManagementException.class)
+        Mono get(
+            @HostParam("$host") String endpoint,
+            @PathParam("resourceName") String resourceName,
+            @QueryParam("api-version") String apiVersion,
+            @PathParam(value = "scope", encoded = true) String scope,
+            @HeaderParam("Accept") String accept,
+            Context context);
+
+        @Headers({"Content-Type: application/json"})
+        @Get("/{scope}/providers/Microsoft.Quota/usages")
+        @ExpectedResponses({200})
+        @UnexpectedResponseExceptionType(ManagementException.class)
+        Mono list(
+            @HostParam("$host") String endpoint,
+            @QueryParam("api-version") String apiVersion,
+            @PathParam(value = "scope", encoded = true) String scope,
+            @HeaderParam("Accept") String accept,
+            Context context);
+
+        @Headers({"Content-Type: application/json"})
+        @Get("{nextLink}")
+        @ExpectedResponses({200})
+        @UnexpectedResponseExceptionType(ManagementException.class)
+        Mono listNext(
+            @PathParam(value = "nextLink", encoded = true) String nextLink,
+            @HostParam("$host") String endpoint,
+            @HeaderParam("Accept") String accept,
+            Context context);
+    }
+
+    /**
+     * Get the current usage of a resource.
+     *
+     * @param resourceName Resource name for a given resource provider. For example: - SKU name for Microsoft.Compute -
+     *     SKU or TotalLowPriorityCores for Microsoft.MachineLearningServices For Microsoft.Network PublicIPAddresses.
+     * @param scope The target Azure resource URI. For example,
+     *     `/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/qms-test/providers/Microsoft.Batch/batchAccounts/testAccount/`.
+     *     This is the target Azure resource URI for the List GET operation. If a `{resourceName}` is added after
+     *     `/quotas`, then it's the target Azure resource URI in the GET operation for the specific resource.
+     * @throws IllegalArgumentException thrown if parameters fail the validation.
+     * @throws ManagementException thrown if the request is rejected by server.
+     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+     * @return the current usage of a resource.
+     */
+    @ServiceMethod(returns = ReturnType.SINGLE)
+    private Mono getWithResponseAsync(String resourceName, String scope) {
+        if (this.client.getEndpoint() == null) {
+            return Mono
+                .error(
+                    new IllegalArgumentException(
+                        "Parameter this.client.getEndpoint() is required and cannot be null."));
+        }
+        if (resourceName == null) {
+            return Mono.error(new IllegalArgumentException("Parameter resourceName is required and cannot be null."));
+        }
+        if (scope == null) {
+            return Mono.error(new IllegalArgumentException("Parameter scope is required and cannot be null."));
+        }
+        final String accept = "application/json";
+        return FluxUtil
+            .withContext(
+                context ->
+                    service
+                        .get(
+                            this.client.getEndpoint(),
+                            resourceName,
+                            this.client.getApiVersion(),
+                            scope,
+                            accept,
+                            context))
+            .contextWrite(context -> context.putAll(FluxUtil.toReactorContext(this.client.getContext()).readOnly()));
+    }
+
+    /**
+     * Get the current usage of a resource.
+     *
+     * @param resourceName Resource name for a given resource provider. For example: - SKU name for Microsoft.Compute -
+     *     SKU or TotalLowPriorityCores for Microsoft.MachineLearningServices For Microsoft.Network PublicIPAddresses.
+     * @param scope The target Azure resource URI. For example,
+     *     `/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/qms-test/providers/Microsoft.Batch/batchAccounts/testAccount/`.
+     *     This is the target Azure resource URI for the List GET operation. If a `{resourceName}` is added after
+     *     `/quotas`, then it's the target Azure resource URI in the GET operation for the specific resource.
+     * @param context The context to associate with this operation.
+     * @throws IllegalArgumentException thrown if parameters fail the validation.
+     * @throws ManagementException thrown if the request is rejected by server.
+     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+     * @return the current usage of a resource.
+     */
+    @ServiceMethod(returns = ReturnType.SINGLE)
+    private Mono getWithResponseAsync(String resourceName, String scope, Context context) {
+        if (this.client.getEndpoint() == null) {
+            return Mono
+                .error(
+                    new IllegalArgumentException(
+                        "Parameter this.client.getEndpoint() is required and cannot be null."));
+        }
+        if (resourceName == null) {
+            return Mono.error(new IllegalArgumentException("Parameter resourceName is required and cannot be null."));
+        }
+        if (scope == null) {
+            return Mono.error(new IllegalArgumentException("Parameter scope is required and cannot be null."));
+        }
+        final String accept = "application/json";
+        context = this.client.mergeContext(context);
+        return service
+            .get(this.client.getEndpoint(), resourceName, this.client.getApiVersion(), scope, accept, context);
+    }
+
+    /**
+     * Get the current usage of a resource.
+     *
+     * @param resourceName Resource name for a given resource provider. For example: - SKU name for Microsoft.Compute -
+     *     SKU or TotalLowPriorityCores for Microsoft.MachineLearningServices For Microsoft.Network PublicIPAddresses.
+     * @param scope The target Azure resource URI. For example,
+     *     `/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/qms-test/providers/Microsoft.Batch/batchAccounts/testAccount/`.
+     *     This is the target Azure resource URI for the List GET operation. If a `{resourceName}` is added after
+     *     `/quotas`, then it's the target Azure resource URI in the GET operation for the specific resource.
+     * @throws IllegalArgumentException thrown if parameters fail the validation.
+     * @throws ManagementException thrown if the request is rejected by server.
+     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+     * @return the current usage of a resource.
+     */
+    @ServiceMethod(returns = ReturnType.SINGLE)
+    private Mono getAsync(String resourceName, String scope) {
+        return getWithResponseAsync(resourceName, scope)
+            .flatMap(
+                (UsagesGetResponse res) -> {
+                    if (res.getValue() != null) {
+                        return Mono.just(res.getValue());
+                    } else {
+                        return Mono.empty();
+                    }
+                });
+    }
+
+    /**
+     * Get the current usage of a resource.
+     *
+     * @param resourceName Resource name for a given resource provider. For example: - SKU name for Microsoft.Compute -
+     *     SKU or TotalLowPriorityCores for Microsoft.MachineLearningServices For Microsoft.Network PublicIPAddresses.
+     * @param scope The target Azure resource URI. For example,
+     *     `/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/qms-test/providers/Microsoft.Batch/batchAccounts/testAccount/`.
+     *     This is the target Azure resource URI for the List GET operation. If a `{resourceName}` is added after
+     *     `/quotas`, then it's the target Azure resource URI in the GET operation for the specific resource.
+     * @throws IllegalArgumentException thrown if parameters fail the validation.
+     * @throws ManagementException thrown if the request is rejected by server.
+     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+     * @return the current usage of a resource.
+     */
+    @ServiceMethod(returns = ReturnType.SINGLE)
+    public CurrentUsagesBaseInner get(String resourceName, String scope) {
+        return getAsync(resourceName, scope).block();
+    }
+
+    /**
+     * Get the current usage of a resource.
+     *
+     * @param resourceName Resource name for a given resource provider. For example: - SKU name for Microsoft.Compute -
+     *     SKU or TotalLowPriorityCores for Microsoft.MachineLearningServices For Microsoft.Network PublicIPAddresses.
+     * @param scope The target Azure resource URI. For example,
+     *     `/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/qms-test/providers/Microsoft.Batch/batchAccounts/testAccount/`.
+     *     This is the target Azure resource URI for the List GET operation. If a `{resourceName}` is added after
+     *     `/quotas`, then it's the target Azure resource URI in the GET operation for the specific resource.
+     * @param context The context to associate with this operation.
+     * @throws IllegalArgumentException thrown if parameters fail the validation.
+     * @throws ManagementException thrown if the request is rejected by server.
+     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+     * @return the current usage of a resource.
+     */
+    @ServiceMethod(returns = ReturnType.SINGLE)
+    public UsagesGetResponse getWithResponse(String resourceName, String scope, Context context) {
+        return getWithResponseAsync(resourceName, scope, context).block();
+    }
+
+    /**
+     * Get a list of current usage for all resources for the scope specified.
+     *
+     * @param scope The target Azure resource URI. For example,
+     *     `/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/qms-test/providers/Microsoft.Batch/batchAccounts/testAccount/`.
+     *     This is the target Azure resource URI for the List GET operation. If a `{resourceName}` is added after
+     *     `/quotas`, then it's the target Azure resource URI in the GET operation for the specific resource.
+     * @throws IllegalArgumentException thrown if parameters fail the validation.
+     * @throws ManagementException thrown if the request is rejected by server.
+     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+     * @return a list of current usage for all resources for the scope specified.
+     */
+    @ServiceMethod(returns = ReturnType.SINGLE)
+    private Mono> listSinglePageAsync(String scope) {
+        if (this.client.getEndpoint() == null) {
+            return Mono
+                .error(
+                    new IllegalArgumentException(
+                        "Parameter this.client.getEndpoint() is required and cannot be null."));
+        }
+        if (scope == null) {
+            return Mono.error(new IllegalArgumentException("Parameter scope is required and cannot be null."));
+        }
+        final String accept = "application/json";
+        return FluxUtil
+            .withContext(
+                context -> service.list(this.client.getEndpoint(), this.client.getApiVersion(), scope, accept, context))
+            .>map(
+                res ->
+                    new PagedResponseBase<>(
+                        res.getRequest(),
+                        res.getStatusCode(),
+                        res.getHeaders(),
+                        res.getValue().value(),
+                        res.getValue().nextLink(),
+                        res.getDeserializedHeaders()))
+            .contextWrite(context -> context.putAll(FluxUtil.toReactorContext(this.client.getContext()).readOnly()));
+    }
+
+    /**
+     * Get a list of current usage for all resources for the scope specified.
+     *
+     * @param scope The target Azure resource URI. For example,
+     *     `/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/qms-test/providers/Microsoft.Batch/batchAccounts/testAccount/`.
+     *     This is the target Azure resource URI for the List GET operation. If a `{resourceName}` is added after
+     *     `/quotas`, then it's the target Azure resource URI in the GET operation for the specific resource.
+     * @param context The context to associate with this operation.
+     * @throws IllegalArgumentException thrown if parameters fail the validation.
+     * @throws ManagementException thrown if the request is rejected by server.
+     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+     * @return a list of current usage for all resources for the scope specified.
+     */
+    @ServiceMethod(returns = ReturnType.SINGLE)
+    private Mono> listSinglePageAsync(String scope, Context context) {
+        if (this.client.getEndpoint() == null) {
+            return Mono
+                .error(
+                    new IllegalArgumentException(
+                        "Parameter this.client.getEndpoint() is required and cannot be null."));
+        }
+        if (scope == null) {
+            return Mono.error(new IllegalArgumentException("Parameter scope is required and cannot be null."));
+        }
+        final String accept = "application/json";
+        context = this.client.mergeContext(context);
+        return service
+            .list(this.client.getEndpoint(), this.client.getApiVersion(), scope, accept, context)
+            .map(
+                res ->
+                    new PagedResponseBase<>(
+                        res.getRequest(),
+                        res.getStatusCode(),
+                        res.getHeaders(),
+                        res.getValue().value(),
+                        res.getValue().nextLink(),
+                        res.getDeserializedHeaders()));
+    }
+
+    /**
+     * Get a list of current usage for all resources for the scope specified.
+     *
+     * @param scope The target Azure resource URI. For example,
+     *     `/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/qms-test/providers/Microsoft.Batch/batchAccounts/testAccount/`.
+     *     This is the target Azure resource URI for the List GET operation. If a `{resourceName}` is added after
+     *     `/quotas`, then it's the target Azure resource URI in the GET operation for the specific resource.
+     * @throws IllegalArgumentException thrown if parameters fail the validation.
+     * @throws ManagementException thrown if the request is rejected by server.
+     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+     * @return a list of current usage for all resources for the scope specified.
+     */
+    @ServiceMethod(returns = ReturnType.COLLECTION)
+    private PagedFlux listAsync(String scope) {
+        return new PagedFlux<>(() -> listSinglePageAsync(scope), nextLink -> listNextSinglePageAsync(nextLink));
+    }
+
+    /**
+     * Get a list of current usage for all resources for the scope specified.
+     *
+     * @param scope The target Azure resource URI. For example,
+     *     `/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/qms-test/providers/Microsoft.Batch/batchAccounts/testAccount/`.
+     *     This is the target Azure resource URI for the List GET operation. If a `{resourceName}` is added after
+     *     `/quotas`, then it's the target Azure resource URI in the GET operation for the specific resource.
+     * @param context The context to associate with this operation.
+     * @throws IllegalArgumentException thrown if parameters fail the validation.
+     * @throws ManagementException thrown if the request is rejected by server.
+     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+     * @return a list of current usage for all resources for the scope specified.
+     */
+    @ServiceMethod(returns = ReturnType.COLLECTION)
+    private PagedFlux listAsync(String scope, Context context) {
+        return new PagedFlux<>(
+            () -> listSinglePageAsync(scope, context), nextLink -> listNextSinglePageAsync(nextLink, context));
+    }
+
+    /**
+     * Get a list of current usage for all resources for the scope specified.
+     *
+     * @param scope The target Azure resource URI. For example,
+     *     `/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/qms-test/providers/Microsoft.Batch/batchAccounts/testAccount/`.
+     *     This is the target Azure resource URI for the List GET operation. If a `{resourceName}` is added after
+     *     `/quotas`, then it's the target Azure resource URI in the GET operation for the specific resource.
+     * @throws IllegalArgumentException thrown if parameters fail the validation.
+     * @throws ManagementException thrown if the request is rejected by server.
+     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+     * @return a list of current usage for all resources for the scope specified.
+     */
+    @ServiceMethod(returns = ReturnType.COLLECTION)
+    public PagedIterable list(String scope) {
+        return new PagedIterable<>(listAsync(scope));
+    }
+
+    /**
+     * Get a list of current usage for all resources for the scope specified.
+     *
+     * @param scope The target Azure resource URI. For example,
+     *     `/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/qms-test/providers/Microsoft.Batch/batchAccounts/testAccount/`.
+     *     This is the target Azure resource URI for the List GET operation. If a `{resourceName}` is added after
+     *     `/quotas`, then it's the target Azure resource URI in the GET operation for the specific resource.
+     * @param context The context to associate with this operation.
+     * @throws IllegalArgumentException thrown if parameters fail the validation.
+     * @throws ManagementException thrown if the request is rejected by server.
+     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+     * @return a list of current usage for all resources for the scope specified.
+     */
+    @ServiceMethod(returns = ReturnType.COLLECTION)
+    public PagedIterable list(String scope, Context context) {
+        return new PagedIterable<>(listAsync(scope, context));
+    }
+
+    /**
+     * Get the next page of items.
+     *
+     * @param nextLink The nextLink parameter.
+     * @throws IllegalArgumentException thrown if parameters fail the validation.
+     * @throws ManagementException thrown if the request is rejected by server.
+     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+     * @return quota limits.
+     */
+    @ServiceMethod(returns = ReturnType.SINGLE)
+    private Mono> listNextSinglePageAsync(String nextLink) {
+        if (nextLink == null) {
+            return Mono.error(new IllegalArgumentException("Parameter nextLink is required and cannot be null."));
+        }
+        if (this.client.getEndpoint() == null) {
+            return Mono
+                .error(
+                    new IllegalArgumentException(
+                        "Parameter this.client.getEndpoint() is required and cannot be null."));
+        }
+        final String accept = "application/json";
+        return FluxUtil
+            .withContext(context -> service.listNext(nextLink, this.client.getEndpoint(), accept, context))
+            .>map(
+                res ->
+                    new PagedResponseBase<>(
+                        res.getRequest(),
+                        res.getStatusCode(),
+                        res.getHeaders(),
+                        res.getValue().value(),
+                        res.getValue().nextLink(),
+                        res.getDeserializedHeaders()))
+            .contextWrite(context -> context.putAll(FluxUtil.toReactorContext(this.client.getContext()).readOnly()));
+    }
+
+    /**
+     * Get the next page of items.
+     *
+     * @param nextLink The nextLink parameter.
+     * @param context The context to associate with this operation.
+     * @throws IllegalArgumentException thrown if parameters fail the validation.
+     * @throws ManagementException thrown if the request is rejected by server.
+     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+     * @return quota limits.
+     */
+    @ServiceMethod(returns = ReturnType.SINGLE)
+    private Mono> listNextSinglePageAsync(String nextLink, Context context) {
+        if (nextLink == null) {
+            return Mono.error(new IllegalArgumentException("Parameter nextLink is required and cannot be null."));
+        }
+        if (this.client.getEndpoint() == null) {
+            return Mono
+                .error(
+                    new IllegalArgumentException(
+                        "Parameter this.client.getEndpoint() is required and cannot be null."));
+        }
+        final String accept = "application/json";
+        context = this.client.mergeContext(context);
+        return service
+            .listNext(nextLink, this.client.getEndpoint(), accept, context)
+            .map(
+                res ->
+                    new PagedResponseBase<>(
+                        res.getRequest(),
+                        res.getStatusCode(),
+                        res.getHeaders(),
+                        res.getValue().value(),
+                        res.getValue().nextLink(),
+                        res.getDeserializedHeaders()));
+    }
+}
diff --git a/sdk/quota/azure-resourcemanager-quota/src/main/java/com/azure/resourcemanager/quota/implementation/UsagesImpl.java b/sdk/quota/azure-resourcemanager-quota/src/main/java/com/azure/resourcemanager/quota/implementation/UsagesImpl.java
new file mode 100644
index 000000000000..9d6cc6a56f76
--- /dev/null
+++ b/sdk/quota/azure-resourcemanager-quota/src/main/java/com/azure/resourcemanager/quota/implementation/UsagesImpl.java
@@ -0,0 +1,70 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.quota.implementation;
+
+import com.azure.core.http.rest.PagedIterable;
+import com.azure.core.http.rest.Response;
+import com.azure.core.http.rest.SimpleResponse;
+import com.azure.core.util.Context;
+import com.azure.core.util.logging.ClientLogger;
+import com.azure.resourcemanager.quota.fluent.UsagesClient;
+import com.azure.resourcemanager.quota.fluent.models.CurrentUsagesBaseInner;
+import com.azure.resourcemanager.quota.models.CurrentUsagesBase;
+import com.azure.resourcemanager.quota.models.Usages;
+import com.azure.resourcemanager.quota.models.UsagesGetResponse;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+
+public final class UsagesImpl implements Usages {
+    @JsonIgnore private final ClientLogger logger = new ClientLogger(UsagesImpl.class);
+
+    private final UsagesClient innerClient;
+
+    private final com.azure.resourcemanager.quota.QuotaManager serviceManager;
+
+    public UsagesImpl(UsagesClient innerClient, com.azure.resourcemanager.quota.QuotaManager serviceManager) {
+        this.innerClient = innerClient;
+        this.serviceManager = serviceManager;
+    }
+
+    public CurrentUsagesBase get(String resourceName, String scope) {
+        CurrentUsagesBaseInner inner = this.serviceClient().get(resourceName, scope);
+        if (inner != null) {
+            return new CurrentUsagesBaseImpl(inner, this.manager());
+        } else {
+            return null;
+        }
+    }
+
+    public Response getWithResponse(String resourceName, String scope, Context context) {
+        UsagesGetResponse inner = this.serviceClient().getWithResponse(resourceName, scope, context);
+        if (inner != null) {
+            return new SimpleResponse<>(
+                inner.getRequest(),
+                inner.getStatusCode(),
+                inner.getHeaders(),
+                new CurrentUsagesBaseImpl(inner.getValue(), this.manager()));
+        } else {
+            return null;
+        }
+    }
+
+    public PagedIterable list(String scope) {
+        PagedIterable inner = this.serviceClient().list(scope);
+        return Utils.mapPage(inner, inner1 -> new CurrentUsagesBaseImpl(inner1, this.manager()));
+    }
+
+    public PagedIterable list(String scope, Context context) {
+        PagedIterable inner = this.serviceClient().list(scope, context);
+        return Utils.mapPage(inner, inner1 -> new CurrentUsagesBaseImpl(inner1, this.manager()));
+    }
+
+    private UsagesClient serviceClient() {
+        return this.innerClient;
+    }
+
+    private com.azure.resourcemanager.quota.QuotaManager manager() {
+        return this.serviceManager;
+    }
+}
diff --git a/sdk/quota/azure-resourcemanager-quota/src/main/java/com/azure/resourcemanager/quota/implementation/Utils.java b/sdk/quota/azure-resourcemanager-quota/src/main/java/com/azure/resourcemanager/quota/implementation/Utils.java
new file mode 100644
index 000000000000..b893884d3eda
--- /dev/null
+++ b/sdk/quota/azure-resourcemanager-quota/src/main/java/com/azure/resourcemanager/quota/implementation/Utils.java
@@ -0,0 +1,204 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.quota.implementation;
+
+import com.azure.core.http.rest.PagedFlux;
+import com.azure.core.http.rest.PagedIterable;
+import com.azure.core.http.rest.PagedResponse;
+import com.azure.core.http.rest.PagedResponseBase;
+import com.azure.core.util.CoreUtils;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.Iterator;
+import java.util.List;
+import java.util.function.Function;
+import java.util.stream.Collectors;
+import java.util.stream.Stream;
+import reactor.core.publisher.Flux;
+
+final class Utils {
+    static String getValueFromIdByName(String id, String name) {
+        if (id == null) {
+            return null;
+        }
+        Iterator itr = Arrays.stream(id.split("/")).iterator();
+        while (itr.hasNext()) {
+            String part = itr.next();
+            if (part != null && !part.trim().isEmpty()) {
+                if (part.equalsIgnoreCase(name)) {
+                    if (itr.hasNext()) {
+                        return itr.next();
+                    } else {
+                        return null;
+                    }
+                }
+            }
+        }
+        return null;
+    }
+
+    static String getValueFromIdByParameterName(String id, String pathTemplate, String parameterName) {
+        if (id == null || pathTemplate == null) {
+            return null;
+        }
+        String parameterNameParentheses = "{" + parameterName + "}";
+        List idSegmentsReverted = Arrays.asList(id.split("/"));
+        List pathSegments = Arrays.asList(pathTemplate.split("/"));
+        Collections.reverse(idSegmentsReverted);
+        Iterator idItrReverted = idSegmentsReverted.iterator();
+        int pathIndex = pathSegments.size();
+        while (idItrReverted.hasNext() && pathIndex > 0) {
+            String idSegment = idItrReverted.next();
+            String pathSegment = pathSegments.get(--pathIndex);
+            if (!CoreUtils.isNullOrEmpty(idSegment) && !CoreUtils.isNullOrEmpty(pathSegment)) {
+                if (pathSegment.equalsIgnoreCase(parameterNameParentheses)) {
+                    if (pathIndex == 0 || (pathIndex == 1 && pathSegments.get(0).isEmpty())) {
+                        List segments = new ArrayList<>();
+                        segments.add(idSegment);
+                        idItrReverted.forEachRemaining(segments::add);
+                        Collections.reverse(segments);
+                        if (segments.size() > 0 && segments.get(0).isEmpty()) {
+                            segments.remove(0);
+                        }
+                        return String.join("/", segments);
+                    } else {
+                        return idSegment;
+                    }
+                }
+            }
+        }
+        return null;
+    }
+
+    static  PagedIterable mapPage(PagedIterable pageIterable, Function mapper) {
+        return new PagedIterableImpl(pageIterable, mapper);
+    }
+
+    private static final class PagedIterableImpl extends PagedIterable {
+
+        private final PagedIterable pagedIterable;
+        private final Function mapper;
+        private final Function, PagedResponse> pageMapper;
+
+        private PagedIterableImpl(PagedIterable pagedIterable, Function mapper) {
+            super(
+                PagedFlux
+                    .create(
+                        () ->
+                            (continuationToken, pageSize) ->
+                                Flux.fromStream(pagedIterable.streamByPage().map(getPageMapper(mapper)))));
+            this.pagedIterable = pagedIterable;
+            this.mapper = mapper;
+            this.pageMapper = getPageMapper(mapper);
+        }
+
+        private static  Function, PagedResponse> getPageMapper(Function mapper) {
+            return page ->
+                new PagedResponseBase(
+                    page.getRequest(),
+                    page.getStatusCode(),
+                    page.getHeaders(),
+                    page.getElements().stream().map(mapper).collect(Collectors.toList()),
+                    page.getContinuationToken(),
+                    null);
+        }
+
+        @Override
+        public Stream stream() {
+            return pagedIterable.stream().map(mapper);
+        }
+
+        @Override
+        public Stream> streamByPage() {
+            return pagedIterable.streamByPage().map(pageMapper);
+        }
+
+        @Override
+        public Stream> streamByPage(String continuationToken) {
+            return pagedIterable.streamByPage(continuationToken).map(pageMapper);
+        }
+
+        @Override
+        public Stream> streamByPage(int preferredPageSize) {
+            return pagedIterable.streamByPage(preferredPageSize).map(pageMapper);
+        }
+
+        @Override
+        public Stream> streamByPage(String continuationToken, int preferredPageSize) {
+            return pagedIterable.streamByPage(continuationToken, preferredPageSize).map(pageMapper);
+        }
+
+        @Override
+        public Iterator iterator() {
+            return new IteratorImpl(pagedIterable.iterator(), mapper);
+        }
+
+        @Override
+        public Iterable> iterableByPage() {
+            return new IterableImpl, PagedResponse>(pagedIterable.iterableByPage(), pageMapper);
+        }
+
+        @Override
+        public Iterable> iterableByPage(String continuationToken) {
+            return new IterableImpl, PagedResponse>(
+                pagedIterable.iterableByPage(continuationToken), pageMapper);
+        }
+
+        @Override
+        public Iterable> iterableByPage(int preferredPageSize) {
+            return new IterableImpl, PagedResponse>(
+                pagedIterable.iterableByPage(preferredPageSize), pageMapper);
+        }
+
+        @Override
+        public Iterable> iterableByPage(String continuationToken, int preferredPageSize) {
+            return new IterableImpl, PagedResponse>(
+                pagedIterable.iterableByPage(continuationToken, preferredPageSize), pageMapper);
+        }
+    }
+
+    private static final class IteratorImpl implements Iterator {
+
+        private final Iterator iterator;
+        private final Function mapper;
+
+        private IteratorImpl(Iterator iterator, Function mapper) {
+            this.iterator = iterator;
+            this.mapper = mapper;
+        }
+
+        @Override
+        public boolean hasNext() {
+            return iterator.hasNext();
+        }
+
+        @Override
+        public S next() {
+            return mapper.apply(iterator.next());
+        }
+
+        @Override
+        public void remove() {
+            iterator.remove();
+        }
+    }
+
+    private static final class IterableImpl implements Iterable {
+
+        private final Iterable iterable;
+        private final Function mapper;
+
+        private IterableImpl(Iterable iterable, Function mapper) {
+            this.iterable = iterable;
+            this.mapper = mapper;
+        }
+
+        @Override
+        public Iterator iterator() {
+            return new IteratorImpl(iterable.iterator(), mapper);
+        }
+    }
+}
diff --git a/sdk/quota/azure-resourcemanager-quota/src/main/java/com/azure/resourcemanager/quota/implementation/package-info.java b/sdk/quota/azure-resourcemanager-quota/src/main/java/com/azure/resourcemanager/quota/implementation/package-info.java
new file mode 100644
index 000000000000..84f250ba9a92
--- /dev/null
+++ b/sdk/quota/azure-resourcemanager-quota/src/main/java/com/azure/resourcemanager/quota/implementation/package-info.java
@@ -0,0 +1,6 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+/** Package containing the implementations for AzureQuotaExtensionApi. Microsoft Azure Quota Resource Provider. */
+package com.azure.resourcemanager.quota.implementation;
diff --git a/sdk/quota/azure-resourcemanager-quota/src/main/java/com/azure/resourcemanager/quota/models/CurrentQuotaLimitBase.java b/sdk/quota/azure-resourcemanager-quota/src/main/java/com/azure/resourcemanager/quota/models/CurrentQuotaLimitBase.java
new file mode 100644
index 000000000000..e17b2c44c128
--- /dev/null
+++ b/sdk/quota/azure-resourcemanager-quota/src/main/java/com/azure/resourcemanager/quota/models/CurrentQuotaLimitBase.java
@@ -0,0 +1,154 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.quota.models;
+
+import com.azure.core.util.Context;
+import com.azure.resourcemanager.quota.fluent.models.CurrentQuotaLimitBaseInner;
+
+/** An immutable client-side representation of CurrentQuotaLimitBase. */
+public interface CurrentQuotaLimitBase {
+    /**
+     * Gets the id property: Fully qualified resource Id for the resource.
+     *
+     * @return the id value.
+     */
+    String id();
+
+    /**
+     * Gets the name property: The name of the resource.
+     *
+     * @return the name value.
+     */
+    String name();
+
+    /**
+     * Gets the type property: The type of the resource.
+     *
+     * @return the type value.
+     */
+    String type();
+
+    /**
+     * Gets the properties property: Quota properties for the specified resource, based on the API called, Quotas or
+     * Usages.
+     *
+     * @return the properties value.
+     */
+    QuotaProperties properties();
+
+    /**
+     * Gets the inner com.azure.resourcemanager.quota.fluent.models.CurrentQuotaLimitBaseInner object.
+     *
+     * @return the inner object.
+     */
+    CurrentQuotaLimitBaseInner innerModel();
+
+    /** The entirety of the CurrentQuotaLimitBase definition. */
+    interface Definition extends DefinitionStages.Blank, DefinitionStages.WithScope, DefinitionStages.WithCreate {
+    }
+    /** The CurrentQuotaLimitBase definition stages. */
+    interface DefinitionStages {
+        /** The first stage of the CurrentQuotaLimitBase definition. */
+        interface Blank extends WithScope {
+        }
+        /** The stage of the CurrentQuotaLimitBase definition allowing to specify parent resource. */
+        interface WithScope {
+            /**
+             * Specifies scope.
+             *
+             * @param scope The target Azure resource URI. For example,
+             *     `/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/qms-test/providers/Microsoft.Batch/batchAccounts/testAccount/`.
+             *     This is the target Azure resource URI for the List GET operation. If a `{resourceName}` is added
+             *     after `/quotas`, then it's the target Azure resource URI in the GET operation for the specific
+             *     resource.
+             * @return the next definition stage.
+             */
+            WithCreate withExistingScope(String scope);
+        }
+        /**
+         * The stage of the CurrentQuotaLimitBase definition which contains all the minimum required properties for the
+         * resource to be created, but also allows for any other optional properties to be specified.
+         */
+        interface WithCreate extends DefinitionStages.WithProperties {
+            /**
+             * Executes the create request.
+             *
+             * @return the created resource.
+             */
+            CurrentQuotaLimitBase create();
+
+            /**
+             * Executes the create request.
+             *
+             * @param context The context to associate with this operation.
+             * @return the created resource.
+             */
+            CurrentQuotaLimitBase create(Context context);
+        }
+        /** The stage of the CurrentQuotaLimitBase definition allowing to specify properties. */
+        interface WithProperties {
+            /**
+             * Specifies the properties property: Quota properties for the specified resource, based on the API called,
+             * Quotas or Usages..
+             *
+             * @param properties Quota properties for the specified resource, based on the API called, Quotas or Usages.
+             * @return the next definition stage.
+             */
+            WithCreate withProperties(QuotaProperties properties);
+        }
+    }
+    /**
+     * Begins update for the CurrentQuotaLimitBase resource.
+     *
+     * @return the stage of resource update.
+     */
+    CurrentQuotaLimitBase.Update update();
+
+    /** The template for CurrentQuotaLimitBase update. */
+    interface Update extends UpdateStages.WithProperties {
+        /**
+         * Executes the update request.
+         *
+         * @return the updated resource.
+         */
+        CurrentQuotaLimitBase apply();
+
+        /**
+         * Executes the update request.
+         *
+         * @param context The context to associate with this operation.
+         * @return the updated resource.
+         */
+        CurrentQuotaLimitBase apply(Context context);
+    }
+    /** The CurrentQuotaLimitBase update stages. */
+    interface UpdateStages {
+        /** The stage of the CurrentQuotaLimitBase update allowing to specify properties. */
+        interface WithProperties {
+            /**
+             * Specifies the properties property: Quota properties for the specified resource, based on the API called,
+             * Quotas or Usages..
+             *
+             * @param properties Quota properties for the specified resource, based on the API called, Quotas or Usages.
+             * @return the next definition stage.
+             */
+            Update withProperties(QuotaProperties properties);
+        }
+    }
+    /**
+     * Refreshes the resource to sync with Azure.
+     *
+     * @return the refreshed resource.
+     */
+    CurrentQuotaLimitBase refresh();
+
+    /**
+     * Refreshes the resource to sync with Azure.
+     *
+     * @param context The context to associate with this operation.
+     * @return the refreshed resource.
+     */
+    CurrentQuotaLimitBase refresh(Context context);
+}
diff --git a/sdk/quota/azure-resourcemanager-quota/src/main/java/com/azure/resourcemanager/quota/models/CurrentUsagesBase.java b/sdk/quota/azure-resourcemanager-quota/src/main/java/com/azure/resourcemanager/quota/models/CurrentUsagesBase.java
new file mode 100644
index 000000000000..e406afed5eb8
--- /dev/null
+++ b/sdk/quota/azure-resourcemanager-quota/src/main/java/com/azure/resourcemanager/quota/models/CurrentUsagesBase.java
@@ -0,0 +1,45 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.quota.models;
+
+import com.azure.resourcemanager.quota.fluent.models.CurrentUsagesBaseInner;
+
+/** An immutable client-side representation of CurrentUsagesBase. */
+public interface CurrentUsagesBase {
+    /**
+     * Gets the id property: Fully qualified resource Id for the resource.
+     *
+     * @return the id value.
+     */
+    String id();
+
+    /**
+     * Gets the name property: The name of the resource.
+     *
+     * @return the name value.
+     */
+    String name();
+
+    /**
+     * Gets the type property: The type of the resource.
+     *
+     * @return the type value.
+     */
+    String type();
+
+    /**
+     * Gets the properties property: Usage properties for the specified resource.
+     *
+     * @return the properties value.
+     */
+    UsagesProperties properties();
+
+    /**
+     * Gets the inner com.azure.resourcemanager.quota.fluent.models.CurrentUsagesBaseInner object.
+     *
+     * @return the inner object.
+     */
+    CurrentUsagesBaseInner innerModel();
+}
diff --git a/sdk/quota/azure-resourcemanager-quota/src/main/java/com/azure/resourcemanager/quota/models/LimitJsonObject.java b/sdk/quota/azure-resourcemanager-quota/src/main/java/com/azure/resourcemanager/quota/models/LimitJsonObject.java
new file mode 100644
index 000000000000..b47dca3f93e3
--- /dev/null
+++ b/sdk/quota/azure-resourcemanager-quota/src/main/java/com/azure/resourcemanager/quota/models/LimitJsonObject.java
@@ -0,0 +1,33 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.quota.models;
+
+import com.azure.core.annotation.Immutable;
+import com.azure.core.util.logging.ClientLogger;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonSubTypes;
+import com.fasterxml.jackson.annotation.JsonTypeInfo;
+import com.fasterxml.jackson.annotation.JsonTypeName;
+
+/** LimitJson abstract class. */
+@JsonTypeInfo(
+    use = JsonTypeInfo.Id.NAME,
+    include = JsonTypeInfo.As.PROPERTY,
+    property = "limitObjectType",
+    defaultImpl = LimitJsonObject.class)
+@JsonTypeName("LimitJsonObject")
+@JsonSubTypes({@JsonSubTypes.Type(name = "LimitValue", value = LimitValue.class)})
+@Immutable
+public class LimitJsonObject {
+    @JsonIgnore private final ClientLogger logger = new ClientLogger(LimitJsonObject.class);
+
+    /**
+     * Validates the instance.
+     *
+     * @throws IllegalArgumentException thrown if the instance is not valid.
+     */
+    public void validate() {
+    }
+}
diff --git a/sdk/quota/azure-resourcemanager-quota/src/main/java/com/azure/resourcemanager/quota/models/LimitObject.java b/sdk/quota/azure-resourcemanager-quota/src/main/java/com/azure/resourcemanager/quota/models/LimitObject.java
new file mode 100644
index 000000000000..2a4df7e2d4c8
--- /dev/null
+++ b/sdk/quota/azure-resourcemanager-quota/src/main/java/com/azure/resourcemanager/quota/models/LimitObject.java
@@ -0,0 +1,102 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.quota.models;
+
+import com.azure.core.annotation.Fluent;
+import com.azure.core.util.logging.ClientLogger;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/** The resource quota limit value. */
+@Fluent
+public class LimitObject {
+    @JsonIgnore private final ClientLogger logger = new ClientLogger(LimitObject.class);
+
+    /*
+     * The quota/limit value
+     */
+    @JsonProperty(value = "value", required = true)
+    private int value;
+
+    /*
+     * The limit object type.
+     */
+    @JsonProperty(value = "limitObjectType")
+    private LimitType limitObjectType;
+
+    /*
+     * The quota or usages limit types.
+     */
+    @JsonProperty(value = "limitType")
+    private QuotaLimitTypes limitType;
+
+    /**
+     * Get the value property: The quota/limit value.
+     *
+     * @return the value value.
+     */
+    public int value() {
+        return this.value;
+    }
+
+    /**
+     * Set the value property: The quota/limit value.
+     *
+     * @param value the value value to set.
+     * @return the LimitObject object itself.
+     */
+    public LimitObject withValue(int value) {
+        this.value = value;
+        return this;
+    }
+
+    /**
+     * Get the limitObjectType property: The limit object type.
+     *
+     * @return the limitObjectType value.
+     */
+    public LimitType limitObjectType() {
+        return this.limitObjectType;
+    }
+
+    /**
+     * Set the limitObjectType property: The limit object type.
+     *
+     * @param limitObjectType the limitObjectType value to set.
+     * @return the LimitObject object itself.
+     */
+    public LimitObject withLimitObjectType(LimitType limitObjectType) {
+        this.limitObjectType = limitObjectType;
+        return this;
+    }
+
+    /**
+     * Get the limitType property: The quota or usages limit types.
+     *
+     * @return the limitType value.
+     */
+    public QuotaLimitTypes limitType() {
+        return this.limitType;
+    }
+
+    /**
+     * Set the limitType property: The quota or usages limit types.
+     *
+     * @param limitType the limitType value to set.
+     * @return the LimitObject object itself.
+     */
+    public LimitObject withLimitType(QuotaLimitTypes limitType) {
+        this.limitType = limitType;
+        return this;
+    }
+
+    /**
+     * Validates the instance.
+     *
+     * @throws IllegalArgumentException thrown if the instance is not valid.
+     */
+    public void validate() {
+    }
+}
diff --git a/sdk/quota/azure-resourcemanager-quota/src/main/java/com/azure/resourcemanager/quota/models/LimitType.java b/sdk/quota/azure-resourcemanager-quota/src/main/java/com/azure/resourcemanager/quota/models/LimitType.java
new file mode 100644
index 000000000000..70e2b646137b
--- /dev/null
+++ b/sdk/quota/azure-resourcemanager-quota/src/main/java/com/azure/resourcemanager/quota/models/LimitType.java
@@ -0,0 +1,31 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.quota.models;
+
+import com.azure.core.util.ExpandableStringEnum;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import java.util.Collection;
+
+/** Defines values for LimitType. */
+public final class LimitType extends ExpandableStringEnum {
+    /** Static value LimitValue for LimitType. */
+    public static final LimitType LIMIT_VALUE = fromString("LimitValue");
+
+    /**
+     * Creates or finds a LimitType from its string representation.
+     *
+     * @param name a name to look for.
+     * @return the corresponding LimitType.
+     */
+    @JsonCreator
+    public static LimitType fromString(String name) {
+        return fromString(name, LimitType.class);
+    }
+
+    /** @return known LimitType values. */
+    public static Collection values() {
+        return values(LimitType.class);
+    }
+}
diff --git a/sdk/quota/azure-resourcemanager-quota/src/main/java/com/azure/resourcemanager/quota/models/LimitValue.java b/sdk/quota/azure-resourcemanager-quota/src/main/java/com/azure/resourcemanager/quota/models/LimitValue.java
new file mode 100644
index 000000000000..f645f2a1f4a7
--- /dev/null
+++ b/sdk/quota/azure-resourcemanager-quota/src/main/java/com/azure/resourcemanager/quota/models/LimitValue.java
@@ -0,0 +1,108 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.quota.models;
+
+import com.azure.core.annotation.Fluent;
+import com.azure.core.util.logging.ClientLogger;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.fasterxml.jackson.annotation.JsonTypeInfo;
+import com.fasterxml.jackson.annotation.JsonTypeName;
+
+/** The resource quota limit. */
+@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "limitObjectType")
+@JsonTypeName("LimitValue")
+@Fluent
+public final class LimitValue extends LimitJsonObject {
+    @JsonIgnore private final ClientLogger logger = new ClientLogger(LimitValue.class);
+
+    /*
+     * The quota/limit value
+     */
+    @JsonProperty(value = "value", required = true)
+    private int value;
+
+    /*
+     * The limit object type.
+     */
+    @JsonProperty(value = "limitObjectType")
+    private LimitType limitObjectType;
+
+    /*
+     * The quota or usages limit types.
+     */
+    @JsonProperty(value = "limitType")
+    private QuotaLimitTypes limitType;
+
+    /**
+     * Get the value property: The quota/limit value.
+     *
+     * @return the value value.
+     */
+    public int value() {
+        return this.value;
+    }
+
+    /**
+     * Set the value property: The quota/limit value.
+     *
+     * @param value the value value to set.
+     * @return the LimitValue object itself.
+     */
+    public LimitValue withValue(int value) {
+        this.value = value;
+        return this;
+    }
+
+    /**
+     * Get the limitObjectType property: The limit object type.
+     *
+     * @return the limitObjectType value.
+     */
+    public LimitType limitObjectType() {
+        return this.limitObjectType;
+    }
+
+    /**
+     * Set the limitObjectType property: The limit object type.
+     *
+     * @param limitObjectType the limitObjectType value to set.
+     * @return the LimitValue object itself.
+     */
+    public LimitValue withLimitObjectType(LimitType limitObjectType) {
+        this.limitObjectType = limitObjectType;
+        return this;
+    }
+
+    /**
+     * Get the limitType property: The quota or usages limit types.
+     *
+     * @return the limitType value.
+     */
+    public QuotaLimitTypes limitType() {
+        return this.limitType;
+    }
+
+    /**
+     * Set the limitType property: The quota or usages limit types.
+     *
+     * @param limitType the limitType value to set.
+     * @return the LimitValue object itself.
+     */
+    public LimitValue withLimitType(QuotaLimitTypes limitType) {
+        this.limitType = limitType;
+        return this;
+    }
+
+    /**
+     * Validates the instance.
+     *
+     * @throws IllegalArgumentException thrown if the instance is not valid.
+     */
+    @Override
+    public void validate() {
+        super.validate();
+    }
+}
diff --git a/sdk/quota/azure-resourcemanager-quota/src/main/java/com/azure/resourcemanager/quota/models/OperationDisplay.java b/sdk/quota/azure-resourcemanager-quota/src/main/java/com/azure/resourcemanager/quota/models/OperationDisplay.java
new file mode 100644
index 000000000000..074bdfb75b4a
--- /dev/null
+++ b/sdk/quota/azure-resourcemanager-quota/src/main/java/com/azure/resourcemanager/quota/models/OperationDisplay.java
@@ -0,0 +1,128 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.quota.models;
+
+import com.azure.core.annotation.Fluent;
+import com.azure.core.util.logging.ClientLogger;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/** The OperationDisplay model. */
+@Fluent
+public final class OperationDisplay {
+    @JsonIgnore private final ClientLogger logger = new ClientLogger(OperationDisplay.class);
+
+    /*
+     * Provider name.
+     */
+    @JsonProperty(value = "provider")
+    private String provider;
+
+    /*
+     * Resource name.
+     */
+    @JsonProperty(value = "resource")
+    private String resource;
+
+    /*
+     * Operation name.
+     */
+    @JsonProperty(value = "operation")
+    private String operation;
+
+    /*
+     * Operation description.
+     */
+    @JsonProperty(value = "description")
+    private String description;
+
+    /**
+     * Get the provider property: Provider name.
+     *
+     * @return the provider value.
+     */
+    public String provider() {
+        return this.provider;
+    }
+
+    /**
+     * Set the provider property: Provider name.
+     *
+     * @param provider the provider value to set.
+     * @return the OperationDisplay object itself.
+     */
+    public OperationDisplay withProvider(String provider) {
+        this.provider = provider;
+        return this;
+    }
+
+    /**
+     * Get the resource property: Resource name.
+     *
+     * @return the resource value.
+     */
+    public String resource() {
+        return this.resource;
+    }
+
+    /**
+     * Set the resource property: Resource name.
+     *
+     * @param resource the resource value to set.
+     * @return the OperationDisplay object itself.
+     */
+    public OperationDisplay withResource(String resource) {
+        this.resource = resource;
+        return this;
+    }
+
+    /**
+     * Get the operation property: Operation name.
+     *
+     * @return the operation value.
+     */
+    public String operation() {
+        return this.operation;
+    }
+
+    /**
+     * Set the operation property: Operation name.
+     *
+     * @param operation the operation value to set.
+     * @return the OperationDisplay object itself.
+     */
+    public OperationDisplay withOperation(String operation) {
+        this.operation = operation;
+        return this;
+    }
+
+    /**
+     * Get the description property: Operation description.
+     *
+     * @return the description value.
+     */
+    public String description() {
+        return this.description;
+    }
+
+    /**
+     * Set the description property: Operation description.
+     *
+     * @param description the description value to set.
+     * @return the OperationDisplay object itself.
+     */
+    public OperationDisplay withDescription(String description) {
+        this.description = description;
+        return this;
+    }
+
+    /**
+     * Validates the instance.
+     *
+     * @throws IllegalArgumentException thrown if the instance is not valid.
+     */
+    public void validate() {
+    }
+}
diff --git a/sdk/quota/azure-resourcemanager-quota/src/main/java/com/azure/resourcemanager/quota/models/OperationList.java b/sdk/quota/azure-resourcemanager-quota/src/main/java/com/azure/resourcemanager/quota/models/OperationList.java
new file mode 100644
index 000000000000..7a398b8a9907
--- /dev/null
+++ b/sdk/quota/azure-resourcemanager-quota/src/main/java/com/azure/resourcemanager/quota/models/OperationList.java
@@ -0,0 +1,81 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.quota.models;
+
+import com.azure.core.annotation.Fluent;
+import com.azure.core.util.logging.ClientLogger;
+import com.azure.resourcemanager.quota.fluent.models.OperationResponseInner;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import java.util.List;
+
+/** The OperationList model. */
+@Fluent
+public final class OperationList {
+    @JsonIgnore private final ClientLogger logger = new ClientLogger(OperationList.class);
+
+    /*
+     * The value property.
+     */
+    @JsonProperty(value = "value")
+    private List value;
+
+    /*
+     * URL to get the next page of items.
+     */
+    @JsonProperty(value = "nextLink")
+    private String nextLink;
+
+    /**
+     * Get the value property: The value property.
+     *
+     * @return the value value.
+     */
+    public List value() {
+        return this.value;
+    }
+
+    /**
+     * Set the value property: The value property.
+     *
+     * @param value the value value to set.
+     * @return the OperationList object itself.
+     */
+    public OperationList withValue(List value) {
+        this.value = value;
+        return this;
+    }
+
+    /**
+     * Get the nextLink property: URL to get the next page of items.
+     *
+     * @return the nextLink value.
+     */
+    public String nextLink() {
+        return this.nextLink;
+    }
+
+    /**
+     * Set the nextLink property: URL to get the next page of items.
+     *
+     * @param nextLink the nextLink value to set.
+     * @return the OperationList object itself.
+     */
+    public OperationList withNextLink(String nextLink) {
+        this.nextLink = nextLink;
+        return this;
+    }
+
+    /**
+     * Validates the instance.
+     *
+     * @throws IllegalArgumentException thrown if the instance is not valid.
+     */
+    public void validate() {
+        if (value() != null) {
+            value().forEach(e -> e.validate());
+        }
+    }
+}
diff --git a/sdk/quota/azure-resourcemanager-quota/src/main/java/com/azure/resourcemanager/quota/models/OperationResponse.java b/sdk/quota/azure-resourcemanager-quota/src/main/java/com/azure/resourcemanager/quota/models/OperationResponse.java
new file mode 100644
index 000000000000..ab1891ee80f6
--- /dev/null
+++ b/sdk/quota/azure-resourcemanager-quota/src/main/java/com/azure/resourcemanager/quota/models/OperationResponse.java
@@ -0,0 +1,38 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.quota.models;
+
+import com.azure.resourcemanager.quota.fluent.models.OperationResponseInner;
+
+/** An immutable client-side representation of OperationResponse. */
+public interface OperationResponse {
+    /**
+     * Gets the name property: The name property.
+     *
+     * @return the name value.
+     */
+    String name();
+
+    /**
+     * Gets the display property: The display property.
+     *
+     * @return the display value.
+     */
+    OperationDisplay display();
+
+    /**
+     * Gets the origin property: The origin property.
+     *
+     * @return the origin value.
+     */
+    String origin();
+
+    /**
+     * Gets the inner com.azure.resourcemanager.quota.fluent.models.OperationResponseInner object.
+     *
+     * @return the inner object.
+     */
+    OperationResponseInner innerModel();
+}
diff --git a/sdk/quota/azure-resourcemanager-quota/src/main/java/com/azure/resourcemanager/quota/models/Operations.java b/sdk/quota/azure-resourcemanager-quota/src/main/java/com/azure/resourcemanager/quota/models/Operations.java
new file mode 100644
index 000000000000..04484ba486ce
--- /dev/null
+++ b/sdk/quota/azure-resourcemanager-quota/src/main/java/com/azure/resourcemanager/quota/models/Operations.java
@@ -0,0 +1,31 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.quota.models;
+
+import com.azure.core.http.rest.PagedIterable;
+import com.azure.core.util.Context;
+
+/** Resource collection API of Operations. */
+public interface Operations {
+    /**
+     * List all the operations supported by the Microsoft.Quota resource provider.
+     *
+     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+     * @return the response.
+     */
+    PagedIterable list();
+
+    /**
+     * List all the operations supported by the Microsoft.Quota resource provider.
+     *
+     * @param context The context to associate with this operation.
+     * @throws IllegalArgumentException thrown if parameters fail the validation.
+     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+     * @return the response.
+     */
+    PagedIterable list(Context context);
+}
diff --git a/sdk/quota/azure-resourcemanager-quota/src/main/java/com/azure/resourcemanager/quota/models/QuotaLimitTypes.java b/sdk/quota/azure-resourcemanager-quota/src/main/java/com/azure/resourcemanager/quota/models/QuotaLimitTypes.java
new file mode 100644
index 000000000000..a9d38803d6e1
--- /dev/null
+++ b/sdk/quota/azure-resourcemanager-quota/src/main/java/com/azure/resourcemanager/quota/models/QuotaLimitTypes.java
@@ -0,0 +1,34 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.quota.models;
+
+import com.azure.core.util.ExpandableStringEnum;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import java.util.Collection;
+
+/** Defines values for QuotaLimitTypes. */
+public final class QuotaLimitTypes extends ExpandableStringEnum {
+    /** Static value Independent for QuotaLimitTypes. */
+    public static final QuotaLimitTypes INDEPENDENT = fromString("Independent");
+
+    /** Static value Shared for QuotaLimitTypes. */
+    public static final QuotaLimitTypes SHARED = fromString("Shared");
+
+    /**
+     * Creates or finds a QuotaLimitTypes from its string representation.
+     *
+     * @param name a name to look for.
+     * @return the corresponding QuotaLimitTypes.
+     */
+    @JsonCreator
+    public static QuotaLimitTypes fromString(String name) {
+        return fromString(name, QuotaLimitTypes.class);
+    }
+
+    /** @return known QuotaLimitTypes values. */
+    public static Collection values() {
+        return values(QuotaLimitTypes.class);
+    }
+}
diff --git a/sdk/quota/azure-resourcemanager-quota/src/main/java/com/azure/resourcemanager/quota/models/QuotaLimits.java b/sdk/quota/azure-resourcemanager-quota/src/main/java/com/azure/resourcemanager/quota/models/QuotaLimits.java
new file mode 100644
index 000000000000..c16b48338768
--- /dev/null
+++ b/sdk/quota/azure-resourcemanager-quota/src/main/java/com/azure/resourcemanager/quota/models/QuotaLimits.java
@@ -0,0 +1,84 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.quota.models;
+
+import com.azure.core.annotation.Fluent;
+import com.azure.core.util.logging.ClientLogger;
+import com.azure.resourcemanager.quota.fluent.models.CurrentQuotaLimitBaseInner;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import java.util.List;
+
+/** Quota limits. */
+@Fluent
+public final class QuotaLimits {
+    @JsonIgnore private final ClientLogger logger = new ClientLogger(QuotaLimits.class);
+
+    /*
+     * List of quota limits.
+     */
+    @JsonProperty(value = "value")
+    private List value;
+
+    /*
+     * The URI used to fetch the next page of quota limits. When there are no
+     * more pages, this string is null.
+     */
+    @JsonProperty(value = "nextLink")
+    private String nextLink;
+
+    /**
+     * Get the value property: List of quota limits.
+     *
+     * @return the value value.
+     */
+    public List value() {
+        return this.value;
+    }
+
+    /**
+     * Set the value property: List of quota limits.
+     *
+     * @param value the value value to set.
+     * @return the QuotaLimits object itself.
+     */
+    public QuotaLimits withValue(List value) {
+        this.value = value;
+        return this;
+    }
+
+    /**
+     * Get the nextLink property: The URI used to fetch the next page of quota limits. When there are no more pages,
+     * this string is null.
+     *
+     * @return the nextLink value.
+     */
+    public String nextLink() {
+        return this.nextLink;
+    }
+
+    /**
+     * Set the nextLink property: The URI used to fetch the next page of quota limits. When there are no more pages,
+     * this string is null.
+     *
+     * @param nextLink the nextLink value to set.
+     * @return the QuotaLimits object itself.
+     */
+    public QuotaLimits withNextLink(String nextLink) {
+        this.nextLink = nextLink;
+        return this;
+    }
+
+    /**
+     * Validates the instance.
+     *
+     * @throws IllegalArgumentException thrown if the instance is not valid.
+     */
+    public void validate() {
+        if (value() != null) {
+            value().forEach(e -> e.validate());
+        }
+    }
+}
diff --git a/sdk/quota/azure-resourcemanager-quota/src/main/java/com/azure/resourcemanager/quota/models/QuotaProperties.java b/sdk/quota/azure-resourcemanager-quota/src/main/java/com/azure/resourcemanager/quota/models/QuotaProperties.java
new file mode 100644
index 000000000000..6c3ea2dae22b
--- /dev/null
+++ b/sdk/quota/azure-resourcemanager-quota/src/main/java/com/azure/resourcemanager/quota/models/QuotaProperties.java
@@ -0,0 +1,193 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.quota.models;
+
+import com.azure.core.annotation.Fluent;
+import com.azure.core.util.logging.ClientLogger;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/** Quota properties for the specified resource. */
+@Fluent
+public final class QuotaProperties {
+    @JsonIgnore private final ClientLogger logger = new ClientLogger(QuotaProperties.class);
+
+    /*
+     * Resource quota limit properties.
+     */
+    @JsonProperty(value = "limit")
+    private LimitJsonObject limit;
+
+    /*
+     * The quota units, such as Count and Bytes. When requesting quota, use the
+     * **unit** value returned in the GET response in the request body of your
+     * PUT operation.
+     */
+    @JsonProperty(value = "unit", access = JsonProperty.Access.WRITE_ONLY)
+    private String unit;
+
+    /*
+     * Resource name provided by the resource provider. Use this property name
+     * when requesting quota.
+     */
+    @JsonProperty(value = "name")
+    private ResourceName name;
+
+    /*
+     * Resource type name.
+     */
+    @JsonProperty(value = "resourceType")
+    private String resourceType;
+
+    /*
+     * The time period over which the quota usage values are summarized. For
+     * example:
+     * *P1D (per one day)
+     * *PT1M (per one minute)
+     * *PT1S (per one second).
+     * This parameter is optional because, for some resources like compute, the
+     * period is irrelevant.
+     */
+    @JsonProperty(value = "quotaPeriod", access = JsonProperty.Access.WRITE_ONLY)
+    private String quotaPeriod;
+
+    /*
+     * States if quota can be requested for this resource.
+     */
+    @JsonProperty(value = "isQuotaApplicable", access = JsonProperty.Access.WRITE_ONLY)
+    private Boolean isQuotaApplicable;
+
+    /*
+     * Additional properties for the specific resource provider.
+     */
+    @JsonProperty(value = "properties")
+    private Object properties;
+
+    /**
+     * Get the limit property: Resource quota limit properties.
+     *
+     * @return the limit value.
+     */
+    public LimitJsonObject limit() {
+        return this.limit;
+    }
+
+    /**
+     * Set the limit property: Resource quota limit properties.
+     *
+     * @param limit the limit value to set.
+     * @return the QuotaProperties object itself.
+     */
+    public QuotaProperties withLimit(LimitJsonObject limit) {
+        this.limit = limit;
+        return this;
+    }
+
+    /**
+     * Get the unit property: The quota units, such as Count and Bytes. When requesting quota, use the **unit** value
+     * returned in the GET response in the request body of your PUT operation.
+     *
+     * @return the unit value.
+     */
+    public String unit() {
+        return this.unit;
+    }
+
+    /**
+     * Get the name property: Resource name provided by the resource provider. Use this property name when requesting
+     * quota.
+     *
+     * @return the name value.
+     */
+    public ResourceName name() {
+        return this.name;
+    }
+
+    /**
+     * Set the name property: Resource name provided by the resource provider. Use this property name when requesting
+     * quota.
+     *
+     * @param name the name value to set.
+     * @return the QuotaProperties object itself.
+     */
+    public QuotaProperties withName(ResourceName name) {
+        this.name = name;
+        return this;
+    }
+
+    /**
+     * Get the resourceType property: Resource type name.
+     *
+     * @return the resourceType value.
+     */
+    public String resourceType() {
+        return this.resourceType;
+    }
+
+    /**
+     * Set the resourceType property: Resource type name.
+     *
+     * @param resourceType the resourceType value to set.
+     * @return the QuotaProperties object itself.
+     */
+    public QuotaProperties withResourceType(String resourceType) {
+        this.resourceType = resourceType;
+        return this;
+    }
+
+    /**
+     * Get the quotaPeriod property: The time period over which the quota usage values are summarized. For example: *P1D
+     * (per one day) *PT1M (per one minute) *PT1S (per one second). This parameter is optional because, for some
+     * resources like compute, the period is irrelevant.
+     *
+     * @return the quotaPeriod value.
+     */
+    public String quotaPeriod() {
+        return this.quotaPeriod;
+    }
+
+    /**
+     * Get the isQuotaApplicable property: States if quota can be requested for this resource.
+     *
+     * @return the isQuotaApplicable value.
+     */
+    public Boolean isQuotaApplicable() {
+        return this.isQuotaApplicable;
+    }
+
+    /**
+     * Get the properties property: Additional properties for the specific resource provider.
+     *
+     * @return the properties value.
+     */
+    public Object properties() {
+        return this.properties;
+    }
+
+    /**
+     * Set the properties property: Additional properties for the specific resource provider.
+     *
+     * @param properties the properties value to set.
+     * @return the QuotaProperties object itself.
+     */
+    public QuotaProperties withProperties(Object properties) {
+        this.properties = properties;
+        return this;
+    }
+
+    /**
+     * Validates the instance.
+     *
+     * @throws IllegalArgumentException thrown if the instance is not valid.
+     */
+    public void validate() {
+        if (limit() != null) {
+            limit().validate();
+        }
+        if (name() != null) {
+            name().validate();
+        }
+    }
+}
diff --git a/sdk/quota/azure-resourcemanager-quota/src/main/java/com/azure/resourcemanager/quota/models/QuotaRequestDetails.java b/sdk/quota/azure-resourcemanager-quota/src/main/java/com/azure/resourcemanager/quota/models/QuotaRequestDetails.java
new file mode 100644
index 000000000000..53ac6d7c8e25
--- /dev/null
+++ b/sdk/quota/azure-resourcemanager-quota/src/main/java/com/azure/resourcemanager/quota/models/QuotaRequestDetails.java
@@ -0,0 +1,76 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.quota.models;
+
+import com.azure.resourcemanager.quota.fluent.models.QuotaRequestDetailsInner;
+import java.time.OffsetDateTime;
+import java.util.List;
+
+/** An immutable client-side representation of QuotaRequestDetails. */
+public interface QuotaRequestDetails {
+    /**
+     * Gets the id property: Quota request ID.
+     *
+     * @return the id value.
+     */
+    String id();
+
+    /**
+     * Gets the name property: Quota request name.
+     *
+     * @return the name value.
+     */
+    String name();
+
+    /**
+     * Gets the type property: Resource type. "Microsoft.Quota/quotas".
+     *
+     * @return the type value.
+     */
+    String type();
+
+    /**
+     * Gets the provisioningState property: The quota request status.
+     *
+     * @return the provisioningState value.
+     */
+    QuotaRequestState provisioningState();
+
+    /**
+     * Gets the message property: User-friendly status message.
+     *
+     * @return the message value.
+     */
+    String message();
+
+    /**
+     * Gets the error property: Error details of the quota request.
+     *
+     * @return the error value.
+     */
+    ServiceErrorDetail error();
+
+    /**
+     * Gets the requestSubmitTime property: The quota request submission time. The date conforms to the following format
+     * specified by the ISO 8601 standard: yyyy-MM-ddTHH:mm:ssZ.
+     *
+     * @return the requestSubmitTime value.
+     */
+    OffsetDateTime requestSubmitTime();
+
+    /**
+     * Gets the value property: Quota request details.
+     *
+     * @return the value value.
+     */
+    List value();
+
+    /**
+     * Gets the inner com.azure.resourcemanager.quota.fluent.models.QuotaRequestDetailsInner object.
+     *
+     * @return the inner object.
+     */
+    QuotaRequestDetailsInner innerModel();
+}
diff --git a/sdk/quota/azure-resourcemanager-quota/src/main/java/com/azure/resourcemanager/quota/models/QuotaRequestDetailsList.java b/sdk/quota/azure-resourcemanager-quota/src/main/java/com/azure/resourcemanager/quota/models/QuotaRequestDetailsList.java
new file mode 100644
index 000000000000..1ff93e8cef76
--- /dev/null
+++ b/sdk/quota/azure-resourcemanager-quota/src/main/java/com/azure/resourcemanager/quota/models/QuotaRequestDetailsList.java
@@ -0,0 +1,84 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.quota.models;
+
+import com.azure.core.annotation.Fluent;
+import com.azure.core.util.logging.ClientLogger;
+import com.azure.resourcemanager.quota.fluent.models.QuotaRequestDetailsInner;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import java.util.List;
+
+/** Quota request information. */
+@Fluent
+public final class QuotaRequestDetailsList {
+    @JsonIgnore private final ClientLogger logger = new ClientLogger(QuotaRequestDetailsList.class);
+
+    /*
+     * Quota request details.
+     */
+    @JsonProperty(value = "value")
+    private List value;
+
+    /*
+     * The URI for fetching the next page of quota limits. When there are no
+     * more pages, this string is null.
+     */
+    @JsonProperty(value = "nextLink")
+    private String nextLink;
+
+    /**
+     * Get the value property: Quota request details.
+     *
+     * @return the value value.
+     */
+    public List value() {
+        return this.value;
+    }
+
+    /**
+     * Set the value property: Quota request details.
+     *
+     * @param value the value value to set.
+     * @return the QuotaRequestDetailsList object itself.
+     */
+    public QuotaRequestDetailsList withValue(List value) {
+        this.value = value;
+        return this;
+    }
+
+    /**
+     * Get the nextLink property: The URI for fetching the next page of quota limits. When there are no more pages, this
+     * string is null.
+     *
+     * @return the nextLink value.
+     */
+    public String nextLink() {
+        return this.nextLink;
+    }
+
+    /**
+     * Set the nextLink property: The URI for fetching the next page of quota limits. When there are no more pages, this
+     * string is null.
+     *
+     * @param nextLink the nextLink value to set.
+     * @return the QuotaRequestDetailsList object itself.
+     */
+    public QuotaRequestDetailsList withNextLink(String nextLink) {
+        this.nextLink = nextLink;
+        return this;
+    }
+
+    /**
+     * Validates the instance.
+     *
+     * @throws IllegalArgumentException thrown if the instance is not valid.
+     */
+    public void validate() {
+        if (value() != null) {
+            value().forEach(e -> e.validate());
+        }
+    }
+}
diff --git a/sdk/quota/azure-resourcemanager-quota/src/main/java/com/azure/resourcemanager/quota/models/QuotaRequestState.java b/sdk/quota/azure-resourcemanager-quota/src/main/java/com/azure/resourcemanager/quota/models/QuotaRequestState.java
new file mode 100644
index 000000000000..32143beccd3d
--- /dev/null
+++ b/sdk/quota/azure-resourcemanager-quota/src/main/java/com/azure/resourcemanager/quota/models/QuotaRequestState.java
@@ -0,0 +1,43 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.quota.models;
+
+import com.azure.core.util.ExpandableStringEnum;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import java.util.Collection;
+
+/** Defines values for QuotaRequestState. */
+public final class QuotaRequestState extends ExpandableStringEnum {
+    /** Static value Accepted for QuotaRequestState. */
+    public static final QuotaRequestState ACCEPTED = fromString("Accepted");
+
+    /** Static value Invalid for QuotaRequestState. */
+    public static final QuotaRequestState INVALID = fromString("Invalid");
+
+    /** Static value Succeeded for QuotaRequestState. */
+    public static final QuotaRequestState SUCCEEDED = fromString("Succeeded");
+
+    /** Static value Failed for QuotaRequestState. */
+    public static final QuotaRequestState FAILED = fromString("Failed");
+
+    /** Static value InProgress for QuotaRequestState. */
+    public static final QuotaRequestState IN_PROGRESS = fromString("InProgress");
+
+    /**
+     * Creates or finds a QuotaRequestState from its string representation.
+     *
+     * @param name a name to look for.
+     * @return the corresponding QuotaRequestState.
+     */
+    @JsonCreator
+    public static QuotaRequestState fromString(String name) {
+        return fromString(name, QuotaRequestState.class);
+    }
+
+    /** @return known QuotaRequestState values. */
+    public static Collection values() {
+        return values(QuotaRequestState.class);
+    }
+}
diff --git a/sdk/quota/azure-resourcemanager-quota/src/main/java/com/azure/resourcemanager/quota/models/QuotaRequestStatus.java b/sdk/quota/azure-resourcemanager-quota/src/main/java/com/azure/resourcemanager/quota/models/QuotaRequestStatus.java
new file mode 100644
index 000000000000..db676473c83e
--- /dev/null
+++ b/sdk/quota/azure-resourcemanager-quota/src/main/java/com/azure/resourcemanager/quota/models/QuotaRequestStatus.java
@@ -0,0 +1,86 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.quota.models;
+
+import com.azure.core.http.rest.PagedIterable;
+import com.azure.core.http.rest.Response;
+import com.azure.core.util.Context;
+
+/** Resource collection API of QuotaRequestStatus. */
+public interface QuotaRequestStatus {
+    /**
+     * Get the quota request details and status by quota request ID for the resources of the resource provider at a
+     * specific location. The quota request ID **id** is returned in the response of the PUT operation.
+     *
+     * @param id Quota request ID.
+     * @param scope The target Azure resource URI. For example,
+     *     `/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/qms-test/providers/Microsoft.Batch/batchAccounts/testAccount/`.
+     *     This is the target Azure resource URI for the List GET operation. If a `{resourceName}` is added after
+     *     `/quotas`, then it's the target Azure resource URI in the GET operation for the specific resource.
+     * @throws IllegalArgumentException thrown if parameters fail the validation.
+     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+     * @return the quota request details and status by quota request ID for the resources of the resource provider at a
+     *     specific location.
+     */
+    QuotaRequestDetails get(String id, String scope);
+
+    /**
+     * Get the quota request details and status by quota request ID for the resources of the resource provider at a
+     * specific location. The quota request ID **id** is returned in the response of the PUT operation.
+     *
+     * @param id Quota request ID.
+     * @param scope The target Azure resource URI. For example,
+     *     `/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/qms-test/providers/Microsoft.Batch/batchAccounts/testAccount/`.
+     *     This is the target Azure resource URI for the List GET operation. If a `{resourceName}` is added after
+     *     `/quotas`, then it's the target Azure resource URI in the GET operation for the specific resource.
+     * @param context The context to associate with this operation.
+     * @throws IllegalArgumentException thrown if parameters fail the validation.
+     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+     * @return the quota request details and status by quota request ID for the resources of the resource provider at a
+     *     specific location.
+     */
+    Response getWithResponse(String id, String scope, Context context);
+
+    /**
+     * For the specified scope, get the current quota requests for a one year period ending at the time is made. Use the
+     * **oData** filter to select quota requests.
+     *
+     * @param scope The target Azure resource URI. For example,
+     *     `/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/qms-test/providers/Microsoft.Batch/batchAccounts/testAccount/`.
+     *     This is the target Azure resource URI for the List GET operation. If a `{resourceName}` is added after
+     *     `/quotas`, then it's the target Azure resource URI in the GET operation for the specific resource.
+     * @throws IllegalArgumentException thrown if parameters fail the validation.
+     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+     * @return quota request information.
+     */
+    PagedIterable list(String scope);
+
+    /**
+     * For the specified scope, get the current quota requests for a one year period ending at the time is made. Use the
+     * **oData** filter to select quota requests.
+     *
+     * @param scope The target Azure resource URI. For example,
+     *     `/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/qms-test/providers/Microsoft.Batch/batchAccounts/testAccount/`.
+     *     This is the target Azure resource URI for the List GET operation. If a `{resourceName}` is added after
+     *     `/quotas`, then it's the target Azure resource URI in the GET operation for the specific resource.
+     * @param filter | Field | Supported operators |---------------------|------------------------
+     *     |requestSubmitTime | ge, le, eq, gt, lt |provisioningState eq {QuotaRequestState} |resourceName eq
+     *     {resourceName}.
+     * @param top Number of records to return.
+     * @param skiptoken The **Skiptoken** parameter is used only if a previous operation returned a partial result. If a
+     *     previous response contains a **nextLink** element, its value includes a **skiptoken** parameter that
+     *     specifies a starting point to use for subsequent calls.
+     * @param context The context to associate with this operation.
+     * @throws IllegalArgumentException thrown if parameters fail the validation.
+     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+     * @return quota request information.
+     */
+    PagedIterable list(
+        String scope, String filter, Integer top, String skiptoken, Context context);
+}
diff --git a/sdk/quota/azure-resourcemanager-quota/src/main/java/com/azure/resourcemanager/quota/models/Quotas.java b/sdk/quota/azure-resourcemanager-quota/src/main/java/com/azure/resourcemanager/quota/models/Quotas.java
new file mode 100644
index 000000000000..cbcbcb41a60f
--- /dev/null
+++ b/sdk/quota/azure-resourcemanager-quota/src/main/java/com/azure/resourcemanager/quota/models/Quotas.java
@@ -0,0 +1,111 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.quota.models;
+
+import com.azure.core.http.rest.PagedIterable;
+import com.azure.core.http.rest.Response;
+import com.azure.core.util.Context;
+
+/** Resource collection API of Quotas. */
+public interface Quotas {
+    /**
+     * Get the quota limit of a resource. The response can be used to determine the remaining quota to calculate a new
+     * quota limit that can be submitted with a PUT request.
+     *
+     * @param resourceName Resource name for a given resource provider. For example: - SKU name for Microsoft.Compute -
+     *     SKU or TotalLowPriorityCores for Microsoft.MachineLearningServices For Microsoft.Network PublicIPAddresses.
+     * @param scope The target Azure resource URI. For example,
+     *     `/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/qms-test/providers/Microsoft.Batch/batchAccounts/testAccount/`.
+     *     This is the target Azure resource URI for the List GET operation. If a `{resourceName}` is added after
+     *     `/quotas`, then it's the target Azure resource URI in the GET operation for the specific resource.
+     * @throws IllegalArgumentException thrown if parameters fail the validation.
+     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+     * @return the quota limit of a resource.
+     */
+    CurrentQuotaLimitBase get(String resourceName, String scope);
+
+    /**
+     * Get the quota limit of a resource. The response can be used to determine the remaining quota to calculate a new
+     * quota limit that can be submitted with a PUT request.
+     *
+     * @param resourceName Resource name for a given resource provider. For example: - SKU name for Microsoft.Compute -
+     *     SKU or TotalLowPriorityCores for Microsoft.MachineLearningServices For Microsoft.Network PublicIPAddresses.
+     * @param scope The target Azure resource URI. For example,
+     *     `/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/qms-test/providers/Microsoft.Batch/batchAccounts/testAccount/`.
+     *     This is the target Azure resource URI for the List GET operation. If a `{resourceName}` is added after
+     *     `/quotas`, then it's the target Azure resource URI in the GET operation for the specific resource.
+     * @param context The context to associate with this operation.
+     * @throws IllegalArgumentException thrown if parameters fail the validation.
+     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+     * @return the quota limit of a resource.
+     */
+    Response getWithResponse(String resourceName, String scope, Context context);
+
+    /**
+     * Get a list of current quota limits of all resources for the specified scope. The response from this GET operation
+     * can be leveraged to submit requests to update a quota.
+     *
+     * @param scope The target Azure resource URI. For example,
+     *     `/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/qms-test/providers/Microsoft.Batch/batchAccounts/testAccount/`.
+     *     This is the target Azure resource URI for the List GET operation. If a `{resourceName}` is added after
+     *     `/quotas`, then it's the target Azure resource URI in the GET operation for the specific resource.
+     * @throws IllegalArgumentException thrown if parameters fail the validation.
+     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+     * @return a list of current quota limits of all resources for the specified scope.
+     */
+    PagedIterable list(String scope);
+
+    /**
+     * Get a list of current quota limits of all resources for the specified scope. The response from this GET operation
+     * can be leveraged to submit requests to update a quota.
+     *
+     * @param scope The target Azure resource URI. For example,
+     *     `/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/qms-test/providers/Microsoft.Batch/batchAccounts/testAccount/`.
+     *     This is the target Azure resource URI for the List GET operation. If a `{resourceName}` is added after
+     *     `/quotas`, then it's the target Azure resource URI in the GET operation for the specific resource.
+     * @param context The context to associate with this operation.
+     * @throws IllegalArgumentException thrown if parameters fail the validation.
+     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+     * @return a list of current quota limits of all resources for the specified scope.
+     */
+    PagedIterable list(String scope, Context context);
+
+    /**
+     * Get the quota limit of a resource. The response can be used to determine the remaining quota to calculate a new
+     * quota limit that can be submitted with a PUT request.
+     *
+     * @param id the resource ID.
+     * @throws IllegalArgumentException thrown if parameters fail the validation.
+     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+     * @return the quota limit of a resource.
+     */
+    CurrentQuotaLimitBase getById(String id);
+
+    /**
+     * Get the quota limit of a resource. The response can be used to determine the remaining quota to calculate a new
+     * quota limit that can be submitted with a PUT request.
+     *
+     * @param id the resource ID.
+     * @param context The context to associate with this operation.
+     * @throws IllegalArgumentException thrown if parameters fail the validation.
+     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+     * @return the quota limit of a resource.
+     */
+    Response getByIdWithResponse(String id, Context context);
+
+    /**
+     * Begins definition for a new CurrentQuotaLimitBase resource.
+     *
+     * @param name resource name.
+     * @return the first stage of the new CurrentQuotaLimitBase definition.
+     */
+    CurrentQuotaLimitBase.DefinitionStages.Blank define(String name);
+}
diff --git a/sdk/quota/azure-resourcemanager-quota/src/main/java/com/azure/resourcemanager/quota/models/QuotasGetHeaders.java b/sdk/quota/azure-resourcemanager-quota/src/main/java/com/azure/resourcemanager/quota/models/QuotasGetHeaders.java
new file mode 100644
index 000000000000..ee95a9ffa07c
--- /dev/null
+++ b/sdk/quota/azure-resourcemanager-quota/src/main/java/com/azure/resourcemanager/quota/models/QuotasGetHeaders.java
@@ -0,0 +1,50 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.quota.models;
+
+import com.azure.core.annotation.Fluent;
+import com.azure.core.util.logging.ClientLogger;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/** The QuotasGetHeaders model. */
+@Fluent
+public final class QuotasGetHeaders {
+    @JsonIgnore private final ClientLogger logger = new ClientLogger(QuotasGetHeaders.class);
+
+    /*
+     * The Etag property.
+     */
+    @JsonProperty(value = "Etag")
+    private String etag;
+
+    /**
+     * Get the etag property: The Etag property.
+     *
+     * @return the etag value.
+     */
+    public String etag() {
+        return this.etag;
+    }
+
+    /**
+     * Set the etag property: The Etag property.
+     *
+     * @param etag the etag value to set.
+     * @return the QuotasGetHeaders object itself.
+     */
+    public QuotasGetHeaders withEtag(String etag) {
+        this.etag = etag;
+        return this;
+    }
+
+    /**
+     * Validates the instance.
+     *
+     * @throws IllegalArgumentException thrown if the instance is not valid.
+     */
+    public void validate() {
+    }
+}
diff --git a/sdk/quota/azure-resourcemanager-quota/src/main/java/com/azure/resourcemanager/quota/models/QuotasGetResponse.java b/sdk/quota/azure-resourcemanager-quota/src/main/java/com/azure/resourcemanager/quota/models/QuotasGetResponse.java
new file mode 100644
index 000000000000..d5534923de5a
--- /dev/null
+++ b/sdk/quota/azure-resourcemanager-quota/src/main/java/com/azure/resourcemanager/quota/models/QuotasGetResponse.java
@@ -0,0 +1,37 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.quota.models;
+
+import com.azure.core.http.HttpHeaders;
+import com.azure.core.http.HttpRequest;
+import com.azure.core.http.rest.ResponseBase;
+import com.azure.resourcemanager.quota.fluent.models.CurrentQuotaLimitBaseInner;
+
+/** Contains all response data for the get operation. */
+public final class QuotasGetResponse extends ResponseBase {
+    /**
+     * Creates an instance of QuotasGetResponse.
+     *
+     * @param request the request which resulted in this QuotasGetResponse.
+     * @param statusCode the status code of the HTTP response.
+     * @param rawHeaders the raw headers of the HTTP response.
+     * @param value the deserialized value of the HTTP response.
+     * @param headers the deserialized headers of the HTTP response.
+     */
+    public QuotasGetResponse(
+        HttpRequest request,
+        int statusCode,
+        HttpHeaders rawHeaders,
+        CurrentQuotaLimitBaseInner value,
+        QuotasGetHeaders headers) {
+        super(request, statusCode, rawHeaders, value, headers);
+    }
+
+    /** @return the deserialized response body. */
+    @Override
+    public CurrentQuotaLimitBaseInner getValue() {
+        return super.getValue();
+    }
+}
diff --git a/sdk/quota/azure-resourcemanager-quota/src/main/java/com/azure/resourcemanager/quota/models/QuotasListHeaders.java b/sdk/quota/azure-resourcemanager-quota/src/main/java/com/azure/resourcemanager/quota/models/QuotasListHeaders.java
new file mode 100644
index 000000000000..a73b3373e416
--- /dev/null
+++ b/sdk/quota/azure-resourcemanager-quota/src/main/java/com/azure/resourcemanager/quota/models/QuotasListHeaders.java
@@ -0,0 +1,50 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.quota.models;
+
+import com.azure.core.annotation.Fluent;
+import com.azure.core.util.logging.ClientLogger;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/** The QuotasListHeaders model. */
+@Fluent
+public final class QuotasListHeaders {
+    @JsonIgnore private final ClientLogger logger = new ClientLogger(QuotasListHeaders.class);
+
+    /*
+     * The Etag property.
+     */
+    @JsonProperty(value = "Etag")
+    private String etag;
+
+    /**
+     * Get the etag property: The Etag property.
+     *
+     * @return the etag value.
+     */
+    public String etag() {
+        return this.etag;
+    }
+
+    /**
+     * Set the etag property: The Etag property.
+     *
+     * @param etag the etag value to set.
+     * @return the QuotasListHeaders object itself.
+     */
+    public QuotasListHeaders withEtag(String etag) {
+        this.etag = etag;
+        return this;
+    }
+
+    /**
+     * Validates the instance.
+     *
+     * @throws IllegalArgumentException thrown if the instance is not valid.
+     */
+    public void validate() {
+    }
+}
diff --git a/sdk/quota/azure-resourcemanager-quota/src/main/java/com/azure/resourcemanager/quota/models/QuotasListNextHeaders.java b/sdk/quota/azure-resourcemanager-quota/src/main/java/com/azure/resourcemanager/quota/models/QuotasListNextHeaders.java
new file mode 100644
index 000000000000..018bb1bd9c1e
--- /dev/null
+++ b/sdk/quota/azure-resourcemanager-quota/src/main/java/com/azure/resourcemanager/quota/models/QuotasListNextHeaders.java
@@ -0,0 +1,50 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.quota.models;
+
+import com.azure.core.annotation.Fluent;
+import com.azure.core.util.logging.ClientLogger;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/** The QuotasListNextHeaders model. */
+@Fluent
+public final class QuotasListNextHeaders {
+    @JsonIgnore private final ClientLogger logger = new ClientLogger(QuotasListNextHeaders.class);
+
+    /*
+     * The Etag property.
+     */
+    @JsonProperty(value = "Etag")
+    private String etag;
+
+    /**
+     * Get the etag property: The Etag property.
+     *
+     * @return the etag value.
+     */
+    public String etag() {
+        return this.etag;
+    }
+
+    /**
+     * Set the etag property: The Etag property.
+     *
+     * @param etag the etag value to set.
+     * @return the QuotasListNextHeaders object itself.
+     */
+    public QuotasListNextHeaders withEtag(String etag) {
+        this.etag = etag;
+        return this;
+    }
+
+    /**
+     * Validates the instance.
+     *
+     * @throws IllegalArgumentException thrown if the instance is not valid.
+     */
+    public void validate() {
+    }
+}
diff --git a/sdk/quota/azure-resourcemanager-quota/src/main/java/com/azure/resourcemanager/quota/models/QuotasListNextResponse.java b/sdk/quota/azure-resourcemanager-quota/src/main/java/com/azure/resourcemanager/quota/models/QuotasListNextResponse.java
new file mode 100644
index 000000000000..b8fa7412221c
--- /dev/null
+++ b/sdk/quota/azure-resourcemanager-quota/src/main/java/com/azure/resourcemanager/quota/models/QuotasListNextResponse.java
@@ -0,0 +1,32 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.quota.models;
+
+import com.azure.core.http.HttpHeaders;
+import com.azure.core.http.HttpRequest;
+import com.azure.core.http.rest.ResponseBase;
+
+/** Contains all response data for the listNext operation. */
+public final class QuotasListNextResponse extends ResponseBase {
+    /**
+     * Creates an instance of QuotasListNextResponse.
+     *
+     * @param request the request which resulted in this QuotasListNextResponse.
+     * @param statusCode the status code of the HTTP response.
+     * @param rawHeaders the raw headers of the HTTP response.
+     * @param value the deserialized value of the HTTP response.
+     * @param headers the deserialized headers of the HTTP response.
+     */
+    public QuotasListNextResponse(
+        HttpRequest request, int statusCode, HttpHeaders rawHeaders, QuotaLimits value, QuotasListNextHeaders headers) {
+        super(request, statusCode, rawHeaders, value, headers);
+    }
+
+    /** @return the deserialized response body. */
+    @Override
+    public QuotaLimits getValue() {
+        return super.getValue();
+    }
+}
diff --git a/sdk/quota/azure-resourcemanager-quota/src/main/java/com/azure/resourcemanager/quota/models/QuotasListResponse.java b/sdk/quota/azure-resourcemanager-quota/src/main/java/com/azure/resourcemanager/quota/models/QuotasListResponse.java
new file mode 100644
index 000000000000..b0437fb25589
--- /dev/null
+++ b/sdk/quota/azure-resourcemanager-quota/src/main/java/com/azure/resourcemanager/quota/models/QuotasListResponse.java
@@ -0,0 +1,32 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.quota.models;
+
+import com.azure.core.http.HttpHeaders;
+import com.azure.core.http.HttpRequest;
+import com.azure.core.http.rest.ResponseBase;
+
+/** Contains all response data for the list operation. */
+public final class QuotasListResponse extends ResponseBase {
+    /**
+     * Creates an instance of QuotasListResponse.
+     *
+     * @param request the request which resulted in this QuotasListResponse.
+     * @param statusCode the status code of the HTTP response.
+     * @param rawHeaders the raw headers of the HTTP response.
+     * @param value the deserialized value of the HTTP response.
+     * @param headers the deserialized headers of the HTTP response.
+     */
+    public QuotasListResponse(
+        HttpRequest request, int statusCode, HttpHeaders rawHeaders, QuotaLimits value, QuotasListHeaders headers) {
+        super(request, statusCode, rawHeaders, value, headers);
+    }
+
+    /** @return the deserialized response body. */
+    @Override
+    public QuotaLimits getValue() {
+        return super.getValue();
+    }
+}
diff --git a/sdk/quota/azure-resourcemanager-quota/src/main/java/com/azure/resourcemanager/quota/models/ResourceName.java b/sdk/quota/azure-resourcemanager-quota/src/main/java/com/azure/resourcemanager/quota/models/ResourceName.java
new file mode 100644
index 000000000000..d3e34eec6145
--- /dev/null
+++ b/sdk/quota/azure-resourcemanager-quota/src/main/java/com/azure/resourcemanager/quota/models/ResourceName.java
@@ -0,0 +1,65 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.quota.models;
+
+import com.azure.core.annotation.Fluent;
+import com.azure.core.util.logging.ClientLogger;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/** Name of the resource provided by the resource Provider. When requesting quota, use this property name. */
+@Fluent
+public final class ResourceName {
+    @JsonIgnore private final ClientLogger logger = new ClientLogger(ResourceName.class);
+
+    /*
+     * Resource name.
+     */
+    @JsonProperty(value = "value")
+    private String value;
+
+    /*
+     * Resource display name.
+     */
+    @JsonProperty(value = "localizedValue", access = JsonProperty.Access.WRITE_ONLY)
+    private String localizedValue;
+
+    /**
+     * Get the value property: Resource name.
+     *
+     * @return the value value.
+     */
+    public String value() {
+        return this.value;
+    }
+
+    /**
+     * Set the value property: Resource name.
+     *
+     * @param value the value value to set.
+     * @return the ResourceName object itself.
+     */
+    public ResourceName withValue(String value) {
+        this.value = value;
+        return this;
+    }
+
+    /**
+     * Get the localizedValue property: Resource display name.
+     *
+     * @return the localizedValue value.
+     */
+    public String localizedValue() {
+        return this.localizedValue;
+    }
+
+    /**
+     * Validates the instance.
+     *
+     * @throws IllegalArgumentException thrown if the instance is not valid.
+     */
+    public void validate() {
+    }
+}
diff --git a/sdk/quota/azure-resourcemanager-quota/src/main/java/com/azure/resourcemanager/quota/models/ServiceErrorDetail.java b/sdk/quota/azure-resourcemanager-quota/src/main/java/com/azure/resourcemanager/quota/models/ServiceErrorDetail.java
new file mode 100644
index 000000000000..e2038ff844b4
--- /dev/null
+++ b/sdk/quota/azure-resourcemanager-quota/src/main/java/com/azure/resourcemanager/quota/models/ServiceErrorDetail.java
@@ -0,0 +1,54 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.quota.models;
+
+import com.azure.core.annotation.Immutable;
+import com.azure.core.util.logging.ClientLogger;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/** Error details. */
+@Immutable
+public final class ServiceErrorDetail {
+    @JsonIgnore private final ClientLogger logger = new ClientLogger(ServiceErrorDetail.class);
+
+    /*
+     * Error code.
+     */
+    @JsonProperty(value = "code", access = JsonProperty.Access.WRITE_ONLY)
+    private String code;
+
+    /*
+     * Error message.
+     */
+    @JsonProperty(value = "message", access = JsonProperty.Access.WRITE_ONLY)
+    private String message;
+
+    /**
+     * Get the code property: Error code.
+     *
+     * @return the code value.
+     */
+    public String code() {
+        return this.code;
+    }
+
+    /**
+     * Get the message property: Error message.
+     *
+     * @return the message value.
+     */
+    public String message() {
+        return this.message;
+    }
+
+    /**
+     * Validates the instance.
+     *
+     * @throws IllegalArgumentException thrown if the instance is not valid.
+     */
+    public void validate() {
+    }
+}
diff --git a/sdk/quota/azure-resourcemanager-quota/src/main/java/com/azure/resourcemanager/quota/models/SubRequest.java b/sdk/quota/azure-resourcemanager-quota/src/main/java/com/azure/resourcemanager/quota/models/SubRequest.java
new file mode 100644
index 000000000000..01d50fe11b91
--- /dev/null
+++ b/sdk/quota/azure-resourcemanager-quota/src/main/java/com/azure/resourcemanager/quota/models/SubRequest.java
@@ -0,0 +1,172 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.quota.models;
+
+import com.azure.core.annotation.Fluent;
+import com.azure.core.util.logging.ClientLogger;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/** Request property. */
+@Fluent
+public final class SubRequest {
+    @JsonIgnore private final ClientLogger logger = new ClientLogger(SubRequest.class);
+
+    /*
+     * Resource name.
+     */
+    @JsonProperty(value = "name")
+    private ResourceName name;
+
+    /*
+     * Resource type for which the quota properties were requested.
+     */
+    @JsonProperty(value = "resourceType", access = JsonProperty.Access.WRITE_ONLY)
+    private String resourceType;
+
+    /*
+     * Quota limit units, such as Count and Bytes. When requesting quota, use
+     * the **unit** value returned in the GET response in the request body of
+     * your PUT operation.
+     */
+    @JsonProperty(value = "unit")
+    private String unit;
+
+    /*
+     * The quota request status.
+     */
+    @JsonProperty(value = "provisioningState", access = JsonProperty.Access.WRITE_ONLY)
+    private QuotaRequestState provisioningState;
+
+    /*
+     * User-friendly status message.
+     */
+    @JsonProperty(value = "message", access = JsonProperty.Access.WRITE_ONLY)
+    private String message;
+
+    /*
+     * Quota request ID.
+     */
+    @JsonProperty(value = "subRequestId", access = JsonProperty.Access.WRITE_ONLY)
+    private String subRequestId;
+
+    /*
+     * Resource quota limit properties.
+     */
+    @JsonProperty(value = "limit")
+    private LimitJsonObject limit;
+
+    /**
+     * Get the name property: Resource name.
+     *
+     * @return the name value.
+     */
+    public ResourceName name() {
+        return this.name;
+    }
+
+    /**
+     * Set the name property: Resource name.
+     *
+     * @param name the name value to set.
+     * @return the SubRequest object itself.
+     */
+    public SubRequest withName(ResourceName name) {
+        this.name = name;
+        return this;
+    }
+
+    /**
+     * Get the resourceType property: Resource type for which the quota properties were requested.
+     *
+     * @return the resourceType value.
+     */
+    public String resourceType() {
+        return this.resourceType;
+    }
+
+    /**
+     * Get the unit property: Quota limit units, such as Count and Bytes. When requesting quota, use the **unit** value
+     * returned in the GET response in the request body of your PUT operation.
+     *
+     * @return the unit value.
+     */
+    public String unit() {
+        return this.unit;
+    }
+
+    /**
+     * Set the unit property: Quota limit units, such as Count and Bytes. When requesting quota, use the **unit** value
+     * returned in the GET response in the request body of your PUT operation.
+     *
+     * @param unit the unit value to set.
+     * @return the SubRequest object itself.
+     */
+    public SubRequest withUnit(String unit) {
+        this.unit = unit;
+        return this;
+    }
+
+    /**
+     * Get the provisioningState property: The quota request status.
+     *
+     * @return the provisioningState value.
+     */
+    public QuotaRequestState provisioningState() {
+        return this.provisioningState;
+    }
+
+    /**
+     * Get the message property: User-friendly status message.
+     *
+     * @return the message value.
+     */
+    public String message() {
+        return this.message;
+    }
+
+    /**
+     * Get the subRequestId property: Quota request ID.
+     *
+     * @return the subRequestId value.
+     */
+    public String subRequestId() {
+        return this.subRequestId;
+    }
+
+    /**
+     * Get the limit property: Resource quota limit properties.
+     *
+     * @return the limit value.
+     */
+    public LimitJsonObject limit() {
+        return this.limit;
+    }
+
+    /**
+     * Set the limit property: Resource quota limit properties.
+     *
+     * @param limit the limit value to set.
+     * @return the SubRequest object itself.
+     */
+    public SubRequest withLimit(LimitJsonObject limit) {
+        this.limit = limit;
+        return this;
+    }
+
+    /**
+     * Validates the instance.
+     *
+     * @throws IllegalArgumentException thrown if the instance is not valid.
+     */
+    public void validate() {
+        if (name() != null) {
+            name().validate();
+        }
+        if (limit() != null) {
+            limit().validate();
+        }
+    }
+}
diff --git a/sdk/quota/azure-resourcemanager-quota/src/main/java/com/azure/resourcemanager/quota/models/Usages.java b/sdk/quota/azure-resourcemanager-quota/src/main/java/com/azure/resourcemanager/quota/models/Usages.java
new file mode 100644
index 000000000000..c54a52fb71c6
--- /dev/null
+++ b/sdk/quota/azure-resourcemanager-quota/src/main/java/com/azure/resourcemanager/quota/models/Usages.java
@@ -0,0 +1,74 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.quota.models;
+
+import com.azure.core.http.rest.PagedIterable;
+import com.azure.core.http.rest.Response;
+import com.azure.core.util.Context;
+
+/** Resource collection API of Usages. */
+public interface Usages {
+    /**
+     * Get the current usage of a resource.
+     *
+     * @param resourceName Resource name for a given resource provider. For example: - SKU name for Microsoft.Compute -
+     *     SKU or TotalLowPriorityCores for Microsoft.MachineLearningServices For Microsoft.Network PublicIPAddresses.
+     * @param scope The target Azure resource URI. For example,
+     *     `/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/qms-test/providers/Microsoft.Batch/batchAccounts/testAccount/`.
+     *     This is the target Azure resource URI for the List GET operation. If a `{resourceName}` is added after
+     *     `/quotas`, then it's the target Azure resource URI in the GET operation for the specific resource.
+     * @throws IllegalArgumentException thrown if parameters fail the validation.
+     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+     * @return the current usage of a resource.
+     */
+    CurrentUsagesBase get(String resourceName, String scope);
+
+    /**
+     * Get the current usage of a resource.
+     *
+     * @param resourceName Resource name for a given resource provider. For example: - SKU name for Microsoft.Compute -
+     *     SKU or TotalLowPriorityCores for Microsoft.MachineLearningServices For Microsoft.Network PublicIPAddresses.
+     * @param scope The target Azure resource URI. For example,
+     *     `/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/qms-test/providers/Microsoft.Batch/batchAccounts/testAccount/`.
+     *     This is the target Azure resource URI for the List GET operation. If a `{resourceName}` is added after
+     *     `/quotas`, then it's the target Azure resource URI in the GET operation for the specific resource.
+     * @param context The context to associate with this operation.
+     * @throws IllegalArgumentException thrown if parameters fail the validation.
+     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+     * @return the current usage of a resource.
+     */
+    Response getWithResponse(String resourceName, String scope, Context context);
+
+    /**
+     * Get a list of current usage for all resources for the scope specified.
+     *
+     * @param scope The target Azure resource URI. For example,
+     *     `/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/qms-test/providers/Microsoft.Batch/batchAccounts/testAccount/`.
+     *     This is the target Azure resource URI for the List GET operation. If a `{resourceName}` is added after
+     *     `/quotas`, then it's the target Azure resource URI in the GET operation for the specific resource.
+     * @throws IllegalArgumentException thrown if parameters fail the validation.
+     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+     * @return a list of current usage for all resources for the scope specified.
+     */
+    PagedIterable list(String scope);
+
+    /**
+     * Get a list of current usage for all resources for the scope specified.
+     *
+     * @param scope The target Azure resource URI. For example,
+     *     `/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/qms-test/providers/Microsoft.Batch/batchAccounts/testAccount/`.
+     *     This is the target Azure resource URI for the List GET operation. If a `{resourceName}` is added after
+     *     `/quotas`, then it's the target Azure resource URI in the GET operation for the specific resource.
+     * @param context The context to associate with this operation.
+     * @throws IllegalArgumentException thrown if parameters fail the validation.
+     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+     * @return a list of current usage for all resources for the scope specified.
+     */
+    PagedIterable list(String scope, Context context);
+}
diff --git a/sdk/quota/azure-resourcemanager-quota/src/main/java/com/azure/resourcemanager/quota/models/UsagesGetHeaders.java b/sdk/quota/azure-resourcemanager-quota/src/main/java/com/azure/resourcemanager/quota/models/UsagesGetHeaders.java
new file mode 100644
index 000000000000..b5f5379a66c1
--- /dev/null
+++ b/sdk/quota/azure-resourcemanager-quota/src/main/java/com/azure/resourcemanager/quota/models/UsagesGetHeaders.java
@@ -0,0 +1,50 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.quota.models;
+
+import com.azure.core.annotation.Fluent;
+import com.azure.core.util.logging.ClientLogger;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/** The UsagesGetHeaders model. */
+@Fluent
+public final class UsagesGetHeaders {
+    @JsonIgnore private final ClientLogger logger = new ClientLogger(UsagesGetHeaders.class);
+
+    /*
+     * The Etag property.
+     */
+    @JsonProperty(value = "Etag")
+    private String etag;
+
+    /**
+     * Get the etag property: The Etag property.
+     *
+     * @return the etag value.
+     */
+    public String etag() {
+        return this.etag;
+    }
+
+    /**
+     * Set the etag property: The Etag property.
+     *
+     * @param etag the etag value to set.
+     * @return the UsagesGetHeaders object itself.
+     */
+    public UsagesGetHeaders withEtag(String etag) {
+        this.etag = etag;
+        return this;
+    }
+
+    /**
+     * Validates the instance.
+     *
+     * @throws IllegalArgumentException thrown if the instance is not valid.
+     */
+    public void validate() {
+    }
+}
diff --git a/sdk/quota/azure-resourcemanager-quota/src/main/java/com/azure/resourcemanager/quota/models/UsagesGetResponse.java b/sdk/quota/azure-resourcemanager-quota/src/main/java/com/azure/resourcemanager/quota/models/UsagesGetResponse.java
new file mode 100644
index 000000000000..e827afcc47bd
--- /dev/null
+++ b/sdk/quota/azure-resourcemanager-quota/src/main/java/com/azure/resourcemanager/quota/models/UsagesGetResponse.java
@@ -0,0 +1,37 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.quota.models;
+
+import com.azure.core.http.HttpHeaders;
+import com.azure.core.http.HttpRequest;
+import com.azure.core.http.rest.ResponseBase;
+import com.azure.resourcemanager.quota.fluent.models.CurrentUsagesBaseInner;
+
+/** Contains all response data for the get operation. */
+public final class UsagesGetResponse extends ResponseBase {
+    /**
+     * Creates an instance of UsagesGetResponse.
+     *
+     * @param request the request which resulted in this UsagesGetResponse.
+     * @param statusCode the status code of the HTTP response.
+     * @param rawHeaders the raw headers of the HTTP response.
+     * @param value the deserialized value of the HTTP response.
+     * @param headers the deserialized headers of the HTTP response.
+     */
+    public UsagesGetResponse(
+        HttpRequest request,
+        int statusCode,
+        HttpHeaders rawHeaders,
+        CurrentUsagesBaseInner value,
+        UsagesGetHeaders headers) {
+        super(request, statusCode, rawHeaders, value, headers);
+    }
+
+    /** @return the deserialized response body. */
+    @Override
+    public CurrentUsagesBaseInner getValue() {
+        return super.getValue();
+    }
+}
diff --git a/sdk/quota/azure-resourcemanager-quota/src/main/java/com/azure/resourcemanager/quota/models/UsagesLimits.java b/sdk/quota/azure-resourcemanager-quota/src/main/java/com/azure/resourcemanager/quota/models/UsagesLimits.java
new file mode 100644
index 000000000000..31fe3fb4dd3c
--- /dev/null
+++ b/sdk/quota/azure-resourcemanager-quota/src/main/java/com/azure/resourcemanager/quota/models/UsagesLimits.java
@@ -0,0 +1,84 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.quota.models;
+
+import com.azure.core.annotation.Fluent;
+import com.azure.core.util.logging.ClientLogger;
+import com.azure.resourcemanager.quota.fluent.models.CurrentUsagesBaseInner;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import java.util.List;
+
+/** Quota limits. */
+@Fluent
+public final class UsagesLimits {
+    @JsonIgnore private final ClientLogger logger = new ClientLogger(UsagesLimits.class);
+
+    /*
+     * List of quota limits.
+     */
+    @JsonProperty(value = "value")
+    private List value;
+
+    /*
+     * The URI used to fetch the next page of quota limits. When there are no
+     * more pages, this is null.
+     */
+    @JsonProperty(value = "nextLink")
+    private String nextLink;
+
+    /**
+     * Get the value property: List of quota limits.
+     *
+     * @return the value value.
+     */
+    public List value() {
+        return this.value;
+    }
+
+    /**
+     * Set the value property: List of quota limits.
+     *
+     * @param value the value value to set.
+     * @return the UsagesLimits object itself.
+     */
+    public UsagesLimits withValue(List value) {
+        this.value = value;
+        return this;
+    }
+
+    /**
+     * Get the nextLink property: The URI used to fetch the next page of quota limits. When there are no more pages,
+     * this is null.
+     *
+     * @return the nextLink value.
+     */
+    public String nextLink() {
+        return this.nextLink;
+    }
+
+    /**
+     * Set the nextLink property: The URI used to fetch the next page of quota limits. When there are no more pages,
+     * this is null.
+     *
+     * @param nextLink the nextLink value to set.
+     * @return the UsagesLimits object itself.
+     */
+    public UsagesLimits withNextLink(String nextLink) {
+        this.nextLink = nextLink;
+        return this;
+    }
+
+    /**
+     * Validates the instance.
+     *
+     * @throws IllegalArgumentException thrown if the instance is not valid.
+     */
+    public void validate() {
+        if (value() != null) {
+            value().forEach(e -> e.validate());
+        }
+    }
+}
diff --git a/sdk/quota/azure-resourcemanager-quota/src/main/java/com/azure/resourcemanager/quota/models/UsagesListHeaders.java b/sdk/quota/azure-resourcemanager-quota/src/main/java/com/azure/resourcemanager/quota/models/UsagesListHeaders.java
new file mode 100644
index 000000000000..d8050885e947
--- /dev/null
+++ b/sdk/quota/azure-resourcemanager-quota/src/main/java/com/azure/resourcemanager/quota/models/UsagesListHeaders.java
@@ -0,0 +1,50 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.quota.models;
+
+import com.azure.core.annotation.Fluent;
+import com.azure.core.util.logging.ClientLogger;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/** The UsagesListHeaders model. */
+@Fluent
+public final class UsagesListHeaders {
+    @JsonIgnore private final ClientLogger logger = new ClientLogger(UsagesListHeaders.class);
+
+    /*
+     * The Etag property.
+     */
+    @JsonProperty(value = "Etag")
+    private String etag;
+
+    /**
+     * Get the etag property: The Etag property.
+     *
+     * @return the etag value.
+     */
+    public String etag() {
+        return this.etag;
+    }
+
+    /**
+     * Set the etag property: The Etag property.
+     *
+     * @param etag the etag value to set.
+     * @return the UsagesListHeaders object itself.
+     */
+    public UsagesListHeaders withEtag(String etag) {
+        this.etag = etag;
+        return this;
+    }
+
+    /**
+     * Validates the instance.
+     *
+     * @throws IllegalArgumentException thrown if the instance is not valid.
+     */
+    public void validate() {
+    }
+}
diff --git a/sdk/quota/azure-resourcemanager-quota/src/main/java/com/azure/resourcemanager/quota/models/UsagesListNextHeaders.java b/sdk/quota/azure-resourcemanager-quota/src/main/java/com/azure/resourcemanager/quota/models/UsagesListNextHeaders.java
new file mode 100644
index 000000000000..9516de7ad725
--- /dev/null
+++ b/sdk/quota/azure-resourcemanager-quota/src/main/java/com/azure/resourcemanager/quota/models/UsagesListNextHeaders.java
@@ -0,0 +1,50 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.quota.models;
+
+import com.azure.core.annotation.Fluent;
+import com.azure.core.util.logging.ClientLogger;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/** The UsagesListNextHeaders model. */
+@Fluent
+public final class UsagesListNextHeaders {
+    @JsonIgnore private final ClientLogger logger = new ClientLogger(UsagesListNextHeaders.class);
+
+    /*
+     * The Etag property.
+     */
+    @JsonProperty(value = "Etag")
+    private String etag;
+
+    /**
+     * Get the etag property: The Etag property.
+     *
+     * @return the etag value.
+     */
+    public String etag() {
+        return this.etag;
+    }
+
+    /**
+     * Set the etag property: The Etag property.
+     *
+     * @param etag the etag value to set.
+     * @return the UsagesListNextHeaders object itself.
+     */
+    public UsagesListNextHeaders withEtag(String etag) {
+        this.etag = etag;
+        return this;
+    }
+
+    /**
+     * Validates the instance.
+     *
+     * @throws IllegalArgumentException thrown if the instance is not valid.
+     */
+    public void validate() {
+    }
+}
diff --git a/sdk/quota/azure-resourcemanager-quota/src/main/java/com/azure/resourcemanager/quota/models/UsagesListNextResponse.java b/sdk/quota/azure-resourcemanager-quota/src/main/java/com/azure/resourcemanager/quota/models/UsagesListNextResponse.java
new file mode 100644
index 000000000000..7f7ef3b7cff1
--- /dev/null
+++ b/sdk/quota/azure-resourcemanager-quota/src/main/java/com/azure/resourcemanager/quota/models/UsagesListNextResponse.java
@@ -0,0 +1,36 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.quota.models;
+
+import com.azure.core.http.HttpHeaders;
+import com.azure.core.http.HttpRequest;
+import com.azure.core.http.rest.ResponseBase;
+
+/** Contains all response data for the listNext operation. */
+public final class UsagesListNextResponse extends ResponseBase {
+    /**
+     * Creates an instance of UsagesListNextResponse.
+     *
+     * @param request the request which resulted in this UsagesListNextResponse.
+     * @param statusCode the status code of the HTTP response.
+     * @param rawHeaders the raw headers of the HTTP response.
+     * @param value the deserialized value of the HTTP response.
+     * @param headers the deserialized headers of the HTTP response.
+     */
+    public UsagesListNextResponse(
+        HttpRequest request,
+        int statusCode,
+        HttpHeaders rawHeaders,
+        UsagesLimits value,
+        UsagesListNextHeaders headers) {
+        super(request, statusCode, rawHeaders, value, headers);
+    }
+
+    /** @return the deserialized response body. */
+    @Override
+    public UsagesLimits getValue() {
+        return super.getValue();
+    }
+}
diff --git a/sdk/quota/azure-resourcemanager-quota/src/main/java/com/azure/resourcemanager/quota/models/UsagesListResponse.java b/sdk/quota/azure-resourcemanager-quota/src/main/java/com/azure/resourcemanager/quota/models/UsagesListResponse.java
new file mode 100644
index 000000000000..65c6d29e22ff
--- /dev/null
+++ b/sdk/quota/azure-resourcemanager-quota/src/main/java/com/azure/resourcemanager/quota/models/UsagesListResponse.java
@@ -0,0 +1,32 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.quota.models;
+
+import com.azure.core.http.HttpHeaders;
+import com.azure.core.http.HttpRequest;
+import com.azure.core.http.rest.ResponseBase;
+
+/** Contains all response data for the list operation. */
+public final class UsagesListResponse extends ResponseBase {
+    /**
+     * Creates an instance of UsagesListResponse.
+     *
+     * @param request the request which resulted in this UsagesListResponse.
+     * @param statusCode the status code of the HTTP response.
+     * @param rawHeaders the raw headers of the HTTP response.
+     * @param value the deserialized value of the HTTP response.
+     * @param headers the deserialized headers of the HTTP response.
+     */
+    public UsagesListResponse(
+        HttpRequest request, int statusCode, HttpHeaders rawHeaders, UsagesLimits value, UsagesListHeaders headers) {
+        super(request, statusCode, rawHeaders, value, headers);
+    }
+
+    /** @return the deserialized response body. */
+    @Override
+    public UsagesLimits getValue() {
+        return super.getValue();
+    }
+}
diff --git a/sdk/quota/azure-resourcemanager-quota/src/main/java/com/azure/resourcemanager/quota/models/UsagesObject.java b/sdk/quota/azure-resourcemanager-quota/src/main/java/com/azure/resourcemanager/quota/models/UsagesObject.java
new file mode 100644
index 000000000000..083ba5f69eb5
--- /dev/null
+++ b/sdk/quota/azure-resourcemanager-quota/src/main/java/com/azure/resourcemanager/quota/models/UsagesObject.java
@@ -0,0 +1,76 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.quota.models;
+
+import com.azure.core.annotation.Fluent;
+import com.azure.core.util.logging.ClientLogger;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/** The resource usages value. */
+@Fluent
+public final class UsagesObject {
+    @JsonIgnore private final ClientLogger logger = new ClientLogger(UsagesObject.class);
+
+    /*
+     * The usages value.
+     */
+    @JsonProperty(value = "value", required = true)
+    private int value;
+
+    /*
+     * The quota or usages limit types.
+     */
+    @JsonProperty(value = "usagesType")
+    private UsagesTypes usagesType;
+
+    /**
+     * Get the value property: The usages value.
+     *
+     * @return the value value.
+     */
+    public int value() {
+        return this.value;
+    }
+
+    /**
+     * Set the value property: The usages value.
+     *
+     * @param value the value value to set.
+     * @return the UsagesObject object itself.
+     */
+    public UsagesObject withValue(int value) {
+        this.value = value;
+        return this;
+    }
+
+    /**
+     * Get the usagesType property: The quota or usages limit types.
+     *
+     * @return the usagesType value.
+     */
+    public UsagesTypes usagesType() {
+        return this.usagesType;
+    }
+
+    /**
+     * Set the usagesType property: The quota or usages limit types.
+     *
+     * @param usagesType the usagesType value to set.
+     * @return the UsagesObject object itself.
+     */
+    public UsagesObject withUsagesType(UsagesTypes usagesType) {
+        this.usagesType = usagesType;
+        return this;
+    }
+
+    /**
+     * Validates the instance.
+     *
+     * @throws IllegalArgumentException thrown if the instance is not valid.
+     */
+    public void validate() {
+    }
+}
diff --git a/sdk/quota/azure-resourcemanager-quota/src/main/java/com/azure/resourcemanager/quota/models/UsagesProperties.java b/sdk/quota/azure-resourcemanager-quota/src/main/java/com/azure/resourcemanager/quota/models/UsagesProperties.java
new file mode 100644
index 000000000000..bbc087af5139
--- /dev/null
+++ b/sdk/quota/azure-resourcemanager-quota/src/main/java/com/azure/resourcemanager/quota/models/UsagesProperties.java
@@ -0,0 +1,192 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.quota.models;
+
+import com.azure.core.annotation.Fluent;
+import com.azure.core.util.logging.ClientLogger;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/** Usage properties for the specified resource. */
+@Fluent
+public final class UsagesProperties {
+    @JsonIgnore private final ClientLogger logger = new ClientLogger(UsagesProperties.class);
+
+    /*
+     * The quota limit properties for this resource.
+     */
+    @JsonProperty(value = "usages")
+    private UsagesObject usages;
+
+    /*
+     * The units for the quota usage, such as Count and Bytes. When requesting
+     * quota, use the **unit** value returned in the GET response in the
+     * request body of your PUT operation.
+     */
+    @JsonProperty(value = "unit", access = JsonProperty.Access.WRITE_ONLY)
+    private String unit;
+
+    /*
+     * Resource name provided by the resource provider. Use this property name
+     * when requesting quota.
+     */
+    @JsonProperty(value = "name")
+    private ResourceName name;
+
+    /*
+     * The name of the resource type.
+     */
+    @JsonProperty(value = "resourceType")
+    private String resourceType;
+
+    /*
+     * The time period for the summary of the quota usage values. For example:
+     * *P1D (per one day)
+     * *PT1M (per one minute)
+     * *PT1S (per one second).
+     * This parameter is optional because it is not relevant for all resources
+     * such as compute.
+     */
+    @JsonProperty(value = "quotaPeriod", access = JsonProperty.Access.WRITE_ONLY)
+    private String quotaPeriod;
+
+    /*
+     * States if quota can be requested for this resource.
+     */
+    @JsonProperty(value = "isQuotaApplicable", access = JsonProperty.Access.WRITE_ONLY)
+    private Boolean isQuotaApplicable;
+
+    /*
+     * Additional properties for the specific resource provider.
+     */
+    @JsonProperty(value = "properties")
+    private Object properties;
+
+    /**
+     * Get the usages property: The quota limit properties for this resource.
+     *
+     * @return the usages value.
+     */
+    public UsagesObject usages() {
+        return this.usages;
+    }
+
+    /**
+     * Set the usages property: The quota limit properties for this resource.
+     *
+     * @param usages the usages value to set.
+     * @return the UsagesProperties object itself.
+     */
+    public UsagesProperties withUsages(UsagesObject usages) {
+        this.usages = usages;
+        return this;
+    }
+
+    /**
+     * Get the unit property: The units for the quota usage, such as Count and Bytes. When requesting quota, use the
+     * **unit** value returned in the GET response in the request body of your PUT operation.
+     *
+     * @return the unit value.
+     */
+    public String unit() {
+        return this.unit;
+    }
+
+    /**
+     * Get the name property: Resource name provided by the resource provider. Use this property name when requesting
+     * quota.
+     *
+     * @return the name value.
+     */
+    public ResourceName name() {
+        return this.name;
+    }
+
+    /**
+     * Set the name property: Resource name provided by the resource provider. Use this property name when requesting
+     * quota.
+     *
+     * @param name the name value to set.
+     * @return the UsagesProperties object itself.
+     */
+    public UsagesProperties withName(ResourceName name) {
+        this.name = name;
+        return this;
+    }
+
+    /**
+     * Get the resourceType property: The name of the resource type.
+     *
+     * @return the resourceType value.
+     */
+    public String resourceType() {
+        return this.resourceType;
+    }
+
+    /**
+     * Set the resourceType property: The name of the resource type.
+     *
+     * @param resourceType the resourceType value to set.
+     * @return the UsagesProperties object itself.
+     */
+    public UsagesProperties withResourceType(String resourceType) {
+        this.resourceType = resourceType;
+        return this;
+    }
+
+    /**
+     * Get the quotaPeriod property: The time period for the summary of the quota usage values. For example: *P1D (per
+     * one day) *PT1M (per one minute) *PT1S (per one second). This parameter is optional because it is not relevant for
+     * all resources such as compute.
+     *
+     * @return the quotaPeriod value.
+     */
+    public String quotaPeriod() {
+        return this.quotaPeriod;
+    }
+
+    /**
+     * Get the isQuotaApplicable property: States if quota can be requested for this resource.
+     *
+     * @return the isQuotaApplicable value.
+     */
+    public Boolean isQuotaApplicable() {
+        return this.isQuotaApplicable;
+    }
+
+    /**
+     * Get the properties property: Additional properties for the specific resource provider.
+     *
+     * @return the properties value.
+     */
+    public Object properties() {
+        return this.properties;
+    }
+
+    /**
+     * Set the properties property: Additional properties for the specific resource provider.
+     *
+     * @param properties the properties value to set.
+     * @return the UsagesProperties object itself.
+     */
+    public UsagesProperties withProperties(Object properties) {
+        this.properties = properties;
+        return this;
+    }
+
+    /**
+     * Validates the instance.
+     *
+     * @throws IllegalArgumentException thrown if the instance is not valid.
+     */
+    public void validate() {
+        if (usages() != null) {
+            usages().validate();
+        }
+        if (name() != null) {
+            name().validate();
+        }
+    }
+}
diff --git a/sdk/quota/azure-resourcemanager-quota/src/main/java/com/azure/resourcemanager/quota/models/UsagesTypes.java b/sdk/quota/azure-resourcemanager-quota/src/main/java/com/azure/resourcemanager/quota/models/UsagesTypes.java
new file mode 100644
index 000000000000..0626f69c2b51
--- /dev/null
+++ b/sdk/quota/azure-resourcemanager-quota/src/main/java/com/azure/resourcemanager/quota/models/UsagesTypes.java
@@ -0,0 +1,34 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.quota.models;
+
+import com.azure.core.util.ExpandableStringEnum;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import java.util.Collection;
+
+/** Defines values for UsagesTypes. */
+public final class UsagesTypes extends ExpandableStringEnum {
+    /** Static value Individual for UsagesTypes. */
+    public static final UsagesTypes INDIVIDUAL = fromString("Individual");
+
+    /** Static value Combined for UsagesTypes. */
+    public static final UsagesTypes COMBINED = fromString("Combined");
+
+    /**
+     * Creates or finds a UsagesTypes from its string representation.
+     *
+     * @param name a name to look for.
+     * @return the corresponding UsagesTypes.
+     */
+    @JsonCreator
+    public static UsagesTypes fromString(String name) {
+        return fromString(name, UsagesTypes.class);
+    }
+
+    /** @return known UsagesTypes values. */
+    public static Collection values() {
+        return values(UsagesTypes.class);
+    }
+}
diff --git a/sdk/quota/azure-resourcemanager-quota/src/main/java/com/azure/resourcemanager/quota/models/package-info.java b/sdk/quota/azure-resourcemanager-quota/src/main/java/com/azure/resourcemanager/quota/models/package-info.java
new file mode 100644
index 000000000000..2bc29ac9d800
--- /dev/null
+++ b/sdk/quota/azure-resourcemanager-quota/src/main/java/com/azure/resourcemanager/quota/models/package-info.java
@@ -0,0 +1,6 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+/** Package containing the data models for AzureQuotaExtensionApi. Microsoft Azure Quota Resource Provider. */
+package com.azure.resourcemanager.quota.models;
diff --git a/sdk/quota/azure-resourcemanager-quota/src/main/java/com/azure/resourcemanager/quota/package-info.java b/sdk/quota/azure-resourcemanager-quota/src/main/java/com/azure/resourcemanager/quota/package-info.java
new file mode 100644
index 000000000000..8fa6b5e13b6c
--- /dev/null
+++ b/sdk/quota/azure-resourcemanager-quota/src/main/java/com/azure/resourcemanager/quota/package-info.java
@@ -0,0 +1,6 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+/** Package containing the classes for AzureQuotaExtensionApi. Microsoft Azure Quota Resource Provider. */
+package com.azure.resourcemanager.quota;
diff --git a/sdk/quota/azure-resourcemanager-quota/src/main/java/module-info.java b/sdk/quota/azure-resourcemanager-quota/src/main/java/module-info.java
new file mode 100644
index 000000000000..9a6fbebe2e28
--- /dev/null
+++ b/sdk/quota/azure-resourcemanager-quota/src/main/java/module-info.java
@@ -0,0 +1,19 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+module com.azure.resourcemanager.quota {
+    requires transitive com.azure.core.management;
+
+    exports com.azure.resourcemanager.quota;
+    exports com.azure.resourcemanager.quota.fluent;
+    exports com.azure.resourcemanager.quota.fluent.models;
+    exports com.azure.resourcemanager.quota.models;
+
+    opens com.azure.resourcemanager.quota.fluent.models to
+        com.azure.core,
+        com.fasterxml.jackson.databind;
+    opens com.azure.resourcemanager.quota.models to
+        com.azure.core,
+        com.fasterxml.jackson.databind;
+}
diff --git a/sdk/quota/ci.yml b/sdk/quota/ci.yml
new file mode 100644
index 000000000000..93cb81bba2ed
--- /dev/null
+++ b/sdk/quota/ci.yml
@@ -0,0 +1,39 @@
+# NOTE: Please refer to https://aka.ms/azsdk/engsys/ci-yaml before editing this file.
+
+trigger:
+  branches:
+    include:
+      - main
+      - hotfix/*
+      - release/*
+  paths:
+    include:
+      - sdk/quota/ci.yml
+      - sdk/quota/azure-resourcemanager-quota/
+    exclude:
+      - sdk/quota/pom.xml
+      - sdk/quota/azure-resourcemanager-quota/pom.xml
+
+pr:
+  branches:
+    include:
+      - main
+      - feature/*
+      - hotfix/*
+      - release/*
+  paths:
+    include:
+      - sdk/quota/ci.yml
+      - sdk/quota/azure-resourcemanager-quota/
+    exclude:
+      - sdk/quota/pom.xml
+      - sdk/quota/azure-resourcemanager-quota/pom.xml
+
+extends:
+  template: ../../eng/pipelines/templates/stages/archetype-sdk-client.yml
+  parameters:
+    ServiceDirectory: quota
+    Artifacts:
+      - name: azure-resourcemanager-quota
+        groupId: com.azure.resourcemanager
+        safeName: azureresourcemanagerquota
diff --git a/sdk/quota/pom.xml b/sdk/quota/pom.xml
new file mode 100644
index 000000000000..4c9a78ee387c
--- /dev/null
+++ b/sdk/quota/pom.xml
@@ -0,0 +1,53 @@
+
+
+  4.0.0 
+  com.azure 
+  azure-quota-service 
+  pom 
+  1.0.0 
+
+  
+    
+      coverage 
+      
+       
+
+      
+       
+
+      
+        
+          
+