scopes = new ArrayList<>();
+ private RetryPolicy retryPolicy;
+ private RetryOptions retryOptions;
+ private Duration defaultPollInterval;
+
+ private Configurable() {
+ }
+
+ /**
+ * Sets the http client.
+ *
+ * @param httpClient the HTTP client.
+ * @return the configurable object itself.
+ */
+ public Configurable withHttpClient(HttpClient httpClient) {
+ this.httpClient = Objects.requireNonNull(httpClient, "'httpClient' cannot be null.");
+ return this;
+ }
+
+ /**
+ * Sets the logging options to the HTTP pipeline.
+ *
+ * @param httpLogOptions the HTTP log options.
+ * @return the configurable object itself.
+ */
+ public Configurable withLogOptions(HttpLogOptions httpLogOptions) {
+ this.httpLogOptions = Objects.requireNonNull(httpLogOptions, "'httpLogOptions' cannot be null.");
+ return this;
+ }
+
+ /**
+ * Adds the pipeline policy to the HTTP pipeline.
+ *
+ * @param policy the HTTP pipeline policy.
+ * @return the configurable object itself.
+ */
+ public Configurable withPolicy(HttpPipelinePolicy policy) {
+ this.policies.add(Objects.requireNonNull(policy, "'policy' cannot be null."));
+ return this;
+ }
+
+ /**
+ * Adds the scope to permission sets.
+ *
+ * @param scope the scope.
+ * @return the configurable object itself.
+ */
+ public Configurable withScope(String scope) {
+ this.scopes.add(Objects.requireNonNull(scope, "'scope' cannot be null."));
+ return this;
+ }
+
+ /**
+ * Sets the retry policy to the HTTP pipeline.
+ *
+ * @param retryPolicy the HTTP pipeline retry policy.
+ * @return the configurable object itself.
+ */
+ public Configurable withRetryPolicy(RetryPolicy retryPolicy) {
+ this.retryPolicy = Objects.requireNonNull(retryPolicy, "'retryPolicy' cannot be null.");
+ return this;
+ }
+
+ /**
+ * Sets the retry options for the HTTP pipeline retry policy.
+ *
+ * This setting has no effect, if retry policy is set via {@link #withRetryPolicy(RetryPolicy)}.
+ *
+ * @param retryOptions the retry options for the HTTP pipeline retry policy.
+ * @return the configurable object itself.
+ */
+ public Configurable withRetryOptions(RetryOptions retryOptions) {
+ this.retryOptions = Objects.requireNonNull(retryOptions, "'retryOptions' cannot be null.");
+ return this;
+ }
+
+ /**
+ * Sets the default poll interval, used when service does not provide "Retry-After" header.
+ *
+ * @param defaultPollInterval the default poll interval.
+ * @return the configurable object itself.
+ */
+ public Configurable withDefaultPollInterval(Duration defaultPollInterval) {
+ this.defaultPollInterval
+ = Objects.requireNonNull(defaultPollInterval, "'defaultPollInterval' cannot be null.");
+ if (this.defaultPollInterval.isNegative()) {
+ throw LOGGER
+ .logExceptionAsError(new IllegalArgumentException("'defaultPollInterval' cannot be negative"));
+ }
+ return this;
+ }
+
+ /**
+ * Creates an instance of Storage service API entry point.
+ *
+ * @param credential the credential to use.
+ * @param profile the Azure profile for client.
+ * @return the Storage service API instance.
+ */
+ public StorageManager authenticate(TokenCredential credential, AzureProfile profile) {
+ Objects.requireNonNull(credential, "'credential' cannot be null.");
+ Objects.requireNonNull(profile, "'profile' cannot be null.");
+
+ StringBuilder userAgentBuilder = new StringBuilder();
+ userAgentBuilder.append("azsdk-java")
+ .append("-")
+ .append("com.azure.resourcemanager.storage.generated")
+ .append("/")
+ .append("1.0.0-beta.1");
+ if (!Configuration.getGlobalConfiguration().get("AZURE_TELEMETRY_DISABLED", false)) {
+ userAgentBuilder.append(" (")
+ .append(Configuration.getGlobalConfiguration().get("java.version"))
+ .append("; ")
+ .append(Configuration.getGlobalConfiguration().get("os.name"))
+ .append("; ")
+ .append(Configuration.getGlobalConfiguration().get("os.version"))
+ .append("; auto-generated)");
+ } else {
+ userAgentBuilder.append(" (auto-generated)");
+ }
+
+ if (scopes.isEmpty()) {
+ scopes.add(profile.getEnvironment().getManagementEndpoint() + "/.default");
+ }
+ if (retryPolicy == null) {
+ if (retryOptions != null) {
+ retryPolicy = new RetryPolicy(retryOptions);
+ } else {
+ retryPolicy = new RetryPolicy("Retry-After", ChronoUnit.SECONDS);
+ }
+ }
+ List policies = new ArrayList<>();
+ policies.add(new UserAgentPolicy(userAgentBuilder.toString()));
+ policies.add(new AddHeadersFromContextPolicy());
+ policies.add(new RequestIdPolicy());
+ policies.addAll(this.policies.stream()
+ .filter(p -> p.getPipelinePosition() == HttpPipelinePosition.PER_CALL)
+ .collect(Collectors.toList()));
+ HttpPolicyProviders.addBeforeRetryPolicies(policies);
+ policies.add(retryPolicy);
+ policies.add(new AddDatePolicy());
+ policies.add(new BearerTokenAuthenticationPolicy(credential, scopes.toArray(new String[0])));
+ policies.addAll(this.policies.stream()
+ .filter(p -> p.getPipelinePosition() == HttpPipelinePosition.PER_RETRY)
+ .collect(Collectors.toList()));
+ HttpPolicyProviders.addAfterRetryPolicies(policies);
+ policies.add(new HttpLoggingPolicy(httpLogOptions));
+ HttpPipeline httpPipeline = new HttpPipelineBuilder().httpClient(httpClient)
+ .policies(policies.toArray(new HttpPipelinePolicy[0]))
+ .build();
+ return new StorageManager(httpPipeline, profile, defaultPollInterval);
+ }
+ }
+
+ /**
+ * Gets the resource collection API of BlobServices. It manages BlobServiceProperties.
+ *
+ * @return Resource collection API of BlobServices.
+ */
+ public BlobServices blobServices() {
+ if (this.blobServices == null) {
+ this.blobServices = new BlobServicesImpl(clientObject.getBlobServices(), this);
+ }
+ return blobServices;
+ }
+
+ /**
+ * Gets the resource collection API of BlobContainers. It manages BlobContainer, ImmutabilityPolicy.
+ *
+ * @return Resource collection API of BlobContainers.
+ */
+ public BlobContainers blobContainers() {
+ if (this.blobContainers == null) {
+ this.blobContainers = new BlobContainersImpl(clientObject.getBlobContainers(), this);
+ }
+ return blobContainers;
+ }
+
+ /**
+ * Gets the resource collection API of FileServices. It manages FileServiceProperties.
+ *
+ * @return Resource collection API of FileServices.
+ */
+ public FileServices fileServices() {
+ if (this.fileServices == null) {
+ this.fileServices = new FileServicesImpl(clientObject.getFileServices(), this);
+ }
+ return fileServices;
+ }
+
+ /**
+ * Gets the resource collection API of FileShares. It manages FileShare.
+ *
+ * @return Resource collection API of FileShares.
+ */
+ public FileShares fileShares() {
+ if (this.fileShares == null) {
+ this.fileShares = new FileSharesImpl(clientObject.getFileShares(), this);
+ }
+ return fileShares;
+ }
+
+ /**
+ * Gets the resource collection API of QueueServices. It manages QueueServiceProperties.
+ *
+ * @return Resource collection API of QueueServices.
+ */
+ public QueueServices queueServices() {
+ if (this.queueServices == null) {
+ this.queueServices = new QueueServicesImpl(clientObject.getQueueServices(), this);
+ }
+ return queueServices;
+ }
+
+ /**
+ * Gets the resource collection API of Queues. It manages StorageQueue.
+ *
+ * @return Resource collection API of Queues.
+ */
+ public Queues queues() {
+ if (this.queues == null) {
+ this.queues = new QueuesImpl(clientObject.getQueues(), this);
+ }
+ return queues;
+ }
+
+ /**
+ * Gets the resource collection API of Operations.
+ *
+ * @return Resource collection API of Operations.
+ */
+ public Operations operations() {
+ if (this.operations == null) {
+ this.operations = new OperationsImpl(clientObject.getOperations(), this);
+ }
+ return operations;
+ }
+
+ /**
+ * Gets the resource collection API of Skus.
+ *
+ * @return Resource collection API of Skus.
+ */
+ public Skus skus() {
+ if (this.skus == null) {
+ this.skus = new SkusImpl(clientObject.getSkus(), this);
+ }
+ return skus;
+ }
+
+ /**
+ * Gets the resource collection API of StorageAccounts. It manages StorageAccount.
+ *
+ * @return Resource collection API of StorageAccounts.
+ */
+ public StorageAccounts storageAccounts() {
+ if (this.storageAccounts == null) {
+ this.storageAccounts = new StorageAccountsImpl(clientObject.getStorageAccounts(), this);
+ }
+ return storageAccounts;
+ }
+
+ /**
+ * Gets the resource collection API of DeletedAccounts.
+ *
+ * @return Resource collection API of DeletedAccounts.
+ */
+ public DeletedAccounts deletedAccounts() {
+ if (this.deletedAccounts == null) {
+ this.deletedAccounts = new DeletedAccountsImpl(clientObject.getDeletedAccounts(), this);
+ }
+ return deletedAccounts;
+ }
+
+ /**
+ * Gets the resource collection API of Usages.
+ *
+ * @return Resource collection API of Usages.
+ */
+ public Usages usages() {
+ if (this.usages == null) {
+ this.usages = new UsagesImpl(clientObject.getUsages(), this);
+ }
+ return usages;
+ }
+
+ /**
+ * Gets the resource collection API of ManagementPolicies. It manages ManagementPolicy.
+ *
+ * @return Resource collection API of ManagementPolicies.
+ */
+ public ManagementPolicies managementPolicies() {
+ if (this.managementPolicies == null) {
+ this.managementPolicies = new ManagementPoliciesImpl(clientObject.getManagementPolicies(), this);
+ }
+ return managementPolicies;
+ }
+
+ /**
+ * Gets the resource collection API of BlobInventoryPolicies. It manages BlobInventoryPolicy.
+ *
+ * @return Resource collection API of BlobInventoryPolicies.
+ */
+ public BlobInventoryPolicies blobInventoryPolicies() {
+ if (this.blobInventoryPolicies == null) {
+ this.blobInventoryPolicies = new BlobInventoryPoliciesImpl(clientObject.getBlobInventoryPolicies(), this);
+ }
+ return blobInventoryPolicies;
+ }
+
+ /**
+ * Gets the resource collection API of PrivateEndpointConnections. It manages PrivateEndpointConnection.
+ *
+ * @return Resource collection API of PrivateEndpointConnections.
+ */
+ public PrivateEndpointConnections privateEndpointConnections() {
+ if (this.privateEndpointConnections == null) {
+ this.privateEndpointConnections
+ = new PrivateEndpointConnectionsImpl(clientObject.getPrivateEndpointConnections(), this);
+ }
+ return privateEndpointConnections;
+ }
+
+ /**
+ * Gets the resource collection API of PrivateLinkResources.
+ *
+ * @return Resource collection API of PrivateLinkResources.
+ */
+ public PrivateLinkResources privateLinkResources() {
+ if (this.privateLinkResources == null) {
+ this.privateLinkResources = new PrivateLinkResourcesImpl(clientObject.getPrivateLinkResources(), this);
+ }
+ return privateLinkResources;
+ }
+
+ /**
+ * Gets the resource collection API of ObjectReplicationPoliciesOperations. It manages ObjectReplicationPolicy.
+ *
+ * @return Resource collection API of ObjectReplicationPoliciesOperations.
+ */
+ public ObjectReplicationPoliciesOperations objectReplicationPoliciesOperations() {
+ if (this.objectReplicationPoliciesOperations == null) {
+ this.objectReplicationPoliciesOperations = new ObjectReplicationPoliciesOperationsImpl(
+ clientObject.getObjectReplicationPoliciesOperations(), this);
+ }
+ return objectReplicationPoliciesOperations;
+ }
+
+ /**
+ * Gets the resource collection API of LocalUsersOperations. It manages LocalUser.
+ *
+ * @return Resource collection API of LocalUsersOperations.
+ */
+ public LocalUsersOperations localUsersOperations() {
+ if (this.localUsersOperations == null) {
+ this.localUsersOperations = new LocalUsersOperationsImpl(clientObject.getLocalUsersOperations(), this);
+ }
+ return localUsersOperations;
+ }
+
+ /**
+ * Gets the resource collection API of EncryptionScopes. It manages EncryptionScope.
+ *
+ * @return Resource collection API of EncryptionScopes.
+ */
+ public EncryptionScopes encryptionScopes() {
+ if (this.encryptionScopes == null) {
+ this.encryptionScopes = new EncryptionScopesImpl(clientObject.getEncryptionScopes(), this);
+ }
+ return encryptionScopes;
+ }
+
+ /**
+ * Gets the resource collection API of TableServices. It manages TableServiceProperties.
+ *
+ * @return Resource collection API of TableServices.
+ */
+ public TableServices tableServices() {
+ if (this.tableServices == null) {
+ this.tableServices = new TableServicesImpl(clientObject.getTableServices(), this);
+ }
+ return tableServices;
+ }
+
+ /**
+ * Gets the resource collection API of Tables. It manages Table.
+ *
+ * @return Resource collection API of Tables.
+ */
+ public Tables tables() {
+ if (this.tables == null) {
+ this.tables = new TablesImpl(clientObject.getTables(), this);
+ }
+ return tables;
+ }
+
+ /**
+ * Gets the resource collection API of NetworkSecurityPerimeterConfigurations.
+ *
+ * @return Resource collection API of NetworkSecurityPerimeterConfigurations.
+ */
+ public NetworkSecurityPerimeterConfigurations networkSecurityPerimeterConfigurations() {
+ if (this.networkSecurityPerimeterConfigurations == null) {
+ this.networkSecurityPerimeterConfigurations = new NetworkSecurityPerimeterConfigurationsImpl(
+ clientObject.getNetworkSecurityPerimeterConfigurations(), this);
+ }
+ return networkSecurityPerimeterConfigurations;
+ }
+
+ /**
+ * Gets the resource collection API of StorageTaskAssignments. It manages StorageTaskAssignment.
+ *
+ * @return Resource collection API of StorageTaskAssignments.
+ */
+ public StorageTaskAssignments storageTaskAssignments() {
+ if (this.storageTaskAssignments == null) {
+ this.storageTaskAssignments
+ = new StorageTaskAssignmentsImpl(clientObject.getStorageTaskAssignments(), this);
+ }
+ return storageTaskAssignments;
+ }
+
+ /**
+ * Gets the resource collection API of StorageTaskAssignmentsInstancesReports.
+ *
+ * @return Resource collection API of StorageTaskAssignmentsInstancesReports.
+ */
+ public StorageTaskAssignmentsInstancesReports storageTaskAssignmentsInstancesReports() {
+ if (this.storageTaskAssignmentsInstancesReports == null) {
+ this.storageTaskAssignmentsInstancesReports = new StorageTaskAssignmentsInstancesReportsImpl(
+ clientObject.getStorageTaskAssignmentsInstancesReports(), this);
+ }
+ return storageTaskAssignmentsInstancesReports;
+ }
+
+ /**
+ * Gets the resource collection API of StorageTaskAssignmentInstancesReports.
+ *
+ * @return Resource collection API of StorageTaskAssignmentInstancesReports.
+ */
+ public StorageTaskAssignmentInstancesReports storageTaskAssignmentInstancesReports() {
+ if (this.storageTaskAssignmentInstancesReports == null) {
+ this.storageTaskAssignmentInstancesReports = new StorageTaskAssignmentInstancesReportsImpl(
+ clientObject.getStorageTaskAssignmentInstancesReports(), this);
+ }
+ return storageTaskAssignmentInstancesReports;
+ }
+
+ /**
+ * Gets wrapped service client StorageManagementClient providing direct access to the underlying auto-generated API
+ * implementation, based on Azure REST API.
+ *
+ * @return Wrapped service client StorageManagementClient.
+ */
+ public StorageManagementClient serviceClient() {
+ return this.clientObject;
+ }
+}
diff --git a/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/BlobContainersClient.java b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/BlobContainersClient.java
new file mode 100644
index 0000000000000..6827a610aac08
--- /dev/null
+++ b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/BlobContainersClient.java
@@ -0,0 +1,670 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.storage.generated.fluent;
+
+import com.azure.core.annotation.ReturnType;
+import com.azure.core.annotation.ServiceMethod;
+import com.azure.core.http.rest.PagedIterable;
+import com.azure.core.http.rest.Response;
+import com.azure.core.management.polling.PollResult;
+import com.azure.core.util.Context;
+import com.azure.core.util.polling.SyncPoller;
+import com.azure.resourcemanager.storage.generated.fluent.models.BlobContainerInner;
+import com.azure.resourcemanager.storage.generated.fluent.models.ImmutabilityPolicyInner;
+import com.azure.resourcemanager.storage.generated.fluent.models.LeaseContainerResponseInner;
+import com.azure.resourcemanager.storage.generated.fluent.models.LegalHoldInner;
+import com.azure.resourcemanager.storage.generated.fluent.models.ListContainerItemInner;
+import com.azure.resourcemanager.storage.generated.models.BlobContainersCreateOrUpdateImmutabilityPolicyResponse;
+import com.azure.resourcemanager.storage.generated.models.BlobContainersDeleteImmutabilityPolicyResponse;
+import com.azure.resourcemanager.storage.generated.models.BlobContainersExtendImmutabilityPolicyResponse;
+import com.azure.resourcemanager.storage.generated.models.BlobContainersGetImmutabilityPolicyResponse;
+import com.azure.resourcemanager.storage.generated.models.BlobContainersLockImmutabilityPolicyResponse;
+import com.azure.resourcemanager.storage.generated.models.LeaseContainerRequest;
+import com.azure.resourcemanager.storage.generated.models.ListContainersInclude;
+
+/**
+ * An instance of this class provides access to all the operations defined in BlobContainersClient.
+ */
+public interface BlobContainersClient {
+ /**
+ * Lists all containers and does not support a prefix like data plane. Also SRP today does not return continuation
+ * token.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @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 response schema as paginated response with {@link PagedIterable}.
+ */
+ @ServiceMethod(returns = ReturnType.COLLECTION)
+ PagedIterable list(String resourceGroupName, String accountName);
+
+ /**
+ * Lists all containers and does not support a prefix like data plane. Also SRP today does not return continuation
+ * token.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param maxpagesize Optional. Specified maximum number of containers that can be included in the list.
+ * @param filter Optional. When specified, only container names starting with the filter will be listed.
+ * @param include Optional, used to include the properties for soft deleted blob containers.
+ * @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 response schema as paginated response with {@link PagedIterable}.
+ */
+ @ServiceMethod(returns = ReturnType.COLLECTION)
+ PagedIterable list(String resourceGroupName, String accountName, String maxpagesize,
+ String filter, ListContainersInclude include, Context context);
+
+ /**
+ * Creates a new container under the specified account as described by request body. The container resource includes
+ * metadata and properties for that container. It does not include a list of the blobs contained by the container.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param containerName The name of the blob container within the specified storage account. Blob container names
+ * must be between 3 and 63 characters in length and use numbers, lower-case letters and dash (-) only. Every dash
+ * (-) character must be immediately preceded and followed by a letter or number.
+ * @param blobContainer Properties of the blob container to create.
+ * @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 properties of the blob container, including Id, resource name, resource type, Etag along with
+ * {@link Response}.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ Response createWithResponse(String resourceGroupName, String accountName, String containerName,
+ BlobContainerInner blobContainer, Context context);
+
+ /**
+ * Creates a new container under the specified account as described by request body. The container resource includes
+ * metadata and properties for that container. It does not include a list of the blobs contained by the container.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param containerName The name of the blob container within the specified storage account. Blob container names
+ * must be between 3 and 63 characters in length and use numbers, lower-case letters and dash (-) only. Every dash
+ * (-) character must be immediately preceded and followed by a letter or number.
+ * @param blobContainer Properties of the blob container to create.
+ * @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 properties of the blob container, including Id, resource name, resource type, Etag.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ BlobContainerInner create(String resourceGroupName, String accountName, String containerName,
+ BlobContainerInner blobContainer);
+
+ /**
+ * Updates container properties as specified in request body. Properties not mentioned in the request will be
+ * unchanged. Update fails if the specified container doesn't already exist.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param containerName The name of the blob container within the specified storage account. Blob container names
+ * must be between 3 and 63 characters in length and use numbers, lower-case letters and dash (-) only. Every dash
+ * (-) character must be immediately preceded and followed by a letter or number.
+ * @param blobContainer Properties to update for the blob container.
+ * @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 properties of the blob container, including Id, resource name, resource type, Etag along with
+ * {@link Response}.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ Response updateWithResponse(String resourceGroupName, String accountName, String containerName,
+ BlobContainerInner blobContainer, Context context);
+
+ /**
+ * Updates container properties as specified in request body. Properties not mentioned in the request will be
+ * unchanged. Update fails if the specified container doesn't already exist.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param containerName The name of the blob container within the specified storage account. Blob container names
+ * must be between 3 and 63 characters in length and use numbers, lower-case letters and dash (-) only. Every dash
+ * (-) character must be immediately preceded and followed by a letter or number.
+ * @param blobContainer Properties to update for the blob container.
+ * @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 properties of the blob container, including Id, resource name, resource type, Etag.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ BlobContainerInner update(String resourceGroupName, String accountName, String containerName,
+ BlobContainerInner blobContainer);
+
+ /**
+ * Gets properties of a specified container.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param containerName The name of the blob container within the specified storage account. Blob container names
+ * must be between 3 and 63 characters in length and use numbers, lower-case letters and dash (-) only. Every dash
+ * (-) character must be immediately preceded and followed by a letter or number.
+ * @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 properties of a specified container along with {@link Response}.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ Response getWithResponse(String resourceGroupName, String accountName, String containerName,
+ Context context);
+
+ /**
+ * Gets properties of a specified container.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param containerName The name of the blob container within the specified storage account. Blob container names
+ * must be between 3 and 63 characters in length and use numbers, lower-case letters and dash (-) only. Every dash
+ * (-) character must be immediately preceded and followed by a letter or number.
+ * @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 properties of a specified container.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ BlobContainerInner get(String resourceGroupName, String accountName, String containerName);
+
+ /**
+ * Deletes specified container under its account.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param containerName The name of the blob container within the specified storage account. Blob container names
+ * must be between 3 and 63 characters in length and use numbers, lower-case letters and dash (-) only. Every dash
+ * (-) character must be immediately preceded and followed by a letter or number.
+ * @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 {@link Response}.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ Response deleteWithResponse(String resourceGroupName, String accountName, String containerName,
+ Context context);
+
+ /**
+ * Deletes specified container under its account.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param containerName The name of the blob container within the specified storage account. Blob container names
+ * must be between 3 and 63 characters in length and use numbers, lower-case letters and dash (-) only. Every dash
+ * (-) character must be immediately preceded and followed by a letter or number.
+ * @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.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ void delete(String resourceGroupName, String accountName, String containerName);
+
+ /**
+ * Sets legal hold tags. Setting the same tag results in an idempotent operation. SetLegalHold follows an append
+ * pattern and does not clear out the existing tags that are not specified in the request.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param containerName The name of the blob container within the specified storage account. Blob container names
+ * must be between 3 and 63 characters in length and use numbers, lower-case letters and dash (-) only. Every dash
+ * (-) character must be immediately preceded and followed by a letter or number.
+ * @param legalHold The LegalHold property that will be set to a blob container.
+ * @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 LegalHold property of a blob container along with {@link Response}.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ Response setLegalHoldWithResponse(String resourceGroupName, String accountName,
+ String containerName, LegalHoldInner legalHold, Context context);
+
+ /**
+ * Sets legal hold tags. Setting the same tag results in an idempotent operation. SetLegalHold follows an append
+ * pattern and does not clear out the existing tags that are not specified in the request.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param containerName The name of the blob container within the specified storage account. Blob container names
+ * must be between 3 and 63 characters in length and use numbers, lower-case letters and dash (-) only. Every dash
+ * (-) character must be immediately preceded and followed by a letter or number.
+ * @param legalHold The LegalHold property that will be set to a blob container.
+ * @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 LegalHold property of a blob container.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ LegalHoldInner setLegalHold(String resourceGroupName, String accountName, String containerName,
+ LegalHoldInner legalHold);
+
+ /**
+ * Clears legal hold tags. Clearing the same or non-existent tag results in an idempotent operation. ClearLegalHold
+ * clears out only the specified tags in the request.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param containerName The name of the blob container within the specified storage account. Blob container names
+ * must be between 3 and 63 characters in length and use numbers, lower-case letters and dash (-) only. Every dash
+ * (-) character must be immediately preceded and followed by a letter or number.
+ * @param legalHold The LegalHold property that will be clear from a blob container.
+ * @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 LegalHold property of a blob container along with {@link Response}.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ Response clearLegalHoldWithResponse(String resourceGroupName, String accountName,
+ String containerName, LegalHoldInner legalHold, Context context);
+
+ /**
+ * Clears legal hold tags. Clearing the same or non-existent tag results in an idempotent operation. ClearLegalHold
+ * clears out only the specified tags in the request.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param containerName The name of the blob container within the specified storage account. Blob container names
+ * must be between 3 and 63 characters in length and use numbers, lower-case letters and dash (-) only. Every dash
+ * (-) character must be immediately preceded and followed by a letter or number.
+ * @param legalHold The LegalHold property that will be clear from a blob container.
+ * @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 LegalHold property of a blob container.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ LegalHoldInner clearLegalHold(String resourceGroupName, String accountName, String containerName,
+ LegalHoldInner legalHold);
+
+ /**
+ * Creates or updates an unlocked immutability policy. ETag in If-Match is honored if given but not required for
+ * this operation.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param containerName The name of the blob container within the specified storage account. Blob container names
+ * must be between 3 and 63 characters in length and use numbers, lower-case letters and dash (-) only. Every dash
+ * (-) character must be immediately preceded and followed by a letter or number.
+ * @param ifMatch The entity state (ETag) version of the immutability policy to update must be returned to the
+ * server for all update operations. The ETag value must include the leading and trailing double quotes as returned
+ * by the service.
+ * @param parameters The ImmutabilityPolicy Properties that will be created or updated to a blob container.
+ * @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 ImmutabilityPolicy property of a blob container, including Id, resource name, resource type, Etag.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ BlobContainersCreateOrUpdateImmutabilityPolicyResponse createOrUpdateImmutabilityPolicyWithResponse(
+ String resourceGroupName, String accountName, String containerName, String ifMatch,
+ ImmutabilityPolicyInner parameters, Context context);
+
+ /**
+ * Creates or updates an unlocked immutability policy. ETag in If-Match is honored if given but not required for
+ * this operation.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param containerName The name of the blob container within the specified storage account. Blob container names
+ * must be between 3 and 63 characters in length and use numbers, lower-case letters and dash (-) only. Every dash
+ * (-) character must be immediately preceded and followed by a letter or number.
+ * @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 ImmutabilityPolicy property of a blob container, including Id, resource name, resource type, Etag.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ ImmutabilityPolicyInner createOrUpdateImmutabilityPolicy(String resourceGroupName, String accountName,
+ String containerName);
+
+ /**
+ * Gets the existing immutability policy along with the corresponding ETag in response headers and body.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param containerName The name of the blob container within the specified storage account. Blob container names
+ * must be between 3 and 63 characters in length and use numbers, lower-case letters and dash (-) only. Every dash
+ * (-) character must be immediately preceded and followed by a letter or number.
+ * @param ifMatch The entity state (ETag) version of the immutability policy to update must be returned to the
+ * server for all update operations. The ETag value must include the leading and trailing double quotes as returned
+ * by the service.
+ * @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 existing immutability policy along with the corresponding ETag in response headers and body.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ BlobContainersGetImmutabilityPolicyResponse getImmutabilityPolicyWithResponse(String resourceGroupName,
+ String accountName, String containerName, String ifMatch, Context context);
+
+ /**
+ * Gets the existing immutability policy along with the corresponding ETag in response headers and body.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param containerName The name of the blob container within the specified storage account. Blob container names
+ * must be between 3 and 63 characters in length and use numbers, lower-case letters and dash (-) only. Every dash
+ * (-) character must be immediately preceded and followed by a letter or number.
+ * @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 existing immutability policy along with the corresponding ETag in response headers and body.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ ImmutabilityPolicyInner getImmutabilityPolicy(String resourceGroupName, String accountName, String containerName);
+
+ /**
+ * Aborts an unlocked immutability policy. The response of delete has immutabilityPeriodSinceCreationInDays set to
+ * 0. ETag in If-Match is required for this operation. Deleting a locked immutability policy is not allowed, the
+ * only way is to delete the container after deleting all expired blobs inside the policy locked container.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param containerName The name of the blob container within the specified storage account. Blob container names
+ * must be between 3 and 63 characters in length and use numbers, lower-case letters and dash (-) only. Every dash
+ * (-) character must be immediately preceded and followed by a letter or number.
+ * @param ifMatch The entity state (ETag) version of the immutability policy to update must be returned to the
+ * server for all update operations. The ETag value must include the leading and trailing double quotes as returned
+ * by the service.
+ * @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 ImmutabilityPolicy property of a blob container, including Id, resource name, resource type, Etag.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ BlobContainersDeleteImmutabilityPolicyResponse deleteImmutabilityPolicyWithResponse(String resourceGroupName,
+ String accountName, String containerName, String ifMatch, Context context);
+
+ /**
+ * Aborts an unlocked immutability policy. The response of delete has immutabilityPeriodSinceCreationInDays set to
+ * 0. ETag in If-Match is required for this operation. Deleting a locked immutability policy is not allowed, the
+ * only way is to delete the container after deleting all expired blobs inside the policy locked container.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param containerName The name of the blob container within the specified storage account. Blob container names
+ * must be between 3 and 63 characters in length and use numbers, lower-case letters and dash (-) only. Every dash
+ * (-) character must be immediately preceded and followed by a letter or number.
+ * @param ifMatch The entity state (ETag) version of the immutability policy to update must be returned to the
+ * server for all update operations. The ETag value must include the leading and trailing double quotes as returned
+ * by the service.
+ * @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 ImmutabilityPolicy property of a blob container, including Id, resource name, resource type, Etag.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ ImmutabilityPolicyInner deleteImmutabilityPolicy(String resourceGroupName, String accountName, String containerName,
+ String ifMatch);
+
+ /**
+ * Sets the ImmutabilityPolicy to Locked state. The only action allowed on a Locked policy is
+ * ExtendImmutabilityPolicy action. ETag in If-Match is required for this operation.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param containerName The name of the blob container within the specified storage account. Blob container names
+ * must be between 3 and 63 characters in length and use numbers, lower-case letters and dash (-) only. Every dash
+ * (-) character must be immediately preceded and followed by a letter or number.
+ * @param ifMatch The entity state (ETag) version of the immutability policy to update must be returned to the
+ * server for all update operations. The ETag value must include the leading and trailing double quotes as returned
+ * by the service.
+ * @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 ImmutabilityPolicy property of a blob container, including Id, resource name, resource type, Etag.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ BlobContainersLockImmutabilityPolicyResponse lockImmutabilityPolicyWithResponse(String resourceGroupName,
+ String accountName, String containerName, String ifMatch, Context context);
+
+ /**
+ * Sets the ImmutabilityPolicy to Locked state. The only action allowed on a Locked policy is
+ * ExtendImmutabilityPolicy action. ETag in If-Match is required for this operation.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param containerName The name of the blob container within the specified storage account. Blob container names
+ * must be between 3 and 63 characters in length and use numbers, lower-case letters and dash (-) only. Every dash
+ * (-) character must be immediately preceded and followed by a letter or number.
+ * @param ifMatch The entity state (ETag) version of the immutability policy to update must be returned to the
+ * server for all update operations. The ETag value must include the leading and trailing double quotes as returned
+ * by the service.
+ * @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 ImmutabilityPolicy property of a blob container, including Id, resource name, resource type, Etag.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ ImmutabilityPolicyInner lockImmutabilityPolicy(String resourceGroupName, String accountName, String containerName,
+ String ifMatch);
+
+ /**
+ * Extends the immutabilityPeriodSinceCreationInDays of a locked immutabilityPolicy. The only action allowed on a
+ * Locked policy will be this action. ETag in If-Match is required for this operation.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param containerName The name of the blob container within the specified storage account. Blob container names
+ * must be between 3 and 63 characters in length and use numbers, lower-case letters and dash (-) only. Every dash
+ * (-) character must be immediately preceded and followed by a letter or number.
+ * @param ifMatch The entity state (ETag) version of the immutability policy to update must be returned to the
+ * server for all update operations. The ETag value must include the leading and trailing double quotes as returned
+ * by the service.
+ * @param parameters The ImmutabilityPolicy Properties that will be extended for a blob container.
+ * @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 ImmutabilityPolicy property of a blob container, including Id, resource name, resource type, Etag.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ BlobContainersExtendImmutabilityPolicyResponse extendImmutabilityPolicyWithResponse(String resourceGroupName,
+ String accountName, String containerName, String ifMatch, ImmutabilityPolicyInner parameters, Context context);
+
+ /**
+ * Extends the immutabilityPeriodSinceCreationInDays of a locked immutabilityPolicy. The only action allowed on a
+ * Locked policy will be this action. ETag in If-Match is required for this operation.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param containerName The name of the blob container within the specified storage account. Blob container names
+ * must be between 3 and 63 characters in length and use numbers, lower-case letters and dash (-) only. Every dash
+ * (-) character must be immediately preceded and followed by a letter or number.
+ * @param ifMatch The entity state (ETag) version of the immutability policy to update must be returned to the
+ * server for all update operations. The ETag value must include the leading and trailing double quotes as returned
+ * by the service.
+ * @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 ImmutabilityPolicy property of a blob container, including Id, resource name, resource type, Etag.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ ImmutabilityPolicyInner extendImmutabilityPolicy(String resourceGroupName, String accountName, String containerName,
+ String ifMatch);
+
+ /**
+ * The Lease Container operation establishes and manages a lock on a container for delete operations. The lock
+ * duration can be 15 to 60 seconds, or can be infinite.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param containerName The name of the blob container within the specified storage account. Blob container names
+ * must be between 3 and 63 characters in length and use numbers, lower-case letters and dash (-) only. Every dash
+ * (-) character must be immediately preceded and followed by a letter or number.
+ * @param parameters Lease Container request body.
+ * @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 lease Container response schema along with {@link Response}.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ Response leaseWithResponse(String resourceGroupName, String accountName,
+ String containerName, LeaseContainerRequest parameters, Context context);
+
+ /**
+ * The Lease Container operation establishes and manages a lock on a container for delete operations. The lock
+ * duration can be 15 to 60 seconds, or can be infinite.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param containerName The name of the blob container within the specified storage account. Blob container names
+ * must be between 3 and 63 characters in length and use numbers, lower-case letters and dash (-) only. Every dash
+ * (-) character must be immediately preceded and followed by a letter or number.
+ * @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 lease Container response schema.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ LeaseContainerResponseInner lease(String resourceGroupName, String accountName, String containerName);
+
+ /**
+ * This operation migrates a blob container from container level WORM to object level immutability enabled
+ * container. Prerequisites require a container level immutability policy either in locked or unlocked state,
+ * Account level versioning must be enabled and there should be no Legal hold on the container.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param containerName The name of the blob container within the specified storage account. Blob container names
+ * must be between 3 and 63 characters in length and use numbers, lower-case letters and dash (-) only. Every dash
+ * (-) character must be immediately preceded and followed by a letter or number.
+ * @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 {@link SyncPoller} for polling of long-running operation.
+ */
+ @ServiceMethod(returns = ReturnType.LONG_RUNNING_OPERATION)
+ SyncPoller, Void> beginObjectLevelWorm(String resourceGroupName, String accountName,
+ String containerName);
+
+ /**
+ * This operation migrates a blob container from container level WORM to object level immutability enabled
+ * container. Prerequisites require a container level immutability policy either in locked or unlocked state,
+ * Account level versioning must be enabled and there should be no Legal hold on the container.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param containerName The name of the blob container within the specified storage account. Blob container names
+ * must be between 3 and 63 characters in length and use numbers, lower-case letters and dash (-) only. Every dash
+ * (-) character must be immediately preceded and followed by a letter or number.
+ * @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 {@link SyncPoller} for polling of long-running operation.
+ */
+ @ServiceMethod(returns = ReturnType.LONG_RUNNING_OPERATION)
+ SyncPoller, Void> beginObjectLevelWorm(String resourceGroupName, String accountName,
+ String containerName, Context context);
+
+ /**
+ * This operation migrates a blob container from container level WORM to object level immutability enabled
+ * container. Prerequisites require a container level immutability policy either in locked or unlocked state,
+ * Account level versioning must be enabled and there should be no Legal hold on the container.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param containerName The name of the blob container within the specified storage account. Blob container names
+ * must be between 3 and 63 characters in length and use numbers, lower-case letters and dash (-) only. Every dash
+ * (-) character must be immediately preceded and followed by a letter or number.
+ * @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.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ void objectLevelWorm(String resourceGroupName, String accountName, String containerName);
+
+ /**
+ * This operation migrates a blob container from container level WORM to object level immutability enabled
+ * container. Prerequisites require a container level immutability policy either in locked or unlocked state,
+ * Account level versioning must be enabled and there should be no Legal hold on the container.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param containerName The name of the blob container within the specified storage account. Blob container names
+ * must be between 3 and 63 characters in length and use numbers, lower-case letters and dash (-) only. Every dash
+ * (-) character must be immediately preceded and followed by a letter or number.
+ * @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.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ void objectLevelWorm(String resourceGroupName, String accountName, String containerName, Context context);
+}
diff --git a/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/BlobInventoryPoliciesClient.java b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/BlobInventoryPoliciesClient.java
new file mode 100644
index 0000000000000..07590b95e13ac
--- /dev/null
+++ b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/BlobInventoryPoliciesClient.java
@@ -0,0 +1,162 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.storage.generated.fluent;
+
+import com.azure.core.annotation.ReturnType;
+import com.azure.core.annotation.ServiceMethod;
+import com.azure.core.http.rest.PagedIterable;
+import com.azure.core.http.rest.Response;
+import com.azure.core.util.Context;
+import com.azure.resourcemanager.storage.generated.fluent.models.BlobInventoryPolicyInner;
+import com.azure.resourcemanager.storage.generated.models.BlobInventoryPolicyName;
+
+/**
+ * An instance of this class provides access to all the operations defined in BlobInventoryPoliciesClient.
+ */
+public interface BlobInventoryPoliciesClient {
+ /**
+ * Gets the blob inventory policy associated with the specified storage account.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param blobInventoryPolicyName The name of the storage account blob inventory policy. It should always be
+ * 'default'.
+ * @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 blob inventory policy associated with the specified storage account along with {@link Response}.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ Response getWithResponse(String resourceGroupName, String accountName,
+ BlobInventoryPolicyName blobInventoryPolicyName, Context context);
+
+ /**
+ * Gets the blob inventory policy associated with the specified storage account.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param blobInventoryPolicyName The name of the storage account blob inventory policy. It should always be
+ * 'default'.
+ * @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 blob inventory policy associated with the specified storage account.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ BlobInventoryPolicyInner get(String resourceGroupName, String accountName,
+ BlobInventoryPolicyName blobInventoryPolicyName);
+
+ /**
+ * Sets the blob inventory policy to the specified storage account.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param blobInventoryPolicyName The name of the storage account blob inventory policy. It should always be
+ * 'default'.
+ * @param properties The blob inventory policy set to a storage account.
+ * @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 storage account blob inventory policy along with {@link Response}.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ Response createOrUpdateWithResponse(String resourceGroupName, String accountName,
+ BlobInventoryPolicyName blobInventoryPolicyName, BlobInventoryPolicyInner properties, Context context);
+
+ /**
+ * Sets the blob inventory policy to the specified storage account.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param blobInventoryPolicyName The name of the storage account blob inventory policy. It should always be
+ * 'default'.
+ * @param properties The blob inventory policy set to a storage account.
+ * @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 storage account blob inventory policy.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ BlobInventoryPolicyInner createOrUpdate(String resourceGroupName, String accountName,
+ BlobInventoryPolicyName blobInventoryPolicyName, BlobInventoryPolicyInner properties);
+
+ /**
+ * Deletes the blob inventory policy associated with the specified storage account.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param blobInventoryPolicyName The name of the storage account blob inventory policy. It should always be
+ * 'default'.
+ * @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 {@link Response}.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ Response deleteWithResponse(String resourceGroupName, String accountName,
+ BlobInventoryPolicyName blobInventoryPolicyName, Context context);
+
+ /**
+ * Deletes the blob inventory policy associated with the specified storage account.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param blobInventoryPolicyName The name of the storage account blob inventory policy. It should always be
+ * 'default'.
+ * @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.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ void delete(String resourceGroupName, String accountName, BlobInventoryPolicyName blobInventoryPolicyName);
+
+ /**
+ * Gets the blob inventory policy associated with the specified storage account.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @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 blob inventory policy associated with the specified storage account as paginated response with
+ * {@link PagedIterable}.
+ */
+ @ServiceMethod(returns = ReturnType.COLLECTION)
+ PagedIterable list(String resourceGroupName, String accountName);
+
+ /**
+ * Gets the blob inventory policy associated with the specified storage account.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @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 blob inventory policy associated with the specified storage account as paginated response with
+ * {@link PagedIterable}.
+ */
+ @ServiceMethod(returns = ReturnType.COLLECTION)
+ PagedIterable list(String resourceGroupName, String accountName, Context context);
+}
diff --git a/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/BlobServicesClient.java b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/BlobServicesClient.java
new file mode 100644
index 0000000000000..bdcf9589d6f8e
--- /dev/null
+++ b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/BlobServicesClient.java
@@ -0,0 +1,123 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.storage.generated.fluent;
+
+import com.azure.core.annotation.ReturnType;
+import com.azure.core.annotation.ServiceMethod;
+import com.azure.core.http.rest.PagedIterable;
+import com.azure.core.http.rest.Response;
+import com.azure.core.util.Context;
+import com.azure.resourcemanager.storage.generated.fluent.models.BlobServicePropertiesInner;
+
+/**
+ * An instance of this class provides access to all the operations defined in BlobServicesClient.
+ */
+public interface BlobServicesClient {
+ /**
+ * List blob services of storage account. It returns a collection of one object named default.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @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 paginated response with {@link PagedIterable}.
+ */
+ @ServiceMethod(returns = ReturnType.COLLECTION)
+ PagedIterable list(String resourceGroupName, String accountName);
+
+ /**
+ * List blob services of storage account. It returns a collection of one object named default.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @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 paginated response with {@link PagedIterable}.
+ */
+ @ServiceMethod(returns = ReturnType.COLLECTION)
+ PagedIterable list(String resourceGroupName, String accountName, Context context);
+
+ /**
+ * Sets the properties of a storage account’s Blob service, including properties for Storage Analytics and CORS
+ * (Cross-Origin Resource Sharing) rules.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param parameters The properties of a storage account’s Blob service, including properties for Storage Analytics
+ * and CORS (Cross-Origin Resource Sharing) rules.
+ * @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 properties of a storage account’s Blob service along with {@link Response}.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ Response setServicePropertiesWithResponse(String resourceGroupName, String accountName,
+ BlobServicePropertiesInner parameters, Context context);
+
+ /**
+ * Sets the properties of a storage account’s Blob service, including properties for Storage Analytics and CORS
+ * (Cross-Origin Resource Sharing) rules.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param parameters The properties of a storage account’s Blob service, including properties for Storage Analytics
+ * and CORS (Cross-Origin Resource Sharing) rules.
+ * @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 properties of a storage account’s Blob service.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ BlobServicePropertiesInner setServiceProperties(String resourceGroupName, String accountName,
+ BlobServicePropertiesInner parameters);
+
+ /**
+ * Gets the properties of a storage account’s Blob service, including properties for Storage Analytics and CORS
+ * (Cross-Origin Resource Sharing) rules.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @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 properties of a storage account’s Blob service, including properties for Storage Analytics and CORS
+ * (Cross-Origin Resource Sharing) rules along with {@link Response}.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ Response getServicePropertiesWithResponse(String resourceGroupName, String accountName,
+ Context context);
+
+ /**
+ * Gets the properties of a storage account’s Blob service, including properties for Storage Analytics and CORS
+ * (Cross-Origin Resource Sharing) rules.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @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 properties of a storage account’s Blob service, including properties for Storage Analytics and CORS
+ * (Cross-Origin Resource Sharing) rules.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ BlobServicePropertiesInner getServiceProperties(String resourceGroupName, String accountName);
+}
diff --git a/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/DeletedAccountsClient.java b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/DeletedAccountsClient.java
new file mode 100644
index 0000000000000..2c9d76d06a37b
--- /dev/null
+++ b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/DeletedAccountsClient.java
@@ -0,0 +1,66 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.storage.generated.fluent;
+
+import com.azure.core.annotation.ReturnType;
+import com.azure.core.annotation.ServiceMethod;
+import com.azure.core.http.rest.PagedIterable;
+import com.azure.core.http.rest.Response;
+import com.azure.core.util.Context;
+import com.azure.resourcemanager.storage.generated.fluent.models.DeletedAccountInner;
+
+/**
+ * An instance of this class provides access to all the operations defined in DeletedAccountsClient.
+ */
+public interface DeletedAccountsClient {
+ /**
+ * Lists deleted accounts under the subscription.
+ *
+ * @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 from the List Deleted Accounts operation as paginated response with {@link PagedIterable}.
+ */
+ @ServiceMethod(returns = ReturnType.COLLECTION)
+ PagedIterable list();
+
+ /**
+ * Lists deleted accounts under the subscription.
+ *
+ * @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 from the List Deleted Accounts operation as paginated response with {@link PagedIterable}.
+ */
+ @ServiceMethod(returns = ReturnType.COLLECTION)
+ PagedIterable list(Context context);
+
+ /**
+ * Get properties of specified deleted account resource.
+ *
+ * @param deletedAccountName Name of the deleted storage account.
+ * @param location The location of the deleted storage account.
+ * @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 properties of specified deleted account resource along with {@link Response}.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ Response getWithResponse(String deletedAccountName, String location, Context context);
+
+ /**
+ * Get properties of specified deleted account resource.
+ *
+ * @param deletedAccountName Name of the deleted storage account.
+ * @param location The location of the deleted storage account.
+ * @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 properties of specified deleted account resource.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ DeletedAccountInner get(String deletedAccountName, String location);
+}
diff --git a/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/EncryptionScopesClient.java b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/EncryptionScopesClient.java
new file mode 100644
index 0000000000000..a8f6be6c8efec
--- /dev/null
+++ b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/EncryptionScopesClient.java
@@ -0,0 +1,182 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.storage.generated.fluent;
+
+import com.azure.core.annotation.ReturnType;
+import com.azure.core.annotation.ServiceMethod;
+import com.azure.core.http.rest.PagedIterable;
+import com.azure.core.http.rest.Response;
+import com.azure.core.util.Context;
+import com.azure.resourcemanager.storage.generated.fluent.models.EncryptionScopeInner;
+import com.azure.resourcemanager.storage.generated.models.ListEncryptionScopesInclude;
+
+/**
+ * An instance of this class provides access to all the operations defined in EncryptionScopesClient.
+ */
+public interface EncryptionScopesClient {
+ /**
+ * Synchronously creates or updates an encryption scope under the specified storage account. If an encryption scope
+ * is already created and a subsequent request is issued with different properties, the encryption scope properties
+ * will be updated per the specified request.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param encryptionScopeName The name of the encryption scope within the specified storage account. Encryption
+ * scope names must be between 3 and 63 characters in length and use numbers, lower-case letters and dash (-) only.
+ * Every dash (-) character must be immediately preceded and followed by a letter or number.
+ * @param encryptionScope Encryption scope properties to be used for the create or update.
+ * @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 Encryption Scope resource along with {@link Response}.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ Response putWithResponse(String resourceGroupName, String accountName,
+ String encryptionScopeName, EncryptionScopeInner encryptionScope, Context context);
+
+ /**
+ * Synchronously creates or updates an encryption scope under the specified storage account. If an encryption scope
+ * is already created and a subsequent request is issued with different properties, the encryption scope properties
+ * will be updated per the specified request.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param encryptionScopeName The name of the encryption scope within the specified storage account. Encryption
+ * scope names must be between 3 and 63 characters in length and use numbers, lower-case letters and dash (-) only.
+ * Every dash (-) character must be immediately preceded and followed by a letter or number.
+ * @param encryptionScope Encryption scope properties to be used for the create or update.
+ * @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 Encryption Scope resource.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ EncryptionScopeInner put(String resourceGroupName, String accountName, String encryptionScopeName,
+ EncryptionScopeInner encryptionScope);
+
+ /**
+ * Update encryption scope properties as specified in the request body. Update fails if the specified encryption
+ * scope does not already exist.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param encryptionScopeName The name of the encryption scope within the specified storage account. Encryption
+ * scope names must be between 3 and 63 characters in length and use numbers, lower-case letters and dash (-) only.
+ * Every dash (-) character must be immediately preceded and followed by a letter or number.
+ * @param encryptionScope Encryption scope properties to be used for the update.
+ * @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 Encryption Scope resource along with {@link Response}.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ Response patchWithResponse(String resourceGroupName, String accountName,
+ String encryptionScopeName, EncryptionScopeInner encryptionScope, Context context);
+
+ /**
+ * Update encryption scope properties as specified in the request body. Update fails if the specified encryption
+ * scope does not already exist.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param encryptionScopeName The name of the encryption scope within the specified storage account. Encryption
+ * scope names must be between 3 and 63 characters in length and use numbers, lower-case letters and dash (-) only.
+ * Every dash (-) character must be immediately preceded and followed by a letter or number.
+ * @param encryptionScope Encryption scope properties to be used for the update.
+ * @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 Encryption Scope resource.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ EncryptionScopeInner patch(String resourceGroupName, String accountName, String encryptionScopeName,
+ EncryptionScopeInner encryptionScope);
+
+ /**
+ * Returns the properties for the specified encryption scope.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param encryptionScopeName The name of the encryption scope within the specified storage account. Encryption
+ * scope names must be between 3 and 63 characters in length and use numbers, lower-case letters and dash (-) only.
+ * Every dash (-) character must be immediately preceded and followed by a letter or number.
+ * @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 Encryption Scope resource along with {@link Response}.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ Response getWithResponse(String resourceGroupName, String accountName,
+ String encryptionScopeName, Context context);
+
+ /**
+ * Returns the properties for the specified encryption scope.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param encryptionScopeName The name of the encryption scope within the specified storage account. Encryption
+ * scope names must be between 3 and 63 characters in length and use numbers, lower-case letters and dash (-) only.
+ * Every dash (-) character must be immediately preceded and followed by a letter or number.
+ * @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 Encryption Scope resource.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ EncryptionScopeInner get(String resourceGroupName, String accountName, String encryptionScopeName);
+
+ /**
+ * Lists all the encryption scopes available under the specified storage account.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @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 list of encryption scopes requested, and if paging is required, a URL to the next page of encryption
+ * scopes as paginated response with {@link PagedIterable}.
+ */
+ @ServiceMethod(returns = ReturnType.COLLECTION)
+ PagedIterable list(String resourceGroupName, String accountName);
+
+ /**
+ * Lists all the encryption scopes available under the specified storage account.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param maxpagesize Optional, specifies the maximum number of encryption scopes that will be included in the list
+ * response.
+ * @param filter Optional. When specified, only encryption scope names starting with the filter will be listed.
+ * @param include Optional, when specified, will list encryption scopes with the specific state. Defaults to All.
+ * @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 list of encryption scopes requested, and if paging is required, a URL to the next page of encryption
+ * scopes as paginated response with {@link PagedIterable}.
+ */
+ @ServiceMethod(returns = ReturnType.COLLECTION)
+ PagedIterable list(String resourceGroupName, String accountName, Integer maxpagesize,
+ String filter, ListEncryptionScopesInclude include, Context context);
+}
diff --git a/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/FileServicesClient.java b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/FileServicesClient.java
new file mode 100644
index 0000000000000..f9af186de1d9a
--- /dev/null
+++ b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/FileServicesClient.java
@@ -0,0 +1,191 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.storage.generated.fluent;
+
+import com.azure.core.annotation.ReturnType;
+import com.azure.core.annotation.ServiceMethod;
+import com.azure.core.http.rest.PagedIterable;
+import com.azure.core.http.rest.Response;
+import com.azure.core.util.Context;
+import com.azure.resourcemanager.storage.generated.fluent.models.FileServiceItemsInner;
+import com.azure.resourcemanager.storage.generated.fluent.models.FileServicePropertiesInner;
+import com.azure.resourcemanager.storage.generated.fluent.models.FileServiceUsageInner;
+
+/**
+ * An instance of this class provides access to all the operations defined in FileServicesClient.
+ */
+public interface FileServicesClient {
+ /**
+ * List all file services in storage accounts.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @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 body along with {@link Response}.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ Response listWithResponse(String resourceGroupName, String accountName, Context context);
+
+ /**
+ * List all file services in storage accounts.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @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.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ FileServiceItemsInner list(String resourceGroupName, String accountName);
+
+ /**
+ * Sets the properties of file services in storage accounts, including CORS (Cross-Origin Resource Sharing) rules.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param parameters The properties of file services in storage accounts, including CORS (Cross-Origin Resource
+ * Sharing) rules.
+ * @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 properties of File services in storage account along with {@link Response}.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ Response setServicePropertiesWithResponse(String resourceGroupName, String accountName,
+ FileServicePropertiesInner parameters, Context context);
+
+ /**
+ * Sets the properties of file services in storage accounts, including CORS (Cross-Origin Resource Sharing) rules.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param parameters The properties of file services in storage accounts, including CORS (Cross-Origin Resource
+ * Sharing) rules.
+ * @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 properties of File services in storage account.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ FileServicePropertiesInner setServiceProperties(String resourceGroupName, String accountName,
+ FileServicePropertiesInner parameters);
+
+ /**
+ * Gets the properties of file services in storage accounts, including CORS (Cross-Origin Resource Sharing) rules.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @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 properties of file services in storage accounts, including CORS (Cross-Origin Resource Sharing) rules
+ * along with {@link Response}.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ Response getServicePropertiesWithResponse(String resourceGroupName, String accountName,
+ Context context);
+
+ /**
+ * Gets the properties of file services in storage accounts, including CORS (Cross-Origin Resource Sharing) rules.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @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 properties of file services in storage accounts, including CORS (Cross-Origin Resource Sharing)
+ * rules.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ FileServicePropertiesInner getServiceProperties(String resourceGroupName, String accountName);
+
+ /**
+ * Gets the usages of file service in storage account.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @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 usages of file service in storage account as paginated response with {@link PagedIterable}.
+ */
+ @ServiceMethod(returns = ReturnType.COLLECTION)
+ PagedIterable listServiceUsages(String resourceGroupName, String accountName);
+
+ /**
+ * Gets the usages of file service in storage account.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param maxpagesize Optional, specifies the maximum number of file service usages to be included in the list
+ * response.
+ * @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 usages of file service in storage account as paginated response with {@link PagedIterable}.
+ */
+ @ServiceMethod(returns = ReturnType.COLLECTION)
+ PagedIterable listServiceUsages(String resourceGroupName, String accountName,
+ Integer maxpagesize, Context context);
+
+ /**
+ * Gets the usage of file service in storage account including account limits, file share limits and constants used
+ * in recommendations and bursting formula.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @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 usage of file service in storage account including account limits, file share limits and constants
+ * used in recommendations and bursting formula along with {@link Response}.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ Response getServiceUsageWithResponse(String resourceGroupName, String accountName,
+ Context context);
+
+ /**
+ * Gets the usage of file service in storage account including account limits, file share limits and constants used
+ * in recommendations and bursting formula.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @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 usage of file service in storage account including account limits, file share limits and constants
+ * used in recommendations and bursting formula.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ FileServiceUsageInner getServiceUsage(String resourceGroupName, String accountName);
+}
diff --git a/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/FileSharesClient.java b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/FileSharesClient.java
new file mode 100644
index 0000000000000..c21858c42aa0b
--- /dev/null
+++ b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/FileSharesClient.java
@@ -0,0 +1,311 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.storage.generated.fluent;
+
+import com.azure.core.annotation.ReturnType;
+import com.azure.core.annotation.ServiceMethod;
+import com.azure.core.http.rest.PagedIterable;
+import com.azure.core.http.rest.Response;
+import com.azure.core.util.Context;
+import com.azure.resourcemanager.storage.generated.fluent.models.FileShareInner;
+import com.azure.resourcemanager.storage.generated.fluent.models.FileShareItemInner;
+import com.azure.resourcemanager.storage.generated.fluent.models.LeaseShareResponseInner;
+import com.azure.resourcemanager.storage.generated.models.DeletedShare;
+import com.azure.resourcemanager.storage.generated.models.FileSharesLeaseResponse;
+import com.azure.resourcemanager.storage.generated.models.LeaseShareRequest;
+
+/**
+ * An instance of this class provides access to all the operations defined in FileSharesClient.
+ */
+public interface FileSharesClient {
+ /**
+ * Lists all shares.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @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 response schema as paginated response with {@link PagedIterable}.
+ */
+ @ServiceMethod(returns = ReturnType.COLLECTION)
+ PagedIterable list(String resourceGroupName, String accountName);
+
+ /**
+ * Lists all shares.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param maxpagesize Optional. Specified maximum number of shares that can be included in the list.
+ * @param filter Optional. When specified, only share names starting with the filter will be listed.
+ * @param expand Optional, used to expand the properties within share's properties. Valid values are: deleted,
+ * snapshots. Should be passed as a string with delimiter ','.
+ * @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 response schema as paginated response with {@link PagedIterable}.
+ */
+ @ServiceMethod(returns = ReturnType.COLLECTION)
+ PagedIterable list(String resourceGroupName, String accountName, String maxpagesize,
+ String filter, String expand, Context context);
+
+ /**
+ * Creates a new share under the specified account as described by request body. The share resource includes
+ * metadata and properties for that share. It does not include a list of the files contained by the share.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param shareName The name of the file share within the specified storage account. File share names must be
+ * between 3 and 63 characters in length and use numbers, lower-case letters and dash (-) only. Every dash (-)
+ * character must be immediately preceded and followed by a letter or number.
+ * @param fileShare Properties of the file share to create.
+ * @param expand Optional, used to expand the properties within share's properties. Valid values are: snapshots.
+ * Should be passed as a string with delimiter ','.
+ * @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 properties of the file share, including Id, resource name, resource type, Etag along with
+ * {@link Response}.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ Response createWithResponse(String resourceGroupName, String accountName, String shareName,
+ FileShareInner fileShare, String expand, Context context);
+
+ /**
+ * Creates a new share under the specified account as described by request body. The share resource includes
+ * metadata and properties for that share. It does not include a list of the files contained by the share.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param shareName The name of the file share within the specified storage account. File share names must be
+ * between 3 and 63 characters in length and use numbers, lower-case letters and dash (-) only. Every dash (-)
+ * character must be immediately preceded and followed by a letter or number.
+ * @param fileShare Properties of the file share to create.
+ * @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 properties of the file share, including Id, resource name, resource type, Etag.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ FileShareInner create(String resourceGroupName, String accountName, String shareName, FileShareInner fileShare);
+
+ /**
+ * Updates share properties as specified in request body. Properties not mentioned in the request will not be
+ * changed. Update fails if the specified share does not already exist.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param shareName The name of the file share within the specified storage account. File share names must be
+ * between 3 and 63 characters in length and use numbers, lower-case letters and dash (-) only. Every dash (-)
+ * character must be immediately preceded and followed by a letter or number.
+ * @param fileShare Properties to update for the file share.
+ * @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 properties of the file share, including Id, resource name, resource type, Etag along with
+ * {@link Response}.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ Response updateWithResponse(String resourceGroupName, String accountName, String shareName,
+ FileShareInner fileShare, Context context);
+
+ /**
+ * Updates share properties as specified in request body. Properties not mentioned in the request will not be
+ * changed. Update fails if the specified share does not already exist.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param shareName The name of the file share within the specified storage account. File share names must be
+ * between 3 and 63 characters in length and use numbers, lower-case letters and dash (-) only. Every dash (-)
+ * character must be immediately preceded and followed by a letter or number.
+ * @param fileShare Properties to update for the file share.
+ * @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 properties of the file share, including Id, resource name, resource type, Etag.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ FileShareInner update(String resourceGroupName, String accountName, String shareName, FileShareInner fileShare);
+
+ /**
+ * Gets properties of a specified share.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param shareName The name of the file share within the specified storage account. File share names must be
+ * between 3 and 63 characters in length and use numbers, lower-case letters and dash (-) only. Every dash (-)
+ * character must be immediately preceded and followed by a letter or number.
+ * @param expand Optional, used to expand the properties within share's properties. Valid values are: stats. Should
+ * be passed as a string with delimiter ','.
+ * @param xMsSnapshot Optional, used to retrieve properties of a snapshot.
+ * @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 properties of a specified share along with {@link Response}.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ Response getWithResponse(String resourceGroupName, String accountName, String shareName,
+ String expand, String xMsSnapshot, Context context);
+
+ /**
+ * Gets properties of a specified share.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param shareName The name of the file share within the specified storage account. File share names must be
+ * between 3 and 63 characters in length and use numbers, lower-case letters and dash (-) only. Every dash (-)
+ * character must be immediately preceded and followed by a letter or number.
+ * @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 properties of a specified share.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ FileShareInner get(String resourceGroupName, String accountName, String shareName);
+
+ /**
+ * Deletes specified share under its account.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param shareName The name of the file share within the specified storage account. File share names must be
+ * between 3 and 63 characters in length and use numbers, lower-case letters and dash (-) only. Every dash (-)
+ * character must be immediately preceded and followed by a letter or number.
+ * @param xMsSnapshot Optional, used to delete a snapshot.
+ * @param include Optional. Valid values are: snapshots, leased-snapshots, none. The default value is snapshots. For
+ * 'snapshots', the file share is deleted including all of its file share snapshots. If the file share contains
+ * leased-snapshots, the deletion fails. For 'leased-snapshots', the file share is deleted included all of its file
+ * share snapshots (leased/unleased). For 'none', the file share is deleted if it has no share snapshots. If the
+ * file share contains any snapshots (leased or unleased), the deletion fails.
+ * @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 {@link Response}.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ Response deleteWithResponse(String resourceGroupName, String accountName, String shareName,
+ String xMsSnapshot, String include, Context context);
+
+ /**
+ * Deletes specified share under its account.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param shareName The name of the file share within the specified storage account. File share names must be
+ * between 3 and 63 characters in length and use numbers, lower-case letters and dash (-) only. Every dash (-)
+ * character must be immediately preceded and followed by a letter or number.
+ * @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.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ void delete(String resourceGroupName, String accountName, String shareName);
+
+ /**
+ * Restore a file share within a valid retention days if share soft delete is enabled.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param shareName The name of the file share within the specified storage account. File share names must be
+ * between 3 and 63 characters in length and use numbers, lower-case letters and dash (-) only. Every dash (-)
+ * character must be immediately preceded and followed by a letter or number.
+ * @param deletedShare The deletedShare parameter.
+ * @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 {@link Response}.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ Response restoreWithResponse(String resourceGroupName, String accountName, String shareName,
+ DeletedShare deletedShare, Context context);
+
+ /**
+ * Restore a file share within a valid retention days if share soft delete is enabled.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param shareName The name of the file share within the specified storage account. File share names must be
+ * between 3 and 63 characters in length and use numbers, lower-case letters and dash (-) only. Every dash (-)
+ * character must be immediately preceded and followed by a letter or number.
+ * @param deletedShare The deletedShare parameter.
+ * @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.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ void restore(String resourceGroupName, String accountName, String shareName, DeletedShare deletedShare);
+
+ /**
+ * The Lease Share operation establishes and manages a lock on a share for delete operations. The lock duration can
+ * be 15 to 60 seconds, or can be infinite.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param shareName The name of the file share within the specified storage account. File share names must be
+ * between 3 and 63 characters in length and use numbers, lower-case letters and dash (-) only. Every dash (-)
+ * character must be immediately preceded and followed by a letter or number.
+ * @param xMsSnapshot Optional. Specify the snapshot time to lease a snapshot.
+ * @param parameters Lease Share request body.
+ * @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 lease Share response schema.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ FileSharesLeaseResponse leaseWithResponse(String resourceGroupName, String accountName, String shareName,
+ String xMsSnapshot, LeaseShareRequest parameters, Context context);
+
+ /**
+ * The Lease Share operation establishes and manages a lock on a share for delete operations. The lock duration can
+ * be 15 to 60 seconds, or can be infinite.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param shareName The name of the file share within the specified storage account. File share names must be
+ * between 3 and 63 characters in length and use numbers, lower-case letters and dash (-) only. Every dash (-)
+ * character must be immediately preceded and followed by a letter or number.
+ * @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 lease Share response schema.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ LeaseShareResponseInner lease(String resourceGroupName, String accountName, String shareName);
+}
diff --git a/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/LocalUsersOperationsClient.java b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/LocalUsersOperationsClient.java
new file mode 100644
index 0000000000000..8319ee63a72d1
--- /dev/null
+++ b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/LocalUsersOperationsClient.java
@@ -0,0 +1,243 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.storage.generated.fluent;
+
+import com.azure.core.annotation.ReturnType;
+import com.azure.core.annotation.ServiceMethod;
+import com.azure.core.http.rest.PagedIterable;
+import com.azure.core.http.rest.Response;
+import com.azure.core.util.Context;
+import com.azure.resourcemanager.storage.generated.fluent.models.LocalUserInner;
+import com.azure.resourcemanager.storage.generated.fluent.models.LocalUserKeysInner;
+import com.azure.resourcemanager.storage.generated.fluent.models.LocalUserRegeneratePasswordResultInner;
+import com.azure.resourcemanager.storage.generated.models.ListLocalUserIncludeParam;
+
+/**
+ * An instance of this class provides access to all the operations defined in LocalUsersOperationsClient.
+ */
+public interface LocalUsersOperationsClient {
+ /**
+ * List the local users associated with the storage account.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @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 list of local users requested, and if paging is required, a URL to the next page of local users as
+ * paginated response with {@link PagedIterable}.
+ */
+ @ServiceMethod(returns = ReturnType.COLLECTION)
+ PagedIterable list(String resourceGroupName, String accountName);
+
+ /**
+ * List the local users associated with the storage account.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param maxpagesize Optional, specifies the maximum number of local users that will be included in the list
+ * response.
+ * @param filter Optional. When specified, only local user names starting with the filter will be listed.
+ * @param include Optional, when specified, will list local users enabled for the specific protocol. Lists all users
+ * by default.
+ * @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 list of local users requested, and if paging is required, a URL to the next page of local users as
+ * paginated response with {@link PagedIterable}.
+ */
+ @ServiceMethod(returns = ReturnType.COLLECTION)
+ PagedIterable list(String resourceGroupName, String accountName, Integer maxpagesize, String filter,
+ ListLocalUserIncludeParam include, Context context);
+
+ /**
+ * Get the local user of the storage account by username.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param username The name of local user. The username must contain lowercase letters and numbers only. It must be
+ * unique only within the storage account.
+ * @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 local user of the storage account by username along with {@link Response}.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ Response getWithResponse(String resourceGroupName, String accountName, String username,
+ Context context);
+
+ /**
+ * Get the local user of the storage account by username.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param username The name of local user. The username must contain lowercase letters and numbers only. It must be
+ * unique only within the storage account.
+ * @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 local user of the storage account by username.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ LocalUserInner get(String resourceGroupName, String accountName, String username);
+
+ /**
+ * Create or update the properties of a local user associated with the storage account. Properties for NFSv3
+ * enablement and extended groups cannot be set with other properties.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param username The name of local user. The username must contain lowercase letters and numbers only. It must be
+ * unique only within the storage account.
+ * @param properties The local user associated with a storage account.
+ * @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 local user associated with the storage accounts along with {@link Response}.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ Response createOrUpdateWithResponse(String resourceGroupName, String accountName, String username,
+ LocalUserInner properties, Context context);
+
+ /**
+ * Create or update the properties of a local user associated with the storage account. Properties for NFSv3
+ * enablement and extended groups cannot be set with other properties.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param username The name of local user. The username must contain lowercase letters and numbers only. It must be
+ * unique only within the storage account.
+ * @param properties The local user associated with a storage account.
+ * @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 local user associated with the storage accounts.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ LocalUserInner createOrUpdate(String resourceGroupName, String accountName, String username,
+ LocalUserInner properties);
+
+ /**
+ * Deletes the local user associated with the specified storage account.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param username The name of local user. The username must contain lowercase letters and numbers only. It must be
+ * unique only within the storage account.
+ * @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 {@link Response}.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ Response deleteWithResponse(String resourceGroupName, String accountName, String username, Context context);
+
+ /**
+ * Deletes the local user associated with the specified storage account.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param username The name of local user. The username must contain lowercase letters and numbers only. It must be
+ * unique only within the storage account.
+ * @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.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ void delete(String resourceGroupName, String accountName, String username);
+
+ /**
+ * List SSH authorized keys and shared key of the local user.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param username The name of local user. The username must contain lowercase letters and numbers only. It must be
+ * unique only within the storage account.
+ * @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 Storage Account Local User keys along with {@link Response}.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ Response listKeysWithResponse(String resourceGroupName, String accountName, String username,
+ Context context);
+
+ /**
+ * List SSH authorized keys and shared key of the local user.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param username The name of local user. The username must contain lowercase letters and numbers only. It must be
+ * unique only within the storage account.
+ * @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 Storage Account Local User keys.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ LocalUserKeysInner listKeys(String resourceGroupName, String accountName, String username);
+
+ /**
+ * Regenerate the local user SSH password.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param username The name of local user. The username must contain lowercase letters and numbers only. It must be
+ * unique only within the storage account.
+ * @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 secrets of Storage Account Local User along with {@link Response}.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ Response regeneratePasswordWithResponse(String resourceGroupName,
+ String accountName, String username, Context context);
+
+ /**
+ * Regenerate the local user SSH password.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param username The name of local user. The username must contain lowercase letters and numbers only. It must be
+ * unique only within the storage account.
+ * @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 secrets of Storage Account Local User.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ LocalUserRegeneratePasswordResultInner regeneratePassword(String resourceGroupName, String accountName,
+ String username);
+}
diff --git a/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/ManagementPoliciesClient.java b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/ManagementPoliciesClient.java
new file mode 100644
index 0000000000000..58bc220fb3312
--- /dev/null
+++ b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/ManagementPoliciesClient.java
@@ -0,0 +1,121 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.storage.generated.fluent;
+
+import com.azure.core.annotation.ReturnType;
+import com.azure.core.annotation.ServiceMethod;
+import com.azure.core.http.rest.Response;
+import com.azure.core.util.Context;
+import com.azure.resourcemanager.storage.generated.fluent.models.ManagementPolicyInner;
+import com.azure.resourcemanager.storage.generated.models.ManagementPolicyName;
+
+/**
+ * An instance of this class provides access to all the operations defined in ManagementPoliciesClient.
+ */
+public interface ManagementPoliciesClient {
+ /**
+ * Gets the managementpolicy associated with the specified storage account.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param managementPolicyName The name of the Storage Account Management Policy. It should always be 'default'.
+ * @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 managementpolicy associated with the specified storage account along with {@link Response}.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ Response getWithResponse(String resourceGroupName, String accountName,
+ ManagementPolicyName managementPolicyName, Context context);
+
+ /**
+ * Gets the managementpolicy associated with the specified storage account.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param managementPolicyName The name of the Storage Account Management Policy. It should always be 'default'.
+ * @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 managementpolicy associated with the specified storage account.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ ManagementPolicyInner get(String resourceGroupName, String accountName, ManagementPolicyName managementPolicyName);
+
+ /**
+ * Sets the managementpolicy to the specified storage account.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param managementPolicyName The name of the Storage Account Management Policy. It should always be 'default'.
+ * @param properties The ManagementPolicy set to a storage account.
+ * @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 Get Storage Account ManagementPolicies operation response along with {@link Response}.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ Response createOrUpdateWithResponse(String resourceGroupName, String accountName,
+ ManagementPolicyName managementPolicyName, ManagementPolicyInner properties, Context context);
+
+ /**
+ * Sets the managementpolicy to the specified storage account.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param managementPolicyName The name of the Storage Account Management Policy. It should always be 'default'.
+ * @param properties The ManagementPolicy set to a storage account.
+ * @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 Get Storage Account ManagementPolicies operation response.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ ManagementPolicyInner createOrUpdate(String resourceGroupName, String accountName,
+ ManagementPolicyName managementPolicyName, ManagementPolicyInner properties);
+
+ /**
+ * Deletes the managementpolicy associated with the specified storage account.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param managementPolicyName The name of the Storage Account Management Policy. It should always be 'default'.
+ * @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 {@link Response}.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ Response deleteWithResponse(String resourceGroupName, String accountName,
+ ManagementPolicyName managementPolicyName, Context context);
+
+ /**
+ * Deletes the managementpolicy associated with the specified storage account.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param managementPolicyName The name of the Storage Account Management Policy. It should always be 'default'.
+ * @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.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ void delete(String resourceGroupName, String accountName, ManagementPolicyName managementPolicyName);
+}
diff --git a/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/NetworkSecurityPerimeterConfigurationsClient.java b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/NetworkSecurityPerimeterConfigurationsClient.java
new file mode 100644
index 0000000000000..4c70555510044
--- /dev/null
+++ b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/NetworkSecurityPerimeterConfigurationsClient.java
@@ -0,0 +1,156 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.storage.generated.fluent;
+
+import com.azure.core.annotation.ReturnType;
+import com.azure.core.annotation.ServiceMethod;
+import com.azure.core.http.rest.PagedIterable;
+import com.azure.core.http.rest.Response;
+import com.azure.core.management.polling.PollResult;
+import com.azure.core.util.Context;
+import com.azure.core.util.polling.SyncPoller;
+import com.azure.resourcemanager.storage.generated.fluent.models.NetworkSecurityPerimeterConfigurationInner;
+
+/**
+ * An instance of this class provides access to all the operations defined in
+ * NetworkSecurityPerimeterConfigurationsClient.
+ */
+public interface NetworkSecurityPerimeterConfigurationsClient {
+ /**
+ * Gets list of effective NetworkSecurityPerimeterConfiguration for storage account.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @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 list of effective NetworkSecurityPerimeterConfiguration for storage account as paginated response with
+ * {@link PagedIterable}.
+ */
+ @ServiceMethod(returns = ReturnType.COLLECTION)
+ PagedIterable list(String resourceGroupName, String accountName);
+
+ /**
+ * Gets list of effective NetworkSecurityPerimeterConfiguration for storage account.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @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 list of effective NetworkSecurityPerimeterConfiguration for storage account as paginated response with
+ * {@link PagedIterable}.
+ */
+ @ServiceMethod(returns = ReturnType.COLLECTION)
+ PagedIterable list(String resourceGroupName, String accountName,
+ Context context);
+
+ /**
+ * Gets effective NetworkSecurityPerimeterConfiguration for association.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param networkSecurityPerimeterConfigurationName The name for Network Security Perimeter configuration.
+ * @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 effective NetworkSecurityPerimeterConfiguration for association along with {@link Response}.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ Response getWithResponse(String resourceGroupName, String accountName,
+ String networkSecurityPerimeterConfigurationName, Context context);
+
+ /**
+ * Gets effective NetworkSecurityPerimeterConfiguration for association.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param networkSecurityPerimeterConfigurationName The name for Network Security Perimeter configuration.
+ * @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 effective NetworkSecurityPerimeterConfiguration for association.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ NetworkSecurityPerimeterConfigurationInner get(String resourceGroupName, String accountName,
+ String networkSecurityPerimeterConfigurationName);
+
+ /**
+ * Refreshes any information about the association.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param networkSecurityPerimeterConfigurationName The name for Network Security Perimeter configuration.
+ * @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 {@link SyncPoller} for polling of long-running operation.
+ */
+ @ServiceMethod(returns = ReturnType.LONG_RUNNING_OPERATION)
+ SyncPoller, Void> beginReconcile(String resourceGroupName, String accountName,
+ String networkSecurityPerimeterConfigurationName);
+
+ /**
+ * Refreshes any information about the association.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param networkSecurityPerimeterConfigurationName The name for Network Security Perimeter configuration.
+ * @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 {@link SyncPoller} for polling of long-running operation.
+ */
+ @ServiceMethod(returns = ReturnType.LONG_RUNNING_OPERATION)
+ SyncPoller, Void> beginReconcile(String resourceGroupName, String accountName,
+ String networkSecurityPerimeterConfigurationName, Context context);
+
+ /**
+ * Refreshes any information about the association.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param networkSecurityPerimeterConfigurationName The name for Network Security Perimeter configuration.
+ * @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.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ void reconcile(String resourceGroupName, String accountName, String networkSecurityPerimeterConfigurationName);
+
+ /**
+ * Refreshes any information about the association.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param networkSecurityPerimeterConfigurationName The name for Network Security Perimeter configuration.
+ * @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.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ void reconcile(String resourceGroupName, String accountName, String networkSecurityPerimeterConfigurationName,
+ Context context);
+}
diff --git a/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/ObjectReplicationPoliciesOperationsClient.java b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/ObjectReplicationPoliciesOperationsClient.java
new file mode 100644
index 0000000000000..8196e6228718a
--- /dev/null
+++ b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/ObjectReplicationPoliciesOperationsClient.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.storage.generated.fluent;
+
+import com.azure.core.annotation.ReturnType;
+import com.azure.core.annotation.ServiceMethod;
+import com.azure.core.http.rest.PagedIterable;
+import com.azure.core.http.rest.Response;
+import com.azure.core.util.Context;
+import com.azure.resourcemanager.storage.generated.fluent.models.ObjectReplicationPolicyInner;
+
+/**
+ * An instance of this class provides access to all the operations defined in ObjectReplicationPoliciesOperationsClient.
+ */
+public interface ObjectReplicationPoliciesOperationsClient {
+ /**
+ * List the object replication policies associated with the storage account.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @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 list storage account object replication policies as paginated response with {@link PagedIterable}.
+ */
+ @ServiceMethod(returns = ReturnType.COLLECTION)
+ PagedIterable list(String resourceGroupName, String accountName);
+
+ /**
+ * List the object replication policies associated with the storage account.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @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 list storage account object replication policies as paginated response with {@link PagedIterable}.
+ */
+ @ServiceMethod(returns = ReturnType.COLLECTION)
+ PagedIterable list(String resourceGroupName, String accountName, Context context);
+
+ /**
+ * Get the object replication policy of the storage account by policy ID.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param objectReplicationPolicyId For the destination account, provide the value 'default'. Configure the policy
+ * on the destination account first. For the source account, provide the value of the policy ID that is returned
+ * when you download the policy that was defined on the destination account. The policy is downloaded as a JSON
+ * file.
+ * @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 object replication policy of the storage account by policy ID along with {@link Response}.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ Response getWithResponse(String resourceGroupName, String accountName,
+ String objectReplicationPolicyId, Context context);
+
+ /**
+ * Get the object replication policy of the storage account by policy ID.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param objectReplicationPolicyId For the destination account, provide the value 'default'. Configure the policy
+ * on the destination account first. For the source account, provide the value of the policy ID that is returned
+ * when you download the policy that was defined on the destination account. The policy is downloaded as a JSON
+ * file.
+ * @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 object replication policy of the storage account by policy ID.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ ObjectReplicationPolicyInner get(String resourceGroupName, String accountName, String objectReplicationPolicyId);
+
+ /**
+ * Create or update the object replication policy of the storage account.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param objectReplicationPolicyId For the destination account, provide the value 'default'. Configure the policy
+ * on the destination account first. For the source account, provide the value of the policy ID that is returned
+ * when you download the policy that was defined on the destination account. The policy is downloaded as a JSON
+ * file.
+ * @param properties The object replication policy set to a storage account. A unique policy ID will be created if
+ * absent.
+ * @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 replication policy between two storage accounts along with {@link Response}.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ Response createOrUpdateWithResponse(String resourceGroupName, String accountName,
+ String objectReplicationPolicyId, ObjectReplicationPolicyInner properties, Context context);
+
+ /**
+ * Create or update the object replication policy of the storage account.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param objectReplicationPolicyId For the destination account, provide the value 'default'. Configure the policy
+ * on the destination account first. For the source account, provide the value of the policy ID that is returned
+ * when you download the policy that was defined on the destination account. The policy is downloaded as a JSON
+ * file.
+ * @param properties The object replication policy set to a storage account. A unique policy ID will be created if
+ * absent.
+ * @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 replication policy between two storage accounts.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ ObjectReplicationPolicyInner createOrUpdate(String resourceGroupName, String accountName,
+ String objectReplicationPolicyId, ObjectReplicationPolicyInner properties);
+
+ /**
+ * Deletes the object replication policy associated with the specified storage account.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param objectReplicationPolicyId For the destination account, provide the value 'default'. Configure the policy
+ * on the destination account first. For the source account, provide the value of the policy ID that is returned
+ * when you download the policy that was defined on the destination account. The policy is downloaded as a JSON
+ * file.
+ * @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 {@link Response}.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ Response deleteWithResponse(String resourceGroupName, String accountName, String objectReplicationPolicyId,
+ Context context);
+
+ /**
+ * Deletes the object replication policy associated with the specified storage account.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param objectReplicationPolicyId For the destination account, provide the value 'default'. Configure the policy
+ * on the destination account first. For the source account, provide the value of the policy ID that is returned
+ * when you download the policy that was defined on the destination account. The policy is downloaded as a JSON
+ * file.
+ * @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.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ void delete(String resourceGroupName, String accountName, String objectReplicationPolicyId);
+}
diff --git a/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/OperationsClient.java b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/OperationsClient.java
new file mode 100644
index 0000000000000..f68d33a037e78
--- /dev/null
+++ b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/OperationsClient.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.storage.generated.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.storage.generated.fluent.models.OperationInner;
+
+/**
+ * An instance of this class provides access to all the operations defined in OperationsClient.
+ */
+public interface OperationsClient {
+ /**
+ * Lists all of the available Storage Rest API operations.
+ *
+ * @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 result of the request to list Storage operations as paginated response with {@link PagedIterable}.
+ */
+ @ServiceMethod(returns = ReturnType.COLLECTION)
+ PagedIterable list();
+
+ /**
+ * Lists all of the available Storage Rest API operations.
+ *
+ * @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 result of the request to list Storage operations as paginated response with {@link PagedIterable}.
+ */
+ @ServiceMethod(returns = ReturnType.COLLECTION)
+ PagedIterable list(Context context);
+}
diff --git a/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/PrivateEndpointConnectionsClient.java b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/PrivateEndpointConnectionsClient.java
new file mode 100644
index 0000000000000..a89f35ce6beec
--- /dev/null
+++ b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/PrivateEndpointConnectionsClient.java
@@ -0,0 +1,162 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.storage.generated.fluent;
+
+import com.azure.core.annotation.ReturnType;
+import com.azure.core.annotation.ServiceMethod;
+import com.azure.core.http.rest.PagedIterable;
+import com.azure.core.http.rest.Response;
+import com.azure.core.util.Context;
+import com.azure.resourcemanager.storage.generated.fluent.models.PrivateEndpointConnectionInner;
+
+/**
+ * An instance of this class provides access to all the operations defined in PrivateEndpointConnectionsClient.
+ */
+public interface PrivateEndpointConnectionsClient {
+ /**
+ * List all the private endpoint connections associated with the storage account.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @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 list of private endpoint connection associated with the specified storage account as paginated response
+ * with {@link PagedIterable}.
+ */
+ @ServiceMethod(returns = ReturnType.COLLECTION)
+ PagedIterable list(String resourceGroupName, String accountName);
+
+ /**
+ * List all the private endpoint connections associated with the storage account.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @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 list of private endpoint connection associated with the specified storage account as paginated response
+ * with {@link PagedIterable}.
+ */
+ @ServiceMethod(returns = ReturnType.COLLECTION)
+ PagedIterable list(String resourceGroupName, String accountName, Context context);
+
+ /**
+ * Gets the specified private endpoint connection associated with the storage account.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param privateEndpointConnectionName The name of the private endpoint connection associated with the Azure
+ * 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 specified private endpoint connection associated with the storage account along with
+ * {@link Response}.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ Response getWithResponse(String resourceGroupName, String accountName,
+ String privateEndpointConnectionName, Context context);
+
+ /**
+ * Gets the specified private endpoint connection associated with the storage account.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param privateEndpointConnectionName The name of the private endpoint connection associated with the Azure
+ * 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 specified private endpoint connection associated with the storage account.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ PrivateEndpointConnectionInner get(String resourceGroupName, String accountName,
+ String privateEndpointConnectionName);
+
+ /**
+ * Update the state of specified private endpoint connection associated with the storage account.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param privateEndpointConnectionName The name of the private endpoint connection associated with the Azure
+ * resource.
+ * @param properties The private endpoint connection properties.
+ * @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 Private Endpoint Connection resource along with {@link Response}.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ Response putWithResponse(String resourceGroupName, String accountName,
+ String privateEndpointConnectionName, PrivateEndpointConnectionInner properties, Context context);
+
+ /**
+ * Update the state of specified private endpoint connection associated with the storage account.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param privateEndpointConnectionName The name of the private endpoint connection associated with the Azure
+ * resource.
+ * @param properties The private endpoint connection properties.
+ * @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 Private Endpoint Connection resource.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ PrivateEndpointConnectionInner put(String resourceGroupName, String accountName,
+ String privateEndpointConnectionName, PrivateEndpointConnectionInner properties);
+
+ /**
+ * Deletes the specified private endpoint connection associated with the storage account.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param privateEndpointConnectionName The name of the private endpoint connection associated with the Azure
+ * 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 {@link Response}.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ Response deleteWithResponse(String resourceGroupName, String accountName,
+ String privateEndpointConnectionName, Context context);
+
+ /**
+ * Deletes the specified private endpoint connection associated with the storage account.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param privateEndpointConnectionName The name of the private endpoint connection associated with the Azure
+ * 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.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ void delete(String resourceGroupName, String accountName, String privateEndpointConnectionName);
+}
diff --git a/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/PrivateLinkResourcesClient.java b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/PrivateLinkResourcesClient.java
new file mode 100644
index 0000000000000..cee06a618599a
--- /dev/null
+++ b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/PrivateLinkResourcesClient.java
@@ -0,0 +1,48 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.storage.generated.fluent;
+
+import com.azure.core.annotation.ReturnType;
+import com.azure.core.annotation.ServiceMethod;
+import com.azure.core.http.rest.Response;
+import com.azure.core.util.Context;
+import com.azure.resourcemanager.storage.generated.fluent.models.PrivateLinkResourceListResultInner;
+
+/**
+ * An instance of this class provides access to all the operations defined in PrivateLinkResourcesClient.
+ */
+public interface PrivateLinkResourcesClient {
+ /**
+ * Gets the private link resources that need to be created for a storage account.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @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 private link resources that need to be created for a storage account along with {@link Response}.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ Response listByStorageAccountWithResponse(String resourceGroupName,
+ String accountName, Context context);
+
+ /**
+ * Gets the private link resources that need to be created for a storage account.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @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 private link resources that need to be created for a storage account.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ PrivateLinkResourceListResultInner listByStorageAccount(String resourceGroupName, String accountName);
+}
diff --git a/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/QueueServicesClient.java b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/QueueServicesClient.java
new file mode 100644
index 0000000000000..c5580b1f8ae7a
--- /dev/null
+++ b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/QueueServicesClient.java
@@ -0,0 +1,123 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.storage.generated.fluent;
+
+import com.azure.core.annotation.ReturnType;
+import com.azure.core.annotation.ServiceMethod;
+import com.azure.core.http.rest.Response;
+import com.azure.core.util.Context;
+import com.azure.resourcemanager.storage.generated.fluent.models.ListQueueServicesInner;
+import com.azure.resourcemanager.storage.generated.fluent.models.QueueServicePropertiesInner;
+
+/**
+ * An instance of this class provides access to all the operations defined in QueueServicesClient.
+ */
+public interface QueueServicesClient {
+ /**
+ * List all queue services for the storage account.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @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 body along with {@link Response}.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ Response listWithResponse(String resourceGroupName, String accountName, Context context);
+
+ /**
+ * List all queue services for the storage account.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @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.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ ListQueueServicesInner list(String resourceGroupName, String accountName);
+
+ /**
+ * Sets the properties of a storage account’s Queue service, including properties for Storage Analytics and CORS
+ * (Cross-Origin Resource Sharing) rules.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param parameters The properties of a storage account’s Queue service, only properties for Storage Analytics and
+ * CORS (Cross-Origin Resource Sharing) rules can be specified.
+ * @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 properties of a storage account’s Queue service along with {@link Response}.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ Response setServicePropertiesWithResponse(String resourceGroupName, String accountName,
+ QueueServicePropertiesInner parameters, Context context);
+
+ /**
+ * Sets the properties of a storage account’s Queue service, including properties for Storage Analytics and CORS
+ * (Cross-Origin Resource Sharing) rules.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param parameters The properties of a storage account’s Queue service, only properties for Storage Analytics and
+ * CORS (Cross-Origin Resource Sharing) rules can be specified.
+ * @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 properties of a storage account’s Queue service.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ QueueServicePropertiesInner setServiceProperties(String resourceGroupName, String accountName,
+ QueueServicePropertiesInner parameters);
+
+ /**
+ * Gets the properties of a storage account’s Queue service, including properties for Storage Analytics and CORS
+ * (Cross-Origin Resource Sharing) rules.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @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 properties of a storage account’s Queue service, including properties for Storage Analytics and CORS
+ * (Cross-Origin Resource Sharing) rules along with {@link Response}.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ Response getServicePropertiesWithResponse(String resourceGroupName, String accountName,
+ Context context);
+
+ /**
+ * Gets the properties of a storage account’s Queue service, including properties for Storage Analytics and CORS
+ * (Cross-Origin Resource Sharing) rules.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @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 properties of a storage account’s Queue service, including properties for Storage Analytics and CORS
+ * (Cross-Origin Resource Sharing) rules.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ QueueServicePropertiesInner getServiceProperties(String resourceGroupName, String accountName);
+}
diff --git a/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/QueuesClient.java b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/QueuesClient.java
new file mode 100644
index 0000000000000..874a22d0201c9
--- /dev/null
+++ b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/QueuesClient.java
@@ -0,0 +1,210 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.storage.generated.fluent;
+
+import com.azure.core.annotation.ReturnType;
+import com.azure.core.annotation.ServiceMethod;
+import com.azure.core.http.rest.PagedIterable;
+import com.azure.core.http.rest.Response;
+import com.azure.core.util.Context;
+import com.azure.resourcemanager.storage.generated.fluent.models.ListQueueInner;
+import com.azure.resourcemanager.storage.generated.fluent.models.StorageQueueInner;
+
+/**
+ * An instance of this class provides access to all the operations defined in QueuesClient.
+ */
+public interface QueuesClient {
+ /**
+ * Creates a new queue with the specified queue name, under the specified account.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param queueName A queue name must be unique within a storage account and must be between 3 and 63 characters.The
+ * name must comprise of lowercase alphanumeric and dash(-) characters only, it should begin and end with an
+ * alphanumeric character and it cannot have two consecutive dash(-) characters.
+ * @param queue Queue properties and metadata to be created with.
+ * @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 body along with {@link Response}.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ Response createWithResponse(String resourceGroupName, String accountName, String queueName,
+ StorageQueueInner queue, Context context);
+
+ /**
+ * Creates a new queue with the specified queue name, under the specified account.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param queueName A queue name must be unique within a storage account and must be between 3 and 63 characters.The
+ * name must comprise of lowercase alphanumeric and dash(-) characters only, it should begin and end with an
+ * alphanumeric character and it cannot have two consecutive dash(-) characters.
+ * @param queue Queue properties and metadata to be created with.
+ * @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.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ StorageQueueInner create(String resourceGroupName, String accountName, String queueName, StorageQueueInner queue);
+
+ /**
+ * Creates a new queue with the specified queue name, under the specified account.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param queueName A queue name must be unique within a storage account and must be between 3 and 63 characters.The
+ * name must comprise of lowercase alphanumeric and dash(-) characters only, it should begin and end with an
+ * alphanumeric character and it cannot have two consecutive dash(-) characters.
+ * @param queue Queue properties and metadata to be created with.
+ * @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 body along with {@link Response}.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ Response updateWithResponse(String resourceGroupName, String accountName, String queueName,
+ StorageQueueInner queue, Context context);
+
+ /**
+ * Creates a new queue with the specified queue name, under the specified account.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param queueName A queue name must be unique within a storage account and must be between 3 and 63 characters.The
+ * name must comprise of lowercase alphanumeric and dash(-) characters only, it should begin and end with an
+ * alphanumeric character and it cannot have two consecutive dash(-) characters.
+ * @param queue Queue properties and metadata to be created with.
+ * @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.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ StorageQueueInner update(String resourceGroupName, String accountName, String queueName, StorageQueueInner queue);
+
+ /**
+ * Gets the queue with the specified queue name, under the specified account if it exists.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param queueName A queue name must be unique within a storage account and must be between 3 and 63 characters.The
+ * name must comprise of lowercase alphanumeric and dash(-) characters only, it should begin and end with an
+ * alphanumeric character and it cannot have two consecutive dash(-) characters.
+ * @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 queue with the specified queue name, under the specified account if it exists along with
+ * {@link Response}.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ Response getWithResponse(String resourceGroupName, String accountName, String queueName,
+ Context context);
+
+ /**
+ * Gets the queue with the specified queue name, under the specified account if it exists.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param queueName A queue name must be unique within a storage account and must be between 3 and 63 characters.The
+ * name must comprise of lowercase alphanumeric and dash(-) characters only, it should begin and end with an
+ * alphanumeric character and it cannot have two consecutive dash(-) characters.
+ * @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 queue with the specified queue name, under the specified account if it exists.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ StorageQueueInner get(String resourceGroupName, String accountName, String queueName);
+
+ /**
+ * Deletes the queue with the specified queue name, under the specified account if it exists.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param queueName A queue name must be unique within a storage account and must be between 3 and 63 characters.The
+ * name must comprise of lowercase alphanumeric and dash(-) characters only, it should begin and end with an
+ * alphanumeric character and it cannot have two consecutive dash(-) characters.
+ * @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 {@link Response}.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ Response deleteWithResponse(String resourceGroupName, String accountName, String queueName, Context context);
+
+ /**
+ * Deletes the queue with the specified queue name, under the specified account if it exists.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param queueName A queue name must be unique within a storage account and must be between 3 and 63 characters.The
+ * name must comprise of lowercase alphanumeric and dash(-) characters only, it should begin and end with an
+ * alphanumeric character and it cannot have two consecutive dash(-) characters.
+ * @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.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ void delete(String resourceGroupName, String accountName, String queueName);
+
+ /**
+ * Gets a list of all the queues under the specified storage account.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @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 all the queues under the specified storage account as paginated response with
+ * {@link PagedIterable}.
+ */
+ @ServiceMethod(returns = ReturnType.COLLECTION)
+ PagedIterable list(String resourceGroupName, String accountName);
+
+ /**
+ * Gets a list of all the queues under the specified storage account.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param maxpagesize Optional, a maximum number of queues that should be included in a list queue response.
+ * @param filter Optional, When specified, only the queues with a name starting with the given filter will be
+ * listed.
+ * @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 all the queues under the specified storage account as paginated response with
+ * {@link PagedIterable}.
+ */
+ @ServiceMethod(returns = ReturnType.COLLECTION)
+ PagedIterable list(String resourceGroupName, String accountName, String maxpagesize, String filter,
+ Context context);
+}
diff --git a/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/SkusClient.java b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/SkusClient.java
new file mode 100644
index 0000000000000..5e42c16f999a7
--- /dev/null
+++ b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/SkusClient.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.storage.generated.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.storage.generated.fluent.models.SkuInformationInner;
+
+/**
+ * An instance of this class provides access to all the operations defined in SkusClient.
+ */
+public interface SkusClient {
+ /**
+ * Lists the available SKUs supported by Microsoft.Storage for given subscription.
+ *
+ * @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 from the List Storage SKUs operation as paginated response with {@link PagedIterable}.
+ */
+ @ServiceMethod(returns = ReturnType.COLLECTION)
+ PagedIterable list();
+
+ /**
+ * Lists the available SKUs supported by Microsoft.Storage for given subscription.
+ *
+ * @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 from the List Storage SKUs operation as paginated response with {@link PagedIterable}.
+ */
+ @ServiceMethod(returns = ReturnType.COLLECTION)
+ PagedIterable list(Context context);
+}
diff --git a/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/StorageAccountsClient.java b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/StorageAccountsClient.java
new file mode 100644
index 0000000000000..6688eb74324fb
--- /dev/null
+++ b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/StorageAccountsClient.java
@@ -0,0 +1,893 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.storage.generated.fluent;
+
+import com.azure.core.annotation.ReturnType;
+import com.azure.core.annotation.ServiceMethod;
+import com.azure.core.http.rest.PagedIterable;
+import com.azure.core.http.rest.Response;
+import com.azure.core.management.polling.PollResult;
+import com.azure.core.util.Context;
+import com.azure.core.util.polling.SyncPoller;
+import com.azure.resourcemanager.storage.generated.fluent.models.BlobRestoreStatusInner;
+import com.azure.resourcemanager.storage.generated.fluent.models.CheckNameAvailabilityResultInner;
+import com.azure.resourcemanager.storage.generated.fluent.models.ListAccountSasResponseInner;
+import com.azure.resourcemanager.storage.generated.fluent.models.ListServiceSasResponseInner;
+import com.azure.resourcemanager.storage.generated.fluent.models.StorageAccountInner;
+import com.azure.resourcemanager.storage.generated.fluent.models.StorageAccountListKeysResultInner;
+import com.azure.resourcemanager.storage.generated.fluent.models.StorageAccountMigrationInner;
+import com.azure.resourcemanager.storage.generated.models.AccountSasParameters;
+import com.azure.resourcemanager.storage.generated.models.BlobRestoreParameters;
+import com.azure.resourcemanager.storage.generated.models.FailoverType;
+import com.azure.resourcemanager.storage.generated.models.ListKeyExpand;
+import com.azure.resourcemanager.storage.generated.models.MigrationName;
+import com.azure.resourcemanager.storage.generated.models.ServiceSasParameters;
+import com.azure.resourcemanager.storage.generated.models.StorageAccountCheckNameAvailabilityParameters;
+import com.azure.resourcemanager.storage.generated.models.StorageAccountCreateParameters;
+import com.azure.resourcemanager.storage.generated.models.StorageAccountExpand;
+import com.azure.resourcemanager.storage.generated.models.StorageAccountRegenerateKeyParameters;
+import com.azure.resourcemanager.storage.generated.models.StorageAccountUpdateParameters;
+
+/**
+ * An instance of this class provides access to all the operations defined in StorageAccountsClient.
+ */
+public interface StorageAccountsClient {
+ /**
+ * Checks that the storage account name is valid and is not already in use.
+ *
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @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 CheckNameAvailability operation response along with {@link Response}.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ Response
+ checkNameAvailabilityWithResponse(StorageAccountCheckNameAvailabilityParameters accountName, Context context);
+
+ /**
+ * Checks that the storage account name is valid and is not already in use.
+ *
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @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 CheckNameAvailability operation response.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ CheckNameAvailabilityResultInner checkNameAvailability(StorageAccountCheckNameAvailabilityParameters accountName);
+
+ /**
+ * Asynchronously creates a new storage account with the specified parameters. If an account is already created and
+ * a subsequent create request is issued with different properties, the account properties will be updated. If an
+ * account is already created and a subsequent create or update request is issued with the exact same set of
+ * properties, the request will succeed.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param parameters The parameters to provide for the created account.
+ * @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 {@link SyncPoller} for polling of the storage account.
+ */
+ @ServiceMethod(returns = ReturnType.LONG_RUNNING_OPERATION)
+ SyncPoller, StorageAccountInner> beginCreate(String resourceGroupName,
+ String accountName, StorageAccountCreateParameters parameters);
+
+ /**
+ * Asynchronously creates a new storage account with the specified parameters. If an account is already created and
+ * a subsequent create request is issued with different properties, the account properties will be updated. If an
+ * account is already created and a subsequent create or update request is issued with the exact same set of
+ * properties, the request will succeed.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param parameters The parameters to provide for the created account.
+ * @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 {@link SyncPoller} for polling of the storage account.
+ */
+ @ServiceMethod(returns = ReturnType.LONG_RUNNING_OPERATION)
+ SyncPoller, StorageAccountInner> beginCreate(String resourceGroupName,
+ String accountName, StorageAccountCreateParameters parameters, Context context);
+
+ /**
+ * Asynchronously creates a new storage account with the specified parameters. If an account is already created and
+ * a subsequent create request is issued with different properties, the account properties will be updated. If an
+ * account is already created and a subsequent create or update request is issued with the exact same set of
+ * properties, the request will succeed.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param parameters The parameters to provide for the created account.
+ * @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 storage account.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ StorageAccountInner create(String resourceGroupName, String accountName, StorageAccountCreateParameters parameters);
+
+ /**
+ * Asynchronously creates a new storage account with the specified parameters. If an account is already created and
+ * a subsequent create request is issued with different properties, the account properties will be updated. If an
+ * account is already created and a subsequent create or update request is issued with the exact same set of
+ * properties, the request will succeed.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param parameters The parameters to provide for the created account.
+ * @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 storage account.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ StorageAccountInner create(String resourceGroupName, String accountName, StorageAccountCreateParameters parameters,
+ Context context);
+
+ /**
+ * Deletes a storage account in Microsoft Azure.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @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 {@link Response}.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ Response deleteWithResponse(String resourceGroupName, String accountName, Context context);
+
+ /**
+ * Deletes a storage account in Microsoft Azure.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @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.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ void delete(String resourceGroupName, String accountName);
+
+ /**
+ * Returns the properties for the specified storage account including but not limited to name, SKU name, location,
+ * and account status. The ListKeys operation should be used to retrieve storage keys.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param expand May be used to expand the properties within account's properties. By default, data is not included
+ * when fetching properties. Currently we only support geoReplicationStats and blobRestoreStatus.
+ * @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 storage account along with {@link Response}.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ Response getByResourceGroupWithResponse(String resourceGroupName, String accountName,
+ StorageAccountExpand expand, Context context);
+
+ /**
+ * Returns the properties for the specified storage account including but not limited to name, SKU name, location,
+ * and account status. The ListKeys operation should be used to retrieve storage keys.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @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 storage account.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ StorageAccountInner getByResourceGroup(String resourceGroupName, String accountName);
+
+ /**
+ * The update operation can be used to update the SKU, encryption, access tier, or tags for a storage account. It
+ * can also be used to map the account to a custom domain. Only one custom domain is supported per storage account;
+ * the replacement/change of custom domain is not supported. In order to replace an old custom domain, the old value
+ * must be cleared/unregistered before a new value can be set. The update of multiple properties is supported. This
+ * call does not change the storage keys for the account. If you want to change the storage account keys, use the
+ * regenerate keys operation. The location and name of the storage account cannot be changed after creation.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param parameters The parameters to provide for the updated account.
+ * @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 storage account along with {@link Response}.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ Response updateWithResponse(String resourceGroupName, String accountName,
+ StorageAccountUpdateParameters parameters, Context context);
+
+ /**
+ * The update operation can be used to update the SKU, encryption, access tier, or tags for a storage account. It
+ * can also be used to map the account to a custom domain. Only one custom domain is supported per storage account;
+ * the replacement/change of custom domain is not supported. In order to replace an old custom domain, the old value
+ * must be cleared/unregistered before a new value can be set. The update of multiple properties is supported. This
+ * call does not change the storage keys for the account. If you want to change the storage account keys, use the
+ * regenerate keys operation. The location and name of the storage account cannot be changed after creation.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param parameters The parameters to provide for the updated account.
+ * @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 storage account.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ StorageAccountInner update(String resourceGroupName, String accountName, StorageAccountUpdateParameters parameters);
+
+ /**
+ * Lists all the storage accounts available under the subscription. Note that storage keys are not returned; use the
+ * ListKeys operation for this.
+ *
+ * @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 from the List Storage Accounts operation as paginated response with {@link PagedIterable}.
+ */
+ @ServiceMethod(returns = ReturnType.COLLECTION)
+ PagedIterable list();
+
+ /**
+ * Lists all the storage accounts available under the subscription. Note that storage keys are not returned; use the
+ * ListKeys operation for this.
+ *
+ * @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 from the List Storage Accounts operation as paginated response with {@link PagedIterable}.
+ */
+ @ServiceMethod(returns = ReturnType.COLLECTION)
+ PagedIterable list(Context context);
+
+ /**
+ * Lists all the storage accounts available under the given resource group. Note that storage keys are not returned;
+ * use the ListKeys operation for this.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @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 from the List Storage Accounts operation as paginated response with {@link PagedIterable}.
+ */
+ @ServiceMethod(returns = ReturnType.COLLECTION)
+ PagedIterable listByResourceGroup(String resourceGroupName);
+
+ /**
+ * Lists all the storage accounts available under the given resource group. Note that storage keys are not returned;
+ * use the ListKeys operation for this.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @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 from the List Storage Accounts operation as paginated response with {@link PagedIterable}.
+ */
+ @ServiceMethod(returns = ReturnType.COLLECTION)
+ PagedIterable listByResourceGroup(String resourceGroupName, Context context);
+
+ /**
+ * Lists the access keys or Kerberos keys (if active directory enabled) for the specified storage account.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param expand Specifies type of the key to be listed. Possible value is kerb.
+ * @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 from the ListKeys operation along with {@link Response}.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ Response listKeysWithResponse(String resourceGroupName, String accountName,
+ ListKeyExpand expand, Context context);
+
+ /**
+ * Lists the access keys or Kerberos keys (if active directory enabled) for the specified storage account.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @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 from the ListKeys operation.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ StorageAccountListKeysResultInner listKeys(String resourceGroupName, String accountName);
+
+ /**
+ * Regenerates one of the access keys or Kerberos keys for the specified storage account.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param regenerateKey Specifies name of the key which should be regenerated -- key1, key2, kerb1, kerb2.
+ * @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 from the ListKeys operation along with {@link Response}.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ Response regenerateKeyWithResponse(String resourceGroupName, String accountName,
+ StorageAccountRegenerateKeyParameters regenerateKey, Context context);
+
+ /**
+ * Regenerates one of the access keys or Kerberos keys for the specified storage account.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param regenerateKey Specifies name of the key which should be regenerated -- key1, key2, kerb1, kerb2.
+ * @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 from the ListKeys operation.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ StorageAccountListKeysResultInner regenerateKey(String resourceGroupName, String accountName,
+ StorageAccountRegenerateKeyParameters regenerateKey);
+
+ /**
+ * List SAS credentials of a storage account.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param parameters The parameters to provide to list SAS credentials for the storage account.
+ * @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 List SAS credentials operation response along with {@link Response}.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ Response listAccountSasWithResponse(String resourceGroupName, String accountName,
+ AccountSasParameters parameters, Context context);
+
+ /**
+ * List SAS credentials of a storage account.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param parameters The parameters to provide to list SAS credentials for the storage account.
+ * @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 List SAS credentials operation response.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ ListAccountSasResponseInner listAccountSas(String resourceGroupName, String accountName,
+ AccountSasParameters parameters);
+
+ /**
+ * List service SAS credentials of a specific resource.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param parameters The parameters to provide to list service SAS credentials.
+ * @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 List service SAS credentials operation response along with {@link Response}.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ Response listServiceSasWithResponse(String resourceGroupName, String accountName,
+ ServiceSasParameters parameters, Context context);
+
+ /**
+ * List service SAS credentials of a specific resource.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param parameters The parameters to provide to list service SAS credentials.
+ * @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 List service SAS credentials operation response.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ ListServiceSasResponseInner listServiceSas(String resourceGroupName, String accountName,
+ ServiceSasParameters parameters);
+
+ /**
+ * A failover request can be triggered for a storage account in the event a primary endpoint becomes unavailable for
+ * any reason. The failover occurs from the storage account's primary cluster to the secondary cluster for RA-GRS
+ * accounts. The secondary cluster will become primary after failover and the account is converted to LRS. In the
+ * case of a Planned Failover, the primary and secondary clusters are swapped after failover and the account remains
+ * geo-replicated. Failover should continue to be used in the event of availability issues as Planned failover is
+ * only available while the primary and secondary endpoints are available. The primary use case of a Planned
+ * Failover is disaster recovery testing drills. This type of failover is invoked by setting FailoverType parameter
+ * to 'Planned'. Learn more about the failover options here-
+ * https://learn.microsoft.com/en-us/azure/storage/common/storage-disaster-recovery-guidance.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @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 {@link SyncPoller} for polling of long-running operation.
+ */
+ @ServiceMethod(returns = ReturnType.LONG_RUNNING_OPERATION)
+ SyncPoller, Void> beginFailover(String resourceGroupName, String accountName);
+
+ /**
+ * A failover request can be triggered for a storage account in the event a primary endpoint becomes unavailable for
+ * any reason. The failover occurs from the storage account's primary cluster to the secondary cluster for RA-GRS
+ * accounts. The secondary cluster will become primary after failover and the account is converted to LRS. In the
+ * case of a Planned Failover, the primary and secondary clusters are swapped after failover and the account remains
+ * geo-replicated. Failover should continue to be used in the event of availability issues as Planned failover is
+ * only available while the primary and secondary endpoints are available. The primary use case of a Planned
+ * Failover is disaster recovery testing drills. This type of failover is invoked by setting FailoverType parameter
+ * to 'Planned'. Learn more about the failover options here-
+ * https://learn.microsoft.com/en-us/azure/storage/common/storage-disaster-recovery-guidance.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param failoverType The parameter is set to 'Planned' to indicate whether a Planned failover is requested.
+ * @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 {@link SyncPoller} for polling of long-running operation.
+ */
+ @ServiceMethod(returns = ReturnType.LONG_RUNNING_OPERATION)
+ SyncPoller, Void> beginFailover(String resourceGroupName, String accountName,
+ FailoverType failoverType, Context context);
+
+ /**
+ * A failover request can be triggered for a storage account in the event a primary endpoint becomes unavailable for
+ * any reason. The failover occurs from the storage account's primary cluster to the secondary cluster for RA-GRS
+ * accounts. The secondary cluster will become primary after failover and the account is converted to LRS. In the
+ * case of a Planned Failover, the primary and secondary clusters are swapped after failover and the account remains
+ * geo-replicated. Failover should continue to be used in the event of availability issues as Planned failover is
+ * only available while the primary and secondary endpoints are available. The primary use case of a Planned
+ * Failover is disaster recovery testing drills. This type of failover is invoked by setting FailoverType parameter
+ * to 'Planned'. Learn more about the failover options here-
+ * https://learn.microsoft.com/en-us/azure/storage/common/storage-disaster-recovery-guidance.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @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.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ void failover(String resourceGroupName, String accountName);
+
+ /**
+ * A failover request can be triggered for a storage account in the event a primary endpoint becomes unavailable for
+ * any reason. The failover occurs from the storage account's primary cluster to the secondary cluster for RA-GRS
+ * accounts. The secondary cluster will become primary after failover and the account is converted to LRS. In the
+ * case of a Planned Failover, the primary and secondary clusters are swapped after failover and the account remains
+ * geo-replicated. Failover should continue to be used in the event of availability issues as Planned failover is
+ * only available while the primary and secondary endpoints are available. The primary use case of a Planned
+ * Failover is disaster recovery testing drills. This type of failover is invoked by setting FailoverType parameter
+ * to 'Planned'. Learn more about the failover options here-
+ * https://learn.microsoft.com/en-us/azure/storage/common/storage-disaster-recovery-guidance.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param failoverType The parameter is set to 'Planned' to indicate whether a Planned failover is requested.
+ * @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.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ void failover(String resourceGroupName, String accountName, FailoverType failoverType, Context context);
+
+ /**
+ * Live Migration of storage account to enable Hns.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param requestType Required. Hierarchical namespace migration type can either be a hierarchical namespace
+ * validation request 'HnsOnValidationRequest' or a hydration request 'HnsOnHydrationRequest'. The validation
+ * request will validate the migration whereas the hydration request will migrate the account.
+ * @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 {@link SyncPoller} for polling of long-running operation.
+ */
+ @ServiceMethod(returns = ReturnType.LONG_RUNNING_OPERATION)
+ SyncPoller, Void> beginHierarchicalNamespaceMigration(String resourceGroupName, String accountName,
+ String requestType);
+
+ /**
+ * Live Migration of storage account to enable Hns.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param requestType Required. Hierarchical namespace migration type can either be a hierarchical namespace
+ * validation request 'HnsOnValidationRequest' or a hydration request 'HnsOnHydrationRequest'. The validation
+ * request will validate the migration whereas the hydration request will migrate the account.
+ * @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 {@link SyncPoller} for polling of long-running operation.
+ */
+ @ServiceMethod(returns = ReturnType.LONG_RUNNING_OPERATION)
+ SyncPoller, Void> beginHierarchicalNamespaceMigration(String resourceGroupName, String accountName,
+ String requestType, Context context);
+
+ /**
+ * Live Migration of storage account to enable Hns.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param requestType Required. Hierarchical namespace migration type can either be a hierarchical namespace
+ * validation request 'HnsOnValidationRequest' or a hydration request 'HnsOnHydrationRequest'. The validation
+ * request will validate the migration whereas the hydration request will migrate the account.
+ * @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.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ void hierarchicalNamespaceMigration(String resourceGroupName, String accountName, String requestType);
+
+ /**
+ * Live Migration of storage account to enable Hns.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param requestType Required. Hierarchical namespace migration type can either be a hierarchical namespace
+ * validation request 'HnsOnValidationRequest' or a hydration request 'HnsOnHydrationRequest'. The validation
+ * request will validate the migration whereas the hydration request will migrate the account.
+ * @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.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ void hierarchicalNamespaceMigration(String resourceGroupName, String accountName, String requestType,
+ Context context);
+
+ /**
+ * Abort live Migration of storage account to enable Hns.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @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 {@link SyncPoller} for polling of long-running operation.
+ */
+ @ServiceMethod(returns = ReturnType.LONG_RUNNING_OPERATION)
+ SyncPoller, Void> beginAbortHierarchicalNamespaceMigration(String resourceGroupName,
+ String accountName);
+
+ /**
+ * Abort live Migration of storage account to enable Hns.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @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 {@link SyncPoller} for polling of long-running operation.
+ */
+ @ServiceMethod(returns = ReturnType.LONG_RUNNING_OPERATION)
+ SyncPoller, Void> beginAbortHierarchicalNamespaceMigration(String resourceGroupName,
+ String accountName, Context context);
+
+ /**
+ * Abort live Migration of storage account to enable Hns.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @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.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ void abortHierarchicalNamespaceMigration(String resourceGroupName, String accountName);
+
+ /**
+ * Abort live Migration of storage account to enable Hns.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @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.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ void abortHierarchicalNamespaceMigration(String resourceGroupName, String accountName, Context context);
+
+ /**
+ * Account Migration request can be triggered for a storage account to change its redundancy level. The migration
+ * updates the non-zonal redundant storage account to a zonal redundant account or vice-versa in order to have
+ * better reliability and availability. Zone-redundant storage (ZRS) replicates your storage account synchronously
+ * across three Azure availability zones in the primary region.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param parameters The request parameters required to perform storage account migration.
+ * @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 {@link SyncPoller} for polling of long-running operation.
+ */
+ @ServiceMethod(returns = ReturnType.LONG_RUNNING_OPERATION)
+ SyncPoller, Void> beginCustomerInitiatedMigration(String resourceGroupName, String accountName,
+ StorageAccountMigrationInner parameters);
+
+ /**
+ * Account Migration request can be triggered for a storage account to change its redundancy level. The migration
+ * updates the non-zonal redundant storage account to a zonal redundant account or vice-versa in order to have
+ * better reliability and availability. Zone-redundant storage (ZRS) replicates your storage account synchronously
+ * across three Azure availability zones in the primary region.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param parameters The request parameters required to perform storage account migration.
+ * @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 {@link SyncPoller} for polling of long-running operation.
+ */
+ @ServiceMethod(returns = ReturnType.LONG_RUNNING_OPERATION)
+ SyncPoller, Void> beginCustomerInitiatedMigration(String resourceGroupName, String accountName,
+ StorageAccountMigrationInner parameters, Context context);
+
+ /**
+ * Account Migration request can be triggered for a storage account to change its redundancy level. The migration
+ * updates the non-zonal redundant storage account to a zonal redundant account or vice-versa in order to have
+ * better reliability and availability. Zone-redundant storage (ZRS) replicates your storage account synchronously
+ * across three Azure availability zones in the primary region.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param parameters The request parameters required to perform storage account migration.
+ * @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.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ void customerInitiatedMigration(String resourceGroupName, String accountName,
+ StorageAccountMigrationInner parameters);
+
+ /**
+ * Account Migration request can be triggered for a storage account to change its redundancy level. The migration
+ * updates the non-zonal redundant storage account to a zonal redundant account or vice-versa in order to have
+ * better reliability and availability. Zone-redundant storage (ZRS) replicates your storage account synchronously
+ * across three Azure availability zones in the primary region.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param parameters The request parameters required to perform storage account migration.
+ * @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.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ void customerInitiatedMigration(String resourceGroupName, String accountName,
+ StorageAccountMigrationInner parameters, Context context);
+
+ /**
+ * Gets the status of the ongoing migration for the specified storage account.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param migrationName The name of the Storage Account Migration. It should always be 'default'.
+ * @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 status of the ongoing migration for the specified storage account along with {@link Response}.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ Response getCustomerInitiatedMigrationWithResponse(String resourceGroupName,
+ String accountName, MigrationName migrationName, Context context);
+
+ /**
+ * Gets the status of the ongoing migration for the specified storage account.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param migrationName The name of the Storage Account Migration. It should always be 'default'.
+ * @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 status of the ongoing migration for the specified storage account.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ StorageAccountMigrationInner getCustomerInitiatedMigration(String resourceGroupName, String accountName,
+ MigrationName migrationName);
+
+ /**
+ * Restore blobs in the specified blob ranges.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param parameters The parameters to provide for restore blob ranges.
+ * @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 {@link SyncPoller} for polling of blob restore status.
+ */
+ @ServiceMethod(returns = ReturnType.LONG_RUNNING_OPERATION)
+ SyncPoller, BlobRestoreStatusInner>
+ beginRestoreBlobRanges(String resourceGroupName, String accountName, BlobRestoreParameters parameters);
+
+ /**
+ * Restore blobs in the specified blob ranges.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param parameters The parameters to provide for restore blob ranges.
+ * @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 {@link SyncPoller} for polling of blob restore status.
+ */
+ @ServiceMethod(returns = ReturnType.LONG_RUNNING_OPERATION)
+ SyncPoller, BlobRestoreStatusInner> beginRestoreBlobRanges(
+ String resourceGroupName, String accountName, BlobRestoreParameters parameters, Context context);
+
+ /**
+ * Restore blobs in the specified blob ranges.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param parameters The parameters to provide for restore blob ranges.
+ * @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 blob restore status.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ BlobRestoreStatusInner restoreBlobRanges(String resourceGroupName, String accountName,
+ BlobRestoreParameters parameters);
+
+ /**
+ * Restore blobs in the specified blob ranges.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param parameters The parameters to provide for restore blob ranges.
+ * @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 blob restore status.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ BlobRestoreStatusInner restoreBlobRanges(String resourceGroupName, String accountName,
+ BlobRestoreParameters parameters, Context context);
+
+ /**
+ * Revoke user delegation keys.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @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 {@link Response}.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ Response revokeUserDelegationKeysWithResponse(String resourceGroupName, String accountName, Context context);
+
+ /**
+ * Revoke user delegation keys.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @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.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ void revokeUserDelegationKeys(String resourceGroupName, String accountName);
+}
diff --git a/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/StorageManagementClient.java b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/StorageManagementClient.java
new file mode 100644
index 0000000000000..0760331c5a14f
--- /dev/null
+++ b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/StorageManagementClient.java
@@ -0,0 +1,216 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.storage.generated.fluent;
+
+import com.azure.core.http.HttpPipeline;
+import java.time.Duration;
+
+/**
+ * The interface for StorageManagementClient class.
+ */
+public interface StorageManagementClient {
+ /**
+ * Gets The ID of the target subscription.
+ *
+ * @return the subscriptionId value.
+ */
+ String getSubscriptionId();
+
+ /**
+ * Gets server parameter.
+ *
+ * @return the endpoint value.
+ */
+ String getEndpoint();
+
+ /**
+ * Gets Api Version.
+ *
+ * @return the apiVersion value.
+ */
+ String getApiVersion();
+
+ /**
+ * Gets The HTTP pipeline to send requests through.
+ *
+ * @return the httpPipeline value.
+ */
+ HttpPipeline getHttpPipeline();
+
+ /**
+ * Gets The default poll interval for long-running operation.
+ *
+ * @return the defaultPollInterval value.
+ */
+ Duration getDefaultPollInterval();
+
+ /**
+ * Gets the BlobServicesClient object to access its operations.
+ *
+ * @return the BlobServicesClient object.
+ */
+ BlobServicesClient getBlobServices();
+
+ /**
+ * Gets the BlobContainersClient object to access its operations.
+ *
+ * @return the BlobContainersClient object.
+ */
+ BlobContainersClient getBlobContainers();
+
+ /**
+ * Gets the FileServicesClient object to access its operations.
+ *
+ * @return the FileServicesClient object.
+ */
+ FileServicesClient getFileServices();
+
+ /**
+ * Gets the FileSharesClient object to access its operations.
+ *
+ * @return the FileSharesClient object.
+ */
+ FileSharesClient getFileShares();
+
+ /**
+ * Gets the QueueServicesClient object to access its operations.
+ *
+ * @return the QueueServicesClient object.
+ */
+ QueueServicesClient getQueueServices();
+
+ /**
+ * Gets the QueuesClient object to access its operations.
+ *
+ * @return the QueuesClient object.
+ */
+ QueuesClient getQueues();
+
+ /**
+ * Gets the OperationsClient object to access its operations.
+ *
+ * @return the OperationsClient object.
+ */
+ OperationsClient getOperations();
+
+ /**
+ * Gets the SkusClient object to access its operations.
+ *
+ * @return the SkusClient object.
+ */
+ SkusClient getSkus();
+
+ /**
+ * Gets the StorageAccountsClient object to access its operations.
+ *
+ * @return the StorageAccountsClient object.
+ */
+ StorageAccountsClient getStorageAccounts();
+
+ /**
+ * Gets the DeletedAccountsClient object to access its operations.
+ *
+ * @return the DeletedAccountsClient object.
+ */
+ DeletedAccountsClient getDeletedAccounts();
+
+ /**
+ * Gets the UsagesClient object to access its operations.
+ *
+ * @return the UsagesClient object.
+ */
+ UsagesClient getUsages();
+
+ /**
+ * Gets the ManagementPoliciesClient object to access its operations.
+ *
+ * @return the ManagementPoliciesClient object.
+ */
+ ManagementPoliciesClient getManagementPolicies();
+
+ /**
+ * Gets the BlobInventoryPoliciesClient object to access its operations.
+ *
+ * @return the BlobInventoryPoliciesClient object.
+ */
+ BlobInventoryPoliciesClient getBlobInventoryPolicies();
+
+ /**
+ * Gets the PrivateEndpointConnectionsClient object to access its operations.
+ *
+ * @return the PrivateEndpointConnectionsClient object.
+ */
+ PrivateEndpointConnectionsClient getPrivateEndpointConnections();
+
+ /**
+ * Gets the PrivateLinkResourcesClient object to access its operations.
+ *
+ * @return the PrivateLinkResourcesClient object.
+ */
+ PrivateLinkResourcesClient getPrivateLinkResources();
+
+ /**
+ * Gets the ObjectReplicationPoliciesOperationsClient object to access its operations.
+ *
+ * @return the ObjectReplicationPoliciesOperationsClient object.
+ */
+ ObjectReplicationPoliciesOperationsClient getObjectReplicationPoliciesOperations();
+
+ /**
+ * Gets the LocalUsersOperationsClient object to access its operations.
+ *
+ * @return the LocalUsersOperationsClient object.
+ */
+ LocalUsersOperationsClient getLocalUsersOperations();
+
+ /**
+ * Gets the EncryptionScopesClient object to access its operations.
+ *
+ * @return the EncryptionScopesClient object.
+ */
+ EncryptionScopesClient getEncryptionScopes();
+
+ /**
+ * Gets the TableServicesClient object to access its operations.
+ *
+ * @return the TableServicesClient object.
+ */
+ TableServicesClient getTableServices();
+
+ /**
+ * Gets the TablesClient object to access its operations.
+ *
+ * @return the TablesClient object.
+ */
+ TablesClient getTables();
+
+ /**
+ * Gets the NetworkSecurityPerimeterConfigurationsClient object to access its operations.
+ *
+ * @return the NetworkSecurityPerimeterConfigurationsClient object.
+ */
+ NetworkSecurityPerimeterConfigurationsClient getNetworkSecurityPerimeterConfigurations();
+
+ /**
+ * Gets the StorageTaskAssignmentsClient object to access its operations.
+ *
+ * @return the StorageTaskAssignmentsClient object.
+ */
+ StorageTaskAssignmentsClient getStorageTaskAssignments();
+
+ /**
+ * Gets the StorageTaskAssignmentsInstancesReportsClient object to access its operations.
+ *
+ * @return the StorageTaskAssignmentsInstancesReportsClient object.
+ */
+ StorageTaskAssignmentsInstancesReportsClient getStorageTaskAssignmentsInstancesReports();
+
+ /**
+ * Gets the StorageTaskAssignmentInstancesReportsClient object to access its operations.
+ *
+ * @return the StorageTaskAssignmentInstancesReportsClient object.
+ */
+ StorageTaskAssignmentInstancesReportsClient getStorageTaskAssignmentInstancesReports();
+}
diff --git a/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/StorageTaskAssignmentInstancesReportsClient.java b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/StorageTaskAssignmentInstancesReportsClient.java
new file mode 100644
index 0000000000000..b4d69524c5117
--- /dev/null
+++ b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/StorageTaskAssignmentInstancesReportsClient.java
@@ -0,0 +1,60 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.storage.generated.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.storage.generated.fluent.models.StorageTaskReportInstanceInner;
+
+/**
+ * An instance of this class provides access to all the operations defined in
+ * StorageTaskAssignmentInstancesReportsClient.
+ */
+public interface StorageTaskAssignmentInstancesReportsClient {
+ /**
+ * Fetch the report summary of a single storage task assignment's instances.
+ *
+ * @param resourceGroupName The name of the resource group. The name is case insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param storageTaskAssignmentName The name of the storage task assignment within the specified resource group.
+ * Storage task assignment names must be between 3 and 24 characters in length and use numbers and lower-case
+ * letters only.
+ * @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 fetch Storage Tasks Run Summary as paginated response with {@link PagedIterable}.
+ */
+ @ServiceMethod(returns = ReturnType.COLLECTION)
+ PagedIterable list(String resourceGroupName, String accountName,
+ String storageTaskAssignmentName);
+
+ /**
+ * Fetch the report summary of a single storage task assignment's instances.
+ *
+ * @param resourceGroupName The name of the resource group. The name is case insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param storageTaskAssignmentName The name of the storage task assignment within the specified resource group.
+ * Storage task assignment names must be between 3 and 24 characters in length and use numbers and lower-case
+ * letters only.
+ * @param maxpagesize Optional, specifies the maximum number of storage task assignment instances to be included in
+ * the list response.
+ * @param filter Optional. When specified, it can be used to query using reporting properties. See [Constructing
+ * Filter
+ * Strings](https://learn.microsoft.com/en-us/rest/api/storageservices/querying-tables-and-entities#constructing-filter-strings)
+ * for details.
+ * @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 fetch Storage Tasks Run Summary as paginated response with {@link PagedIterable}.
+ */
+ @ServiceMethod(returns = ReturnType.COLLECTION)
+ PagedIterable list(String resourceGroupName, String accountName,
+ String storageTaskAssignmentName, Integer maxpagesize, String filter, Context context);
+}
diff --git a/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/StorageTaskAssignmentsClient.java b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/StorageTaskAssignmentsClient.java
new file mode 100644
index 0000000000000..09193372e4283
--- /dev/null
+++ b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/StorageTaskAssignmentsClient.java
@@ -0,0 +1,329 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.storage.generated.fluent;
+
+import com.azure.core.annotation.ReturnType;
+import com.azure.core.annotation.ServiceMethod;
+import com.azure.core.http.rest.PagedIterable;
+import com.azure.core.http.rest.Response;
+import com.azure.core.management.polling.PollResult;
+import com.azure.core.util.Context;
+import com.azure.core.util.polling.SyncPoller;
+import com.azure.resourcemanager.storage.generated.fluent.models.StorageTaskAssignmentInner;
+import com.azure.resourcemanager.storage.generated.models.StorageTaskAssignmentUpdateParameters;
+
+/**
+ * An instance of this class provides access to all the operations defined in StorageTaskAssignmentsClient.
+ */
+public interface StorageTaskAssignmentsClient {
+ /**
+ * Asynchronously creates a new storage task assignment sub-resource with the specified parameters. If a storage
+ * task assignment is already created and a subsequent create request is issued with different properties, the
+ * storage task assignment properties will be updated. If a storage task assignment is already created and a
+ * subsequent create or update request is issued with the exact same set of properties, the request will succeed.
+ *
+ * @param resourceGroupName The name of the resource group. The name is case insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param storageTaskAssignmentName The name of the storage task assignment within the specified resource group.
+ * Storage task assignment names must be between 3 and 24 characters in length and use numbers and lower-case
+ * letters only.
+ * @param parameters The parameters to create a Storage Task Assignment.
+ * @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 {@link SyncPoller} for polling of the storage task assignment.
+ */
+ @ServiceMethod(returns = ReturnType.LONG_RUNNING_OPERATION)
+ SyncPoller, StorageTaskAssignmentInner> beginCreate(String resourceGroupName,
+ String accountName, String storageTaskAssignmentName, StorageTaskAssignmentInner parameters);
+
+ /**
+ * Asynchronously creates a new storage task assignment sub-resource with the specified parameters. If a storage
+ * task assignment is already created and a subsequent create request is issued with different properties, the
+ * storage task assignment properties will be updated. If a storage task assignment is already created and a
+ * subsequent create or update request is issued with the exact same set of properties, the request will succeed.
+ *
+ * @param resourceGroupName The name of the resource group. The name is case insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param storageTaskAssignmentName The name of the storage task assignment within the specified resource group.
+ * Storage task assignment names must be between 3 and 24 characters in length and use numbers and lower-case
+ * letters only.
+ * @param parameters The parameters to create a Storage Task Assignment.
+ * @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 {@link SyncPoller} for polling of the storage task assignment.
+ */
+ @ServiceMethod(returns = ReturnType.LONG_RUNNING_OPERATION)
+ SyncPoller, StorageTaskAssignmentInner> beginCreate(String resourceGroupName,
+ String accountName, String storageTaskAssignmentName, StorageTaskAssignmentInner parameters, Context context);
+
+ /**
+ * Asynchronously creates a new storage task assignment sub-resource with the specified parameters. If a storage
+ * task assignment is already created and a subsequent create request is issued with different properties, the
+ * storage task assignment properties will be updated. If a storage task assignment is already created and a
+ * subsequent create or update request is issued with the exact same set of properties, the request will succeed.
+ *
+ * @param resourceGroupName The name of the resource group. The name is case insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param storageTaskAssignmentName The name of the storage task assignment within the specified resource group.
+ * Storage task assignment names must be between 3 and 24 characters in length and use numbers and lower-case
+ * letters only.
+ * @param parameters The parameters to create a Storage Task Assignment.
+ * @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 storage task assignment.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ StorageTaskAssignmentInner create(String resourceGroupName, String accountName, String storageTaskAssignmentName,
+ StorageTaskAssignmentInner parameters);
+
+ /**
+ * Asynchronously creates a new storage task assignment sub-resource with the specified parameters. If a storage
+ * task assignment is already created and a subsequent create request is issued with different properties, the
+ * storage task assignment properties will be updated. If a storage task assignment is already created and a
+ * subsequent create or update request is issued with the exact same set of properties, the request will succeed.
+ *
+ * @param resourceGroupName The name of the resource group. The name is case insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param storageTaskAssignmentName The name of the storage task assignment within the specified resource group.
+ * Storage task assignment names must be between 3 and 24 characters in length and use numbers and lower-case
+ * letters only.
+ * @param parameters The parameters to create a Storage Task Assignment.
+ * @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 storage task assignment.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ StorageTaskAssignmentInner create(String resourceGroupName, String accountName, String storageTaskAssignmentName,
+ StorageTaskAssignmentInner parameters, Context context);
+
+ /**
+ * Update storage task assignment properties.
+ *
+ * @param resourceGroupName The name of the resource group. The name is case insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param storageTaskAssignmentName The name of the storage task assignment within the specified resource group.
+ * Storage task assignment names must be between 3 and 24 characters in length and use numbers and lower-case
+ * letters only.
+ * @param parameters The parameters to update a Storage Task Assignment.
+ * @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 {@link SyncPoller} for polling of the storage task assignment.
+ */
+ @ServiceMethod(returns = ReturnType.LONG_RUNNING_OPERATION)
+ SyncPoller, StorageTaskAssignmentInner> beginUpdate(String resourceGroupName,
+ String accountName, String storageTaskAssignmentName, StorageTaskAssignmentUpdateParameters parameters);
+
+ /**
+ * Update storage task assignment properties.
+ *
+ * @param resourceGroupName The name of the resource group. The name is case insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param storageTaskAssignmentName The name of the storage task assignment within the specified resource group.
+ * Storage task assignment names must be between 3 and 24 characters in length and use numbers and lower-case
+ * letters only.
+ * @param parameters The parameters to update a Storage Task Assignment.
+ * @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 {@link SyncPoller} for polling of the storage task assignment.
+ */
+ @ServiceMethod(returns = ReturnType.LONG_RUNNING_OPERATION)
+ SyncPoller, StorageTaskAssignmentInner> beginUpdate(String resourceGroupName,
+ String accountName, String storageTaskAssignmentName, StorageTaskAssignmentUpdateParameters parameters,
+ Context context);
+
+ /**
+ * Update storage task assignment properties.
+ *
+ * @param resourceGroupName The name of the resource group. The name is case insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param storageTaskAssignmentName The name of the storage task assignment within the specified resource group.
+ * Storage task assignment names must be between 3 and 24 characters in length and use numbers and lower-case
+ * letters only.
+ * @param parameters The parameters to update a Storage Task Assignment.
+ * @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 storage task assignment.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ StorageTaskAssignmentInner update(String resourceGroupName, String accountName, String storageTaskAssignmentName,
+ StorageTaskAssignmentUpdateParameters parameters);
+
+ /**
+ * Update storage task assignment properties.
+ *
+ * @param resourceGroupName The name of the resource group. The name is case insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param storageTaskAssignmentName The name of the storage task assignment within the specified resource group.
+ * Storage task assignment names must be between 3 and 24 characters in length and use numbers and lower-case
+ * letters only.
+ * @param parameters The parameters to update a Storage Task Assignment.
+ * @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 storage task assignment.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ StorageTaskAssignmentInner update(String resourceGroupName, String accountName, String storageTaskAssignmentName,
+ StorageTaskAssignmentUpdateParameters parameters, Context context);
+
+ /**
+ * Get the storage task assignment properties.
+ *
+ * @param resourceGroupName The name of the resource group. The name is case insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param storageTaskAssignmentName The name of the storage task assignment within the specified resource group.
+ * Storage task assignment names must be between 3 and 24 characters in length and use numbers and lower-case
+ * letters only.
+ * @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 storage task assignment properties along with {@link Response}.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ Response getWithResponse(String resourceGroupName, String accountName,
+ String storageTaskAssignmentName, Context context);
+
+ /**
+ * Get the storage task assignment properties.
+ *
+ * @param resourceGroupName The name of the resource group. The name is case insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param storageTaskAssignmentName The name of the storage task assignment within the specified resource group.
+ * Storage task assignment names must be between 3 and 24 characters in length and use numbers and lower-case
+ * letters only.
+ * @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 storage task assignment properties.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ StorageTaskAssignmentInner get(String resourceGroupName, String accountName, String storageTaskAssignmentName);
+
+ /**
+ * Delete the storage task assignment sub-resource.
+ *
+ * @param resourceGroupName The name of the resource group. The name is case insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param storageTaskAssignmentName The name of the storage task assignment within the specified resource group.
+ * Storage task assignment names must be between 3 and 24 characters in length and use numbers and lower-case
+ * letters only.
+ * @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 {@link SyncPoller} for polling of long-running operation.
+ */
+ @ServiceMethod(returns = ReturnType.LONG_RUNNING_OPERATION)
+ SyncPoller, Void> beginDelete(String resourceGroupName, String accountName,
+ String storageTaskAssignmentName);
+
+ /**
+ * Delete the storage task assignment sub-resource.
+ *
+ * @param resourceGroupName The name of the resource group. The name is case insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param storageTaskAssignmentName The name of the storage task assignment within the specified resource group.
+ * Storage task assignment names must be between 3 and 24 characters in length and use numbers and lower-case
+ * letters only.
+ * @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 {@link SyncPoller} for polling of long-running operation.
+ */
+ @ServiceMethod(returns = ReturnType.LONG_RUNNING_OPERATION)
+ SyncPoller, Void> beginDelete(String resourceGroupName, String accountName,
+ String storageTaskAssignmentName, Context context);
+
+ /**
+ * Delete the storage task assignment sub-resource.
+ *
+ * @param resourceGroupName The name of the resource group. The name is case insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param storageTaskAssignmentName The name of the storage task assignment within the specified resource group.
+ * Storage task assignment names must be between 3 and 24 characters in length and use numbers and lower-case
+ * letters only.
+ * @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.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ void delete(String resourceGroupName, String accountName, String storageTaskAssignmentName);
+
+ /**
+ * Delete the storage task assignment sub-resource.
+ *
+ * @param resourceGroupName The name of the resource group. The name is case insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param storageTaskAssignmentName The name of the storage task assignment within the specified resource group.
+ * Storage task assignment names must be between 3 and 24 characters in length and use numbers and lower-case
+ * letters only.
+ * @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.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ void delete(String resourceGroupName, String accountName, String storageTaskAssignmentName, Context context);
+
+ /**
+ * List all the storage task assignments in an account.
+ *
+ * @param resourceGroupName The name of the resource group. The name is case insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @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 list of storage task assignments for the storage account as paginated response with
+ * {@link PagedIterable}.
+ */
+ @ServiceMethod(returns = ReturnType.COLLECTION)
+ PagedIterable list(String resourceGroupName, String accountName);
+
+ /**
+ * List all the storage task assignments in an account.
+ *
+ * @param resourceGroupName The name of the resource group. The name is case insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param maxpagesize Optional, specifies the maximum number of storage task assignment Ids to be included in the
+ * list response.
+ * @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 list of storage task assignments for the storage account as paginated response with
+ * {@link PagedIterable}.
+ */
+ @ServiceMethod(returns = ReturnType.COLLECTION)
+ PagedIterable list(String resourceGroupName, String accountName, Integer maxpagesize,
+ Context context);
+}
diff --git a/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/StorageTaskAssignmentsInstancesReportsClient.java b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/StorageTaskAssignmentsInstancesReportsClient.java
new file mode 100644
index 0000000000000..be7aa81510712
--- /dev/null
+++ b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/StorageTaskAssignmentsInstancesReportsClient.java
@@ -0,0 +1,53 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.storage.generated.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.storage.generated.fluent.models.StorageTaskReportInstanceInner;
+
+/**
+ * An instance of this class provides access to all the operations defined in
+ * StorageTaskAssignmentsInstancesReportsClient.
+ */
+public interface StorageTaskAssignmentsInstancesReportsClient {
+ /**
+ * Fetch the report summary of all the storage task assignments and instances in an account.
+ *
+ * @param resourceGroupName The name of the resource group. The name is case insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @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 fetch Storage Tasks Run Summary as paginated response with {@link PagedIterable}.
+ */
+ @ServiceMethod(returns = ReturnType.COLLECTION)
+ PagedIterable list(String resourceGroupName, String accountName);
+
+ /**
+ * Fetch the report summary of all the storage task assignments and instances in an account.
+ *
+ * @param resourceGroupName The name of the resource group. The name is case insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param maxpagesize Optional, specifies the maximum number of storage task assignment instances to be included in
+ * the list response.
+ * @param filter Optional. When specified, it can be used to query using reporting properties. See [Constructing
+ * Filter
+ * Strings](https://learn.microsoft.com/en-us/rest/api/storageservices/querying-tables-and-entities#constructing-filter-strings)
+ * for details.
+ * @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 fetch Storage Tasks Run Summary as paginated response with {@link PagedIterable}.
+ */
+ @ServiceMethod(returns = ReturnType.COLLECTION)
+ PagedIterable list(String resourceGroupName, String accountName,
+ Integer maxpagesize, String filter, Context context);
+}
diff --git a/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/TableServicesClient.java b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/TableServicesClient.java
new file mode 100644
index 0000000000000..eea1a34ca926c
--- /dev/null
+++ b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/TableServicesClient.java
@@ -0,0 +1,123 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.storage.generated.fluent;
+
+import com.azure.core.annotation.ReturnType;
+import com.azure.core.annotation.ServiceMethod;
+import com.azure.core.http.rest.Response;
+import com.azure.core.util.Context;
+import com.azure.resourcemanager.storage.generated.fluent.models.ListTableServicesInner;
+import com.azure.resourcemanager.storage.generated.fluent.models.TableServicePropertiesInner;
+
+/**
+ * An instance of this class provides access to all the operations defined in TableServicesClient.
+ */
+public interface TableServicesClient {
+ /**
+ * List all table services for the storage account.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @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 body along with {@link Response}.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ Response listWithResponse(String resourceGroupName, String accountName, Context context);
+
+ /**
+ * List all table services for the storage account.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @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.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ ListTableServicesInner list(String resourceGroupName, String accountName);
+
+ /**
+ * Sets the properties of a storage account’s Table service, including properties for Storage Analytics and CORS
+ * (Cross-Origin Resource Sharing) rules.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param parameters The properties of a storage account’s Table service, only properties for Storage Analytics and
+ * CORS (Cross-Origin Resource Sharing) rules can be specified.
+ * @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 properties of a storage account’s Table service along with {@link Response}.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ Response setServicePropertiesWithResponse(String resourceGroupName, String accountName,
+ TableServicePropertiesInner parameters, Context context);
+
+ /**
+ * Sets the properties of a storage account’s Table service, including properties for Storage Analytics and CORS
+ * (Cross-Origin Resource Sharing) rules.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param parameters The properties of a storage account’s Table service, only properties for Storage Analytics and
+ * CORS (Cross-Origin Resource Sharing) rules can be specified.
+ * @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 properties of a storage account’s Table service.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ TableServicePropertiesInner setServiceProperties(String resourceGroupName, String accountName,
+ TableServicePropertiesInner parameters);
+
+ /**
+ * Gets the properties of a storage account’s Table service, including properties for Storage Analytics and CORS
+ * (Cross-Origin Resource Sharing) rules.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @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 properties of a storage account’s Table service, including properties for Storage Analytics and CORS
+ * (Cross-Origin Resource Sharing) rules along with {@link Response}.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ Response getServicePropertiesWithResponse(String resourceGroupName, String accountName,
+ Context context);
+
+ /**
+ * Gets the properties of a storage account’s Table service, including properties for Storage Analytics and CORS
+ * (Cross-Origin Resource Sharing) rules.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @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 properties of a storage account’s Table service, including properties for Storage Analytics and CORS
+ * (Cross-Origin Resource Sharing) rules.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ TableServicePropertiesInner getServiceProperties(String resourceGroupName, String accountName);
+}
diff --git a/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/TablesClient.java b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/TablesClient.java
new file mode 100644
index 0000000000000..2bd378385e73e
--- /dev/null
+++ b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/TablesClient.java
@@ -0,0 +1,195 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.storage.generated.fluent;
+
+import com.azure.core.annotation.ReturnType;
+import com.azure.core.annotation.ServiceMethod;
+import com.azure.core.http.rest.PagedIterable;
+import com.azure.core.http.rest.Response;
+import com.azure.core.util.Context;
+import com.azure.resourcemanager.storage.generated.fluent.models.TableInner;
+
+/**
+ * An instance of this class provides access to all the operations defined in TablesClient.
+ */
+public interface TablesClient {
+ /**
+ * Creates a new table with the specified table name, under the specified account.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param tableName A table name must be unique within a storage account and must be between 3 and 63 characters.The
+ * name must comprise of only alphanumeric characters and it cannot begin with a numeric character.
+ * @param parameters The parameters to provide to create a table.
+ * @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 properties of the table, including Id, resource name, resource type along with {@link Response}.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ Response createWithResponse(String resourceGroupName, String accountName, String tableName,
+ TableInner parameters, Context context);
+
+ /**
+ * Creates a new table with the specified table name, under the specified account.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param tableName A table name must be unique within a storage account and must be between 3 and 63 characters.The
+ * name must comprise of only alphanumeric characters and it cannot begin with a numeric character.
+ * @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 properties of the table, including Id, resource name, resource type.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ TableInner create(String resourceGroupName, String accountName, String tableName);
+
+ /**
+ * Creates a new table with the specified table name, under the specified account.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param tableName A table name must be unique within a storage account and must be between 3 and 63 characters.The
+ * name must comprise of only alphanumeric characters and it cannot begin with a numeric character.
+ * @param parameters The parameters to provide to create a table.
+ * @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 properties of the table, including Id, resource name, resource type along with {@link Response}.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ Response updateWithResponse(String resourceGroupName, String accountName, String tableName,
+ TableInner parameters, Context context);
+
+ /**
+ * Creates a new table with the specified table name, under the specified account.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param tableName A table name must be unique within a storage account and must be between 3 and 63 characters.The
+ * name must comprise of only alphanumeric characters and it cannot begin with a numeric character.
+ * @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 properties of the table, including Id, resource name, resource type.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ TableInner update(String resourceGroupName, String accountName, String tableName);
+
+ /**
+ * Gets the table with the specified table name, under the specified account if it exists.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param tableName A table name must be unique within a storage account and must be between 3 and 63 characters.The
+ * name must comprise of only alphanumeric characters and it cannot begin with a numeric character.
+ * @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 table with the specified table name, under the specified account if it exists along with
+ * {@link Response}.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ Response getWithResponse(String resourceGroupName, String accountName, String tableName,
+ Context context);
+
+ /**
+ * Gets the table with the specified table name, under the specified account if it exists.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param tableName A table name must be unique within a storage account and must be between 3 and 63 characters.The
+ * name must comprise of only alphanumeric characters and it cannot begin with a numeric character.
+ * @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 table with the specified table name, under the specified account if it exists.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ TableInner get(String resourceGroupName, String accountName, String tableName);
+
+ /**
+ * Deletes the table with the specified table name, under the specified account if it exists.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param tableName A table name must be unique within a storage account and must be between 3 and 63 characters.The
+ * name must comprise of only alphanumeric characters and it cannot begin with a numeric character.
+ * @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 {@link Response}.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ Response deleteWithResponse(String resourceGroupName, String accountName, String tableName, Context context);
+
+ /**
+ * Deletes the table with the specified table name, under the specified account if it exists.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param tableName A table name must be unique within a storage account and must be between 3 and 63 characters.The
+ * name must comprise of only alphanumeric characters and it cannot begin with a numeric character.
+ * @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.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ void delete(String resourceGroupName, String accountName, String tableName);
+
+ /**
+ * Gets a list of all the tables under the specified storage account.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @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 all the tables under the specified storage account as paginated response with
+ * {@link PagedIterable}.
+ */
+ @ServiceMethod(returns = ReturnType.COLLECTION)
+ PagedIterable list(String resourceGroupName, String accountName);
+
+ /**
+ * Gets a list of all the tables under the specified storage account.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @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 all the tables under the specified storage account as paginated response with
+ * {@link PagedIterable}.
+ */
+ @ServiceMethod(returns = ReturnType.COLLECTION)
+ PagedIterable list(String resourceGroupName, String accountName, Context context);
+}
diff --git a/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/UsagesClient.java b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/UsagesClient.java
new file mode 100644
index 0000000000000..c4d025bec5839
--- /dev/null
+++ b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/UsagesClient.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.storage.generated.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.storage.generated.fluent.models.UsageInner;
+
+/**
+ * An instance of this class provides access to all the operations defined in UsagesClient.
+ */
+public interface UsagesClient {
+ /**
+ * Gets the current usage count and the limit for the resources of the location under the subscription.
+ *
+ * @param location The location of the Azure Storage 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 count and the limit for the resources of the location under the subscription as
+ * paginated response with {@link PagedIterable}.
+ */
+ @ServiceMethod(returns = ReturnType.COLLECTION)
+ PagedIterable listByLocation(String location);
+
+ /**
+ * Gets the current usage count and the limit for the resources of the location under the subscription.
+ *
+ * @param location The location of the Azure Storage 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 count and the limit for the resources of the location under the subscription as
+ * paginated response with {@link PagedIterable}.
+ */
+ @ServiceMethod(returns = ReturnType.COLLECTION)
+ PagedIterable listByLocation(String location, Context context);
+}
diff --git a/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/BlobContainerInner.java b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/BlobContainerInner.java
new file mode 100644
index 0000000000000..9d0b098a007c6
--- /dev/null
+++ b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/BlobContainerInner.java
@@ -0,0 +1,453 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.storage.generated.fluent.models;
+
+import com.azure.core.annotation.Fluent;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import com.azure.resourcemanager.storage.generated.models.AzureEntityResource;
+import com.azure.resourcemanager.storage.generated.models.ImmutabilityPolicyProperties;
+import com.azure.resourcemanager.storage.generated.models.ImmutableStorageWithVersioning;
+import com.azure.resourcemanager.storage.generated.models.LeaseDuration;
+import com.azure.resourcemanager.storage.generated.models.LeaseState;
+import com.azure.resourcemanager.storage.generated.models.LeaseStatus;
+import com.azure.resourcemanager.storage.generated.models.LegalHoldProperties;
+import com.azure.resourcemanager.storage.generated.models.PublicAccess;
+import java.io.IOException;
+import java.time.OffsetDateTime;
+import java.util.Map;
+
+/**
+ * Properties of the blob container, including Id, resource name, resource type, Etag.
+ */
+@Fluent
+public final class BlobContainerInner extends AzureEntityResource {
+ /*
+ * Properties of the blob container.
+ */
+ private ContainerProperties innerContainerProperties;
+
+ /*
+ * Resource Etag.
+ */
+ private String etag;
+
+ /*
+ * The type of the resource.
+ */
+ private String type;
+
+ /*
+ * The name of the resource.
+ */
+ private String name;
+
+ /*
+ * Fully qualified resource Id for the resource.
+ */
+ private String id;
+
+ /**
+ * Creates an instance of BlobContainerInner class.
+ */
+ public BlobContainerInner() {
+ }
+
+ /**
+ * Get the innerContainerProperties property: Properties of the blob container.
+ *
+ * @return the innerContainerProperties value.
+ */
+ private ContainerProperties innerContainerProperties() {
+ return this.innerContainerProperties;
+ }
+
+ /**
+ * Get the etag property: Resource Etag.
+ *
+ * @return the etag value.
+ */
+ @Override
+ public String etag() {
+ return this.etag;
+ }
+
+ /**
+ * Get the type property: The type of the resource.
+ *
+ * @return the type value.
+ */
+ @Override
+ public String type() {
+ return this.type;
+ }
+
+ /**
+ * Get the name property: The name of the resource.
+ *
+ * @return the name value.
+ */
+ @Override
+ public String name() {
+ return this.name;
+ }
+
+ /**
+ * Get the id property: Fully qualified resource Id for the resource.
+ *
+ * @return the id value.
+ */
+ @Override
+ public String id() {
+ return this.id;
+ }
+
+ /**
+ * Get the version property: The version of the deleted blob container.
+ *
+ * @return the version value.
+ */
+ public String version() {
+ return this.innerContainerProperties() == null ? null : this.innerContainerProperties().version();
+ }
+
+ /**
+ * Get the deleted property: Indicates whether the blob container was deleted.
+ *
+ * @return the deleted value.
+ */
+ public Boolean deleted() {
+ return this.innerContainerProperties() == null ? null : this.innerContainerProperties().deleted();
+ }
+
+ /**
+ * Get the deletedTime property: Blob container deletion time.
+ *
+ * @return the deletedTime value.
+ */
+ public OffsetDateTime deletedTime() {
+ return this.innerContainerProperties() == null ? null : this.innerContainerProperties().deletedTime();
+ }
+
+ /**
+ * Get the remainingRetentionDays property: Remaining retention days for soft deleted blob container.
+ *
+ * @return the remainingRetentionDays value.
+ */
+ public Integer remainingRetentionDays() {
+ return this.innerContainerProperties() == null
+ ? null
+ : this.innerContainerProperties().remainingRetentionDays();
+ }
+
+ /**
+ * Get the defaultEncryptionScope property: Default the container to use specified encryption scope for all writes.
+ *
+ * @return the defaultEncryptionScope value.
+ */
+ public String defaultEncryptionScope() {
+ return this.innerContainerProperties() == null
+ ? null
+ : this.innerContainerProperties().defaultEncryptionScope();
+ }
+
+ /**
+ * Set the defaultEncryptionScope property: Default the container to use specified encryption scope for all writes.
+ *
+ * @param defaultEncryptionScope the defaultEncryptionScope value to set.
+ * @return the BlobContainerInner object itself.
+ */
+ public BlobContainerInner withDefaultEncryptionScope(String defaultEncryptionScope) {
+ if (this.innerContainerProperties() == null) {
+ this.innerContainerProperties = new ContainerProperties();
+ }
+ this.innerContainerProperties().withDefaultEncryptionScope(defaultEncryptionScope);
+ return this;
+ }
+
+ /**
+ * Get the denyEncryptionScopeOverride property: Block override of encryption scope from the container default.
+ *
+ * @return the denyEncryptionScopeOverride value.
+ */
+ public Boolean denyEncryptionScopeOverride() {
+ return this.innerContainerProperties() == null
+ ? null
+ : this.innerContainerProperties().denyEncryptionScopeOverride();
+ }
+
+ /**
+ * Set the denyEncryptionScopeOverride property: Block override of encryption scope from the container default.
+ *
+ * @param denyEncryptionScopeOverride the denyEncryptionScopeOverride value to set.
+ * @return the BlobContainerInner object itself.
+ */
+ public BlobContainerInner withDenyEncryptionScopeOverride(Boolean denyEncryptionScopeOverride) {
+ if (this.innerContainerProperties() == null) {
+ this.innerContainerProperties = new ContainerProperties();
+ }
+ this.innerContainerProperties().withDenyEncryptionScopeOverride(denyEncryptionScopeOverride);
+ return this;
+ }
+
+ /**
+ * Get the publicAccess property: Specifies whether data in the container may be accessed publicly and the level of
+ * access.
+ *
+ * @return the publicAccess value.
+ */
+ public PublicAccess publicAccess() {
+ return this.innerContainerProperties() == null ? null : this.innerContainerProperties().publicAccess();
+ }
+
+ /**
+ * Set the publicAccess property: Specifies whether data in the container may be accessed publicly and the level of
+ * access.
+ *
+ * @param publicAccess the publicAccess value to set.
+ * @return the BlobContainerInner object itself.
+ */
+ public BlobContainerInner withPublicAccess(PublicAccess publicAccess) {
+ if (this.innerContainerProperties() == null) {
+ this.innerContainerProperties = new ContainerProperties();
+ }
+ this.innerContainerProperties().withPublicAccess(publicAccess);
+ return this;
+ }
+
+ /**
+ * Get the lastModifiedTime property: Returns the date and time the container was last modified.
+ *
+ * @return the lastModifiedTime value.
+ */
+ public OffsetDateTime lastModifiedTime() {
+ return this.innerContainerProperties() == null ? null : this.innerContainerProperties().lastModifiedTime();
+ }
+
+ /**
+ * Get the leaseStatus property: The lease status of the container.
+ *
+ * @return the leaseStatus value.
+ */
+ public LeaseStatus leaseStatus() {
+ return this.innerContainerProperties() == null ? null : this.innerContainerProperties().leaseStatus();
+ }
+
+ /**
+ * Get the leaseState property: Lease state of the container.
+ *
+ * @return the leaseState value.
+ */
+ public LeaseState leaseState() {
+ return this.innerContainerProperties() == null ? null : this.innerContainerProperties().leaseState();
+ }
+
+ /**
+ * Get the leaseDuration property: Specifies whether the lease on a container is of infinite or fixed duration, only
+ * when the container is leased.
+ *
+ * @return the leaseDuration value.
+ */
+ public LeaseDuration leaseDuration() {
+ return this.innerContainerProperties() == null ? null : this.innerContainerProperties().leaseDuration();
+ }
+
+ /**
+ * Get the metadata property: A name-value pair to associate with the container as metadata.
+ *
+ * @return the metadata value.
+ */
+ public Map metadata() {
+ return this.innerContainerProperties() == null ? null : this.innerContainerProperties().metadata();
+ }
+
+ /**
+ * Set the metadata property: A name-value pair to associate with the container as metadata.
+ *
+ * @param metadata the metadata value to set.
+ * @return the BlobContainerInner object itself.
+ */
+ public BlobContainerInner withMetadata(Map metadata) {
+ if (this.innerContainerProperties() == null) {
+ this.innerContainerProperties = new ContainerProperties();
+ }
+ this.innerContainerProperties().withMetadata(metadata);
+ return this;
+ }
+
+ /**
+ * Get the immutabilityPolicy property: The ImmutabilityPolicy property of the container.
+ *
+ * @return the immutabilityPolicy value.
+ */
+ public ImmutabilityPolicyProperties immutabilityPolicy() {
+ return this.innerContainerProperties() == null ? null : this.innerContainerProperties().immutabilityPolicy();
+ }
+
+ /**
+ * Get the legalHold property: The LegalHold property of the container.
+ *
+ * @return the legalHold value.
+ */
+ public LegalHoldProperties legalHold() {
+ return this.innerContainerProperties() == null ? null : this.innerContainerProperties().legalHold();
+ }
+
+ /**
+ * Get the hasLegalHold property: The hasLegalHold public property is set to true by SRP if there are at least one
+ * existing tag. The hasLegalHold public property is set to false by SRP if all existing legal hold tags are cleared
+ * out. There can be a maximum of 1000 blob containers with hasLegalHold=true for a given account.
+ *
+ * @return the hasLegalHold value.
+ */
+ public Boolean hasLegalHold() {
+ return this.innerContainerProperties() == null ? null : this.innerContainerProperties().hasLegalHold();
+ }
+
+ /**
+ * Get the hasImmutabilityPolicy property: The hasImmutabilityPolicy public property is set to true by SRP if
+ * ImmutabilityPolicy has been created for this container. The hasImmutabilityPolicy public property is set to false
+ * by SRP if ImmutabilityPolicy has not been created for this container.
+ *
+ * @return the hasImmutabilityPolicy value.
+ */
+ public Boolean hasImmutabilityPolicy() {
+ return this.innerContainerProperties() == null ? null : this.innerContainerProperties().hasImmutabilityPolicy();
+ }
+
+ /**
+ * Get the immutableStorageWithVersioning property: The object level immutability property of the container. The
+ * property is immutable and can only be set to true at the container creation time. Existing containers must
+ * undergo a migration process.
+ *
+ * @return the immutableStorageWithVersioning value.
+ */
+ public ImmutableStorageWithVersioning immutableStorageWithVersioning() {
+ return this.innerContainerProperties() == null
+ ? null
+ : this.innerContainerProperties().immutableStorageWithVersioning();
+ }
+
+ /**
+ * Set the immutableStorageWithVersioning property: The object level immutability property of the container. The
+ * property is immutable and can only be set to true at the container creation time. Existing containers must
+ * undergo a migration process.
+ *
+ * @param immutableStorageWithVersioning the immutableStorageWithVersioning value to set.
+ * @return the BlobContainerInner object itself.
+ */
+ public BlobContainerInner
+ withImmutableStorageWithVersioning(ImmutableStorageWithVersioning immutableStorageWithVersioning) {
+ if (this.innerContainerProperties() == null) {
+ this.innerContainerProperties = new ContainerProperties();
+ }
+ this.innerContainerProperties().withImmutableStorageWithVersioning(immutableStorageWithVersioning);
+ return this;
+ }
+
+ /**
+ * Get the enableNfsV3RootSquash property: Enable NFSv3 root squash on blob container.
+ *
+ * @return the enableNfsV3RootSquash value.
+ */
+ public Boolean enableNfsV3RootSquash() {
+ return this.innerContainerProperties() == null ? null : this.innerContainerProperties().enableNfsV3RootSquash();
+ }
+
+ /**
+ * Set the enableNfsV3RootSquash property: Enable NFSv3 root squash on blob container.
+ *
+ * @param enableNfsV3RootSquash the enableNfsV3RootSquash value to set.
+ * @return the BlobContainerInner object itself.
+ */
+ public BlobContainerInner withEnableNfsV3RootSquash(Boolean enableNfsV3RootSquash) {
+ if (this.innerContainerProperties() == null) {
+ this.innerContainerProperties = new ContainerProperties();
+ }
+ this.innerContainerProperties().withEnableNfsV3RootSquash(enableNfsV3RootSquash);
+ return this;
+ }
+
+ /**
+ * Get the enableNfsV3AllSquash property: Enable NFSv3 all squash on blob container.
+ *
+ * @return the enableNfsV3AllSquash value.
+ */
+ public Boolean enableNfsV3AllSquash() {
+ return this.innerContainerProperties() == null ? null : this.innerContainerProperties().enableNfsV3AllSquash();
+ }
+
+ /**
+ * Set the enableNfsV3AllSquash property: Enable NFSv3 all squash on blob container.
+ *
+ * @param enableNfsV3AllSquash the enableNfsV3AllSquash value to set.
+ * @return the BlobContainerInner object itself.
+ */
+ public BlobContainerInner withEnableNfsV3AllSquash(Boolean enableNfsV3AllSquash) {
+ if (this.innerContainerProperties() == null) {
+ this.innerContainerProperties = new ContainerProperties();
+ }
+ this.innerContainerProperties().withEnableNfsV3AllSquash(enableNfsV3AllSquash);
+ return this;
+ }
+
+ /**
+ * Validates the instance.
+ *
+ * @throws IllegalArgumentException thrown if the instance is not valid.
+ */
+ @Override
+ public void validate() {
+ if (innerContainerProperties() != null) {
+ innerContainerProperties().validate();
+ }
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+ jsonWriter.writeStartObject();
+ jsonWriter.writeJsonField("properties", this.innerContainerProperties);
+ return jsonWriter.writeEndObject();
+ }
+
+ /**
+ * Reads an instance of BlobContainerInner from the JsonReader.
+ *
+ * @param jsonReader The JsonReader being read.
+ * @return An instance of BlobContainerInner if the JsonReader was pointing to an instance of it, or null if it was
+ * pointing to JSON null.
+ * @throws IllegalStateException If the deserialized JSON object was missing any required properties.
+ * @throws IOException If an error occurs while reading the BlobContainerInner.
+ */
+ public static BlobContainerInner fromJson(JsonReader jsonReader) throws IOException {
+ return jsonReader.readObject(reader -> {
+ BlobContainerInner deserializedBlobContainerInner = new BlobContainerInner();
+ while (reader.nextToken() != JsonToken.END_OBJECT) {
+ String fieldName = reader.getFieldName();
+ reader.nextToken();
+
+ if ("id".equals(fieldName)) {
+ deserializedBlobContainerInner.id = reader.getString();
+ } else if ("name".equals(fieldName)) {
+ deserializedBlobContainerInner.name = reader.getString();
+ } else if ("type".equals(fieldName)) {
+ deserializedBlobContainerInner.type = reader.getString();
+ } else if ("etag".equals(fieldName)) {
+ deserializedBlobContainerInner.etag = reader.getString();
+ } else if ("properties".equals(fieldName)) {
+ deserializedBlobContainerInner.innerContainerProperties = ContainerProperties.fromJson(reader);
+ } else {
+ reader.skipChildren();
+ }
+ }
+
+ return deserializedBlobContainerInner;
+ });
+ }
+}
diff --git a/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/BlobInventoryPolicyInner.java b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/BlobInventoryPolicyInner.java
new file mode 100644
index 0000000000000..ebfc4b571b878
--- /dev/null
+++ b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/BlobInventoryPolicyInner.java
@@ -0,0 +1,189 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.storage.generated.fluent.models;
+
+import com.azure.core.annotation.Fluent;
+import com.azure.core.management.ProxyResource;
+import com.azure.core.management.SystemData;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import com.azure.resourcemanager.storage.generated.models.BlobInventoryPolicySchema;
+import java.io.IOException;
+import java.time.OffsetDateTime;
+
+/**
+ * The storage account blob inventory policy.
+ */
+@Fluent
+public final class BlobInventoryPolicyInner extends ProxyResource {
+ /*
+ * Returns the storage account blob inventory policy rules.
+ */
+ private BlobInventoryPolicyProperties innerProperties;
+
+ /*
+ * Metadata pertaining to creation and last modification of the resource.
+ */
+ private SystemData systemData;
+
+ /*
+ * The type of the resource.
+ */
+ private String type;
+
+ /*
+ * The name of the resource.
+ */
+ private String name;
+
+ /*
+ * Fully qualified resource Id for the resource.
+ */
+ private String id;
+
+ /**
+ * Creates an instance of BlobInventoryPolicyInner class.
+ */
+ public BlobInventoryPolicyInner() {
+ }
+
+ /**
+ * Get the innerProperties property: Returns the storage account blob inventory policy rules.
+ *
+ * @return the innerProperties value.
+ */
+ private BlobInventoryPolicyProperties innerProperties() {
+ return this.innerProperties;
+ }
+
+ /**
+ * Get the systemData property: Metadata pertaining to creation and last modification of the resource.
+ *
+ * @return the systemData value.
+ */
+ public SystemData systemData() {
+ return this.systemData;
+ }
+
+ /**
+ * Get the type property: The type of the resource.
+ *
+ * @return the type value.
+ */
+ @Override
+ public String type() {
+ return this.type;
+ }
+
+ /**
+ * Get the name property: The name of the resource.
+ *
+ * @return the name value.
+ */
+ @Override
+ public String name() {
+ return this.name;
+ }
+
+ /**
+ * Get the id property: Fully qualified resource Id for the resource.
+ *
+ * @return the id value.
+ */
+ @Override
+ public String id() {
+ return this.id;
+ }
+
+ /**
+ * Get the lastModifiedTime property: Returns the last modified date and time of the blob inventory policy.
+ *
+ * @return the lastModifiedTime value.
+ */
+ public OffsetDateTime lastModifiedTime() {
+ return this.innerProperties() == null ? null : this.innerProperties().lastModifiedTime();
+ }
+
+ /**
+ * Get the policy property: The storage account blob inventory policy object. It is composed of policy rules.
+ *
+ * @return the policy value.
+ */
+ public BlobInventoryPolicySchema policy() {
+ return this.innerProperties() == null ? null : this.innerProperties().policy();
+ }
+
+ /**
+ * Set the policy property: The storage account blob inventory policy object. It is composed of policy rules.
+ *
+ * @param policy the policy value to set.
+ * @return the BlobInventoryPolicyInner object itself.
+ */
+ public BlobInventoryPolicyInner withPolicy(BlobInventoryPolicySchema policy) {
+ if (this.innerProperties() == null) {
+ this.innerProperties = new BlobInventoryPolicyProperties();
+ }
+ this.innerProperties().withPolicy(policy);
+ return this;
+ }
+
+ /**
+ * Validates the instance.
+ *
+ * @throws IllegalArgumentException thrown if the instance is not valid.
+ */
+ public void validate() {
+ if (innerProperties() != null) {
+ innerProperties().validate();
+ }
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+ jsonWriter.writeStartObject();
+ jsonWriter.writeJsonField("properties", this.innerProperties);
+ return jsonWriter.writeEndObject();
+ }
+
+ /**
+ * Reads an instance of BlobInventoryPolicyInner from the JsonReader.
+ *
+ * @param jsonReader The JsonReader being read.
+ * @return An instance of BlobInventoryPolicyInner if the JsonReader was pointing to an instance of it, or null if
+ * it was pointing to JSON null.
+ * @throws IllegalStateException If the deserialized JSON object was missing any required properties.
+ * @throws IOException If an error occurs while reading the BlobInventoryPolicyInner.
+ */
+ public static BlobInventoryPolicyInner fromJson(JsonReader jsonReader) throws IOException {
+ return jsonReader.readObject(reader -> {
+ BlobInventoryPolicyInner deserializedBlobInventoryPolicyInner = new BlobInventoryPolicyInner();
+ while (reader.nextToken() != JsonToken.END_OBJECT) {
+ String fieldName = reader.getFieldName();
+ reader.nextToken();
+
+ if ("id".equals(fieldName)) {
+ deserializedBlobInventoryPolicyInner.id = reader.getString();
+ } else if ("name".equals(fieldName)) {
+ deserializedBlobInventoryPolicyInner.name = reader.getString();
+ } else if ("type".equals(fieldName)) {
+ deserializedBlobInventoryPolicyInner.type = reader.getString();
+ } else if ("properties".equals(fieldName)) {
+ deserializedBlobInventoryPolicyInner.innerProperties
+ = BlobInventoryPolicyProperties.fromJson(reader);
+ } else if ("systemData".equals(fieldName)) {
+ deserializedBlobInventoryPolicyInner.systemData = SystemData.fromJson(reader);
+ } else {
+ reader.skipChildren();
+ }
+ }
+
+ return deserializedBlobInventoryPolicyInner;
+ });
+ }
+}
diff --git a/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/BlobInventoryPolicyProperties.java b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/BlobInventoryPolicyProperties.java
new file mode 100644
index 0000000000000..cb0964e3e1bae
--- /dev/null
+++ b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/BlobInventoryPolicyProperties.java
@@ -0,0 +1,125 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.storage.generated.fluent.models;
+
+import com.azure.core.annotation.Fluent;
+import com.azure.core.util.CoreUtils;
+import com.azure.core.util.logging.ClientLogger;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonSerializable;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import com.azure.resourcemanager.storage.generated.models.BlobInventoryPolicySchema;
+import java.io.IOException;
+import java.time.OffsetDateTime;
+
+/**
+ * The storage account blob inventory policy properties.
+ */
+@Fluent
+public final class BlobInventoryPolicyProperties implements JsonSerializable {
+ /*
+ * Returns the last modified date and time of the blob inventory policy.
+ */
+ private OffsetDateTime lastModifiedTime;
+
+ /*
+ * The storage account blob inventory policy object. It is composed of policy rules.
+ */
+ private BlobInventoryPolicySchema policy;
+
+ /**
+ * Creates an instance of BlobInventoryPolicyProperties class.
+ */
+ public BlobInventoryPolicyProperties() {
+ }
+
+ /**
+ * Get the lastModifiedTime property: Returns the last modified date and time of the blob inventory policy.
+ *
+ * @return the lastModifiedTime value.
+ */
+ public OffsetDateTime lastModifiedTime() {
+ return this.lastModifiedTime;
+ }
+
+ /**
+ * Get the policy property: The storage account blob inventory policy object. It is composed of policy rules.
+ *
+ * @return the policy value.
+ */
+ public BlobInventoryPolicySchema policy() {
+ return this.policy;
+ }
+
+ /**
+ * Set the policy property: The storage account blob inventory policy object. It is composed of policy rules.
+ *
+ * @param policy the policy value to set.
+ * @return the BlobInventoryPolicyProperties object itself.
+ */
+ public BlobInventoryPolicyProperties withPolicy(BlobInventoryPolicySchema policy) {
+ this.policy = policy;
+ return this;
+ }
+
+ /**
+ * Validates the instance.
+ *
+ * @throws IllegalArgumentException thrown if the instance is not valid.
+ */
+ public void validate() {
+ if (policy() == null) {
+ throw LOGGER.atError()
+ .log(new IllegalArgumentException(
+ "Missing required property policy in model BlobInventoryPolicyProperties"));
+ } else {
+ policy().validate();
+ }
+ }
+
+ private static final ClientLogger LOGGER = new ClientLogger(BlobInventoryPolicyProperties.class);
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+ jsonWriter.writeStartObject();
+ jsonWriter.writeJsonField("policy", this.policy);
+ return jsonWriter.writeEndObject();
+ }
+
+ /**
+ * Reads an instance of BlobInventoryPolicyProperties from the JsonReader.
+ *
+ * @param jsonReader The JsonReader being read.
+ * @return An instance of BlobInventoryPolicyProperties if the JsonReader was pointing to an instance of it, or null
+ * if it was pointing to JSON null.
+ * @throws IllegalStateException If the deserialized JSON object was missing any required properties.
+ * @throws IOException If an error occurs while reading the BlobInventoryPolicyProperties.
+ */
+ public static BlobInventoryPolicyProperties fromJson(JsonReader jsonReader) throws IOException {
+ return jsonReader.readObject(reader -> {
+ BlobInventoryPolicyProperties deserializedBlobInventoryPolicyProperties
+ = new BlobInventoryPolicyProperties();
+ while (reader.nextToken() != JsonToken.END_OBJECT) {
+ String fieldName = reader.getFieldName();
+ reader.nextToken();
+
+ if ("policy".equals(fieldName)) {
+ deserializedBlobInventoryPolicyProperties.policy = BlobInventoryPolicySchema.fromJson(reader);
+ } else if ("lastModifiedTime".equals(fieldName)) {
+ deserializedBlobInventoryPolicyProperties.lastModifiedTime = reader
+ .getNullable(nonNullReader -> CoreUtils.parseBestOffsetDateTime(nonNullReader.getString()));
+ } else {
+ reader.skipChildren();
+ }
+ }
+
+ return deserializedBlobInventoryPolicyProperties;
+ });
+ }
+}
diff --git a/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/BlobRestoreStatusInner.java b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/BlobRestoreStatusInner.java
new file mode 100644
index 0000000000000..4c38d17e85ab4
--- /dev/null
+++ b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/BlobRestoreStatusInner.java
@@ -0,0 +1,139 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.storage.generated.fluent.models;
+
+import com.azure.core.annotation.Immutable;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonSerializable;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import com.azure.resourcemanager.storage.generated.models.BlobRestoreParameters;
+import com.azure.resourcemanager.storage.generated.models.BlobRestoreProgressStatus;
+import java.io.IOException;
+
+/**
+ * Blob restore status.
+ */
+@Immutable
+public final class BlobRestoreStatusInner implements JsonSerializable {
+ /*
+ * The status of blob restore progress. Possible values are: - InProgress: Indicates that blob restore is ongoing. -
+ * Complete: Indicates that blob restore has been completed successfully. - Failed: Indicates that blob restore is
+ * failed.
+ */
+ private BlobRestoreProgressStatus status;
+
+ /*
+ * Failure reason when blob restore is failed.
+ */
+ private String failureReason;
+
+ /*
+ * Id for tracking blob restore request.
+ */
+ private String restoreId;
+
+ /*
+ * Blob restore request parameters.
+ */
+ private BlobRestoreParameters parameters;
+
+ /**
+ * Creates an instance of BlobRestoreStatusInner class.
+ */
+ public BlobRestoreStatusInner() {
+ }
+
+ /**
+ * Get the status property: The status of blob restore progress. Possible values are: - InProgress: Indicates that
+ * blob restore is ongoing. - Complete: Indicates that blob restore has been completed successfully. - Failed:
+ * Indicates that blob restore is failed.
+ *
+ * @return the status value.
+ */
+ public BlobRestoreProgressStatus status() {
+ return this.status;
+ }
+
+ /**
+ * Get the failureReason property: Failure reason when blob restore is failed.
+ *
+ * @return the failureReason value.
+ */
+ public String failureReason() {
+ return this.failureReason;
+ }
+
+ /**
+ * Get the restoreId property: Id for tracking blob restore request.
+ *
+ * @return the restoreId value.
+ */
+ public String restoreId() {
+ return this.restoreId;
+ }
+
+ /**
+ * Get the parameters property: Blob restore request parameters.
+ *
+ * @return the parameters value.
+ */
+ public BlobRestoreParameters parameters() {
+ return this.parameters;
+ }
+
+ /**
+ * Validates the instance.
+ *
+ * @throws IllegalArgumentException thrown if the instance is not valid.
+ */
+ public void validate() {
+ if (parameters() != null) {
+ parameters().validate();
+ }
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+ jsonWriter.writeStartObject();
+ return jsonWriter.writeEndObject();
+ }
+
+ /**
+ * Reads an instance of BlobRestoreStatusInner from the JsonReader.
+ *
+ * @param jsonReader The JsonReader being read.
+ * @return An instance of BlobRestoreStatusInner if the JsonReader was pointing to an instance of it, or null if it
+ * was pointing to JSON null.
+ * @throws IOException If an error occurs while reading the BlobRestoreStatusInner.
+ */
+ public static BlobRestoreStatusInner fromJson(JsonReader jsonReader) throws IOException {
+ return jsonReader.readObject(reader -> {
+ BlobRestoreStatusInner deserializedBlobRestoreStatusInner = new BlobRestoreStatusInner();
+ while (reader.nextToken() != JsonToken.END_OBJECT) {
+ String fieldName = reader.getFieldName();
+ reader.nextToken();
+
+ if ("status".equals(fieldName)) {
+ deserializedBlobRestoreStatusInner.status
+ = BlobRestoreProgressStatus.fromString(reader.getString());
+ } else if ("failureReason".equals(fieldName)) {
+ deserializedBlobRestoreStatusInner.failureReason = reader.getString();
+ } else if ("restoreId".equals(fieldName)) {
+ deserializedBlobRestoreStatusInner.restoreId = reader.getString();
+ } else if ("parameters".equals(fieldName)) {
+ deserializedBlobRestoreStatusInner.parameters = BlobRestoreParameters.fromJson(reader);
+ } else {
+ reader.skipChildren();
+ }
+ }
+
+ return deserializedBlobRestoreStatusInner;
+ });
+ }
+}
diff --git a/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/BlobServicePropertiesInner.java b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/BlobServicePropertiesInner.java
new file mode 100644
index 0000000000000..0afd3bc4a23f5
--- /dev/null
+++ b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/BlobServicePropertiesInner.java
@@ -0,0 +1,394 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.storage.generated.fluent.models;
+
+import com.azure.core.annotation.Fluent;
+import com.azure.core.management.ProxyResource;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import com.azure.resourcemanager.storage.generated.models.ChangeFeed;
+import com.azure.resourcemanager.storage.generated.models.CorsRules;
+import com.azure.resourcemanager.storage.generated.models.DeleteRetentionPolicy;
+import com.azure.resourcemanager.storage.generated.models.LastAccessTimeTrackingPolicy;
+import com.azure.resourcemanager.storage.generated.models.RestorePolicyProperties;
+import com.azure.resourcemanager.storage.generated.models.Sku;
+import java.io.IOException;
+
+/**
+ * The properties of a storage account’s Blob service.
+ */
+@Fluent
+public final class BlobServicePropertiesInner extends ProxyResource {
+ /*
+ * The properties of a storage account’s Blob service.
+ */
+ private BlobServicePropertiesProperties innerBlobServiceProperties;
+
+ /*
+ * Sku name and tier.
+ */
+ private Sku sku;
+
+ /*
+ * The type of the resource.
+ */
+ private String type;
+
+ /*
+ * The name of the resource.
+ */
+ private String name;
+
+ /*
+ * Fully qualified resource Id for the resource.
+ */
+ private String id;
+
+ /**
+ * Creates an instance of BlobServicePropertiesInner class.
+ */
+ public BlobServicePropertiesInner() {
+ }
+
+ /**
+ * Get the innerBlobServiceProperties property: The properties of a storage account’s Blob service.
+ *
+ * @return the innerBlobServiceProperties value.
+ */
+ private BlobServicePropertiesProperties innerBlobServiceProperties() {
+ return this.innerBlobServiceProperties;
+ }
+
+ /**
+ * Get the sku property: Sku name and tier.
+ *
+ * @return the sku value.
+ */
+ public Sku sku() {
+ return this.sku;
+ }
+
+ /**
+ * Get the type property: The type of the resource.
+ *
+ * @return the type value.
+ */
+ @Override
+ public String type() {
+ return this.type;
+ }
+
+ /**
+ * Get the name property: The name of the resource.
+ *
+ * @return the name value.
+ */
+ @Override
+ public String name() {
+ return this.name;
+ }
+
+ /**
+ * Get the id property: Fully qualified resource Id for the resource.
+ *
+ * @return the id value.
+ */
+ @Override
+ public String id() {
+ return this.id;
+ }
+
+ /**
+ * Get the cors property: Specifies CORS rules for the Blob service. You can include up to five CorsRule elements in
+ * the request. If no CorsRule elements are included in the request body, all CORS rules will be deleted, and CORS
+ * will be disabled for the Blob service.
+ *
+ * @return the cors value.
+ */
+ public CorsRules cors() {
+ return this.innerBlobServiceProperties() == null ? null : this.innerBlobServiceProperties().cors();
+ }
+
+ /**
+ * Set the cors property: Specifies CORS rules for the Blob service. You can include up to five CorsRule elements in
+ * the request. If no CorsRule elements are included in the request body, all CORS rules will be deleted, and CORS
+ * will be disabled for the Blob service.
+ *
+ * @param cors the cors value to set.
+ * @return the BlobServicePropertiesInner object itself.
+ */
+ public BlobServicePropertiesInner withCors(CorsRules cors) {
+ if (this.innerBlobServiceProperties() == null) {
+ this.innerBlobServiceProperties = new BlobServicePropertiesProperties();
+ }
+ this.innerBlobServiceProperties().withCors(cors);
+ return this;
+ }
+
+ /**
+ * Get the defaultServiceVersion property: DefaultServiceVersion indicates the default version to use for requests
+ * to the Blob service if an incoming request’s version is not specified. Possible values include version 2008-10-27
+ * and all more recent versions.
+ *
+ * @return the defaultServiceVersion value.
+ */
+ public String defaultServiceVersion() {
+ return this.innerBlobServiceProperties() == null
+ ? null
+ : this.innerBlobServiceProperties().defaultServiceVersion();
+ }
+
+ /**
+ * Set the defaultServiceVersion property: DefaultServiceVersion indicates the default version to use for requests
+ * to the Blob service if an incoming request’s version is not specified. Possible values include version 2008-10-27
+ * and all more recent versions.
+ *
+ * @param defaultServiceVersion the defaultServiceVersion value to set.
+ * @return the BlobServicePropertiesInner object itself.
+ */
+ public BlobServicePropertiesInner withDefaultServiceVersion(String defaultServiceVersion) {
+ if (this.innerBlobServiceProperties() == null) {
+ this.innerBlobServiceProperties = new BlobServicePropertiesProperties();
+ }
+ this.innerBlobServiceProperties().withDefaultServiceVersion(defaultServiceVersion);
+ return this;
+ }
+
+ /**
+ * Get the deleteRetentionPolicy property: The blob service properties for blob soft delete.
+ *
+ * @return the deleteRetentionPolicy value.
+ */
+ public DeleteRetentionPolicy deleteRetentionPolicy() {
+ return this.innerBlobServiceProperties() == null
+ ? null
+ : this.innerBlobServiceProperties().deleteRetentionPolicy();
+ }
+
+ /**
+ * Set the deleteRetentionPolicy property: The blob service properties for blob soft delete.
+ *
+ * @param deleteRetentionPolicy the deleteRetentionPolicy value to set.
+ * @return the BlobServicePropertiesInner object itself.
+ */
+ public BlobServicePropertiesInner withDeleteRetentionPolicy(DeleteRetentionPolicy deleteRetentionPolicy) {
+ if (this.innerBlobServiceProperties() == null) {
+ this.innerBlobServiceProperties = new BlobServicePropertiesProperties();
+ }
+ this.innerBlobServiceProperties().withDeleteRetentionPolicy(deleteRetentionPolicy);
+ return this;
+ }
+
+ /**
+ * Get the isVersioningEnabled property: Versioning is enabled if set to true.
+ *
+ * @return the isVersioningEnabled value.
+ */
+ public Boolean isVersioningEnabled() {
+ return this.innerBlobServiceProperties() == null
+ ? null
+ : this.innerBlobServiceProperties().isVersioningEnabled();
+ }
+
+ /**
+ * Set the isVersioningEnabled property: Versioning is enabled if set to true.
+ *
+ * @param isVersioningEnabled the isVersioningEnabled value to set.
+ * @return the BlobServicePropertiesInner object itself.
+ */
+ public BlobServicePropertiesInner withIsVersioningEnabled(Boolean isVersioningEnabled) {
+ if (this.innerBlobServiceProperties() == null) {
+ this.innerBlobServiceProperties = new BlobServicePropertiesProperties();
+ }
+ this.innerBlobServiceProperties().withIsVersioningEnabled(isVersioningEnabled);
+ return this;
+ }
+
+ /**
+ * Get the automaticSnapshotPolicyEnabled property: Deprecated in favor of isVersioningEnabled property.
+ *
+ * @return the automaticSnapshotPolicyEnabled value.
+ */
+ public Boolean automaticSnapshotPolicyEnabled() {
+ return this.innerBlobServiceProperties() == null
+ ? null
+ : this.innerBlobServiceProperties().automaticSnapshotPolicyEnabled();
+ }
+
+ /**
+ * Set the automaticSnapshotPolicyEnabled property: Deprecated in favor of isVersioningEnabled property.
+ *
+ * @param automaticSnapshotPolicyEnabled the automaticSnapshotPolicyEnabled value to set.
+ * @return the BlobServicePropertiesInner object itself.
+ */
+ public BlobServicePropertiesInner withAutomaticSnapshotPolicyEnabled(Boolean automaticSnapshotPolicyEnabled) {
+ if (this.innerBlobServiceProperties() == null) {
+ this.innerBlobServiceProperties = new BlobServicePropertiesProperties();
+ }
+ this.innerBlobServiceProperties().withAutomaticSnapshotPolicyEnabled(automaticSnapshotPolicyEnabled);
+ return this;
+ }
+
+ /**
+ * Get the changeFeed property: The blob service properties for change feed events.
+ *
+ * @return the changeFeed value.
+ */
+ public ChangeFeed changeFeed() {
+ return this.innerBlobServiceProperties() == null ? null : this.innerBlobServiceProperties().changeFeed();
+ }
+
+ /**
+ * Set the changeFeed property: The blob service properties for change feed events.
+ *
+ * @param changeFeed the changeFeed value to set.
+ * @return the BlobServicePropertiesInner object itself.
+ */
+ public BlobServicePropertiesInner withChangeFeed(ChangeFeed changeFeed) {
+ if (this.innerBlobServiceProperties() == null) {
+ this.innerBlobServiceProperties = new BlobServicePropertiesProperties();
+ }
+ this.innerBlobServiceProperties().withChangeFeed(changeFeed);
+ return this;
+ }
+
+ /**
+ * Get the restorePolicy property: The blob service properties for blob restore policy.
+ *
+ * @return the restorePolicy value.
+ */
+ public RestorePolicyProperties restorePolicy() {
+ return this.innerBlobServiceProperties() == null ? null : this.innerBlobServiceProperties().restorePolicy();
+ }
+
+ /**
+ * Set the restorePolicy property: The blob service properties for blob restore policy.
+ *
+ * @param restorePolicy the restorePolicy value to set.
+ * @return the BlobServicePropertiesInner object itself.
+ */
+ public BlobServicePropertiesInner withRestorePolicy(RestorePolicyProperties restorePolicy) {
+ if (this.innerBlobServiceProperties() == null) {
+ this.innerBlobServiceProperties = new BlobServicePropertiesProperties();
+ }
+ this.innerBlobServiceProperties().withRestorePolicy(restorePolicy);
+ return this;
+ }
+
+ /**
+ * Get the containerDeleteRetentionPolicy property: The blob service properties for container soft delete.
+ *
+ * @return the containerDeleteRetentionPolicy value.
+ */
+ public DeleteRetentionPolicy containerDeleteRetentionPolicy() {
+ return this.innerBlobServiceProperties() == null
+ ? null
+ : this.innerBlobServiceProperties().containerDeleteRetentionPolicy();
+ }
+
+ /**
+ * Set the containerDeleteRetentionPolicy property: The blob service properties for container soft delete.
+ *
+ * @param containerDeleteRetentionPolicy the containerDeleteRetentionPolicy value to set.
+ * @return the BlobServicePropertiesInner object itself.
+ */
+ public BlobServicePropertiesInner
+ withContainerDeleteRetentionPolicy(DeleteRetentionPolicy containerDeleteRetentionPolicy) {
+ if (this.innerBlobServiceProperties() == null) {
+ this.innerBlobServiceProperties = new BlobServicePropertiesProperties();
+ }
+ this.innerBlobServiceProperties().withContainerDeleteRetentionPolicy(containerDeleteRetentionPolicy);
+ return this;
+ }
+
+ /**
+ * Get the lastAccessTimeTrackingPolicy property: The blob service property to configure last access time based
+ * tracking policy.
+ *
+ * @return the lastAccessTimeTrackingPolicy value.
+ */
+ public LastAccessTimeTrackingPolicy lastAccessTimeTrackingPolicy() {
+ return this.innerBlobServiceProperties() == null
+ ? null
+ : this.innerBlobServiceProperties().lastAccessTimeTrackingPolicy();
+ }
+
+ /**
+ * Set the lastAccessTimeTrackingPolicy property: The blob service property to configure last access time based
+ * tracking policy.
+ *
+ * @param lastAccessTimeTrackingPolicy the lastAccessTimeTrackingPolicy value to set.
+ * @return the BlobServicePropertiesInner object itself.
+ */
+ public BlobServicePropertiesInner
+ withLastAccessTimeTrackingPolicy(LastAccessTimeTrackingPolicy lastAccessTimeTrackingPolicy) {
+ if (this.innerBlobServiceProperties() == null) {
+ this.innerBlobServiceProperties = new BlobServicePropertiesProperties();
+ }
+ this.innerBlobServiceProperties().withLastAccessTimeTrackingPolicy(lastAccessTimeTrackingPolicy);
+ return this;
+ }
+
+ /**
+ * Validates the instance.
+ *
+ * @throws IllegalArgumentException thrown if the instance is not valid.
+ */
+ public void validate() {
+ if (innerBlobServiceProperties() != null) {
+ innerBlobServiceProperties().validate();
+ }
+ if (sku() != null) {
+ sku().validate();
+ }
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+ jsonWriter.writeStartObject();
+ jsonWriter.writeJsonField("properties", this.innerBlobServiceProperties);
+ return jsonWriter.writeEndObject();
+ }
+
+ /**
+ * Reads an instance of BlobServicePropertiesInner from the JsonReader.
+ *
+ * @param jsonReader The JsonReader being read.
+ * @return An instance of BlobServicePropertiesInner if the JsonReader was pointing to an instance of it, or null if
+ * it was pointing to JSON null.
+ * @throws IllegalStateException If the deserialized JSON object was missing any required properties.
+ * @throws IOException If an error occurs while reading the BlobServicePropertiesInner.
+ */
+ public static BlobServicePropertiesInner fromJson(JsonReader jsonReader) throws IOException {
+ return jsonReader.readObject(reader -> {
+ BlobServicePropertiesInner deserializedBlobServicePropertiesInner = new BlobServicePropertiesInner();
+ while (reader.nextToken() != JsonToken.END_OBJECT) {
+ String fieldName = reader.getFieldName();
+ reader.nextToken();
+
+ if ("id".equals(fieldName)) {
+ deserializedBlobServicePropertiesInner.id = reader.getString();
+ } else if ("name".equals(fieldName)) {
+ deserializedBlobServicePropertiesInner.name = reader.getString();
+ } else if ("type".equals(fieldName)) {
+ deserializedBlobServicePropertiesInner.type = reader.getString();
+ } else if ("properties".equals(fieldName)) {
+ deserializedBlobServicePropertiesInner.innerBlobServiceProperties
+ = BlobServicePropertiesProperties.fromJson(reader);
+ } else if ("sku".equals(fieldName)) {
+ deserializedBlobServicePropertiesInner.sku = Sku.fromJson(reader);
+ } else {
+ reader.skipChildren();
+ }
+ }
+
+ return deserializedBlobServicePropertiesInner;
+ });
+ }
+}
diff --git a/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/BlobServicePropertiesProperties.java b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/BlobServicePropertiesProperties.java
new file mode 100644
index 0000000000000..32a914eac7274
--- /dev/null
+++ b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/BlobServicePropertiesProperties.java
@@ -0,0 +1,362 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.storage.generated.fluent.models;
+
+import com.azure.core.annotation.Fluent;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonSerializable;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import com.azure.resourcemanager.storage.generated.models.ChangeFeed;
+import com.azure.resourcemanager.storage.generated.models.CorsRules;
+import com.azure.resourcemanager.storage.generated.models.DeleteRetentionPolicy;
+import com.azure.resourcemanager.storage.generated.models.LastAccessTimeTrackingPolicy;
+import com.azure.resourcemanager.storage.generated.models.RestorePolicyProperties;
+import java.io.IOException;
+
+/**
+ * The properties of a storage account’s Blob service.
+ */
+@Fluent
+public final class BlobServicePropertiesProperties implements JsonSerializable {
+ /*
+ * Specifies CORS rules for the Blob service. You can include up to five CorsRule elements in the request. If no
+ * CorsRule elements are included in the request body, all CORS rules will be deleted, and CORS will be disabled for
+ * the Blob service.
+ */
+ private CorsRules cors;
+
+ /*
+ * DefaultServiceVersion indicates the default version to use for requests to the Blob service if an incoming
+ * request’s version is not specified. Possible values include version 2008-10-27 and all more recent versions.
+ */
+ private String defaultServiceVersion;
+
+ /*
+ * The blob service properties for blob soft delete.
+ */
+ private DeleteRetentionPolicy deleteRetentionPolicy;
+
+ /*
+ * Versioning is enabled if set to true.
+ */
+ private Boolean isVersioningEnabled;
+
+ /*
+ * Deprecated in favor of isVersioningEnabled property.
+ */
+ private Boolean automaticSnapshotPolicyEnabled;
+
+ /*
+ * The blob service properties for change feed events.
+ */
+ private ChangeFeed changeFeed;
+
+ /*
+ * The blob service properties for blob restore policy.
+ */
+ private RestorePolicyProperties restorePolicy;
+
+ /*
+ * The blob service properties for container soft delete.
+ */
+ private DeleteRetentionPolicy containerDeleteRetentionPolicy;
+
+ /*
+ * The blob service property to configure last access time based tracking policy.
+ */
+ private LastAccessTimeTrackingPolicy lastAccessTimeTrackingPolicy;
+
+ /**
+ * Creates an instance of BlobServicePropertiesProperties class.
+ */
+ public BlobServicePropertiesProperties() {
+ }
+
+ /**
+ * Get the cors property: Specifies CORS rules for the Blob service. You can include up to five CorsRule elements in
+ * the request. If no CorsRule elements are included in the request body, all CORS rules will be deleted, and CORS
+ * will be disabled for the Blob service.
+ *
+ * @return the cors value.
+ */
+ public CorsRules cors() {
+ return this.cors;
+ }
+
+ /**
+ * Set the cors property: Specifies CORS rules for the Blob service. You can include up to five CorsRule elements in
+ * the request. If no CorsRule elements are included in the request body, all CORS rules will be deleted, and CORS
+ * will be disabled for the Blob service.
+ *
+ * @param cors the cors value to set.
+ * @return the BlobServicePropertiesProperties object itself.
+ */
+ public BlobServicePropertiesProperties withCors(CorsRules cors) {
+ this.cors = cors;
+ return this;
+ }
+
+ /**
+ * Get the defaultServiceVersion property: DefaultServiceVersion indicates the default version to use for requests
+ * to the Blob service if an incoming request’s version is not specified. Possible values include version 2008-10-27
+ * and all more recent versions.
+ *
+ * @return the defaultServiceVersion value.
+ */
+ public String defaultServiceVersion() {
+ return this.defaultServiceVersion;
+ }
+
+ /**
+ * Set the defaultServiceVersion property: DefaultServiceVersion indicates the default version to use for requests
+ * to the Blob service if an incoming request’s version is not specified. Possible values include version 2008-10-27
+ * and all more recent versions.
+ *
+ * @param defaultServiceVersion the defaultServiceVersion value to set.
+ * @return the BlobServicePropertiesProperties object itself.
+ */
+ public BlobServicePropertiesProperties withDefaultServiceVersion(String defaultServiceVersion) {
+ this.defaultServiceVersion = defaultServiceVersion;
+ return this;
+ }
+
+ /**
+ * Get the deleteRetentionPolicy property: The blob service properties for blob soft delete.
+ *
+ * @return the deleteRetentionPolicy value.
+ */
+ public DeleteRetentionPolicy deleteRetentionPolicy() {
+ return this.deleteRetentionPolicy;
+ }
+
+ /**
+ * Set the deleteRetentionPolicy property: The blob service properties for blob soft delete.
+ *
+ * @param deleteRetentionPolicy the deleteRetentionPolicy value to set.
+ * @return the BlobServicePropertiesProperties object itself.
+ */
+ public BlobServicePropertiesProperties withDeleteRetentionPolicy(DeleteRetentionPolicy deleteRetentionPolicy) {
+ this.deleteRetentionPolicy = deleteRetentionPolicy;
+ return this;
+ }
+
+ /**
+ * Get the isVersioningEnabled property: Versioning is enabled if set to true.
+ *
+ * @return the isVersioningEnabled value.
+ */
+ public Boolean isVersioningEnabled() {
+ return this.isVersioningEnabled;
+ }
+
+ /**
+ * Set the isVersioningEnabled property: Versioning is enabled if set to true.
+ *
+ * @param isVersioningEnabled the isVersioningEnabled value to set.
+ * @return the BlobServicePropertiesProperties object itself.
+ */
+ public BlobServicePropertiesProperties withIsVersioningEnabled(Boolean isVersioningEnabled) {
+ this.isVersioningEnabled = isVersioningEnabled;
+ return this;
+ }
+
+ /**
+ * Get the automaticSnapshotPolicyEnabled property: Deprecated in favor of isVersioningEnabled property.
+ *
+ * @return the automaticSnapshotPolicyEnabled value.
+ */
+ public Boolean automaticSnapshotPolicyEnabled() {
+ return this.automaticSnapshotPolicyEnabled;
+ }
+
+ /**
+ * Set the automaticSnapshotPolicyEnabled property: Deprecated in favor of isVersioningEnabled property.
+ *
+ * @param automaticSnapshotPolicyEnabled the automaticSnapshotPolicyEnabled value to set.
+ * @return the BlobServicePropertiesProperties object itself.
+ */
+ public BlobServicePropertiesProperties withAutomaticSnapshotPolicyEnabled(Boolean automaticSnapshotPolicyEnabled) {
+ this.automaticSnapshotPolicyEnabled = automaticSnapshotPolicyEnabled;
+ return this;
+ }
+
+ /**
+ * Get the changeFeed property: The blob service properties for change feed events.
+ *
+ * @return the changeFeed value.
+ */
+ public ChangeFeed changeFeed() {
+ return this.changeFeed;
+ }
+
+ /**
+ * Set the changeFeed property: The blob service properties for change feed events.
+ *
+ * @param changeFeed the changeFeed value to set.
+ * @return the BlobServicePropertiesProperties object itself.
+ */
+ public BlobServicePropertiesProperties withChangeFeed(ChangeFeed changeFeed) {
+ this.changeFeed = changeFeed;
+ return this;
+ }
+
+ /**
+ * Get the restorePolicy property: The blob service properties for blob restore policy.
+ *
+ * @return the restorePolicy value.
+ */
+ public RestorePolicyProperties restorePolicy() {
+ return this.restorePolicy;
+ }
+
+ /**
+ * Set the restorePolicy property: The blob service properties for blob restore policy.
+ *
+ * @param restorePolicy the restorePolicy value to set.
+ * @return the BlobServicePropertiesProperties object itself.
+ */
+ public BlobServicePropertiesProperties withRestorePolicy(RestorePolicyProperties restorePolicy) {
+ this.restorePolicy = restorePolicy;
+ return this;
+ }
+
+ /**
+ * Get the containerDeleteRetentionPolicy property: The blob service properties for container soft delete.
+ *
+ * @return the containerDeleteRetentionPolicy value.
+ */
+ public DeleteRetentionPolicy containerDeleteRetentionPolicy() {
+ return this.containerDeleteRetentionPolicy;
+ }
+
+ /**
+ * Set the containerDeleteRetentionPolicy property: The blob service properties for container soft delete.
+ *
+ * @param containerDeleteRetentionPolicy the containerDeleteRetentionPolicy value to set.
+ * @return the BlobServicePropertiesProperties object itself.
+ */
+ public BlobServicePropertiesProperties
+ withContainerDeleteRetentionPolicy(DeleteRetentionPolicy containerDeleteRetentionPolicy) {
+ this.containerDeleteRetentionPolicy = containerDeleteRetentionPolicy;
+ return this;
+ }
+
+ /**
+ * Get the lastAccessTimeTrackingPolicy property: The blob service property to configure last access time based
+ * tracking policy.
+ *
+ * @return the lastAccessTimeTrackingPolicy value.
+ */
+ public LastAccessTimeTrackingPolicy lastAccessTimeTrackingPolicy() {
+ return this.lastAccessTimeTrackingPolicy;
+ }
+
+ /**
+ * Set the lastAccessTimeTrackingPolicy property: The blob service property to configure last access time based
+ * tracking policy.
+ *
+ * @param lastAccessTimeTrackingPolicy the lastAccessTimeTrackingPolicy value to set.
+ * @return the BlobServicePropertiesProperties object itself.
+ */
+ public BlobServicePropertiesProperties
+ withLastAccessTimeTrackingPolicy(LastAccessTimeTrackingPolicy lastAccessTimeTrackingPolicy) {
+ this.lastAccessTimeTrackingPolicy = lastAccessTimeTrackingPolicy;
+ return this;
+ }
+
+ /**
+ * Validates the instance.
+ *
+ * @throws IllegalArgumentException thrown if the instance is not valid.
+ */
+ public void validate() {
+ if (cors() != null) {
+ cors().validate();
+ }
+ if (deleteRetentionPolicy() != null) {
+ deleteRetentionPolicy().validate();
+ }
+ if (changeFeed() != null) {
+ changeFeed().validate();
+ }
+ if (restorePolicy() != null) {
+ restorePolicy().validate();
+ }
+ if (containerDeleteRetentionPolicy() != null) {
+ containerDeleteRetentionPolicy().validate();
+ }
+ if (lastAccessTimeTrackingPolicy() != null) {
+ lastAccessTimeTrackingPolicy().validate();
+ }
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+ jsonWriter.writeStartObject();
+ jsonWriter.writeJsonField("cors", this.cors);
+ jsonWriter.writeStringField("defaultServiceVersion", this.defaultServiceVersion);
+ jsonWriter.writeJsonField("deleteRetentionPolicy", this.deleteRetentionPolicy);
+ jsonWriter.writeBooleanField("isVersioningEnabled", this.isVersioningEnabled);
+ jsonWriter.writeBooleanField("automaticSnapshotPolicyEnabled", this.automaticSnapshotPolicyEnabled);
+ jsonWriter.writeJsonField("changeFeed", this.changeFeed);
+ jsonWriter.writeJsonField("restorePolicy", this.restorePolicy);
+ jsonWriter.writeJsonField("containerDeleteRetentionPolicy", this.containerDeleteRetentionPolicy);
+ jsonWriter.writeJsonField("lastAccessTimeTrackingPolicy", this.lastAccessTimeTrackingPolicy);
+ return jsonWriter.writeEndObject();
+ }
+
+ /**
+ * Reads an instance of BlobServicePropertiesProperties from the JsonReader.
+ *
+ * @param jsonReader The JsonReader being read.
+ * @return An instance of BlobServicePropertiesProperties if the JsonReader was pointing to an instance of it, or
+ * null if it was pointing to JSON null.
+ * @throws IOException If an error occurs while reading the BlobServicePropertiesProperties.
+ */
+ public static BlobServicePropertiesProperties fromJson(JsonReader jsonReader) throws IOException {
+ return jsonReader.readObject(reader -> {
+ BlobServicePropertiesProperties deserializedBlobServicePropertiesProperties
+ = new BlobServicePropertiesProperties();
+ while (reader.nextToken() != JsonToken.END_OBJECT) {
+ String fieldName = reader.getFieldName();
+ reader.nextToken();
+
+ if ("cors".equals(fieldName)) {
+ deserializedBlobServicePropertiesProperties.cors = CorsRules.fromJson(reader);
+ } else if ("defaultServiceVersion".equals(fieldName)) {
+ deserializedBlobServicePropertiesProperties.defaultServiceVersion = reader.getString();
+ } else if ("deleteRetentionPolicy".equals(fieldName)) {
+ deserializedBlobServicePropertiesProperties.deleteRetentionPolicy
+ = DeleteRetentionPolicy.fromJson(reader);
+ } else if ("isVersioningEnabled".equals(fieldName)) {
+ deserializedBlobServicePropertiesProperties.isVersioningEnabled
+ = reader.getNullable(JsonReader::getBoolean);
+ } else if ("automaticSnapshotPolicyEnabled".equals(fieldName)) {
+ deserializedBlobServicePropertiesProperties.automaticSnapshotPolicyEnabled
+ = reader.getNullable(JsonReader::getBoolean);
+ } else if ("changeFeed".equals(fieldName)) {
+ deserializedBlobServicePropertiesProperties.changeFeed = ChangeFeed.fromJson(reader);
+ } else if ("restorePolicy".equals(fieldName)) {
+ deserializedBlobServicePropertiesProperties.restorePolicy
+ = RestorePolicyProperties.fromJson(reader);
+ } else if ("containerDeleteRetentionPolicy".equals(fieldName)) {
+ deserializedBlobServicePropertiesProperties.containerDeleteRetentionPolicy
+ = DeleteRetentionPolicy.fromJson(reader);
+ } else if ("lastAccessTimeTrackingPolicy".equals(fieldName)) {
+ deserializedBlobServicePropertiesProperties.lastAccessTimeTrackingPolicy
+ = LastAccessTimeTrackingPolicy.fromJson(reader);
+ } else {
+ reader.skipChildren();
+ }
+ }
+
+ return deserializedBlobServicePropertiesProperties;
+ });
+ }
+}
diff --git a/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/CheckNameAvailabilityResultInner.java b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/CheckNameAvailabilityResultInner.java
new file mode 100644
index 0000000000000..d244dca0acabc
--- /dev/null
+++ b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/CheckNameAvailabilityResultInner.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.storage.generated.fluent.models;
+
+import com.azure.core.annotation.Immutable;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonSerializable;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import com.azure.resourcemanager.storage.generated.models.Reason;
+import java.io.IOException;
+
+/**
+ * The CheckNameAvailability operation response.
+ */
+@Immutable
+public final class CheckNameAvailabilityResultInner implements JsonSerializable {
+ /*
+ * Gets a boolean value that indicates whether the name is available for you to use. If true, the name is available.
+ * If false, the name has already been taken or is invalid and cannot be used.
+ */
+ private Boolean nameAvailable;
+
+ /*
+ * Gets the reason that a storage account name could not be used. The Reason element is only returned if
+ * NameAvailable is false.
+ */
+ private Reason reason;
+
+ /*
+ * Gets an error message explaining the Reason value in more detail.
+ */
+ private String message;
+
+ /**
+ * Creates an instance of CheckNameAvailabilityResultInner class.
+ */
+ public CheckNameAvailabilityResultInner() {
+ }
+
+ /**
+ * Get the nameAvailable property: Gets a boolean value that indicates whether the name is available for you to use.
+ * If true, the name is available. If false, the name has already been taken or is invalid and cannot be used.
+ *
+ * @return the nameAvailable value.
+ */
+ public Boolean nameAvailable() {
+ return this.nameAvailable;
+ }
+
+ /**
+ * Get the reason property: Gets the reason that a storage account name could not be used. The Reason element is
+ * only returned if NameAvailable is false.
+ *
+ * @return the reason value.
+ */
+ public Reason reason() {
+ return this.reason;
+ }
+
+ /**
+ * Get the message property: Gets an error message explaining the Reason value in more detail.
+ *
+ * @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() {
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+ jsonWriter.writeStartObject();
+ return jsonWriter.writeEndObject();
+ }
+
+ /**
+ * Reads an instance of CheckNameAvailabilityResultInner from the JsonReader.
+ *
+ * @param jsonReader The JsonReader being read.
+ * @return An instance of CheckNameAvailabilityResultInner if the JsonReader was pointing to an instance of it, or
+ * null if it was pointing to JSON null.
+ * @throws IOException If an error occurs while reading the CheckNameAvailabilityResultInner.
+ */
+ public static CheckNameAvailabilityResultInner fromJson(JsonReader jsonReader) throws IOException {
+ return jsonReader.readObject(reader -> {
+ CheckNameAvailabilityResultInner deserializedCheckNameAvailabilityResultInner
+ = new CheckNameAvailabilityResultInner();
+ while (reader.nextToken() != JsonToken.END_OBJECT) {
+ String fieldName = reader.getFieldName();
+ reader.nextToken();
+
+ if ("nameAvailable".equals(fieldName)) {
+ deserializedCheckNameAvailabilityResultInner.nameAvailable
+ = reader.getNullable(JsonReader::getBoolean);
+ } else if ("reason".equals(fieldName)) {
+ deserializedCheckNameAvailabilityResultInner.reason = Reason.fromString(reader.getString());
+ } else if ("message".equals(fieldName)) {
+ deserializedCheckNameAvailabilityResultInner.message = reader.getString();
+ } else {
+ reader.skipChildren();
+ }
+ }
+
+ return deserializedCheckNameAvailabilityResultInner;
+ });
+ }
+}
diff --git a/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/ContainerProperties.java b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/ContainerProperties.java
new file mode 100644
index 0000000000000..9cf9ca5585992
--- /dev/null
+++ b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/ContainerProperties.java
@@ -0,0 +1,494 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.storage.generated.fluent.models;
+
+import com.azure.core.annotation.Fluent;
+import com.azure.core.util.CoreUtils;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonSerializable;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import com.azure.resourcemanager.storage.generated.models.ImmutabilityPolicyProperties;
+import com.azure.resourcemanager.storage.generated.models.ImmutableStorageWithVersioning;
+import com.azure.resourcemanager.storage.generated.models.LeaseDuration;
+import com.azure.resourcemanager.storage.generated.models.LeaseState;
+import com.azure.resourcemanager.storage.generated.models.LeaseStatus;
+import com.azure.resourcemanager.storage.generated.models.LegalHoldProperties;
+import com.azure.resourcemanager.storage.generated.models.PublicAccess;
+import java.io.IOException;
+import java.time.OffsetDateTime;
+import java.util.Map;
+
+/**
+ * The properties of a container.
+ */
+@Fluent
+public final class ContainerProperties implements JsonSerializable {
+ /*
+ * The version of the deleted blob container.
+ */
+ private String version;
+
+ /*
+ * Indicates whether the blob container was deleted.
+ */
+ private Boolean deleted;
+
+ /*
+ * Blob container deletion time.
+ */
+ private OffsetDateTime deletedTime;
+
+ /*
+ * Remaining retention days for soft deleted blob container.
+ */
+ private Integer remainingRetentionDays;
+
+ /*
+ * Default the container to use specified encryption scope for all writes.
+ */
+ private String defaultEncryptionScope;
+
+ /*
+ * Block override of encryption scope from the container default.
+ */
+ private Boolean denyEncryptionScopeOverride;
+
+ /*
+ * Specifies whether data in the container may be accessed publicly and the level of access.
+ */
+ private PublicAccess publicAccess;
+
+ /*
+ * Returns the date and time the container was last modified.
+ */
+ private OffsetDateTime lastModifiedTime;
+
+ /*
+ * The lease status of the container.
+ */
+ private LeaseStatus leaseStatus;
+
+ /*
+ * Lease state of the container.
+ */
+ private LeaseState leaseState;
+
+ /*
+ * Specifies whether the lease on a container is of infinite or fixed duration, only when the container is leased.
+ */
+ private LeaseDuration leaseDuration;
+
+ /*
+ * A name-value pair to associate with the container as metadata.
+ */
+ private Map metadata;
+
+ /*
+ * The ImmutabilityPolicy property of the container.
+ */
+ private ImmutabilityPolicyProperties immutabilityPolicy;
+
+ /*
+ * The LegalHold property of the container.
+ */
+ private LegalHoldProperties legalHold;
+
+ /*
+ * The hasLegalHold public property is set to true by SRP if there are at least one existing tag. The hasLegalHold
+ * public property is set to false by SRP if all existing legal hold tags are cleared out. There can be a maximum of
+ * 1000 blob containers with hasLegalHold=true for a given account.
+ */
+ private Boolean hasLegalHold;
+
+ /*
+ * The hasImmutabilityPolicy public property is set to true by SRP if ImmutabilityPolicy has been created for this
+ * container. The hasImmutabilityPolicy public property is set to false by SRP if ImmutabilityPolicy has not been
+ * created for this container.
+ */
+ private Boolean hasImmutabilityPolicy;
+
+ /*
+ * The object level immutability property of the container. The property is immutable and can only be set to true at
+ * the container creation time. Existing containers must undergo a migration process.
+ */
+ private ImmutableStorageWithVersioning immutableStorageWithVersioning;
+
+ /*
+ * Enable NFSv3 root squash on blob container.
+ */
+ private Boolean enableNfsV3RootSquash;
+
+ /*
+ * Enable NFSv3 all squash on blob container.
+ */
+ private Boolean enableNfsV3AllSquash;
+
+ /**
+ * Creates an instance of ContainerProperties class.
+ */
+ public ContainerProperties() {
+ }
+
+ /**
+ * Get the version property: The version of the deleted blob container.
+ *
+ * @return the version value.
+ */
+ public String version() {
+ return this.version;
+ }
+
+ /**
+ * Get the deleted property: Indicates whether the blob container was deleted.
+ *
+ * @return the deleted value.
+ */
+ public Boolean deleted() {
+ return this.deleted;
+ }
+
+ /**
+ * Get the deletedTime property: Blob container deletion time.
+ *
+ * @return the deletedTime value.
+ */
+ public OffsetDateTime deletedTime() {
+ return this.deletedTime;
+ }
+
+ /**
+ * Get the remainingRetentionDays property: Remaining retention days for soft deleted blob container.
+ *
+ * @return the remainingRetentionDays value.
+ */
+ public Integer remainingRetentionDays() {
+ return this.remainingRetentionDays;
+ }
+
+ /**
+ * Get the defaultEncryptionScope property: Default the container to use specified encryption scope for all writes.
+ *
+ * @return the defaultEncryptionScope value.
+ */
+ public String defaultEncryptionScope() {
+ return this.defaultEncryptionScope;
+ }
+
+ /**
+ * Set the defaultEncryptionScope property: Default the container to use specified encryption scope for all writes.
+ *
+ * @param defaultEncryptionScope the defaultEncryptionScope value to set.
+ * @return the ContainerProperties object itself.
+ */
+ public ContainerProperties withDefaultEncryptionScope(String defaultEncryptionScope) {
+ this.defaultEncryptionScope = defaultEncryptionScope;
+ return this;
+ }
+
+ /**
+ * Get the denyEncryptionScopeOverride property: Block override of encryption scope from the container default.
+ *
+ * @return the denyEncryptionScopeOverride value.
+ */
+ public Boolean denyEncryptionScopeOverride() {
+ return this.denyEncryptionScopeOverride;
+ }
+
+ /**
+ * Set the denyEncryptionScopeOverride property: Block override of encryption scope from the container default.
+ *
+ * @param denyEncryptionScopeOverride the denyEncryptionScopeOverride value to set.
+ * @return the ContainerProperties object itself.
+ */
+ public ContainerProperties withDenyEncryptionScopeOverride(Boolean denyEncryptionScopeOverride) {
+ this.denyEncryptionScopeOverride = denyEncryptionScopeOverride;
+ return this;
+ }
+
+ /**
+ * Get the publicAccess property: Specifies whether data in the container may be accessed publicly and the level of
+ * access.
+ *
+ * @return the publicAccess value.
+ */
+ public PublicAccess publicAccess() {
+ return this.publicAccess;
+ }
+
+ /**
+ * Set the publicAccess property: Specifies whether data in the container may be accessed publicly and the level of
+ * access.
+ *
+ * @param publicAccess the publicAccess value to set.
+ * @return the ContainerProperties object itself.
+ */
+ public ContainerProperties withPublicAccess(PublicAccess publicAccess) {
+ this.publicAccess = publicAccess;
+ return this;
+ }
+
+ /**
+ * Get the lastModifiedTime property: Returns the date and time the container was last modified.
+ *
+ * @return the lastModifiedTime value.
+ */
+ public OffsetDateTime lastModifiedTime() {
+ return this.lastModifiedTime;
+ }
+
+ /**
+ * Get the leaseStatus property: The lease status of the container.
+ *
+ * @return the leaseStatus value.
+ */
+ public LeaseStatus leaseStatus() {
+ return this.leaseStatus;
+ }
+
+ /**
+ * Get the leaseState property: Lease state of the container.
+ *
+ * @return the leaseState value.
+ */
+ public LeaseState leaseState() {
+ return this.leaseState;
+ }
+
+ /**
+ * Get the leaseDuration property: Specifies whether the lease on a container is of infinite or fixed duration, only
+ * when the container is leased.
+ *
+ * @return the leaseDuration value.
+ */
+ public LeaseDuration leaseDuration() {
+ return this.leaseDuration;
+ }
+
+ /**
+ * Get the metadata property: A name-value pair to associate with the container as metadata.
+ *
+ * @return the metadata value.
+ */
+ public Map metadata() {
+ return this.metadata;
+ }
+
+ /**
+ * Set the metadata property: A name-value pair to associate with the container as metadata.
+ *
+ * @param metadata the metadata value to set.
+ * @return the ContainerProperties object itself.
+ */
+ public ContainerProperties withMetadata(Map metadata) {
+ this.metadata = metadata;
+ return this;
+ }
+
+ /**
+ * Get the immutabilityPolicy property: The ImmutabilityPolicy property of the container.
+ *
+ * @return the immutabilityPolicy value.
+ */
+ public ImmutabilityPolicyProperties immutabilityPolicy() {
+ return this.immutabilityPolicy;
+ }
+
+ /**
+ * Get the legalHold property: The LegalHold property of the container.
+ *
+ * @return the legalHold value.
+ */
+ public LegalHoldProperties legalHold() {
+ return this.legalHold;
+ }
+
+ /**
+ * Get the hasLegalHold property: The hasLegalHold public property is set to true by SRP if there are at least one
+ * existing tag. The hasLegalHold public property is set to false by SRP if all existing legal hold tags are cleared
+ * out. There can be a maximum of 1000 blob containers with hasLegalHold=true for a given account.
+ *
+ * @return the hasLegalHold value.
+ */
+ public Boolean hasLegalHold() {
+ return this.hasLegalHold;
+ }
+
+ /**
+ * Get the hasImmutabilityPolicy property: The hasImmutabilityPolicy public property is set to true by SRP if
+ * ImmutabilityPolicy has been created for this container. The hasImmutabilityPolicy public property is set to false
+ * by SRP if ImmutabilityPolicy has not been created for this container.
+ *
+ * @return the hasImmutabilityPolicy value.
+ */
+ public Boolean hasImmutabilityPolicy() {
+ return this.hasImmutabilityPolicy;
+ }
+
+ /**
+ * Get the immutableStorageWithVersioning property: The object level immutability property of the container. The
+ * property is immutable and can only be set to true at the container creation time. Existing containers must
+ * undergo a migration process.
+ *
+ * @return the immutableStorageWithVersioning value.
+ */
+ public ImmutableStorageWithVersioning immutableStorageWithVersioning() {
+ return this.immutableStorageWithVersioning;
+ }
+
+ /**
+ * Set the immutableStorageWithVersioning property: The object level immutability property of the container. The
+ * property is immutable and can only be set to true at the container creation time. Existing containers must
+ * undergo a migration process.
+ *
+ * @param immutableStorageWithVersioning the immutableStorageWithVersioning value to set.
+ * @return the ContainerProperties object itself.
+ */
+ public ContainerProperties
+ withImmutableStorageWithVersioning(ImmutableStorageWithVersioning immutableStorageWithVersioning) {
+ this.immutableStorageWithVersioning = immutableStorageWithVersioning;
+ return this;
+ }
+
+ /**
+ * Get the enableNfsV3RootSquash property: Enable NFSv3 root squash on blob container.
+ *
+ * @return the enableNfsV3RootSquash value.
+ */
+ public Boolean enableNfsV3RootSquash() {
+ return this.enableNfsV3RootSquash;
+ }
+
+ /**
+ * Set the enableNfsV3RootSquash property: Enable NFSv3 root squash on blob container.
+ *
+ * @param enableNfsV3RootSquash the enableNfsV3RootSquash value to set.
+ * @return the ContainerProperties object itself.
+ */
+ public ContainerProperties withEnableNfsV3RootSquash(Boolean enableNfsV3RootSquash) {
+ this.enableNfsV3RootSquash = enableNfsV3RootSquash;
+ return this;
+ }
+
+ /**
+ * Get the enableNfsV3AllSquash property: Enable NFSv3 all squash on blob container.
+ *
+ * @return the enableNfsV3AllSquash value.
+ */
+ public Boolean enableNfsV3AllSquash() {
+ return this.enableNfsV3AllSquash;
+ }
+
+ /**
+ * Set the enableNfsV3AllSquash property: Enable NFSv3 all squash on blob container.
+ *
+ * @param enableNfsV3AllSquash the enableNfsV3AllSquash value to set.
+ * @return the ContainerProperties object itself.
+ */
+ public ContainerProperties withEnableNfsV3AllSquash(Boolean enableNfsV3AllSquash) {
+ this.enableNfsV3AllSquash = enableNfsV3AllSquash;
+ return this;
+ }
+
+ /**
+ * Validates the instance.
+ *
+ * @throws IllegalArgumentException thrown if the instance is not valid.
+ */
+ public void validate() {
+ if (immutabilityPolicy() != null) {
+ immutabilityPolicy().validate();
+ }
+ if (legalHold() != null) {
+ legalHold().validate();
+ }
+ if (immutableStorageWithVersioning() != null) {
+ immutableStorageWithVersioning().validate();
+ }
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+ jsonWriter.writeStartObject();
+ jsonWriter.writeStringField("defaultEncryptionScope", this.defaultEncryptionScope);
+ jsonWriter.writeBooleanField("denyEncryptionScopeOverride", this.denyEncryptionScopeOverride);
+ jsonWriter.writeStringField("publicAccess", this.publicAccess == null ? null : this.publicAccess.toString());
+ jsonWriter.writeMapField("metadata", this.metadata, (writer, element) -> writer.writeString(element));
+ jsonWriter.writeJsonField("immutableStorageWithVersioning", this.immutableStorageWithVersioning);
+ jsonWriter.writeBooleanField("enableNfsV3RootSquash", this.enableNfsV3RootSquash);
+ jsonWriter.writeBooleanField("enableNfsV3AllSquash", this.enableNfsV3AllSquash);
+ return jsonWriter.writeEndObject();
+ }
+
+ /**
+ * Reads an instance of ContainerProperties from the JsonReader.
+ *
+ * @param jsonReader The JsonReader being read.
+ * @return An instance of ContainerProperties if the JsonReader was pointing to an instance of it, or null if it was
+ * pointing to JSON null.
+ * @throws IOException If an error occurs while reading the ContainerProperties.
+ */
+ public static ContainerProperties fromJson(JsonReader jsonReader) throws IOException {
+ return jsonReader.readObject(reader -> {
+ ContainerProperties deserializedContainerProperties = new ContainerProperties();
+ while (reader.nextToken() != JsonToken.END_OBJECT) {
+ String fieldName = reader.getFieldName();
+ reader.nextToken();
+
+ if ("version".equals(fieldName)) {
+ deserializedContainerProperties.version = reader.getString();
+ } else if ("deleted".equals(fieldName)) {
+ deserializedContainerProperties.deleted = reader.getNullable(JsonReader::getBoolean);
+ } else if ("deletedTime".equals(fieldName)) {
+ deserializedContainerProperties.deletedTime = reader
+ .getNullable(nonNullReader -> CoreUtils.parseBestOffsetDateTime(nonNullReader.getString()));
+ } else if ("remainingRetentionDays".equals(fieldName)) {
+ deserializedContainerProperties.remainingRetentionDays = reader.getNullable(JsonReader::getInt);
+ } else if ("defaultEncryptionScope".equals(fieldName)) {
+ deserializedContainerProperties.defaultEncryptionScope = reader.getString();
+ } else if ("denyEncryptionScopeOverride".equals(fieldName)) {
+ deserializedContainerProperties.denyEncryptionScopeOverride
+ = reader.getNullable(JsonReader::getBoolean);
+ } else if ("publicAccess".equals(fieldName)) {
+ deserializedContainerProperties.publicAccess = PublicAccess.fromString(reader.getString());
+ } else if ("lastModifiedTime".equals(fieldName)) {
+ deserializedContainerProperties.lastModifiedTime = reader
+ .getNullable(nonNullReader -> CoreUtils.parseBestOffsetDateTime(nonNullReader.getString()));
+ } else if ("leaseStatus".equals(fieldName)) {
+ deserializedContainerProperties.leaseStatus = LeaseStatus.fromString(reader.getString());
+ } else if ("leaseState".equals(fieldName)) {
+ deserializedContainerProperties.leaseState = LeaseState.fromString(reader.getString());
+ } else if ("leaseDuration".equals(fieldName)) {
+ deserializedContainerProperties.leaseDuration = LeaseDuration.fromString(reader.getString());
+ } else if ("metadata".equals(fieldName)) {
+ Map metadata = reader.readMap(reader1 -> reader1.getString());
+ deserializedContainerProperties.metadata = metadata;
+ } else if ("immutabilityPolicy".equals(fieldName)) {
+ deserializedContainerProperties.immutabilityPolicy = ImmutabilityPolicyProperties.fromJson(reader);
+ } else if ("legalHold".equals(fieldName)) {
+ deserializedContainerProperties.legalHold = LegalHoldProperties.fromJson(reader);
+ } else if ("hasLegalHold".equals(fieldName)) {
+ deserializedContainerProperties.hasLegalHold = reader.getNullable(JsonReader::getBoolean);
+ } else if ("hasImmutabilityPolicy".equals(fieldName)) {
+ deserializedContainerProperties.hasImmutabilityPolicy = reader.getNullable(JsonReader::getBoolean);
+ } else if ("immutableStorageWithVersioning".equals(fieldName)) {
+ deserializedContainerProperties.immutableStorageWithVersioning
+ = ImmutableStorageWithVersioning.fromJson(reader);
+ } else if ("enableNfsV3RootSquash".equals(fieldName)) {
+ deserializedContainerProperties.enableNfsV3RootSquash = reader.getNullable(JsonReader::getBoolean);
+ } else if ("enableNfsV3AllSquash".equals(fieldName)) {
+ deserializedContainerProperties.enableNfsV3AllSquash = reader.getNullable(JsonReader::getBoolean);
+ } else {
+ reader.skipChildren();
+ }
+ }
+
+ return deserializedContainerProperties;
+ });
+ }
+}
diff --git a/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/DeletedAccountInner.java b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/DeletedAccountInner.java
new file mode 100644
index 0000000000000..ab00af8bb6a2f
--- /dev/null
+++ b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/DeletedAccountInner.java
@@ -0,0 +1,183 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.storage.generated.fluent.models;
+
+import com.azure.core.annotation.Immutable;
+import com.azure.core.management.ProxyResource;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
+
+/**
+ * Deleted storage account.
+ */
+@Immutable
+public final class DeletedAccountInner extends ProxyResource {
+ /*
+ * Properties of the deleted account.
+ */
+ private DeletedAccountProperties innerProperties;
+
+ /*
+ * The type of the resource.
+ */
+ private String type;
+
+ /*
+ * The name of the resource.
+ */
+ private String name;
+
+ /*
+ * Fully qualified resource Id for the resource.
+ */
+ private String id;
+
+ /**
+ * Creates an instance of DeletedAccountInner class.
+ */
+ public DeletedAccountInner() {
+ }
+
+ /**
+ * Get the innerProperties property: Properties of the deleted account.
+ *
+ * @return the innerProperties value.
+ */
+ private DeletedAccountProperties innerProperties() {
+ return this.innerProperties;
+ }
+
+ /**
+ * Get the type property: The type of the resource.
+ *
+ * @return the type value.
+ */
+ @Override
+ public String type() {
+ return this.type;
+ }
+
+ /**
+ * Get the name property: The name of the resource.
+ *
+ * @return the name value.
+ */
+ @Override
+ public String name() {
+ return this.name;
+ }
+
+ /**
+ * Get the id property: Fully qualified resource Id for the resource.
+ *
+ * @return the id value.
+ */
+ @Override
+ public String id() {
+ return this.id;
+ }
+
+ /**
+ * Get the storageAccountResourceId property: Full resource id of the original storage account.
+ *
+ * @return the storageAccountResourceId value.
+ */
+ public String storageAccountResourceId() {
+ return this.innerProperties() == null ? null : this.innerProperties().storageAccountResourceId();
+ }
+
+ /**
+ * Get the location property: Location of the deleted account.
+ *
+ * @return the location value.
+ */
+ public String location() {
+ return this.innerProperties() == null ? null : this.innerProperties().location();
+ }
+
+ /**
+ * Get the restoreReference property: Can be used to attempt recovering this deleted account via PutStorageAccount
+ * API.
+ *
+ * @return the restoreReference value.
+ */
+ public String restoreReference() {
+ return this.innerProperties() == null ? null : this.innerProperties().restoreReference();
+ }
+
+ /**
+ * Get the creationTime property: Creation time of the deleted account.
+ *
+ * @return the creationTime value.
+ */
+ public String creationTime() {
+ return this.innerProperties() == null ? null : this.innerProperties().creationTime();
+ }
+
+ /**
+ * Get the deletionTime property: Deletion time of the deleted account.
+ *
+ * @return the deletionTime value.
+ */
+ public String deletionTime() {
+ return this.innerProperties() == null ? null : this.innerProperties().deletionTime();
+ }
+
+ /**
+ * Validates the instance.
+ *
+ * @throws IllegalArgumentException thrown if the instance is not valid.
+ */
+ public void validate() {
+ if (innerProperties() != null) {
+ innerProperties().validate();
+ }
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+ jsonWriter.writeStartObject();
+ jsonWriter.writeJsonField("properties", this.innerProperties);
+ return jsonWriter.writeEndObject();
+ }
+
+ /**
+ * Reads an instance of DeletedAccountInner from the JsonReader.
+ *
+ * @param jsonReader The JsonReader being read.
+ * @return An instance of DeletedAccountInner if the JsonReader was pointing to an instance of it, or null if it was
+ * pointing to JSON null.
+ * @throws IllegalStateException If the deserialized JSON object was missing any required properties.
+ * @throws IOException If an error occurs while reading the DeletedAccountInner.
+ */
+ public static DeletedAccountInner fromJson(JsonReader jsonReader) throws IOException {
+ return jsonReader.readObject(reader -> {
+ DeletedAccountInner deserializedDeletedAccountInner = new DeletedAccountInner();
+ while (reader.nextToken() != JsonToken.END_OBJECT) {
+ String fieldName = reader.getFieldName();
+ reader.nextToken();
+
+ if ("id".equals(fieldName)) {
+ deserializedDeletedAccountInner.id = reader.getString();
+ } else if ("name".equals(fieldName)) {
+ deserializedDeletedAccountInner.name = reader.getString();
+ } else if ("type".equals(fieldName)) {
+ deserializedDeletedAccountInner.type = reader.getString();
+ } else if ("properties".equals(fieldName)) {
+ deserializedDeletedAccountInner.innerProperties = DeletedAccountProperties.fromJson(reader);
+ } else {
+ reader.skipChildren();
+ }
+ }
+
+ return deserializedDeletedAccountInner;
+ });
+ }
+}
diff --git a/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/DeletedAccountProperties.java b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/DeletedAccountProperties.java
new file mode 100644
index 0000000000000..6fb4dbe66bdb0
--- /dev/null
+++ b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/DeletedAccountProperties.java
@@ -0,0 +1,146 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.storage.generated.fluent.models;
+
+import com.azure.core.annotation.Immutable;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonSerializable;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
+
+/**
+ * Attributes of a deleted storage account.
+ */
+@Immutable
+public final class DeletedAccountProperties implements JsonSerializable {
+ /*
+ * Full resource id of the original storage account.
+ */
+ private String storageAccountResourceId;
+
+ /*
+ * Location of the deleted account.
+ */
+ private String location;
+
+ /*
+ * Can be used to attempt recovering this deleted account via PutStorageAccount API.
+ */
+ private String restoreReference;
+
+ /*
+ * Creation time of the deleted account.
+ */
+ private String creationTime;
+
+ /*
+ * Deletion time of the deleted account.
+ */
+ private String deletionTime;
+
+ /**
+ * Creates an instance of DeletedAccountProperties class.
+ */
+ public DeletedAccountProperties() {
+ }
+
+ /**
+ * Get the storageAccountResourceId property: Full resource id of the original storage account.
+ *
+ * @return the storageAccountResourceId value.
+ */
+ public String storageAccountResourceId() {
+ return this.storageAccountResourceId;
+ }
+
+ /**
+ * Get the location property: Location of the deleted account.
+ *
+ * @return the location value.
+ */
+ public String location() {
+ return this.location;
+ }
+
+ /**
+ * Get the restoreReference property: Can be used to attempt recovering this deleted account via PutStorageAccount
+ * API.
+ *
+ * @return the restoreReference value.
+ */
+ public String restoreReference() {
+ return this.restoreReference;
+ }
+
+ /**
+ * Get the creationTime property: Creation time of the deleted account.
+ *
+ * @return the creationTime value.
+ */
+ public String creationTime() {
+ return this.creationTime;
+ }
+
+ /**
+ * Get the deletionTime property: Deletion time of the deleted account.
+ *
+ * @return the deletionTime value.
+ */
+ public String deletionTime() {
+ return this.deletionTime;
+ }
+
+ /**
+ * Validates the instance.
+ *
+ * @throws IllegalArgumentException thrown if the instance is not valid.
+ */
+ public void validate() {
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+ jsonWriter.writeStartObject();
+ return jsonWriter.writeEndObject();
+ }
+
+ /**
+ * Reads an instance of DeletedAccountProperties from the JsonReader.
+ *
+ * @param jsonReader The JsonReader being read.
+ * @return An instance of DeletedAccountProperties if the JsonReader was pointing to an instance of it, or null if
+ * it was pointing to JSON null.
+ * @throws IOException If an error occurs while reading the DeletedAccountProperties.
+ */
+ public static DeletedAccountProperties fromJson(JsonReader jsonReader) throws IOException {
+ return jsonReader.readObject(reader -> {
+ DeletedAccountProperties deserializedDeletedAccountProperties = new DeletedAccountProperties();
+ while (reader.nextToken() != JsonToken.END_OBJECT) {
+ String fieldName = reader.getFieldName();
+ reader.nextToken();
+
+ if ("storageAccountResourceId".equals(fieldName)) {
+ deserializedDeletedAccountProperties.storageAccountResourceId = reader.getString();
+ } else if ("location".equals(fieldName)) {
+ deserializedDeletedAccountProperties.location = reader.getString();
+ } else if ("restoreReference".equals(fieldName)) {
+ deserializedDeletedAccountProperties.restoreReference = reader.getString();
+ } else if ("creationTime".equals(fieldName)) {
+ deserializedDeletedAccountProperties.creationTime = reader.getString();
+ } else if ("deletionTime".equals(fieldName)) {
+ deserializedDeletedAccountProperties.deletionTime = reader.getString();
+ } else {
+ reader.skipChildren();
+ }
+ }
+
+ return deserializedDeletedAccountProperties;
+ });
+ }
+}
diff --git a/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/EncryptionScopeInner.java b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/EncryptionScopeInner.java
new file mode 100644
index 0000000000000..74c21eb1ee43a
--- /dev/null
+++ b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/EncryptionScopeInner.java
@@ -0,0 +1,266 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.storage.generated.fluent.models;
+
+import com.azure.core.annotation.Fluent;
+import com.azure.core.management.ProxyResource;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import com.azure.resourcemanager.storage.generated.models.EncryptionScopeKeyVaultProperties;
+import com.azure.resourcemanager.storage.generated.models.EncryptionScopeSource;
+import com.azure.resourcemanager.storage.generated.models.EncryptionScopeState;
+import java.io.IOException;
+import java.time.OffsetDateTime;
+
+/**
+ * The Encryption Scope resource.
+ */
+@Fluent
+public final class EncryptionScopeInner extends ProxyResource {
+ /*
+ * Properties of the encryption scope.
+ */
+ private EncryptionScopeProperties innerEncryptionScopeProperties;
+
+ /*
+ * The type of the resource.
+ */
+ private String type;
+
+ /*
+ * The name of the resource.
+ */
+ private String name;
+
+ /*
+ * Fully qualified resource Id for the resource.
+ */
+ private String id;
+
+ /**
+ * Creates an instance of EncryptionScopeInner class.
+ */
+ public EncryptionScopeInner() {
+ }
+
+ /**
+ * Get the innerEncryptionScopeProperties property: Properties of the encryption scope.
+ *
+ * @return the innerEncryptionScopeProperties value.
+ */
+ private EncryptionScopeProperties innerEncryptionScopeProperties() {
+ return this.innerEncryptionScopeProperties;
+ }
+
+ /**
+ * Get the type property: The type of the resource.
+ *
+ * @return the type value.
+ */
+ @Override
+ public String type() {
+ return this.type;
+ }
+
+ /**
+ * Get the name property: The name of the resource.
+ *
+ * @return the name value.
+ */
+ @Override
+ public String name() {
+ return this.name;
+ }
+
+ /**
+ * Get the id property: Fully qualified resource Id for the resource.
+ *
+ * @return the id value.
+ */
+ @Override
+ public String id() {
+ return this.id;
+ }
+
+ /**
+ * Get the source property: The provider for the encryption scope. Possible values (case-insensitive):
+ * Microsoft.Storage, Microsoft.KeyVault.
+ *
+ * @return the source value.
+ */
+ public EncryptionScopeSource source() {
+ return this.innerEncryptionScopeProperties() == null ? null : this.innerEncryptionScopeProperties().source();
+ }
+
+ /**
+ * Set the source property: The provider for the encryption scope. Possible values (case-insensitive):
+ * Microsoft.Storage, Microsoft.KeyVault.
+ *
+ * @param source the source value to set.
+ * @return the EncryptionScopeInner object itself.
+ */
+ public EncryptionScopeInner withSource(EncryptionScopeSource source) {
+ if (this.innerEncryptionScopeProperties() == null) {
+ this.innerEncryptionScopeProperties = new EncryptionScopeProperties();
+ }
+ this.innerEncryptionScopeProperties().withSource(source);
+ return this;
+ }
+
+ /**
+ * Get the state property: The state of the encryption scope. Possible values (case-insensitive): Enabled, Disabled.
+ *
+ * @return the state value.
+ */
+ public EncryptionScopeState state() {
+ return this.innerEncryptionScopeProperties() == null ? null : this.innerEncryptionScopeProperties().state();
+ }
+
+ /**
+ * Set the state property: The state of the encryption scope. Possible values (case-insensitive): Enabled, Disabled.
+ *
+ * @param state the state value to set.
+ * @return the EncryptionScopeInner object itself.
+ */
+ public EncryptionScopeInner withState(EncryptionScopeState state) {
+ if (this.innerEncryptionScopeProperties() == null) {
+ this.innerEncryptionScopeProperties = new EncryptionScopeProperties();
+ }
+ this.innerEncryptionScopeProperties().withState(state);
+ return this;
+ }
+
+ /**
+ * Get the creationTime property: Gets the creation date and time of the encryption scope in UTC.
+ *
+ * @return the creationTime value.
+ */
+ public OffsetDateTime creationTime() {
+ return this.innerEncryptionScopeProperties() == null
+ ? null
+ : this.innerEncryptionScopeProperties().creationTime();
+ }
+
+ /**
+ * Get the lastModifiedTime property: Gets the last modification date and time of the encryption scope in UTC.
+ *
+ * @return the lastModifiedTime value.
+ */
+ public OffsetDateTime lastModifiedTime() {
+ return this.innerEncryptionScopeProperties() == null
+ ? null
+ : this.innerEncryptionScopeProperties().lastModifiedTime();
+ }
+
+ /**
+ * Get the keyVaultProperties property: The key vault properties for the encryption scope. This is a required field
+ * if encryption scope 'source' attribute is set to 'Microsoft.KeyVault'.
+ *
+ * @return the keyVaultProperties value.
+ */
+ public EncryptionScopeKeyVaultProperties keyVaultProperties() {
+ return this.innerEncryptionScopeProperties() == null
+ ? null
+ : this.innerEncryptionScopeProperties().keyVaultProperties();
+ }
+
+ /**
+ * Set the keyVaultProperties property: The key vault properties for the encryption scope. This is a required field
+ * if encryption scope 'source' attribute is set to 'Microsoft.KeyVault'.
+ *
+ * @param keyVaultProperties the keyVaultProperties value to set.
+ * @return the EncryptionScopeInner object itself.
+ */
+ public EncryptionScopeInner withKeyVaultProperties(EncryptionScopeKeyVaultProperties keyVaultProperties) {
+ if (this.innerEncryptionScopeProperties() == null) {
+ this.innerEncryptionScopeProperties = new EncryptionScopeProperties();
+ }
+ this.innerEncryptionScopeProperties().withKeyVaultProperties(keyVaultProperties);
+ return this;
+ }
+
+ /**
+ * Get the requireInfrastructureEncryption property: A boolean indicating whether or not the service applies a
+ * secondary layer of encryption with platform managed keys for data at rest.
+ *
+ * @return the requireInfrastructureEncryption value.
+ */
+ public Boolean requireInfrastructureEncryption() {
+ return this.innerEncryptionScopeProperties() == null
+ ? null
+ : this.innerEncryptionScopeProperties().requireInfrastructureEncryption();
+ }
+
+ /**
+ * Set the requireInfrastructureEncryption property: A boolean indicating whether or not the service applies a
+ * secondary layer of encryption with platform managed keys for data at rest.
+ *
+ * @param requireInfrastructureEncryption the requireInfrastructureEncryption value to set.
+ * @return the EncryptionScopeInner object itself.
+ */
+ public EncryptionScopeInner withRequireInfrastructureEncryption(Boolean requireInfrastructureEncryption) {
+ if (this.innerEncryptionScopeProperties() == null) {
+ this.innerEncryptionScopeProperties = new EncryptionScopeProperties();
+ }
+ this.innerEncryptionScopeProperties().withRequireInfrastructureEncryption(requireInfrastructureEncryption);
+ return this;
+ }
+
+ /**
+ * Validates the instance.
+ *
+ * @throws IllegalArgumentException thrown if the instance is not valid.
+ */
+ public void validate() {
+ if (innerEncryptionScopeProperties() != null) {
+ innerEncryptionScopeProperties().validate();
+ }
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+ jsonWriter.writeStartObject();
+ jsonWriter.writeJsonField("properties", this.innerEncryptionScopeProperties);
+ return jsonWriter.writeEndObject();
+ }
+
+ /**
+ * Reads an instance of EncryptionScopeInner from the JsonReader.
+ *
+ * @param jsonReader The JsonReader being read.
+ * @return An instance of EncryptionScopeInner if the JsonReader was pointing to an instance of it, or null if it
+ * was pointing to JSON null.
+ * @throws IllegalStateException If the deserialized JSON object was missing any required properties.
+ * @throws IOException If an error occurs while reading the EncryptionScopeInner.
+ */
+ public static EncryptionScopeInner fromJson(JsonReader jsonReader) throws IOException {
+ return jsonReader.readObject(reader -> {
+ EncryptionScopeInner deserializedEncryptionScopeInner = new EncryptionScopeInner();
+ while (reader.nextToken() != JsonToken.END_OBJECT) {
+ String fieldName = reader.getFieldName();
+ reader.nextToken();
+
+ if ("id".equals(fieldName)) {
+ deserializedEncryptionScopeInner.id = reader.getString();
+ } else if ("name".equals(fieldName)) {
+ deserializedEncryptionScopeInner.name = reader.getString();
+ } else if ("type".equals(fieldName)) {
+ deserializedEncryptionScopeInner.type = reader.getString();
+ } else if ("properties".equals(fieldName)) {
+ deserializedEncryptionScopeInner.innerEncryptionScopeProperties
+ = EncryptionScopeProperties.fromJson(reader);
+ } else {
+ reader.skipChildren();
+ }
+ }
+
+ return deserializedEncryptionScopeInner;
+ });
+ }
+}
diff --git a/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/EncryptionScopeProperties.java b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/EncryptionScopeProperties.java
new file mode 100644
index 0000000000000..7d96085654de7
--- /dev/null
+++ b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/EncryptionScopeProperties.java
@@ -0,0 +1,229 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.storage.generated.fluent.models;
+
+import com.azure.core.annotation.Fluent;
+import com.azure.core.util.CoreUtils;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonSerializable;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import com.azure.resourcemanager.storage.generated.models.EncryptionScopeKeyVaultProperties;
+import com.azure.resourcemanager.storage.generated.models.EncryptionScopeSource;
+import com.azure.resourcemanager.storage.generated.models.EncryptionScopeState;
+import java.io.IOException;
+import java.time.OffsetDateTime;
+
+/**
+ * Properties of the encryption scope.
+ */
+@Fluent
+public final class EncryptionScopeProperties implements JsonSerializable {
+ /*
+ * The provider for the encryption scope. Possible values (case-insensitive): Microsoft.Storage, Microsoft.KeyVault.
+ */
+ private EncryptionScopeSource source;
+
+ /*
+ * The state of the encryption scope. Possible values (case-insensitive): Enabled, Disabled.
+ */
+ private EncryptionScopeState state;
+
+ /*
+ * Gets the creation date and time of the encryption scope in UTC.
+ */
+ private OffsetDateTime creationTime;
+
+ /*
+ * Gets the last modification date and time of the encryption scope in UTC.
+ */
+ private OffsetDateTime lastModifiedTime;
+
+ /*
+ * The key vault properties for the encryption scope. This is a required field if encryption scope 'source'
+ * attribute is set to 'Microsoft.KeyVault'.
+ */
+ private EncryptionScopeKeyVaultProperties keyVaultProperties;
+
+ /*
+ * A boolean indicating whether or not the service applies a secondary layer of encryption with platform managed
+ * keys for data at rest.
+ */
+ private Boolean requireInfrastructureEncryption;
+
+ /**
+ * Creates an instance of EncryptionScopeProperties class.
+ */
+ public EncryptionScopeProperties() {
+ }
+
+ /**
+ * Get the source property: The provider for the encryption scope. Possible values (case-insensitive):
+ * Microsoft.Storage, Microsoft.KeyVault.
+ *
+ * @return the source value.
+ */
+ public EncryptionScopeSource source() {
+ return this.source;
+ }
+
+ /**
+ * Set the source property: The provider for the encryption scope. Possible values (case-insensitive):
+ * Microsoft.Storage, Microsoft.KeyVault.
+ *
+ * @param source the source value to set.
+ * @return the EncryptionScopeProperties object itself.
+ */
+ public EncryptionScopeProperties withSource(EncryptionScopeSource source) {
+ this.source = source;
+ return this;
+ }
+
+ /**
+ * Get the state property: The state of the encryption scope. Possible values (case-insensitive): Enabled, Disabled.
+ *
+ * @return the state value.
+ */
+ public EncryptionScopeState state() {
+ return this.state;
+ }
+
+ /**
+ * Set the state property: The state of the encryption scope. Possible values (case-insensitive): Enabled, Disabled.
+ *
+ * @param state the state value to set.
+ * @return the EncryptionScopeProperties object itself.
+ */
+ public EncryptionScopeProperties withState(EncryptionScopeState state) {
+ this.state = state;
+ return this;
+ }
+
+ /**
+ * Get the creationTime property: Gets the creation date and time of the encryption scope in UTC.
+ *
+ * @return the creationTime value.
+ */
+ public OffsetDateTime creationTime() {
+ return this.creationTime;
+ }
+
+ /**
+ * Get the lastModifiedTime property: Gets the last modification date and time of the encryption scope in UTC.
+ *
+ * @return the lastModifiedTime value.
+ */
+ public OffsetDateTime lastModifiedTime() {
+ return this.lastModifiedTime;
+ }
+
+ /**
+ * Get the keyVaultProperties property: The key vault properties for the encryption scope. This is a required field
+ * if encryption scope 'source' attribute is set to 'Microsoft.KeyVault'.
+ *
+ * @return the keyVaultProperties value.
+ */
+ public EncryptionScopeKeyVaultProperties keyVaultProperties() {
+ return this.keyVaultProperties;
+ }
+
+ /**
+ * Set the keyVaultProperties property: The key vault properties for the encryption scope. This is a required field
+ * if encryption scope 'source' attribute is set to 'Microsoft.KeyVault'.
+ *
+ * @param keyVaultProperties the keyVaultProperties value to set.
+ * @return the EncryptionScopeProperties object itself.
+ */
+ public EncryptionScopeProperties withKeyVaultProperties(EncryptionScopeKeyVaultProperties keyVaultProperties) {
+ this.keyVaultProperties = keyVaultProperties;
+ return this;
+ }
+
+ /**
+ * Get the requireInfrastructureEncryption property: A boolean indicating whether or not the service applies a
+ * secondary layer of encryption with platform managed keys for data at rest.
+ *
+ * @return the requireInfrastructureEncryption value.
+ */
+ public Boolean requireInfrastructureEncryption() {
+ return this.requireInfrastructureEncryption;
+ }
+
+ /**
+ * Set the requireInfrastructureEncryption property: A boolean indicating whether or not the service applies a
+ * secondary layer of encryption with platform managed keys for data at rest.
+ *
+ * @param requireInfrastructureEncryption the requireInfrastructureEncryption value to set.
+ * @return the EncryptionScopeProperties object itself.
+ */
+ public EncryptionScopeProperties withRequireInfrastructureEncryption(Boolean requireInfrastructureEncryption) {
+ this.requireInfrastructureEncryption = requireInfrastructureEncryption;
+ return this;
+ }
+
+ /**
+ * Validates the instance.
+ *
+ * @throws IllegalArgumentException thrown if the instance is not valid.
+ */
+ public void validate() {
+ if (keyVaultProperties() != null) {
+ keyVaultProperties().validate();
+ }
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+ jsonWriter.writeStartObject();
+ jsonWriter.writeStringField("source", this.source == null ? null : this.source.toString());
+ jsonWriter.writeStringField("state", this.state == null ? null : this.state.toString());
+ jsonWriter.writeJsonField("keyVaultProperties", this.keyVaultProperties);
+ jsonWriter.writeBooleanField("requireInfrastructureEncryption", this.requireInfrastructureEncryption);
+ return jsonWriter.writeEndObject();
+ }
+
+ /**
+ * Reads an instance of EncryptionScopeProperties from the JsonReader.
+ *
+ * @param jsonReader The JsonReader being read.
+ * @return An instance of EncryptionScopeProperties if the JsonReader was pointing to an instance of it, or null if
+ * it was pointing to JSON null.
+ * @throws IOException If an error occurs while reading the EncryptionScopeProperties.
+ */
+ public static EncryptionScopeProperties fromJson(JsonReader jsonReader) throws IOException {
+ return jsonReader.readObject(reader -> {
+ EncryptionScopeProperties deserializedEncryptionScopeProperties = new EncryptionScopeProperties();
+ while (reader.nextToken() != JsonToken.END_OBJECT) {
+ String fieldName = reader.getFieldName();
+ reader.nextToken();
+
+ if ("source".equals(fieldName)) {
+ deserializedEncryptionScopeProperties.source = EncryptionScopeSource.fromString(reader.getString());
+ } else if ("state".equals(fieldName)) {
+ deserializedEncryptionScopeProperties.state = EncryptionScopeState.fromString(reader.getString());
+ } else if ("creationTime".equals(fieldName)) {
+ deserializedEncryptionScopeProperties.creationTime = reader
+ .getNullable(nonNullReader -> CoreUtils.parseBestOffsetDateTime(nonNullReader.getString()));
+ } else if ("lastModifiedTime".equals(fieldName)) {
+ deserializedEncryptionScopeProperties.lastModifiedTime = reader
+ .getNullable(nonNullReader -> CoreUtils.parseBestOffsetDateTime(nonNullReader.getString()));
+ } else if ("keyVaultProperties".equals(fieldName)) {
+ deserializedEncryptionScopeProperties.keyVaultProperties
+ = EncryptionScopeKeyVaultProperties.fromJson(reader);
+ } else if ("requireInfrastructureEncryption".equals(fieldName)) {
+ deserializedEncryptionScopeProperties.requireInfrastructureEncryption
+ = reader.getNullable(JsonReader::getBoolean);
+ } else {
+ reader.skipChildren();
+ }
+ }
+
+ return deserializedEncryptionScopeProperties;
+ });
+ }
+}
diff --git a/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/FileServiceItemsInner.java b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/FileServiceItemsInner.java
new file mode 100644
index 0000000000000..2c0869e72fe5e
--- /dev/null
+++ b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/FileServiceItemsInner.java
@@ -0,0 +1,87 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.storage.generated.fluent.models;
+
+import com.azure.core.annotation.Immutable;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonSerializable;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
+import java.util.List;
+
+/**
+ * The FileServiceItems model.
+ */
+@Immutable
+public final class FileServiceItemsInner implements JsonSerializable {
+ /*
+ * List of file services returned.
+ */
+ private List value;
+
+ /**
+ * Creates an instance of FileServiceItemsInner class.
+ */
+ public FileServiceItemsInner() {
+ }
+
+ /**
+ * Get the value property: List of file services returned.
+ *
+ * @return the value value.
+ */
+ public List value() {
+ return this.value;
+ }
+
+ /**
+ * Validates the instance.
+ *
+ * @throws IllegalArgumentException thrown if the instance is not valid.
+ */
+ public void validate() {
+ if (value() != null) {
+ value().forEach(e -> e.validate());
+ }
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+ jsonWriter.writeStartObject();
+ return jsonWriter.writeEndObject();
+ }
+
+ /**
+ * Reads an instance of FileServiceItemsInner from the JsonReader.
+ *
+ * @param jsonReader The JsonReader being read.
+ * @return An instance of FileServiceItemsInner if the JsonReader was pointing to an instance of it, or null if it
+ * was pointing to JSON null.
+ * @throws IOException If an error occurs while reading the FileServiceItemsInner.
+ */
+ public static FileServiceItemsInner fromJson(JsonReader jsonReader) throws IOException {
+ return jsonReader.readObject(reader -> {
+ FileServiceItemsInner deserializedFileServiceItemsInner = new FileServiceItemsInner();
+ while (reader.nextToken() != JsonToken.END_OBJECT) {
+ String fieldName = reader.getFieldName();
+ reader.nextToken();
+
+ if ("value".equals(fieldName)) {
+ List value
+ = reader.readArray(reader1 -> FileServicePropertiesInner.fromJson(reader1));
+ deserializedFileServiceItemsInner.value = value;
+ } else {
+ reader.skipChildren();
+ }
+ }
+
+ return deserializedFileServiceItemsInner;
+ });
+ }
+}
diff --git a/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/FileServicePropertiesInner.java b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/FileServicePropertiesInner.java
new file mode 100644
index 0000000000000..6ca66f2eb444e
--- /dev/null
+++ b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/FileServicePropertiesInner.java
@@ -0,0 +1,236 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.storage.generated.fluent.models;
+
+import com.azure.core.annotation.Fluent;
+import com.azure.core.management.ProxyResource;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import com.azure.resourcemanager.storage.generated.models.CorsRules;
+import com.azure.resourcemanager.storage.generated.models.DeleteRetentionPolicy;
+import com.azure.resourcemanager.storage.generated.models.ProtocolSettings;
+import com.azure.resourcemanager.storage.generated.models.Sku;
+import java.io.IOException;
+
+/**
+ * The properties of File services in storage account.
+ */
+@Fluent
+public final class FileServicePropertiesInner extends ProxyResource {
+ /*
+ * The properties of File services in storage account.
+ */
+ private FileServicePropertiesProperties innerFileServiceProperties;
+
+ /*
+ * Sku name and tier.
+ */
+ private Sku sku;
+
+ /*
+ * The type of the resource.
+ */
+ private String type;
+
+ /*
+ * The name of the resource.
+ */
+ private String name;
+
+ /*
+ * Fully qualified resource Id for the resource.
+ */
+ private String id;
+
+ /**
+ * Creates an instance of FileServicePropertiesInner class.
+ */
+ public FileServicePropertiesInner() {
+ }
+
+ /**
+ * Get the innerFileServiceProperties property: The properties of File services in storage account.
+ *
+ * @return the innerFileServiceProperties value.
+ */
+ private FileServicePropertiesProperties innerFileServiceProperties() {
+ return this.innerFileServiceProperties;
+ }
+
+ /**
+ * Get the sku property: Sku name and tier.
+ *
+ * @return the sku value.
+ */
+ public Sku sku() {
+ return this.sku;
+ }
+
+ /**
+ * Get the type property: The type of the resource.
+ *
+ * @return the type value.
+ */
+ @Override
+ public String type() {
+ return this.type;
+ }
+
+ /**
+ * Get the name property: The name of the resource.
+ *
+ * @return the name value.
+ */
+ @Override
+ public String name() {
+ return this.name;
+ }
+
+ /**
+ * Get the id property: Fully qualified resource Id for the resource.
+ *
+ * @return the id value.
+ */
+ @Override
+ public String id() {
+ return this.id;
+ }
+
+ /**
+ * Get the cors property: Specifies CORS rules for the File service. You can include up to five CorsRule elements in
+ * the request. If no CorsRule elements are included in the request body, all CORS rules will be deleted, and CORS
+ * will be disabled for the File service.
+ *
+ * @return the cors value.
+ */
+ public CorsRules cors() {
+ return this.innerFileServiceProperties() == null ? null : this.innerFileServiceProperties().cors();
+ }
+
+ /**
+ * Set the cors property: Specifies CORS rules for the File service. You can include up to five CorsRule elements in
+ * the request. If no CorsRule elements are included in the request body, all CORS rules will be deleted, and CORS
+ * will be disabled for the File service.
+ *
+ * @param cors the cors value to set.
+ * @return the FileServicePropertiesInner object itself.
+ */
+ public FileServicePropertiesInner withCors(CorsRules cors) {
+ if (this.innerFileServiceProperties() == null) {
+ this.innerFileServiceProperties = new FileServicePropertiesProperties();
+ }
+ this.innerFileServiceProperties().withCors(cors);
+ return this;
+ }
+
+ /**
+ * Get the shareDeleteRetentionPolicy property: The file service properties for share soft delete.
+ *
+ * @return the shareDeleteRetentionPolicy value.
+ */
+ public DeleteRetentionPolicy shareDeleteRetentionPolicy() {
+ return this.innerFileServiceProperties() == null
+ ? null
+ : this.innerFileServiceProperties().shareDeleteRetentionPolicy();
+ }
+
+ /**
+ * Set the shareDeleteRetentionPolicy property: The file service properties for share soft delete.
+ *
+ * @param shareDeleteRetentionPolicy the shareDeleteRetentionPolicy value to set.
+ * @return the FileServicePropertiesInner object itself.
+ */
+ public FileServicePropertiesInner withShareDeleteRetentionPolicy(DeleteRetentionPolicy shareDeleteRetentionPolicy) {
+ if (this.innerFileServiceProperties() == null) {
+ this.innerFileServiceProperties = new FileServicePropertiesProperties();
+ }
+ this.innerFileServiceProperties().withShareDeleteRetentionPolicy(shareDeleteRetentionPolicy);
+ return this;
+ }
+
+ /**
+ * Get the protocolSettings property: Protocol settings for file service.
+ *
+ * @return the protocolSettings value.
+ */
+ public ProtocolSettings protocolSettings() {
+ return this.innerFileServiceProperties() == null ? null : this.innerFileServiceProperties().protocolSettings();
+ }
+
+ /**
+ * Set the protocolSettings property: Protocol settings for file service.
+ *
+ * @param protocolSettings the protocolSettings value to set.
+ * @return the FileServicePropertiesInner object itself.
+ */
+ public FileServicePropertiesInner withProtocolSettings(ProtocolSettings protocolSettings) {
+ if (this.innerFileServiceProperties() == null) {
+ this.innerFileServiceProperties = new FileServicePropertiesProperties();
+ }
+ this.innerFileServiceProperties().withProtocolSettings(protocolSettings);
+ return this;
+ }
+
+ /**
+ * Validates the instance.
+ *
+ * @throws IllegalArgumentException thrown if the instance is not valid.
+ */
+ public void validate() {
+ if (innerFileServiceProperties() != null) {
+ innerFileServiceProperties().validate();
+ }
+ if (sku() != null) {
+ sku().validate();
+ }
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+ jsonWriter.writeStartObject();
+ jsonWriter.writeJsonField("properties", this.innerFileServiceProperties);
+ return jsonWriter.writeEndObject();
+ }
+
+ /**
+ * Reads an instance of FileServicePropertiesInner from the JsonReader.
+ *
+ * @param jsonReader The JsonReader being read.
+ * @return An instance of FileServicePropertiesInner if the JsonReader was pointing to an instance of it, or null if
+ * it was pointing to JSON null.
+ * @throws IllegalStateException If the deserialized JSON object was missing any required properties.
+ * @throws IOException If an error occurs while reading the FileServicePropertiesInner.
+ */
+ public static FileServicePropertiesInner fromJson(JsonReader jsonReader) throws IOException {
+ return jsonReader.readObject(reader -> {
+ FileServicePropertiesInner deserializedFileServicePropertiesInner = new FileServicePropertiesInner();
+ while (reader.nextToken() != JsonToken.END_OBJECT) {
+ String fieldName = reader.getFieldName();
+ reader.nextToken();
+
+ if ("id".equals(fieldName)) {
+ deserializedFileServicePropertiesInner.id = reader.getString();
+ } else if ("name".equals(fieldName)) {
+ deserializedFileServicePropertiesInner.name = reader.getString();
+ } else if ("type".equals(fieldName)) {
+ deserializedFileServicePropertiesInner.type = reader.getString();
+ } else if ("properties".equals(fieldName)) {
+ deserializedFileServicePropertiesInner.innerFileServiceProperties
+ = FileServicePropertiesProperties.fromJson(reader);
+ } else if ("sku".equals(fieldName)) {
+ deserializedFileServicePropertiesInner.sku = Sku.fromJson(reader);
+ } else {
+ reader.skipChildren();
+ }
+ }
+
+ return deserializedFileServicePropertiesInner;
+ });
+ }
+}
diff --git a/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/FileServicePropertiesProperties.java b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/FileServicePropertiesProperties.java
new file mode 100644
index 0000000000000..c6782242df601
--- /dev/null
+++ b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/FileServicePropertiesProperties.java
@@ -0,0 +1,170 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.storage.generated.fluent.models;
+
+import com.azure.core.annotation.Fluent;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonSerializable;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import com.azure.resourcemanager.storage.generated.models.CorsRules;
+import com.azure.resourcemanager.storage.generated.models.DeleteRetentionPolicy;
+import com.azure.resourcemanager.storage.generated.models.ProtocolSettings;
+import java.io.IOException;
+
+/**
+ * The properties of File services in storage account.
+ */
+@Fluent
+public final class FileServicePropertiesProperties implements JsonSerializable {
+ /*
+ * Specifies CORS rules for the File service. You can include up to five CorsRule elements in the request. If no
+ * CorsRule elements are included in the request body, all CORS rules will be deleted, and CORS will be disabled for
+ * the File service.
+ */
+ private CorsRules cors;
+
+ /*
+ * The file service properties for share soft delete.
+ */
+ private DeleteRetentionPolicy shareDeleteRetentionPolicy;
+
+ /*
+ * Protocol settings for file service
+ */
+ private ProtocolSettings protocolSettings;
+
+ /**
+ * Creates an instance of FileServicePropertiesProperties class.
+ */
+ public FileServicePropertiesProperties() {
+ }
+
+ /**
+ * Get the cors property: Specifies CORS rules for the File service. You can include up to five CorsRule elements in
+ * the request. If no CorsRule elements are included in the request body, all CORS rules will be deleted, and CORS
+ * will be disabled for the File service.
+ *
+ * @return the cors value.
+ */
+ public CorsRules cors() {
+ return this.cors;
+ }
+
+ /**
+ * Set the cors property: Specifies CORS rules for the File service. You can include up to five CorsRule elements in
+ * the request. If no CorsRule elements are included in the request body, all CORS rules will be deleted, and CORS
+ * will be disabled for the File service.
+ *
+ * @param cors the cors value to set.
+ * @return the FileServicePropertiesProperties object itself.
+ */
+ public FileServicePropertiesProperties withCors(CorsRules cors) {
+ this.cors = cors;
+ return this;
+ }
+
+ /**
+ * Get the shareDeleteRetentionPolicy property: The file service properties for share soft delete.
+ *
+ * @return the shareDeleteRetentionPolicy value.
+ */
+ public DeleteRetentionPolicy shareDeleteRetentionPolicy() {
+ return this.shareDeleteRetentionPolicy;
+ }
+
+ /**
+ * Set the shareDeleteRetentionPolicy property: The file service properties for share soft delete.
+ *
+ * @param shareDeleteRetentionPolicy the shareDeleteRetentionPolicy value to set.
+ * @return the FileServicePropertiesProperties object itself.
+ */
+ public FileServicePropertiesProperties
+ withShareDeleteRetentionPolicy(DeleteRetentionPolicy shareDeleteRetentionPolicy) {
+ this.shareDeleteRetentionPolicy = shareDeleteRetentionPolicy;
+ return this;
+ }
+
+ /**
+ * Get the protocolSettings property: Protocol settings for file service.
+ *
+ * @return the protocolSettings value.
+ */
+ public ProtocolSettings protocolSettings() {
+ return this.protocolSettings;
+ }
+
+ /**
+ * Set the protocolSettings property: Protocol settings for file service.
+ *
+ * @param protocolSettings the protocolSettings value to set.
+ * @return the FileServicePropertiesProperties object itself.
+ */
+ public FileServicePropertiesProperties withProtocolSettings(ProtocolSettings protocolSettings) {
+ this.protocolSettings = protocolSettings;
+ return this;
+ }
+
+ /**
+ * Validates the instance.
+ *
+ * @throws IllegalArgumentException thrown if the instance is not valid.
+ */
+ public void validate() {
+ if (cors() != null) {
+ cors().validate();
+ }
+ if (shareDeleteRetentionPolicy() != null) {
+ shareDeleteRetentionPolicy().validate();
+ }
+ if (protocolSettings() != null) {
+ protocolSettings().validate();
+ }
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+ jsonWriter.writeStartObject();
+ jsonWriter.writeJsonField("cors", this.cors);
+ jsonWriter.writeJsonField("shareDeleteRetentionPolicy", this.shareDeleteRetentionPolicy);
+ jsonWriter.writeJsonField("protocolSettings", this.protocolSettings);
+ return jsonWriter.writeEndObject();
+ }
+
+ /**
+ * Reads an instance of FileServicePropertiesProperties from the JsonReader.
+ *
+ * @param jsonReader The JsonReader being read.
+ * @return An instance of FileServicePropertiesProperties if the JsonReader was pointing to an instance of it, or
+ * null if it was pointing to JSON null.
+ * @throws IOException If an error occurs while reading the FileServicePropertiesProperties.
+ */
+ public static FileServicePropertiesProperties fromJson(JsonReader jsonReader) throws IOException {
+ return jsonReader.readObject(reader -> {
+ FileServicePropertiesProperties deserializedFileServicePropertiesProperties
+ = new FileServicePropertiesProperties();
+ while (reader.nextToken() != JsonToken.END_OBJECT) {
+ String fieldName = reader.getFieldName();
+ reader.nextToken();
+
+ if ("cors".equals(fieldName)) {
+ deserializedFileServicePropertiesProperties.cors = CorsRules.fromJson(reader);
+ } else if ("shareDeleteRetentionPolicy".equals(fieldName)) {
+ deserializedFileServicePropertiesProperties.shareDeleteRetentionPolicy
+ = DeleteRetentionPolicy.fromJson(reader);
+ } else if ("protocolSettings".equals(fieldName)) {
+ deserializedFileServicePropertiesProperties.protocolSettings = ProtocolSettings.fromJson(reader);
+ } else {
+ reader.skipChildren();
+ }
+ }
+
+ return deserializedFileServicePropertiesProperties;
+ });
+ }
+}
diff --git a/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/FileServiceUsageInner.java b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/FileServiceUsageInner.java
new file mode 100644
index 0000000000000..79fc403becd0d
--- /dev/null
+++ b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/FileServiceUsageInner.java
@@ -0,0 +1,139 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.storage.generated.fluent.models;
+
+import com.azure.core.annotation.Immutable;
+import com.azure.core.management.ProxyResource;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import com.azure.resourcemanager.storage.generated.models.FileServiceUsageProperties;
+import java.io.IOException;
+
+/**
+ * The usage of file service in storage account.
+ */
+@Immutable
+public final class FileServiceUsageInner extends ProxyResource {
+ /*
+ * File service usage in storage account including account limits, file share limits and constants used in
+ * recommendations and bursting formula.
+ */
+ private FileServiceUsageProperties properties;
+
+ /*
+ * The type of the resource.
+ */
+ private String type;
+
+ /*
+ * The name of the resource.
+ */
+ private String name;
+
+ /*
+ * Fully qualified resource Id for the resource.
+ */
+ private String id;
+
+ /**
+ * Creates an instance of FileServiceUsageInner class.
+ */
+ public FileServiceUsageInner() {
+ }
+
+ /**
+ * Get the properties property: File service usage in storage account including account limits, file share limits
+ * and constants used in recommendations and bursting formula.
+ *
+ * @return the properties value.
+ */
+ public FileServiceUsageProperties properties() {
+ return this.properties;
+ }
+
+ /**
+ * Get the type property: The type of the resource.
+ *
+ * @return the type value.
+ */
+ @Override
+ public String type() {
+ return this.type;
+ }
+
+ /**
+ * Get the name property: The name of the resource.
+ *
+ * @return the name value.
+ */
+ @Override
+ public String name() {
+ return this.name;
+ }
+
+ /**
+ * Get the id property: Fully qualified resource Id for the resource.
+ *
+ * @return the id value.
+ */
+ @Override
+ public String id() {
+ return this.id;
+ }
+
+ /**
+ * Validates the instance.
+ *
+ * @throws IllegalArgumentException thrown if the instance is not valid.
+ */
+ public void validate() {
+ if (properties() != null) {
+ properties().validate();
+ }
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+ jsonWriter.writeStartObject();
+ return jsonWriter.writeEndObject();
+ }
+
+ /**
+ * Reads an instance of FileServiceUsageInner from the JsonReader.
+ *
+ * @param jsonReader The JsonReader being read.
+ * @return An instance of FileServiceUsageInner if the JsonReader was pointing to an instance of it, or null if it
+ * was pointing to JSON null.
+ * @throws IllegalStateException If the deserialized JSON object was missing any required properties.
+ * @throws IOException If an error occurs while reading the FileServiceUsageInner.
+ */
+ public static FileServiceUsageInner fromJson(JsonReader jsonReader) throws IOException {
+ return jsonReader.readObject(reader -> {
+ FileServiceUsageInner deserializedFileServiceUsageInner = new FileServiceUsageInner();
+ while (reader.nextToken() != JsonToken.END_OBJECT) {
+ String fieldName = reader.getFieldName();
+ reader.nextToken();
+
+ if ("id".equals(fieldName)) {
+ deserializedFileServiceUsageInner.id = reader.getString();
+ } else if ("name".equals(fieldName)) {
+ deserializedFileServiceUsageInner.name = reader.getString();
+ } else if ("type".equals(fieldName)) {
+ deserializedFileServiceUsageInner.type = reader.getString();
+ } else if ("properties".equals(fieldName)) {
+ deserializedFileServiceUsageInner.properties = FileServiceUsageProperties.fromJson(reader);
+ } else {
+ reader.skipChildren();
+ }
+ }
+
+ return deserializedFileServiceUsageInner;
+ });
+ }
+}
diff --git a/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/FileShareInner.java b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/FileShareInner.java
new file mode 100644
index 0000000000000..40845b2259fcf
--- /dev/null
+++ b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/FileShareInner.java
@@ -0,0 +1,566 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.storage.generated.fluent.models;
+
+import com.azure.core.annotation.Fluent;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import com.azure.resourcemanager.storage.generated.models.AzureEntityResource;
+import com.azure.resourcemanager.storage.generated.models.EnabledProtocols;
+import com.azure.resourcemanager.storage.generated.models.FileSharePropertiesFileSharePaidBursting;
+import com.azure.resourcemanager.storage.generated.models.LeaseDuration;
+import com.azure.resourcemanager.storage.generated.models.LeaseState;
+import com.azure.resourcemanager.storage.generated.models.LeaseStatus;
+import com.azure.resourcemanager.storage.generated.models.RootSquashType;
+import com.azure.resourcemanager.storage.generated.models.ShareAccessTier;
+import com.azure.resourcemanager.storage.generated.models.SignedIdentifier;
+import java.io.IOException;
+import java.time.OffsetDateTime;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * Properties of the file share, including Id, resource name, resource type, Etag.
+ */
+@Fluent
+public final class FileShareInner extends AzureEntityResource {
+ /*
+ * Properties of the file share.
+ */
+ private FileShareProperties innerFileShareProperties;
+
+ /*
+ * Resource Etag.
+ */
+ private String etag;
+
+ /*
+ * The type of the resource.
+ */
+ private String type;
+
+ /*
+ * The name of the resource.
+ */
+ private String name;
+
+ /*
+ * Fully qualified resource Id for the resource.
+ */
+ private String id;
+
+ /**
+ * Creates an instance of FileShareInner class.
+ */
+ public FileShareInner() {
+ }
+
+ /**
+ * Get the innerFileShareProperties property: Properties of the file share.
+ *
+ * @return the innerFileShareProperties value.
+ */
+ private FileShareProperties innerFileShareProperties() {
+ return this.innerFileShareProperties;
+ }
+
+ /**
+ * Get the etag property: Resource Etag.
+ *
+ * @return the etag value.
+ */
+ @Override
+ public String etag() {
+ return this.etag;
+ }
+
+ /**
+ * Get the type property: The type of the resource.
+ *
+ * @return the type value.
+ */
+ @Override
+ public String type() {
+ return this.type;
+ }
+
+ /**
+ * Get the name property: The name of the resource.
+ *
+ * @return the name value.
+ */
+ @Override
+ public String name() {
+ return this.name;
+ }
+
+ /**
+ * Get the id property: Fully qualified resource Id for the resource.
+ *
+ * @return the id value.
+ */
+ @Override
+ public String id() {
+ return this.id;
+ }
+
+ /**
+ * Get the lastModifiedTime property: Returns the date and time the share was last modified.
+ *
+ * @return the lastModifiedTime value.
+ */
+ public OffsetDateTime lastModifiedTime() {
+ return this.innerFileShareProperties() == null ? null : this.innerFileShareProperties().lastModifiedTime();
+ }
+
+ /**
+ * Get the metadata property: A name-value pair to associate with the share as metadata.
+ *
+ * @return the metadata value.
+ */
+ public Map metadata() {
+ return this.innerFileShareProperties() == null ? null : this.innerFileShareProperties().metadata();
+ }
+
+ /**
+ * Set the metadata property: A name-value pair to associate with the share as metadata.
+ *
+ * @param metadata the metadata value to set.
+ * @return the FileShareInner object itself.
+ */
+ public FileShareInner withMetadata(Map metadata) {
+ if (this.innerFileShareProperties() == null) {
+ this.innerFileShareProperties = new FileShareProperties();
+ }
+ this.innerFileShareProperties().withMetadata(metadata);
+ return this;
+ }
+
+ /**
+ * Get the shareQuota property: The provisioned size of the share, in gibibytes. Must be greater than 0, and less
+ * than or equal to 5TB (5120). For Large File Shares, the maximum size is 102400. For file shares created under
+ * Files Provisioned v2 account type, please refer to the GetFileServiceUsage API response for the minimum and
+ * maximum allowed provisioned storage size.
+ *
+ * @return the shareQuota value.
+ */
+ public Integer shareQuota() {
+ return this.innerFileShareProperties() == null ? null : this.innerFileShareProperties().shareQuota();
+ }
+
+ /**
+ * Set the shareQuota property: The provisioned size of the share, in gibibytes. Must be greater than 0, and less
+ * than or equal to 5TB (5120). For Large File Shares, the maximum size is 102400. For file shares created under
+ * Files Provisioned v2 account type, please refer to the GetFileServiceUsage API response for the minimum and
+ * maximum allowed provisioned storage size.
+ *
+ * @param shareQuota the shareQuota value to set.
+ * @return the FileShareInner object itself.
+ */
+ public FileShareInner withShareQuota(Integer shareQuota) {
+ if (this.innerFileShareProperties() == null) {
+ this.innerFileShareProperties = new FileShareProperties();
+ }
+ this.innerFileShareProperties().withShareQuota(shareQuota);
+ return this;
+ }
+
+ /**
+ * Get the provisionedIops property: The provisioned IOPS of the share. This property is only for file shares
+ * created under Files Provisioned v2 account type. Please refer to the GetFileServiceUsage API response for the
+ * minimum and maximum allowed value for provisioned IOPS.
+ *
+ * @return the provisionedIops value.
+ */
+ public Integer provisionedIops() {
+ return this.innerFileShareProperties() == null ? null : this.innerFileShareProperties().provisionedIops();
+ }
+
+ /**
+ * Set the provisionedIops property: The provisioned IOPS of the share. This property is only for file shares
+ * created under Files Provisioned v2 account type. Please refer to the GetFileServiceUsage API response for the
+ * minimum and maximum allowed value for provisioned IOPS.
+ *
+ * @param provisionedIops the provisionedIops value to set.
+ * @return the FileShareInner object itself.
+ */
+ public FileShareInner withProvisionedIops(Integer provisionedIops) {
+ if (this.innerFileShareProperties() == null) {
+ this.innerFileShareProperties = new FileShareProperties();
+ }
+ this.innerFileShareProperties().withProvisionedIops(provisionedIops);
+ return this;
+ }
+
+ /**
+ * Get the provisionedBandwidthMibps property: The provisioned bandwidth of the share, in mebibytes per second. This
+ * property is only for file shares created under Files Provisioned v2 account type. Please refer to the
+ * GetFileServiceUsage API response for the minimum and maximum allowed value for provisioned bandwidth.
+ *
+ * @return the provisionedBandwidthMibps value.
+ */
+ public Integer provisionedBandwidthMibps() {
+ return this.innerFileShareProperties() == null
+ ? null
+ : this.innerFileShareProperties().provisionedBandwidthMibps();
+ }
+
+ /**
+ * Set the provisionedBandwidthMibps property: The provisioned bandwidth of the share, in mebibytes per second. This
+ * property is only for file shares created under Files Provisioned v2 account type. Please refer to the
+ * GetFileServiceUsage API response for the minimum and maximum allowed value for provisioned bandwidth.
+ *
+ * @param provisionedBandwidthMibps the provisionedBandwidthMibps value to set.
+ * @return the FileShareInner object itself.
+ */
+ public FileShareInner withProvisionedBandwidthMibps(Integer provisionedBandwidthMibps) {
+ if (this.innerFileShareProperties() == null) {
+ this.innerFileShareProperties = new FileShareProperties();
+ }
+ this.innerFileShareProperties().withProvisionedBandwidthMibps(provisionedBandwidthMibps);
+ return this;
+ }
+
+ /**
+ * Get the includedBurstIops property: The calculated burst IOPS of the share. This property is only for file shares
+ * created under Files Provisioned v2 account type.
+ *
+ * @return the includedBurstIops value.
+ */
+ public Integer includedBurstIops() {
+ return this.innerFileShareProperties() == null ? null : this.innerFileShareProperties().includedBurstIops();
+ }
+
+ /**
+ * Get the maxBurstCreditsForIops property: The calculated maximum burst credits for the share. This property is
+ * only for file shares created under Files Provisioned v2 account type.
+ *
+ * @return the maxBurstCreditsForIops value.
+ */
+ public Long maxBurstCreditsForIops() {
+ return this.innerFileShareProperties() == null
+ ? null
+ : this.innerFileShareProperties().maxBurstCreditsForIops();
+ }
+
+ /**
+ * Get the nextAllowedQuotaDowngradeTime property: Returns the next allowed provisioned storage size downgrade time
+ * for the share. This property is only for file shares created under Files Provisioned v1 SSD and Files Provisioned
+ * v2 account type.
+ *
+ * @return the nextAllowedQuotaDowngradeTime value.
+ */
+ public OffsetDateTime nextAllowedQuotaDowngradeTime() {
+ return this.innerFileShareProperties() == null
+ ? null
+ : this.innerFileShareProperties().nextAllowedQuotaDowngradeTime();
+ }
+
+ /**
+ * Get the nextAllowedProvisionedIopsDowngradeTime property: Returns the next allowed provisioned IOPS downgrade
+ * time for the share. This property is only for file shares created under Files Provisioned v2 account type.
+ *
+ * @return the nextAllowedProvisionedIopsDowngradeTime value.
+ */
+ public OffsetDateTime nextAllowedProvisionedIopsDowngradeTime() {
+ return this.innerFileShareProperties() == null
+ ? null
+ : this.innerFileShareProperties().nextAllowedProvisionedIopsDowngradeTime();
+ }
+
+ /**
+ * Get the nextAllowedProvisionedBandwidthDowngradeTime property: Returns the next allowed provisioned bandwidth
+ * downgrade time for the share. This property is only for file shares created under Files Provisioned v2 account
+ * type.
+ *
+ * @return the nextAllowedProvisionedBandwidthDowngradeTime value.
+ */
+ public OffsetDateTime nextAllowedProvisionedBandwidthDowngradeTime() {
+ return this.innerFileShareProperties() == null
+ ? null
+ : this.innerFileShareProperties().nextAllowedProvisionedBandwidthDowngradeTime();
+ }
+
+ /**
+ * Get the enabledProtocols property: The authentication protocol that is used for the file share. Can only be
+ * specified when creating a share.
+ *
+ * @return the enabledProtocols value.
+ */
+ public EnabledProtocols enabledProtocols() {
+ return this.innerFileShareProperties() == null ? null : this.innerFileShareProperties().enabledProtocols();
+ }
+
+ /**
+ * Set the enabledProtocols property: The authentication protocol that is used for the file share. Can only be
+ * specified when creating a share.
+ *
+ * @param enabledProtocols the enabledProtocols value to set.
+ * @return the FileShareInner object itself.
+ */
+ public FileShareInner withEnabledProtocols(EnabledProtocols enabledProtocols) {
+ if (this.innerFileShareProperties() == null) {
+ this.innerFileShareProperties = new FileShareProperties();
+ }
+ this.innerFileShareProperties().withEnabledProtocols(enabledProtocols);
+ return this;
+ }
+
+ /**
+ * Get the rootSquash property: The property is for NFS share only. The default is NoRootSquash.
+ *
+ * @return the rootSquash value.
+ */
+ public RootSquashType rootSquash() {
+ return this.innerFileShareProperties() == null ? null : this.innerFileShareProperties().rootSquash();
+ }
+
+ /**
+ * Set the rootSquash property: The property is for NFS share only. The default is NoRootSquash.
+ *
+ * @param rootSquash the rootSquash value to set.
+ * @return the FileShareInner object itself.
+ */
+ public FileShareInner withRootSquash(RootSquashType rootSquash) {
+ if (this.innerFileShareProperties() == null) {
+ this.innerFileShareProperties = new FileShareProperties();
+ }
+ this.innerFileShareProperties().withRootSquash(rootSquash);
+ return this;
+ }
+
+ /**
+ * Get the version property: The version of the share.
+ *
+ * @return the version value.
+ */
+ public String version() {
+ return this.innerFileShareProperties() == null ? null : this.innerFileShareProperties().version();
+ }
+
+ /**
+ * Get the deleted property: Indicates whether the share was deleted.
+ *
+ * @return the deleted value.
+ */
+ public Boolean deleted() {
+ return this.innerFileShareProperties() == null ? null : this.innerFileShareProperties().deleted();
+ }
+
+ /**
+ * Get the deletedTime property: The deleted time if the share was deleted.
+ *
+ * @return the deletedTime value.
+ */
+ public OffsetDateTime deletedTime() {
+ return this.innerFileShareProperties() == null ? null : this.innerFileShareProperties().deletedTime();
+ }
+
+ /**
+ * Get the remainingRetentionDays property: Remaining retention days for share that was soft deleted.
+ *
+ * @return the remainingRetentionDays value.
+ */
+ public Integer remainingRetentionDays() {
+ return this.innerFileShareProperties() == null
+ ? null
+ : this.innerFileShareProperties().remainingRetentionDays();
+ }
+
+ /**
+ * Get the accessTier property: Access tier for specific share. GpV2 account can choose between TransactionOptimized
+ * (default), Hot, and Cool. FileStorage account can choose Premium.
+ *
+ * @return the accessTier value.
+ */
+ public ShareAccessTier accessTier() {
+ return this.innerFileShareProperties() == null ? null : this.innerFileShareProperties().accessTier();
+ }
+
+ /**
+ * Set the accessTier property: Access tier for specific share. GpV2 account can choose between TransactionOptimized
+ * (default), Hot, and Cool. FileStorage account can choose Premium.
+ *
+ * @param accessTier the accessTier value to set.
+ * @return the FileShareInner object itself.
+ */
+ public FileShareInner withAccessTier(ShareAccessTier accessTier) {
+ if (this.innerFileShareProperties() == null) {
+ this.innerFileShareProperties = new FileShareProperties();
+ }
+ this.innerFileShareProperties().withAccessTier(accessTier);
+ return this;
+ }
+
+ /**
+ * Get the accessTierChangeTime property: Indicates the last modification time for share access tier.
+ *
+ * @return the accessTierChangeTime value.
+ */
+ public OffsetDateTime accessTierChangeTime() {
+ return this.innerFileShareProperties() == null ? null : this.innerFileShareProperties().accessTierChangeTime();
+ }
+
+ /**
+ * Get the accessTierStatus property: Indicates if there is a pending transition for access tier.
+ *
+ * @return the accessTierStatus value.
+ */
+ public String accessTierStatus() {
+ return this.innerFileShareProperties() == null ? null : this.innerFileShareProperties().accessTierStatus();
+ }
+
+ /**
+ * Get the shareUsageBytes property: The approximate size of the data stored on the share. Note that this value may
+ * not include all recently created or recently resized files.
+ *
+ * @return the shareUsageBytes value.
+ */
+ public Long shareUsageBytes() {
+ return this.innerFileShareProperties() == null ? null : this.innerFileShareProperties().shareUsageBytes();
+ }
+
+ /**
+ * Get the leaseStatus property: The lease status of the share.
+ *
+ * @return the leaseStatus value.
+ */
+ public LeaseStatus leaseStatus() {
+ return this.innerFileShareProperties() == null ? null : this.innerFileShareProperties().leaseStatus();
+ }
+
+ /**
+ * Get the leaseState property: Lease state of the share.
+ *
+ * @return the leaseState value.
+ */
+ public LeaseState leaseState() {
+ return this.innerFileShareProperties() == null ? null : this.innerFileShareProperties().leaseState();
+ }
+
+ /**
+ * Get the leaseDuration property: Specifies whether the lease on a share is of infinite or fixed duration, only
+ * when the share is leased.
+ *
+ * @return the leaseDuration value.
+ */
+ public LeaseDuration leaseDuration() {
+ return this.innerFileShareProperties() == null ? null : this.innerFileShareProperties().leaseDuration();
+ }
+
+ /**
+ * Get the signedIdentifiers property: List of stored access policies specified on the share.
+ *
+ * @return the signedIdentifiers value.
+ */
+ public List signedIdentifiers() {
+ return this.innerFileShareProperties() == null ? null : this.innerFileShareProperties().signedIdentifiers();
+ }
+
+ /**
+ * Set the signedIdentifiers property: List of stored access policies specified on the share.
+ *
+ * @param signedIdentifiers the signedIdentifiers value to set.
+ * @return the FileShareInner object itself.
+ */
+ public FileShareInner withSignedIdentifiers(List signedIdentifiers) {
+ if (this.innerFileShareProperties() == null) {
+ this.innerFileShareProperties = new FileShareProperties();
+ }
+ this.innerFileShareProperties().withSignedIdentifiers(signedIdentifiers);
+ return this;
+ }
+
+ /**
+ * Get the snapshotTime property: Creation time of share snapshot returned in the response of list shares with
+ * expand param "snapshots".
+ *
+ * @return the snapshotTime value.
+ */
+ public OffsetDateTime snapshotTime() {
+ return this.innerFileShareProperties() == null ? null : this.innerFileShareProperties().snapshotTime();
+ }
+
+ /**
+ * Get the fileSharePaidBursting property: File Share Paid Bursting properties.
+ *
+ * @return the fileSharePaidBursting value.
+ */
+ public FileSharePropertiesFileSharePaidBursting fileSharePaidBursting() {
+ return this.innerFileShareProperties() == null ? null : this.innerFileShareProperties().fileSharePaidBursting();
+ }
+
+ /**
+ * Set the fileSharePaidBursting property: File Share Paid Bursting properties.
+ *
+ * @param fileSharePaidBursting the fileSharePaidBursting value to set.
+ * @return the FileShareInner object itself.
+ */
+ public FileShareInner withFileSharePaidBursting(FileSharePropertiesFileSharePaidBursting fileSharePaidBursting) {
+ if (this.innerFileShareProperties() == null) {
+ this.innerFileShareProperties = new FileShareProperties();
+ }
+ this.innerFileShareProperties().withFileSharePaidBursting(fileSharePaidBursting);
+ return this;
+ }
+
+ /**
+ * Validates the instance.
+ *
+ * @throws IllegalArgumentException thrown if the instance is not valid.
+ */
+ @Override
+ public void validate() {
+ if (innerFileShareProperties() != null) {
+ innerFileShareProperties().validate();
+ }
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+ jsonWriter.writeStartObject();
+ jsonWriter.writeJsonField("properties", this.innerFileShareProperties);
+ return jsonWriter.writeEndObject();
+ }
+
+ /**
+ * Reads an instance of FileShareInner from the JsonReader.
+ *
+ * @param jsonReader The JsonReader being read.
+ * @return An instance of FileShareInner if the JsonReader was pointing to an instance of it, or null if it was
+ * pointing to JSON null.
+ * @throws IllegalStateException If the deserialized JSON object was missing any required properties.
+ * @throws IOException If an error occurs while reading the FileShareInner.
+ */
+ public static FileShareInner fromJson(JsonReader jsonReader) throws IOException {
+ return jsonReader.readObject(reader -> {
+ FileShareInner deserializedFileShareInner = new FileShareInner();
+ while (reader.nextToken() != JsonToken.END_OBJECT) {
+ String fieldName = reader.getFieldName();
+ reader.nextToken();
+
+ if ("id".equals(fieldName)) {
+ deserializedFileShareInner.id = reader.getString();
+ } else if ("name".equals(fieldName)) {
+ deserializedFileShareInner.name = reader.getString();
+ } else if ("type".equals(fieldName)) {
+ deserializedFileShareInner.type = reader.getString();
+ } else if ("etag".equals(fieldName)) {
+ deserializedFileShareInner.etag = reader.getString();
+ } else if ("properties".equals(fieldName)) {
+ deserializedFileShareInner.innerFileShareProperties = FileShareProperties.fromJson(reader);
+ } else {
+ reader.skipChildren();
+ }
+ }
+
+ return deserializedFileShareInner;
+ });
+ }
+}
diff --git a/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/FileShareItemInner.java b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/FileShareItemInner.java
new file mode 100644
index 0000000000000..343d3ccbf1859
--- /dev/null
+++ b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/FileShareItemInner.java
@@ -0,0 +1,557 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.storage.generated.fluent.models;
+
+import com.azure.core.annotation.Fluent;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import com.azure.resourcemanager.storage.generated.models.AzureEntityResource;
+import com.azure.resourcemanager.storage.generated.models.EnabledProtocols;
+import com.azure.resourcemanager.storage.generated.models.FileSharePropertiesFileSharePaidBursting;
+import com.azure.resourcemanager.storage.generated.models.LeaseDuration;
+import com.azure.resourcemanager.storage.generated.models.LeaseState;
+import com.azure.resourcemanager.storage.generated.models.LeaseStatus;
+import com.azure.resourcemanager.storage.generated.models.RootSquashType;
+import com.azure.resourcemanager.storage.generated.models.ShareAccessTier;
+import com.azure.resourcemanager.storage.generated.models.SignedIdentifier;
+import java.io.IOException;
+import java.time.OffsetDateTime;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * The file share properties be listed out.
+ */
+@Fluent
+public final class FileShareItemInner extends AzureEntityResource {
+ /*
+ * The file share properties be listed out.
+ */
+ private FileShareProperties innerProperties;
+
+ /*
+ * Resource Etag.
+ */
+ private String etag;
+
+ /*
+ * The type of the resource.
+ */
+ private String type;
+
+ /*
+ * The name of the resource.
+ */
+ private String name;
+
+ /*
+ * Fully qualified resource Id for the resource.
+ */
+ private String id;
+
+ /**
+ * Creates an instance of FileShareItemInner class.
+ */
+ public FileShareItemInner() {
+ }
+
+ /**
+ * Get the innerProperties property: The file share properties be listed out.
+ *
+ * @return the innerProperties value.
+ */
+ private FileShareProperties innerProperties() {
+ return this.innerProperties;
+ }
+
+ /**
+ * Get the etag property: Resource Etag.
+ *
+ * @return the etag value.
+ */
+ @Override
+ public String etag() {
+ return this.etag;
+ }
+
+ /**
+ * Get the type property: The type of the resource.
+ *
+ * @return the type value.
+ */
+ @Override
+ public String type() {
+ return this.type;
+ }
+
+ /**
+ * Get the name property: The name of the resource.
+ *
+ * @return the name value.
+ */
+ @Override
+ public String name() {
+ return this.name;
+ }
+
+ /**
+ * Get the id property: Fully qualified resource Id for the resource.
+ *
+ * @return the id value.
+ */
+ @Override
+ public String id() {
+ return this.id;
+ }
+
+ /**
+ * Get the lastModifiedTime property: Returns the date and time the share was last modified.
+ *
+ * @return the lastModifiedTime value.
+ */
+ public OffsetDateTime lastModifiedTime() {
+ return this.innerProperties() == null ? null : this.innerProperties().lastModifiedTime();
+ }
+
+ /**
+ * Get the metadata property: A name-value pair to associate with the share as metadata.
+ *
+ * @return the metadata value.
+ */
+ public Map metadata() {
+ return this.innerProperties() == null ? null : this.innerProperties().metadata();
+ }
+
+ /**
+ * Set the metadata property: A name-value pair to associate with the share as metadata.
+ *
+ * @param metadata the metadata value to set.
+ * @return the FileShareItemInner object itself.
+ */
+ public FileShareItemInner withMetadata(Map metadata) {
+ if (this.innerProperties() == null) {
+ this.innerProperties = new FileShareProperties();
+ }
+ this.innerProperties().withMetadata(metadata);
+ return this;
+ }
+
+ /**
+ * Get the shareQuota property: The provisioned size of the share, in gibibytes. Must be greater than 0, and less
+ * than or equal to 5TB (5120). For Large File Shares, the maximum size is 102400. For file shares created under
+ * Files Provisioned v2 account type, please refer to the GetFileServiceUsage API response for the minimum and
+ * maximum allowed provisioned storage size.
+ *
+ * @return the shareQuota value.
+ */
+ public Integer shareQuota() {
+ return this.innerProperties() == null ? null : this.innerProperties().shareQuota();
+ }
+
+ /**
+ * Set the shareQuota property: The provisioned size of the share, in gibibytes. Must be greater than 0, and less
+ * than or equal to 5TB (5120). For Large File Shares, the maximum size is 102400. For file shares created under
+ * Files Provisioned v2 account type, please refer to the GetFileServiceUsage API response for the minimum and
+ * maximum allowed provisioned storage size.
+ *
+ * @param shareQuota the shareQuota value to set.
+ * @return the FileShareItemInner object itself.
+ */
+ public FileShareItemInner withShareQuota(Integer shareQuota) {
+ if (this.innerProperties() == null) {
+ this.innerProperties = new FileShareProperties();
+ }
+ this.innerProperties().withShareQuota(shareQuota);
+ return this;
+ }
+
+ /**
+ * Get the provisionedIops property: The provisioned IOPS of the share. This property is only for file shares
+ * created under Files Provisioned v2 account type. Please refer to the GetFileServiceUsage API response for the
+ * minimum and maximum allowed value for provisioned IOPS.
+ *
+ * @return the provisionedIops value.
+ */
+ public Integer provisionedIops() {
+ return this.innerProperties() == null ? null : this.innerProperties().provisionedIops();
+ }
+
+ /**
+ * Set the provisionedIops property: The provisioned IOPS of the share. This property is only for file shares
+ * created under Files Provisioned v2 account type. Please refer to the GetFileServiceUsage API response for the
+ * minimum and maximum allowed value for provisioned IOPS.
+ *
+ * @param provisionedIops the provisionedIops value to set.
+ * @return the FileShareItemInner object itself.
+ */
+ public FileShareItemInner withProvisionedIops(Integer provisionedIops) {
+ if (this.innerProperties() == null) {
+ this.innerProperties = new FileShareProperties();
+ }
+ this.innerProperties().withProvisionedIops(provisionedIops);
+ return this;
+ }
+
+ /**
+ * Get the provisionedBandwidthMibps property: The provisioned bandwidth of the share, in mebibytes per second. This
+ * property is only for file shares created under Files Provisioned v2 account type. Please refer to the
+ * GetFileServiceUsage API response for the minimum and maximum allowed value for provisioned bandwidth.
+ *
+ * @return the provisionedBandwidthMibps value.
+ */
+ public Integer provisionedBandwidthMibps() {
+ return this.innerProperties() == null ? null : this.innerProperties().provisionedBandwidthMibps();
+ }
+
+ /**
+ * Set the provisionedBandwidthMibps property: The provisioned bandwidth of the share, in mebibytes per second. This
+ * property is only for file shares created under Files Provisioned v2 account type. Please refer to the
+ * GetFileServiceUsage API response for the minimum and maximum allowed value for provisioned bandwidth.
+ *
+ * @param provisionedBandwidthMibps the provisionedBandwidthMibps value to set.
+ * @return the FileShareItemInner object itself.
+ */
+ public FileShareItemInner withProvisionedBandwidthMibps(Integer provisionedBandwidthMibps) {
+ if (this.innerProperties() == null) {
+ this.innerProperties = new FileShareProperties();
+ }
+ this.innerProperties().withProvisionedBandwidthMibps(provisionedBandwidthMibps);
+ return this;
+ }
+
+ /**
+ * Get the includedBurstIops property: The calculated burst IOPS of the share. This property is only for file shares
+ * created under Files Provisioned v2 account type.
+ *
+ * @return the includedBurstIops value.
+ */
+ public Integer includedBurstIops() {
+ return this.innerProperties() == null ? null : this.innerProperties().includedBurstIops();
+ }
+
+ /**
+ * Get the maxBurstCreditsForIops property: The calculated maximum burst credits for the share. This property is
+ * only for file shares created under Files Provisioned v2 account type.
+ *
+ * @return the maxBurstCreditsForIops value.
+ */
+ public Long maxBurstCreditsForIops() {
+ return this.innerProperties() == null ? null : this.innerProperties().maxBurstCreditsForIops();
+ }
+
+ /**
+ * Get the nextAllowedQuotaDowngradeTime property: Returns the next allowed provisioned storage size downgrade time
+ * for the share. This property is only for file shares created under Files Provisioned v1 SSD and Files Provisioned
+ * v2 account type.
+ *
+ * @return the nextAllowedQuotaDowngradeTime value.
+ */
+ public OffsetDateTime nextAllowedQuotaDowngradeTime() {
+ return this.innerProperties() == null ? null : this.innerProperties().nextAllowedQuotaDowngradeTime();
+ }
+
+ /**
+ * Get the nextAllowedProvisionedIopsDowngradeTime property: Returns the next allowed provisioned IOPS downgrade
+ * time for the share. This property is only for file shares created under Files Provisioned v2 account type.
+ *
+ * @return the nextAllowedProvisionedIopsDowngradeTime value.
+ */
+ public OffsetDateTime nextAllowedProvisionedIopsDowngradeTime() {
+ return this.innerProperties() == null ? null : this.innerProperties().nextAllowedProvisionedIopsDowngradeTime();
+ }
+
+ /**
+ * Get the nextAllowedProvisionedBandwidthDowngradeTime property: Returns the next allowed provisioned bandwidth
+ * downgrade time for the share. This property is only for file shares created under Files Provisioned v2 account
+ * type.
+ *
+ * @return the nextAllowedProvisionedBandwidthDowngradeTime value.
+ */
+ public OffsetDateTime nextAllowedProvisionedBandwidthDowngradeTime() {
+ return this.innerProperties() == null
+ ? null
+ : this.innerProperties().nextAllowedProvisionedBandwidthDowngradeTime();
+ }
+
+ /**
+ * Get the enabledProtocols property: The authentication protocol that is used for the file share. Can only be
+ * specified when creating a share.
+ *
+ * @return the enabledProtocols value.
+ */
+ public EnabledProtocols enabledProtocols() {
+ return this.innerProperties() == null ? null : this.innerProperties().enabledProtocols();
+ }
+
+ /**
+ * Set the enabledProtocols property: The authentication protocol that is used for the file share. Can only be
+ * specified when creating a share.
+ *
+ * @param enabledProtocols the enabledProtocols value to set.
+ * @return the FileShareItemInner object itself.
+ */
+ public FileShareItemInner withEnabledProtocols(EnabledProtocols enabledProtocols) {
+ if (this.innerProperties() == null) {
+ this.innerProperties = new FileShareProperties();
+ }
+ this.innerProperties().withEnabledProtocols(enabledProtocols);
+ return this;
+ }
+
+ /**
+ * Get the rootSquash property: The property is for NFS share only. The default is NoRootSquash.
+ *
+ * @return the rootSquash value.
+ */
+ public RootSquashType rootSquash() {
+ return this.innerProperties() == null ? null : this.innerProperties().rootSquash();
+ }
+
+ /**
+ * Set the rootSquash property: The property is for NFS share only. The default is NoRootSquash.
+ *
+ * @param rootSquash the rootSquash value to set.
+ * @return the FileShareItemInner object itself.
+ */
+ public FileShareItemInner withRootSquash(RootSquashType rootSquash) {
+ if (this.innerProperties() == null) {
+ this.innerProperties = new FileShareProperties();
+ }
+ this.innerProperties().withRootSquash(rootSquash);
+ return this;
+ }
+
+ /**
+ * Get the version property: The version of the share.
+ *
+ * @return the version value.
+ */
+ public String version() {
+ return this.innerProperties() == null ? null : this.innerProperties().version();
+ }
+
+ /**
+ * Get the deleted property: Indicates whether the share was deleted.
+ *
+ * @return the deleted value.
+ */
+ public Boolean deleted() {
+ return this.innerProperties() == null ? null : this.innerProperties().deleted();
+ }
+
+ /**
+ * Get the deletedTime property: The deleted time if the share was deleted.
+ *
+ * @return the deletedTime value.
+ */
+ public OffsetDateTime deletedTime() {
+ return this.innerProperties() == null ? null : this.innerProperties().deletedTime();
+ }
+
+ /**
+ * Get the remainingRetentionDays property: Remaining retention days for share that was soft deleted.
+ *
+ * @return the remainingRetentionDays value.
+ */
+ public Integer remainingRetentionDays() {
+ return this.innerProperties() == null ? null : this.innerProperties().remainingRetentionDays();
+ }
+
+ /**
+ * Get the accessTier property: Access tier for specific share. GpV2 account can choose between TransactionOptimized
+ * (default), Hot, and Cool. FileStorage account can choose Premium.
+ *
+ * @return the accessTier value.
+ */
+ public ShareAccessTier accessTier() {
+ return this.innerProperties() == null ? null : this.innerProperties().accessTier();
+ }
+
+ /**
+ * Set the accessTier property: Access tier for specific share. GpV2 account can choose between TransactionOptimized
+ * (default), Hot, and Cool. FileStorage account can choose Premium.
+ *
+ * @param accessTier the accessTier value to set.
+ * @return the FileShareItemInner object itself.
+ */
+ public FileShareItemInner withAccessTier(ShareAccessTier accessTier) {
+ if (this.innerProperties() == null) {
+ this.innerProperties = new FileShareProperties();
+ }
+ this.innerProperties().withAccessTier(accessTier);
+ return this;
+ }
+
+ /**
+ * Get the accessTierChangeTime property: Indicates the last modification time for share access tier.
+ *
+ * @return the accessTierChangeTime value.
+ */
+ public OffsetDateTime accessTierChangeTime() {
+ return this.innerProperties() == null ? null : this.innerProperties().accessTierChangeTime();
+ }
+
+ /**
+ * Get the accessTierStatus property: Indicates if there is a pending transition for access tier.
+ *
+ * @return the accessTierStatus value.
+ */
+ public String accessTierStatus() {
+ return this.innerProperties() == null ? null : this.innerProperties().accessTierStatus();
+ }
+
+ /**
+ * Get the shareUsageBytes property: The approximate size of the data stored on the share. Note that this value may
+ * not include all recently created or recently resized files.
+ *
+ * @return the shareUsageBytes value.
+ */
+ public Long shareUsageBytes() {
+ return this.innerProperties() == null ? null : this.innerProperties().shareUsageBytes();
+ }
+
+ /**
+ * Get the leaseStatus property: The lease status of the share.
+ *
+ * @return the leaseStatus value.
+ */
+ public LeaseStatus leaseStatus() {
+ return this.innerProperties() == null ? null : this.innerProperties().leaseStatus();
+ }
+
+ /**
+ * Get the leaseState property: Lease state of the share.
+ *
+ * @return the leaseState value.
+ */
+ public LeaseState leaseState() {
+ return this.innerProperties() == null ? null : this.innerProperties().leaseState();
+ }
+
+ /**
+ * Get the leaseDuration property: Specifies whether the lease on a share is of infinite or fixed duration, only
+ * when the share is leased.
+ *
+ * @return the leaseDuration value.
+ */
+ public LeaseDuration leaseDuration() {
+ return this.innerProperties() == null ? null : this.innerProperties().leaseDuration();
+ }
+
+ /**
+ * Get the signedIdentifiers property: List of stored access policies specified on the share.
+ *
+ * @return the signedIdentifiers value.
+ */
+ public List signedIdentifiers() {
+ return this.innerProperties() == null ? null : this.innerProperties().signedIdentifiers();
+ }
+
+ /**
+ * Set the signedIdentifiers property: List of stored access policies specified on the share.
+ *
+ * @param signedIdentifiers the signedIdentifiers value to set.
+ * @return the FileShareItemInner object itself.
+ */
+ public FileShareItemInner withSignedIdentifiers(List signedIdentifiers) {
+ if (this.innerProperties() == null) {
+ this.innerProperties = new FileShareProperties();
+ }
+ this.innerProperties().withSignedIdentifiers(signedIdentifiers);
+ return this;
+ }
+
+ /**
+ * Get the snapshotTime property: Creation time of share snapshot returned in the response of list shares with
+ * expand param "snapshots".
+ *
+ * @return the snapshotTime value.
+ */
+ public OffsetDateTime snapshotTime() {
+ return this.innerProperties() == null ? null : this.innerProperties().snapshotTime();
+ }
+
+ /**
+ * Get the fileSharePaidBursting property: File Share Paid Bursting properties.
+ *
+ * @return the fileSharePaidBursting value.
+ */
+ public FileSharePropertiesFileSharePaidBursting fileSharePaidBursting() {
+ return this.innerProperties() == null ? null : this.innerProperties().fileSharePaidBursting();
+ }
+
+ /**
+ * Set the fileSharePaidBursting property: File Share Paid Bursting properties.
+ *
+ * @param fileSharePaidBursting the fileSharePaidBursting value to set.
+ * @return the FileShareItemInner object itself.
+ */
+ public FileShareItemInner
+ withFileSharePaidBursting(FileSharePropertiesFileSharePaidBursting fileSharePaidBursting) {
+ if (this.innerProperties() == null) {
+ this.innerProperties = new FileShareProperties();
+ }
+ this.innerProperties().withFileSharePaidBursting(fileSharePaidBursting);
+ return this;
+ }
+
+ /**
+ * Validates the instance.
+ *
+ * @throws IllegalArgumentException thrown if the instance is not valid.
+ */
+ @Override
+ public void validate() {
+ if (innerProperties() != null) {
+ innerProperties().validate();
+ }
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+ jsonWriter.writeStartObject();
+ jsonWriter.writeJsonField("properties", this.innerProperties);
+ return jsonWriter.writeEndObject();
+ }
+
+ /**
+ * Reads an instance of FileShareItemInner from the JsonReader.
+ *
+ * @param jsonReader The JsonReader being read.
+ * @return An instance of FileShareItemInner if the JsonReader was pointing to an instance of it, or null if it was
+ * pointing to JSON null.
+ * @throws IllegalStateException If the deserialized JSON object was missing any required properties.
+ * @throws IOException If an error occurs while reading the FileShareItemInner.
+ */
+ public static FileShareItemInner fromJson(JsonReader jsonReader) throws IOException {
+ return jsonReader.readObject(reader -> {
+ FileShareItemInner deserializedFileShareItemInner = new FileShareItemInner();
+ while (reader.nextToken() != JsonToken.END_OBJECT) {
+ String fieldName = reader.getFieldName();
+ reader.nextToken();
+
+ if ("id".equals(fieldName)) {
+ deserializedFileShareItemInner.id = reader.getString();
+ } else if ("name".equals(fieldName)) {
+ deserializedFileShareItemInner.name = reader.getString();
+ } else if ("type".equals(fieldName)) {
+ deserializedFileShareItemInner.type = reader.getString();
+ } else if ("etag".equals(fieldName)) {
+ deserializedFileShareItemInner.etag = reader.getString();
+ } else if ("properties".equals(fieldName)) {
+ deserializedFileShareItemInner.innerProperties = FileShareProperties.fromJson(reader);
+ } else {
+ reader.skipChildren();
+ }
+ }
+
+ return deserializedFileShareItemInner;
+ });
+ }
+}
diff --git a/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/FileShareProperties.java b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/FileShareProperties.java
new file mode 100644
index 0000000000000..1e17dca940af6
--- /dev/null
+++ b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/FileShareProperties.java
@@ -0,0 +1,663 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.storage.generated.fluent.models;
+
+import com.azure.core.annotation.Fluent;
+import com.azure.core.util.CoreUtils;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonSerializable;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import com.azure.resourcemanager.storage.generated.models.EnabledProtocols;
+import com.azure.resourcemanager.storage.generated.models.FileSharePropertiesFileSharePaidBursting;
+import com.azure.resourcemanager.storage.generated.models.LeaseDuration;
+import com.azure.resourcemanager.storage.generated.models.LeaseState;
+import com.azure.resourcemanager.storage.generated.models.LeaseStatus;
+import com.azure.resourcemanager.storage.generated.models.RootSquashType;
+import com.azure.resourcemanager.storage.generated.models.ShareAccessTier;
+import com.azure.resourcemanager.storage.generated.models.SignedIdentifier;
+import java.io.IOException;
+import java.time.OffsetDateTime;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * The properties of the file share.
+ */
+@Fluent
+public final class FileShareProperties implements JsonSerializable {
+ /*
+ * Returns the date and time the share was last modified.
+ */
+ private OffsetDateTime lastModifiedTime;
+
+ /*
+ * A name-value pair to associate with the share as metadata.
+ */
+ private Map metadata;
+
+ /*
+ * The provisioned size of the share, in gibibytes. Must be greater than 0, and less than or equal to 5TB (5120).
+ * For Large File Shares, the maximum size is 102400. For file shares created under Files Provisioned v2 account
+ * type, please refer to the GetFileServiceUsage API response for the minimum and maximum allowed provisioned
+ * storage size.
+ */
+ private Integer shareQuota;
+
+ /*
+ * The provisioned IOPS of the share. This property is only for file shares created under Files Provisioned v2
+ * account type. Please refer to the GetFileServiceUsage API response for the minimum and maximum allowed value for
+ * provisioned IOPS.
+ */
+ private Integer provisionedIops;
+
+ /*
+ * The provisioned bandwidth of the share, in mebibytes per second. This property is only for file shares created
+ * under Files Provisioned v2 account type. Please refer to the GetFileServiceUsage API response for the minimum and
+ * maximum allowed value for provisioned bandwidth.
+ */
+ private Integer provisionedBandwidthMibps;
+
+ /*
+ * The calculated burst IOPS of the share. This property is only for file shares created under Files Provisioned v2
+ * account type.
+ */
+ private Integer includedBurstIops;
+
+ /*
+ * The calculated maximum burst credits for the share. This property is only for file shares created under Files
+ * Provisioned v2 account type.
+ */
+ private Long maxBurstCreditsForIops;
+
+ /*
+ * Returns the next allowed provisioned storage size downgrade time for the share. This property is only for file
+ * shares created under Files Provisioned v1 SSD and Files Provisioned v2 account type
+ */
+ private OffsetDateTime nextAllowedQuotaDowngradeTime;
+
+ /*
+ * Returns the next allowed provisioned IOPS downgrade time for the share. This property is only for file shares
+ * created under Files Provisioned v2 account type.
+ */
+ private OffsetDateTime nextAllowedProvisionedIopsDowngradeTime;
+
+ /*
+ * Returns the next allowed provisioned bandwidth downgrade time for the share. This property is only for file
+ * shares created under Files Provisioned v2 account type.
+ */
+ private OffsetDateTime nextAllowedProvisionedBandwidthDowngradeTime;
+
+ /*
+ * The authentication protocol that is used for the file share. Can only be specified when creating a share.
+ */
+ private EnabledProtocols enabledProtocols;
+
+ /*
+ * The property is for NFS share only. The default is NoRootSquash.
+ */
+ private RootSquashType rootSquash;
+
+ /*
+ * The version of the share.
+ */
+ private String version;
+
+ /*
+ * Indicates whether the share was deleted.
+ */
+ private Boolean deleted;
+
+ /*
+ * The deleted time if the share was deleted.
+ */
+ private OffsetDateTime deletedTime;
+
+ /*
+ * Remaining retention days for share that was soft deleted.
+ */
+ private Integer remainingRetentionDays;
+
+ /*
+ * Access tier for specific share. GpV2 account can choose between TransactionOptimized (default), Hot, and Cool.
+ * FileStorage account can choose Premium.
+ */
+ private ShareAccessTier accessTier;
+
+ /*
+ * Indicates the last modification time for share access tier.
+ */
+ private OffsetDateTime accessTierChangeTime;
+
+ /*
+ * Indicates if there is a pending transition for access tier.
+ */
+ private String accessTierStatus;
+
+ /*
+ * The approximate size of the data stored on the share. Note that this value may not include all recently created
+ * or recently resized files.
+ */
+ private Long shareUsageBytes;
+
+ /*
+ * The lease status of the share.
+ */
+ private LeaseStatus leaseStatus;
+
+ /*
+ * Lease state of the share.
+ */
+ private LeaseState leaseState;
+
+ /*
+ * Specifies whether the lease on a share is of infinite or fixed duration, only when the share is leased.
+ */
+ private LeaseDuration leaseDuration;
+
+ /*
+ * List of stored access policies specified on the share.
+ */
+ private List signedIdentifiers;
+
+ /*
+ * Creation time of share snapshot returned in the response of list shares with expand param "snapshots".
+ */
+ private OffsetDateTime snapshotTime;
+
+ /*
+ * File Share Paid Bursting properties.
+ */
+ private FileSharePropertiesFileSharePaidBursting fileSharePaidBursting;
+
+ /**
+ * Creates an instance of FileShareProperties class.
+ */
+ public FileShareProperties() {
+ }
+
+ /**
+ * Get the lastModifiedTime property: Returns the date and time the share was last modified.
+ *
+ * @return the lastModifiedTime value.
+ */
+ public OffsetDateTime lastModifiedTime() {
+ return this.lastModifiedTime;
+ }
+
+ /**
+ * Get the metadata property: A name-value pair to associate with the share as metadata.
+ *
+ * @return the metadata value.
+ */
+ public Map metadata() {
+ return this.metadata;
+ }
+
+ /**
+ * Set the metadata property: A name-value pair to associate with the share as metadata.
+ *
+ * @param metadata the metadata value to set.
+ * @return the FileShareProperties object itself.
+ */
+ public FileShareProperties withMetadata(Map metadata) {
+ this.metadata = metadata;
+ return this;
+ }
+
+ /**
+ * Get the shareQuota property: The provisioned size of the share, in gibibytes. Must be greater than 0, and less
+ * than or equal to 5TB (5120). For Large File Shares, the maximum size is 102400. For file shares created under
+ * Files Provisioned v2 account type, please refer to the GetFileServiceUsage API response for the minimum and
+ * maximum allowed provisioned storage size.
+ *
+ * @return the shareQuota value.
+ */
+ public Integer shareQuota() {
+ return this.shareQuota;
+ }
+
+ /**
+ * Set the shareQuota property: The provisioned size of the share, in gibibytes. Must be greater than 0, and less
+ * than or equal to 5TB (5120). For Large File Shares, the maximum size is 102400. For file shares created under
+ * Files Provisioned v2 account type, please refer to the GetFileServiceUsage API response for the minimum and
+ * maximum allowed provisioned storage size.
+ *
+ * @param shareQuota the shareQuota value to set.
+ * @return the FileShareProperties object itself.
+ */
+ public FileShareProperties withShareQuota(Integer shareQuota) {
+ this.shareQuota = shareQuota;
+ return this;
+ }
+
+ /**
+ * Get the provisionedIops property: The provisioned IOPS of the share. This property is only for file shares
+ * created under Files Provisioned v2 account type. Please refer to the GetFileServiceUsage API response for the
+ * minimum and maximum allowed value for provisioned IOPS.
+ *
+ * @return the provisionedIops value.
+ */
+ public Integer provisionedIops() {
+ return this.provisionedIops;
+ }
+
+ /**
+ * Set the provisionedIops property: The provisioned IOPS of the share. This property is only for file shares
+ * created under Files Provisioned v2 account type. Please refer to the GetFileServiceUsage API response for the
+ * minimum and maximum allowed value for provisioned IOPS.
+ *
+ * @param provisionedIops the provisionedIops value to set.
+ * @return the FileShareProperties object itself.
+ */
+ public FileShareProperties withProvisionedIops(Integer provisionedIops) {
+ this.provisionedIops = provisionedIops;
+ return this;
+ }
+
+ /**
+ * Get the provisionedBandwidthMibps property: The provisioned bandwidth of the share, in mebibytes per second. This
+ * property is only for file shares created under Files Provisioned v2 account type. Please refer to the
+ * GetFileServiceUsage API response for the minimum and maximum allowed value for provisioned bandwidth.
+ *
+ * @return the provisionedBandwidthMibps value.
+ */
+ public Integer provisionedBandwidthMibps() {
+ return this.provisionedBandwidthMibps;
+ }
+
+ /**
+ * Set the provisionedBandwidthMibps property: The provisioned bandwidth of the share, in mebibytes per second. This
+ * property is only for file shares created under Files Provisioned v2 account type. Please refer to the
+ * GetFileServiceUsage API response for the minimum and maximum allowed value for provisioned bandwidth.
+ *
+ * @param provisionedBandwidthMibps the provisionedBandwidthMibps value to set.
+ * @return the FileShareProperties object itself.
+ */
+ public FileShareProperties withProvisionedBandwidthMibps(Integer provisionedBandwidthMibps) {
+ this.provisionedBandwidthMibps = provisionedBandwidthMibps;
+ return this;
+ }
+
+ /**
+ * Get the includedBurstIops property: The calculated burst IOPS of the share. This property is only for file shares
+ * created under Files Provisioned v2 account type.
+ *
+ * @return the includedBurstIops value.
+ */
+ public Integer includedBurstIops() {
+ return this.includedBurstIops;
+ }
+
+ /**
+ * Get the maxBurstCreditsForIops property: The calculated maximum burst credits for the share. This property is
+ * only for file shares created under Files Provisioned v2 account type.
+ *
+ * @return the maxBurstCreditsForIops value.
+ */
+ public Long maxBurstCreditsForIops() {
+ return this.maxBurstCreditsForIops;
+ }
+
+ /**
+ * Get the nextAllowedQuotaDowngradeTime property: Returns the next allowed provisioned storage size downgrade time
+ * for the share. This property is only for file shares created under Files Provisioned v1 SSD and Files Provisioned
+ * v2 account type.
+ *
+ * @return the nextAllowedQuotaDowngradeTime value.
+ */
+ public OffsetDateTime nextAllowedQuotaDowngradeTime() {
+ return this.nextAllowedQuotaDowngradeTime;
+ }
+
+ /**
+ * Get the nextAllowedProvisionedIopsDowngradeTime property: Returns the next allowed provisioned IOPS downgrade
+ * time for the share. This property is only for file shares created under Files Provisioned v2 account type.
+ *
+ * @return the nextAllowedProvisionedIopsDowngradeTime value.
+ */
+ public OffsetDateTime nextAllowedProvisionedIopsDowngradeTime() {
+ return this.nextAllowedProvisionedIopsDowngradeTime;
+ }
+
+ /**
+ * Get the nextAllowedProvisionedBandwidthDowngradeTime property: Returns the next allowed provisioned bandwidth
+ * downgrade time for the share. This property is only for file shares created under Files Provisioned v2 account
+ * type.
+ *
+ * @return the nextAllowedProvisionedBandwidthDowngradeTime value.
+ */
+ public OffsetDateTime nextAllowedProvisionedBandwidthDowngradeTime() {
+ return this.nextAllowedProvisionedBandwidthDowngradeTime;
+ }
+
+ /**
+ * Get the enabledProtocols property: The authentication protocol that is used for the file share. Can only be
+ * specified when creating a share.
+ *
+ * @return the enabledProtocols value.
+ */
+ public EnabledProtocols enabledProtocols() {
+ return this.enabledProtocols;
+ }
+
+ /**
+ * Set the enabledProtocols property: The authentication protocol that is used for the file share. Can only be
+ * specified when creating a share.
+ *
+ * @param enabledProtocols the enabledProtocols value to set.
+ * @return the FileShareProperties object itself.
+ */
+ public FileShareProperties withEnabledProtocols(EnabledProtocols enabledProtocols) {
+ this.enabledProtocols = enabledProtocols;
+ return this;
+ }
+
+ /**
+ * Get the rootSquash property: The property is for NFS share only. The default is NoRootSquash.
+ *
+ * @return the rootSquash value.
+ */
+ public RootSquashType rootSquash() {
+ return this.rootSquash;
+ }
+
+ /**
+ * Set the rootSquash property: The property is for NFS share only. The default is NoRootSquash.
+ *
+ * @param rootSquash the rootSquash value to set.
+ * @return the FileShareProperties object itself.
+ */
+ public FileShareProperties withRootSquash(RootSquashType rootSquash) {
+ this.rootSquash = rootSquash;
+ return this;
+ }
+
+ /**
+ * Get the version property: The version of the share.
+ *
+ * @return the version value.
+ */
+ public String version() {
+ return this.version;
+ }
+
+ /**
+ * Get the deleted property: Indicates whether the share was deleted.
+ *
+ * @return the deleted value.
+ */
+ public Boolean deleted() {
+ return this.deleted;
+ }
+
+ /**
+ * Get the deletedTime property: The deleted time if the share was deleted.
+ *
+ * @return the deletedTime value.
+ */
+ public OffsetDateTime deletedTime() {
+ return this.deletedTime;
+ }
+
+ /**
+ * Get the remainingRetentionDays property: Remaining retention days for share that was soft deleted.
+ *
+ * @return the remainingRetentionDays value.
+ */
+ public Integer remainingRetentionDays() {
+ return this.remainingRetentionDays;
+ }
+
+ /**
+ * Get the accessTier property: Access tier for specific share. GpV2 account can choose between TransactionOptimized
+ * (default), Hot, and Cool. FileStorage account can choose Premium.
+ *
+ * @return the accessTier value.
+ */
+ public ShareAccessTier accessTier() {
+ return this.accessTier;
+ }
+
+ /**
+ * Set the accessTier property: Access tier for specific share. GpV2 account can choose between TransactionOptimized
+ * (default), Hot, and Cool. FileStorage account can choose Premium.
+ *
+ * @param accessTier the accessTier value to set.
+ * @return the FileShareProperties object itself.
+ */
+ public FileShareProperties withAccessTier(ShareAccessTier accessTier) {
+ this.accessTier = accessTier;
+ return this;
+ }
+
+ /**
+ * Get the accessTierChangeTime property: Indicates the last modification time for share access tier.
+ *
+ * @return the accessTierChangeTime value.
+ */
+ public OffsetDateTime accessTierChangeTime() {
+ return this.accessTierChangeTime;
+ }
+
+ /**
+ * Get the accessTierStatus property: Indicates if there is a pending transition for access tier.
+ *
+ * @return the accessTierStatus value.
+ */
+ public String accessTierStatus() {
+ return this.accessTierStatus;
+ }
+
+ /**
+ * Get the shareUsageBytes property: The approximate size of the data stored on the share. Note that this value may
+ * not include all recently created or recently resized files.
+ *
+ * @return the shareUsageBytes value.
+ */
+ public Long shareUsageBytes() {
+ return this.shareUsageBytes;
+ }
+
+ /**
+ * Get the leaseStatus property: The lease status of the share.
+ *
+ * @return the leaseStatus value.
+ */
+ public LeaseStatus leaseStatus() {
+ return this.leaseStatus;
+ }
+
+ /**
+ * Get the leaseState property: Lease state of the share.
+ *
+ * @return the leaseState value.
+ */
+ public LeaseState leaseState() {
+ return this.leaseState;
+ }
+
+ /**
+ * Get the leaseDuration property: Specifies whether the lease on a share is of infinite or fixed duration, only
+ * when the share is leased.
+ *
+ * @return the leaseDuration value.
+ */
+ public LeaseDuration leaseDuration() {
+ return this.leaseDuration;
+ }
+
+ /**
+ * Get the signedIdentifiers property: List of stored access policies specified on the share.
+ *
+ * @return the signedIdentifiers value.
+ */
+ public List signedIdentifiers() {
+ return this.signedIdentifiers;
+ }
+
+ /**
+ * Set the signedIdentifiers property: List of stored access policies specified on the share.
+ *
+ * @param signedIdentifiers the signedIdentifiers value to set.
+ * @return the FileShareProperties object itself.
+ */
+ public FileShareProperties withSignedIdentifiers(List signedIdentifiers) {
+ this.signedIdentifiers = signedIdentifiers;
+ return this;
+ }
+
+ /**
+ * Get the snapshotTime property: Creation time of share snapshot returned in the response of list shares with
+ * expand param "snapshots".
+ *
+ * @return the snapshotTime value.
+ */
+ public OffsetDateTime snapshotTime() {
+ return this.snapshotTime;
+ }
+
+ /**
+ * Get the fileSharePaidBursting property: File Share Paid Bursting properties.
+ *
+ * @return the fileSharePaidBursting value.
+ */
+ public FileSharePropertiesFileSharePaidBursting fileSharePaidBursting() {
+ return this.fileSharePaidBursting;
+ }
+
+ /**
+ * Set the fileSharePaidBursting property: File Share Paid Bursting properties.
+ *
+ * @param fileSharePaidBursting the fileSharePaidBursting value to set.
+ * @return the FileShareProperties object itself.
+ */
+ public FileShareProperties
+ withFileSharePaidBursting(FileSharePropertiesFileSharePaidBursting fileSharePaidBursting) {
+ this.fileSharePaidBursting = fileSharePaidBursting;
+ return this;
+ }
+
+ /**
+ * Validates the instance.
+ *
+ * @throws IllegalArgumentException thrown if the instance is not valid.
+ */
+ public void validate() {
+ if (signedIdentifiers() != null) {
+ signedIdentifiers().forEach(e -> e.validate());
+ }
+ if (fileSharePaidBursting() != null) {
+ fileSharePaidBursting().validate();
+ }
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+ jsonWriter.writeStartObject();
+ jsonWriter.writeMapField("metadata", this.metadata, (writer, element) -> writer.writeString(element));
+ jsonWriter.writeNumberField("shareQuota", this.shareQuota);
+ jsonWriter.writeNumberField("provisionedIops", this.provisionedIops);
+ jsonWriter.writeNumberField("provisionedBandwidthMibps", this.provisionedBandwidthMibps);
+ jsonWriter.writeStringField("enabledProtocols",
+ this.enabledProtocols == null ? null : this.enabledProtocols.toString());
+ jsonWriter.writeStringField("rootSquash", this.rootSquash == null ? null : this.rootSquash.toString());
+ jsonWriter.writeStringField("accessTier", this.accessTier == null ? null : this.accessTier.toString());
+ jsonWriter.writeArrayField("signedIdentifiers", this.signedIdentifiers,
+ (writer, element) -> writer.writeJson(element));
+ jsonWriter.writeJsonField("fileSharePaidBursting", this.fileSharePaidBursting);
+ return jsonWriter.writeEndObject();
+ }
+
+ /**
+ * Reads an instance of FileShareProperties from the JsonReader.
+ *
+ * @param jsonReader The JsonReader being read.
+ * @return An instance of FileShareProperties if the JsonReader was pointing to an instance of it, or null if it was
+ * pointing to JSON null.
+ * @throws IOException If an error occurs while reading the FileShareProperties.
+ */
+ public static FileShareProperties fromJson(JsonReader jsonReader) throws IOException {
+ return jsonReader.readObject(reader -> {
+ FileShareProperties deserializedFileShareProperties = new FileShareProperties();
+ while (reader.nextToken() != JsonToken.END_OBJECT) {
+ String fieldName = reader.getFieldName();
+ reader.nextToken();
+
+ if ("lastModifiedTime".equals(fieldName)) {
+ deserializedFileShareProperties.lastModifiedTime = reader
+ .getNullable(nonNullReader -> CoreUtils.parseBestOffsetDateTime(nonNullReader.getString()));
+ } else if ("metadata".equals(fieldName)) {
+ Map metadata = reader.readMap(reader1 -> reader1.getString());
+ deserializedFileShareProperties.metadata = metadata;
+ } else if ("shareQuota".equals(fieldName)) {
+ deserializedFileShareProperties.shareQuota = reader.getNullable(JsonReader::getInt);
+ } else if ("provisionedIops".equals(fieldName)) {
+ deserializedFileShareProperties.provisionedIops = reader.getNullable(JsonReader::getInt);
+ } else if ("provisionedBandwidthMibps".equals(fieldName)) {
+ deserializedFileShareProperties.provisionedBandwidthMibps = reader.getNullable(JsonReader::getInt);
+ } else if ("includedBurstIops".equals(fieldName)) {
+ deserializedFileShareProperties.includedBurstIops = reader.getNullable(JsonReader::getInt);
+ } else if ("maxBurstCreditsForIops".equals(fieldName)) {
+ deserializedFileShareProperties.maxBurstCreditsForIops = reader.getNullable(JsonReader::getLong);
+ } else if ("nextAllowedQuotaDowngradeTime".equals(fieldName)) {
+ deserializedFileShareProperties.nextAllowedQuotaDowngradeTime = reader
+ .getNullable(nonNullReader -> CoreUtils.parseBestOffsetDateTime(nonNullReader.getString()));
+ } else if ("nextAllowedProvisionedIopsDowngradeTime".equals(fieldName)) {
+ deserializedFileShareProperties.nextAllowedProvisionedIopsDowngradeTime = reader
+ .getNullable(nonNullReader -> CoreUtils.parseBestOffsetDateTime(nonNullReader.getString()));
+ } else if ("nextAllowedProvisionedBandwidthDowngradeTime".equals(fieldName)) {
+ deserializedFileShareProperties.nextAllowedProvisionedBandwidthDowngradeTime = reader
+ .getNullable(nonNullReader -> CoreUtils.parseBestOffsetDateTime(nonNullReader.getString()));
+ } else if ("enabledProtocols".equals(fieldName)) {
+ deserializedFileShareProperties.enabledProtocols = EnabledProtocols.fromString(reader.getString());
+ } else if ("rootSquash".equals(fieldName)) {
+ deserializedFileShareProperties.rootSquash = RootSquashType.fromString(reader.getString());
+ } else if ("version".equals(fieldName)) {
+ deserializedFileShareProperties.version = reader.getString();
+ } else if ("deleted".equals(fieldName)) {
+ deserializedFileShareProperties.deleted = reader.getNullable(JsonReader::getBoolean);
+ } else if ("deletedTime".equals(fieldName)) {
+ deserializedFileShareProperties.deletedTime = reader
+ .getNullable(nonNullReader -> CoreUtils.parseBestOffsetDateTime(nonNullReader.getString()));
+ } else if ("remainingRetentionDays".equals(fieldName)) {
+ deserializedFileShareProperties.remainingRetentionDays = reader.getNullable(JsonReader::getInt);
+ } else if ("accessTier".equals(fieldName)) {
+ deserializedFileShareProperties.accessTier = ShareAccessTier.fromString(reader.getString());
+ } else if ("accessTierChangeTime".equals(fieldName)) {
+ deserializedFileShareProperties.accessTierChangeTime = reader
+ .getNullable(nonNullReader -> CoreUtils.parseBestOffsetDateTime(nonNullReader.getString()));
+ } else if ("accessTierStatus".equals(fieldName)) {
+ deserializedFileShareProperties.accessTierStatus = reader.getString();
+ } else if ("shareUsageBytes".equals(fieldName)) {
+ deserializedFileShareProperties.shareUsageBytes = reader.getNullable(JsonReader::getLong);
+ } else if ("leaseStatus".equals(fieldName)) {
+ deserializedFileShareProperties.leaseStatus = LeaseStatus.fromString(reader.getString());
+ } else if ("leaseState".equals(fieldName)) {
+ deserializedFileShareProperties.leaseState = LeaseState.fromString(reader.getString());
+ } else if ("leaseDuration".equals(fieldName)) {
+ deserializedFileShareProperties.leaseDuration = LeaseDuration.fromString(reader.getString());
+ } else if ("signedIdentifiers".equals(fieldName)) {
+ List signedIdentifiers
+ = reader.readArray(reader1 -> SignedIdentifier.fromJson(reader1));
+ deserializedFileShareProperties.signedIdentifiers = signedIdentifiers;
+ } else if ("snapshotTime".equals(fieldName)) {
+ deserializedFileShareProperties.snapshotTime = reader
+ .getNullable(nonNullReader -> CoreUtils.parseBestOffsetDateTime(nonNullReader.getString()));
+ } else if ("fileSharePaidBursting".equals(fieldName)) {
+ deserializedFileShareProperties.fileSharePaidBursting
+ = FileSharePropertiesFileSharePaidBursting.fromJson(reader);
+ } else {
+ reader.skipChildren();
+ }
+ }
+
+ return deserializedFileShareProperties;
+ });
+ }
+}
diff --git a/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/ImmutabilityPolicyInner.java b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/ImmutabilityPolicyInner.java
new file mode 100644
index 0000000000000..936697c49c017
--- /dev/null
+++ b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/ImmutabilityPolicyInner.java
@@ -0,0 +1,259 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.storage.generated.fluent.models;
+
+import com.azure.core.annotation.Fluent;
+import com.azure.core.util.logging.ClientLogger;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import com.azure.resourcemanager.storage.generated.models.AzureEntityResource;
+import com.azure.resourcemanager.storage.generated.models.ImmutabilityPolicyState;
+import java.io.IOException;
+
+/**
+ * The ImmutabilityPolicy property of a blob container, including Id, resource name, resource type, Etag.
+ */
+@Fluent
+public final class ImmutabilityPolicyInner extends AzureEntityResource {
+ /*
+ * The properties of an ImmutabilityPolicy of a blob container.
+ */
+ private ImmutabilityPolicyProperty innerProperties = new ImmutabilityPolicyProperty();
+
+ /*
+ * Resource Etag.
+ */
+ private String etag;
+
+ /*
+ * The type of the resource.
+ */
+ private String type;
+
+ /*
+ * The name of the resource.
+ */
+ private String name;
+
+ /*
+ * Fully qualified resource Id for the resource.
+ */
+ private String id;
+
+ /**
+ * Creates an instance of ImmutabilityPolicyInner class.
+ */
+ public ImmutabilityPolicyInner() {
+ }
+
+ /**
+ * Get the innerProperties property: The properties of an ImmutabilityPolicy of a blob container.
+ *
+ * @return the innerProperties value.
+ */
+ private ImmutabilityPolicyProperty innerProperties() {
+ return this.innerProperties;
+ }
+
+ /**
+ * Get the etag property: Resource Etag.
+ *
+ * @return the etag value.
+ */
+ @Override
+ public String etag() {
+ return this.etag;
+ }
+
+ /**
+ * Get the type property: The type of the resource.
+ *
+ * @return the type value.
+ */
+ @Override
+ public String type() {
+ return this.type;
+ }
+
+ /**
+ * Get the name property: The name of the resource.
+ *
+ * @return the name value.
+ */
+ @Override
+ public String name() {
+ return this.name;
+ }
+
+ /**
+ * Get the id property: Fully qualified resource Id for the resource.
+ *
+ * @return the id value.
+ */
+ @Override
+ public String id() {
+ return this.id;
+ }
+
+ /**
+ * Get the immutabilityPeriodSinceCreationInDays property: The immutability period for the blobs in the container
+ * since the policy creation, in days.
+ *
+ * @return the immutabilityPeriodSinceCreationInDays value.
+ */
+ public Integer immutabilityPeriodSinceCreationInDays() {
+ return this.innerProperties() == null ? null : this.innerProperties().immutabilityPeriodSinceCreationInDays();
+ }
+
+ /**
+ * Set the immutabilityPeriodSinceCreationInDays property: The immutability period for the blobs in the container
+ * since the policy creation, in days.
+ *
+ * @param immutabilityPeriodSinceCreationInDays the immutabilityPeriodSinceCreationInDays value to set.
+ * @return the ImmutabilityPolicyInner object itself.
+ */
+ public ImmutabilityPolicyInner
+ withImmutabilityPeriodSinceCreationInDays(Integer immutabilityPeriodSinceCreationInDays) {
+ if (this.innerProperties() == null) {
+ this.innerProperties = new ImmutabilityPolicyProperty();
+ }
+ this.innerProperties().withImmutabilityPeriodSinceCreationInDays(immutabilityPeriodSinceCreationInDays);
+ return this;
+ }
+
+ /**
+ * Get the state property: The ImmutabilityPolicy state of a blob container, possible values include: Locked and
+ * Unlocked.
+ *
+ * @return the state value.
+ */
+ public ImmutabilityPolicyState state() {
+ return this.innerProperties() == null ? null : this.innerProperties().state();
+ }
+
+ /**
+ * Get the allowProtectedAppendWrites property: This property can only be changed for unlocked time-based retention
+ * policies. When enabled, new blocks can be written to an append blob while maintaining immutability protection and
+ * compliance. Only new blocks can be added and any existing blocks cannot be modified or deleted. This property
+ * cannot be changed with ExtendImmutabilityPolicy API.
+ *
+ * @return the allowProtectedAppendWrites value.
+ */
+ public Boolean allowProtectedAppendWrites() {
+ return this.innerProperties() == null ? null : this.innerProperties().allowProtectedAppendWrites();
+ }
+
+ /**
+ * Set the allowProtectedAppendWrites property: This property can only be changed for unlocked time-based retention
+ * policies. When enabled, new blocks can be written to an append blob while maintaining immutability protection and
+ * compliance. Only new blocks can be added and any existing blocks cannot be modified or deleted. This property
+ * cannot be changed with ExtendImmutabilityPolicy API.
+ *
+ * @param allowProtectedAppendWrites the allowProtectedAppendWrites value to set.
+ * @return the ImmutabilityPolicyInner object itself.
+ */
+ public ImmutabilityPolicyInner withAllowProtectedAppendWrites(Boolean allowProtectedAppendWrites) {
+ if (this.innerProperties() == null) {
+ this.innerProperties = new ImmutabilityPolicyProperty();
+ }
+ this.innerProperties().withAllowProtectedAppendWrites(allowProtectedAppendWrites);
+ return this;
+ }
+
+ /**
+ * Get the allowProtectedAppendWritesAll property: This property can only be changed for unlocked time-based
+ * retention policies. When enabled, new blocks can be written to both 'Append and Bock Blobs' while maintaining
+ * immutability protection and compliance. Only new blocks can be added and any existing blocks cannot be modified
+ * or deleted. This property cannot be changed with ExtendImmutabilityPolicy API. The 'allowProtectedAppendWrites'
+ * and 'allowProtectedAppendWritesAll' properties are mutually exclusive.
+ *
+ * @return the allowProtectedAppendWritesAll value.
+ */
+ public Boolean allowProtectedAppendWritesAll() {
+ return this.innerProperties() == null ? null : this.innerProperties().allowProtectedAppendWritesAll();
+ }
+
+ /**
+ * Set the allowProtectedAppendWritesAll property: This property can only be changed for unlocked time-based
+ * retention policies. When enabled, new blocks can be written to both 'Append and Bock Blobs' while maintaining
+ * immutability protection and compliance. Only new blocks can be added and any existing blocks cannot be modified
+ * or deleted. This property cannot be changed with ExtendImmutabilityPolicy API. The 'allowProtectedAppendWrites'
+ * and 'allowProtectedAppendWritesAll' properties are mutually exclusive.
+ *
+ * @param allowProtectedAppendWritesAll the allowProtectedAppendWritesAll value to set.
+ * @return the ImmutabilityPolicyInner object itself.
+ */
+ public ImmutabilityPolicyInner withAllowProtectedAppendWritesAll(Boolean allowProtectedAppendWritesAll) {
+ if (this.innerProperties() == null) {
+ this.innerProperties = new ImmutabilityPolicyProperty();
+ }
+ this.innerProperties().withAllowProtectedAppendWritesAll(allowProtectedAppendWritesAll);
+ return this;
+ }
+
+ /**
+ * Validates the instance.
+ *
+ * @throws IllegalArgumentException thrown if the instance is not valid.
+ */
+ @Override
+ public void validate() {
+ if (innerProperties() == null) {
+ throw LOGGER.atError()
+ .log(new IllegalArgumentException(
+ "Missing required property innerProperties in model ImmutabilityPolicyInner"));
+ } else {
+ innerProperties().validate();
+ }
+ }
+
+ private static final ClientLogger LOGGER = new ClientLogger(ImmutabilityPolicyInner.class);
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+ jsonWriter.writeStartObject();
+ jsonWriter.writeJsonField("properties", this.innerProperties);
+ return jsonWriter.writeEndObject();
+ }
+
+ /**
+ * Reads an instance of ImmutabilityPolicyInner from the JsonReader.
+ *
+ * @param jsonReader The JsonReader being read.
+ * @return An instance of ImmutabilityPolicyInner if the JsonReader was pointing to an instance of it, or null if it
+ * was pointing to JSON null.
+ * @throws IllegalStateException If the deserialized JSON object was missing any required properties.
+ * @throws IOException If an error occurs while reading the ImmutabilityPolicyInner.
+ */
+ public static ImmutabilityPolicyInner fromJson(JsonReader jsonReader) throws IOException {
+ return jsonReader.readObject(reader -> {
+ ImmutabilityPolicyInner deserializedImmutabilityPolicyInner = new ImmutabilityPolicyInner();
+ while (reader.nextToken() != JsonToken.END_OBJECT) {
+ String fieldName = reader.getFieldName();
+ reader.nextToken();
+
+ if ("id".equals(fieldName)) {
+ deserializedImmutabilityPolicyInner.id = reader.getString();
+ } else if ("name".equals(fieldName)) {
+ deserializedImmutabilityPolicyInner.name = reader.getString();
+ } else if ("type".equals(fieldName)) {
+ deserializedImmutabilityPolicyInner.type = reader.getString();
+ } else if ("etag".equals(fieldName)) {
+ deserializedImmutabilityPolicyInner.etag = reader.getString();
+ } else if ("properties".equals(fieldName)) {
+ deserializedImmutabilityPolicyInner.innerProperties = ImmutabilityPolicyProperty.fromJson(reader);
+ } else {
+ reader.skipChildren();
+ }
+ }
+
+ return deserializedImmutabilityPolicyInner;
+ });
+ }
+}
diff --git a/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/ImmutabilityPolicyProperty.java b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/ImmutabilityPolicyProperty.java
new file mode 100644
index 0000000000000..3597f11b2c1f6
--- /dev/null
+++ b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/ImmutabilityPolicyProperty.java
@@ -0,0 +1,196 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.storage.generated.fluent.models;
+
+import com.azure.core.annotation.Fluent;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonSerializable;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import com.azure.resourcemanager.storage.generated.models.ImmutabilityPolicyState;
+import java.io.IOException;
+
+/**
+ * The properties of an ImmutabilityPolicy of a blob container.
+ */
+@Fluent
+public final class ImmutabilityPolicyProperty implements JsonSerializable {
+ /*
+ * The immutability period for the blobs in the container since the policy creation, in days.
+ */
+ private Integer immutabilityPeriodSinceCreationInDays;
+
+ /*
+ * The ImmutabilityPolicy state of a blob container, possible values include: Locked and Unlocked.
+ */
+ private ImmutabilityPolicyState state;
+
+ /*
+ * This property can only be changed for unlocked time-based retention policies. When enabled, new blocks can be
+ * written to an append blob while maintaining immutability protection and compliance. Only new blocks can be added
+ * and any existing blocks cannot be modified or deleted. This property cannot be changed with
+ * ExtendImmutabilityPolicy API.
+ */
+ private Boolean allowProtectedAppendWrites;
+
+ /*
+ * This property can only be changed for unlocked time-based retention policies. When enabled, new blocks can be
+ * written to both 'Append and Bock Blobs' while maintaining immutability protection and compliance. Only new blocks
+ * can be added and any existing blocks cannot be modified or deleted. This property cannot be changed with
+ * ExtendImmutabilityPolicy API. The 'allowProtectedAppendWrites' and 'allowProtectedAppendWritesAll' properties are
+ * mutually exclusive.
+ */
+ private Boolean allowProtectedAppendWritesAll;
+
+ /**
+ * Creates an instance of ImmutabilityPolicyProperty class.
+ */
+ public ImmutabilityPolicyProperty() {
+ }
+
+ /**
+ * Get the immutabilityPeriodSinceCreationInDays property: The immutability period for the blobs in the container
+ * since the policy creation, in days.
+ *
+ * @return the immutabilityPeriodSinceCreationInDays value.
+ */
+ public Integer immutabilityPeriodSinceCreationInDays() {
+ return this.immutabilityPeriodSinceCreationInDays;
+ }
+
+ /**
+ * Set the immutabilityPeriodSinceCreationInDays property: The immutability period for the blobs in the container
+ * since the policy creation, in days.
+ *
+ * @param immutabilityPeriodSinceCreationInDays the immutabilityPeriodSinceCreationInDays value to set.
+ * @return the ImmutabilityPolicyProperty object itself.
+ */
+ public ImmutabilityPolicyProperty
+ withImmutabilityPeriodSinceCreationInDays(Integer immutabilityPeriodSinceCreationInDays) {
+ this.immutabilityPeriodSinceCreationInDays = immutabilityPeriodSinceCreationInDays;
+ return this;
+ }
+
+ /**
+ * Get the state property: The ImmutabilityPolicy state of a blob container, possible values include: Locked and
+ * Unlocked.
+ *
+ * @return the state value.
+ */
+ public ImmutabilityPolicyState state() {
+ return this.state;
+ }
+
+ /**
+ * Get the allowProtectedAppendWrites property: This property can only be changed for unlocked time-based retention
+ * policies. When enabled, new blocks can be written to an append blob while maintaining immutability protection and
+ * compliance. Only new blocks can be added and any existing blocks cannot be modified or deleted. This property
+ * cannot be changed with ExtendImmutabilityPolicy API.
+ *
+ * @return the allowProtectedAppendWrites value.
+ */
+ public Boolean allowProtectedAppendWrites() {
+ return this.allowProtectedAppendWrites;
+ }
+
+ /**
+ * Set the allowProtectedAppendWrites property: This property can only be changed for unlocked time-based retention
+ * policies. When enabled, new blocks can be written to an append blob while maintaining immutability protection and
+ * compliance. Only new blocks can be added and any existing blocks cannot be modified or deleted. This property
+ * cannot be changed with ExtendImmutabilityPolicy API.
+ *
+ * @param allowProtectedAppendWrites the allowProtectedAppendWrites value to set.
+ * @return the ImmutabilityPolicyProperty object itself.
+ */
+ public ImmutabilityPolicyProperty withAllowProtectedAppendWrites(Boolean allowProtectedAppendWrites) {
+ this.allowProtectedAppendWrites = allowProtectedAppendWrites;
+ return this;
+ }
+
+ /**
+ * Get the allowProtectedAppendWritesAll property: This property can only be changed for unlocked time-based
+ * retention policies. When enabled, new blocks can be written to both 'Append and Bock Blobs' while maintaining
+ * immutability protection and compliance. Only new blocks can be added and any existing blocks cannot be modified
+ * or deleted. This property cannot be changed with ExtendImmutabilityPolicy API. The 'allowProtectedAppendWrites'
+ * and 'allowProtectedAppendWritesAll' properties are mutually exclusive.
+ *
+ * @return the allowProtectedAppendWritesAll value.
+ */
+ public Boolean allowProtectedAppendWritesAll() {
+ return this.allowProtectedAppendWritesAll;
+ }
+
+ /**
+ * Set the allowProtectedAppendWritesAll property: This property can only be changed for unlocked time-based
+ * retention policies. When enabled, new blocks can be written to both 'Append and Bock Blobs' while maintaining
+ * immutability protection and compliance. Only new blocks can be added and any existing blocks cannot be modified
+ * or deleted. This property cannot be changed with ExtendImmutabilityPolicy API. The 'allowProtectedAppendWrites'
+ * and 'allowProtectedAppendWritesAll' properties are mutually exclusive.
+ *
+ * @param allowProtectedAppendWritesAll the allowProtectedAppendWritesAll value to set.
+ * @return the ImmutabilityPolicyProperty object itself.
+ */
+ public ImmutabilityPolicyProperty withAllowProtectedAppendWritesAll(Boolean allowProtectedAppendWritesAll) {
+ this.allowProtectedAppendWritesAll = allowProtectedAppendWritesAll;
+ return this;
+ }
+
+ /**
+ * Validates the instance.
+ *
+ * @throws IllegalArgumentException thrown if the instance is not valid.
+ */
+ public void validate() {
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+ jsonWriter.writeStartObject();
+ jsonWriter.writeNumberField("immutabilityPeriodSinceCreationInDays",
+ this.immutabilityPeriodSinceCreationInDays);
+ jsonWriter.writeBooleanField("allowProtectedAppendWrites", this.allowProtectedAppendWrites);
+ jsonWriter.writeBooleanField("allowProtectedAppendWritesAll", this.allowProtectedAppendWritesAll);
+ return jsonWriter.writeEndObject();
+ }
+
+ /**
+ * Reads an instance of ImmutabilityPolicyProperty from the JsonReader.
+ *
+ * @param jsonReader The JsonReader being read.
+ * @return An instance of ImmutabilityPolicyProperty if the JsonReader was pointing to an instance of it, or null if
+ * it was pointing to JSON null.
+ * @throws IOException If an error occurs while reading the ImmutabilityPolicyProperty.
+ */
+ public static ImmutabilityPolicyProperty fromJson(JsonReader jsonReader) throws IOException {
+ return jsonReader.readObject(reader -> {
+ ImmutabilityPolicyProperty deserializedImmutabilityPolicyProperty = new ImmutabilityPolicyProperty();
+ while (reader.nextToken() != JsonToken.END_OBJECT) {
+ String fieldName = reader.getFieldName();
+ reader.nextToken();
+
+ if ("immutabilityPeriodSinceCreationInDays".equals(fieldName)) {
+ deserializedImmutabilityPolicyProperty.immutabilityPeriodSinceCreationInDays
+ = reader.getNullable(JsonReader::getInt);
+ } else if ("state".equals(fieldName)) {
+ deserializedImmutabilityPolicyProperty.state
+ = ImmutabilityPolicyState.fromString(reader.getString());
+ } else if ("allowProtectedAppendWrites".equals(fieldName)) {
+ deserializedImmutabilityPolicyProperty.allowProtectedAppendWrites
+ = reader.getNullable(JsonReader::getBoolean);
+ } else if ("allowProtectedAppendWritesAll".equals(fieldName)) {
+ deserializedImmutabilityPolicyProperty.allowProtectedAppendWritesAll
+ = reader.getNullable(JsonReader::getBoolean);
+ } else {
+ reader.skipChildren();
+ }
+ }
+
+ return deserializedImmutabilityPolicyProperty;
+ });
+ }
+}
diff --git a/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/LeaseContainerResponseInner.java b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/LeaseContainerResponseInner.java
new file mode 100644
index 0000000000000..54779be061a44
--- /dev/null
+++ b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/LeaseContainerResponseInner.java
@@ -0,0 +1,124 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.storage.generated.fluent.models;
+
+import com.azure.core.annotation.Fluent;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonSerializable;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
+
+/**
+ * Lease Container response schema.
+ */
+@Fluent
+public final class LeaseContainerResponseInner implements JsonSerializable {
+ /*
+ * Returned unique lease ID that must be included with any request to delete the container, or to renew, change, or
+ * release the lease.
+ */
+ private String leaseId;
+
+ /*
+ * Approximate time remaining in the lease period, in seconds.
+ */
+ private String leaseTimeSeconds;
+
+ /**
+ * Creates an instance of LeaseContainerResponseInner class.
+ */
+ public LeaseContainerResponseInner() {
+ }
+
+ /**
+ * Get the leaseId property: Returned unique lease ID that must be included with any request to delete the
+ * container, or to renew, change, or release the lease.
+ *
+ * @return the leaseId value.
+ */
+ public String leaseId() {
+ return this.leaseId;
+ }
+
+ /**
+ * Set the leaseId property: Returned unique lease ID that must be included with any request to delete the
+ * container, or to renew, change, or release the lease.
+ *
+ * @param leaseId the leaseId value to set.
+ * @return the LeaseContainerResponseInner object itself.
+ */
+ public LeaseContainerResponseInner withLeaseId(String leaseId) {
+ this.leaseId = leaseId;
+ return this;
+ }
+
+ /**
+ * Get the leaseTimeSeconds property: Approximate time remaining in the lease period, in seconds.
+ *
+ * @return the leaseTimeSeconds value.
+ */
+ public String leaseTimeSeconds() {
+ return this.leaseTimeSeconds;
+ }
+
+ /**
+ * Set the leaseTimeSeconds property: Approximate time remaining in the lease period, in seconds.
+ *
+ * @param leaseTimeSeconds the leaseTimeSeconds value to set.
+ * @return the LeaseContainerResponseInner object itself.
+ */
+ public LeaseContainerResponseInner withLeaseTimeSeconds(String leaseTimeSeconds) {
+ this.leaseTimeSeconds = leaseTimeSeconds;
+ return this;
+ }
+
+ /**
+ * Validates the instance.
+ *
+ * @throws IllegalArgumentException thrown if the instance is not valid.
+ */
+ public void validate() {
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+ jsonWriter.writeStartObject();
+ jsonWriter.writeStringField("leaseId", this.leaseId);
+ jsonWriter.writeStringField("leaseTimeSeconds", this.leaseTimeSeconds);
+ return jsonWriter.writeEndObject();
+ }
+
+ /**
+ * Reads an instance of LeaseContainerResponseInner from the JsonReader.
+ *
+ * @param jsonReader The JsonReader being read.
+ * @return An instance of LeaseContainerResponseInner if the JsonReader was pointing to an instance of it, or null
+ * if it was pointing to JSON null.
+ * @throws IOException If an error occurs while reading the LeaseContainerResponseInner.
+ */
+ public static LeaseContainerResponseInner fromJson(JsonReader jsonReader) throws IOException {
+ return jsonReader.readObject(reader -> {
+ LeaseContainerResponseInner deserializedLeaseContainerResponseInner = new LeaseContainerResponseInner();
+ while (reader.nextToken() != JsonToken.END_OBJECT) {
+ String fieldName = reader.getFieldName();
+ reader.nextToken();
+
+ if ("leaseId".equals(fieldName)) {
+ deserializedLeaseContainerResponseInner.leaseId = reader.getString();
+ } else if ("leaseTimeSeconds".equals(fieldName)) {
+ deserializedLeaseContainerResponseInner.leaseTimeSeconds = reader.getString();
+ } else {
+ reader.skipChildren();
+ }
+ }
+
+ return deserializedLeaseContainerResponseInner;
+ });
+ }
+}
diff --git a/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/LeaseShareResponseInner.java b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/LeaseShareResponseInner.java
new file mode 100644
index 0000000000000..5870bfc3d33c1
--- /dev/null
+++ b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/LeaseShareResponseInner.java
@@ -0,0 +1,124 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.storage.generated.fluent.models;
+
+import com.azure.core.annotation.Fluent;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonSerializable;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
+
+/**
+ * Lease Share response schema.
+ */
+@Fluent
+public final class LeaseShareResponseInner implements JsonSerializable {
+ /*
+ * Returned unique lease ID that must be included with any request to delete the share, or to renew, change, or
+ * release the lease.
+ */
+ private String leaseId;
+
+ /*
+ * Approximate time remaining in the lease period, in seconds.
+ */
+ private String leaseTimeSeconds;
+
+ /**
+ * Creates an instance of LeaseShareResponseInner class.
+ */
+ public LeaseShareResponseInner() {
+ }
+
+ /**
+ * Get the leaseId property: Returned unique lease ID that must be included with any request to delete the share, or
+ * to renew, change, or release the lease.
+ *
+ * @return the leaseId value.
+ */
+ public String leaseId() {
+ return this.leaseId;
+ }
+
+ /**
+ * Set the leaseId property: Returned unique lease ID that must be included with any request to delete the share, or
+ * to renew, change, or release the lease.
+ *
+ * @param leaseId the leaseId value to set.
+ * @return the LeaseShareResponseInner object itself.
+ */
+ public LeaseShareResponseInner withLeaseId(String leaseId) {
+ this.leaseId = leaseId;
+ return this;
+ }
+
+ /**
+ * Get the leaseTimeSeconds property: Approximate time remaining in the lease period, in seconds.
+ *
+ * @return the leaseTimeSeconds value.
+ */
+ public String leaseTimeSeconds() {
+ return this.leaseTimeSeconds;
+ }
+
+ /**
+ * Set the leaseTimeSeconds property: Approximate time remaining in the lease period, in seconds.
+ *
+ * @param leaseTimeSeconds the leaseTimeSeconds value to set.
+ * @return the LeaseShareResponseInner object itself.
+ */
+ public LeaseShareResponseInner withLeaseTimeSeconds(String leaseTimeSeconds) {
+ this.leaseTimeSeconds = leaseTimeSeconds;
+ return this;
+ }
+
+ /**
+ * Validates the instance.
+ *
+ * @throws IllegalArgumentException thrown if the instance is not valid.
+ */
+ public void validate() {
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+ jsonWriter.writeStartObject();
+ jsonWriter.writeStringField("leaseId", this.leaseId);
+ jsonWriter.writeStringField("leaseTimeSeconds", this.leaseTimeSeconds);
+ return jsonWriter.writeEndObject();
+ }
+
+ /**
+ * Reads an instance of LeaseShareResponseInner from the JsonReader.
+ *
+ * @param jsonReader The JsonReader being read.
+ * @return An instance of LeaseShareResponseInner if the JsonReader was pointing to an instance of it, or null if it
+ * was pointing to JSON null.
+ * @throws IOException If an error occurs while reading the LeaseShareResponseInner.
+ */
+ public static LeaseShareResponseInner fromJson(JsonReader jsonReader) throws IOException {
+ return jsonReader.readObject(reader -> {
+ LeaseShareResponseInner deserializedLeaseShareResponseInner = new LeaseShareResponseInner();
+ while (reader.nextToken() != JsonToken.END_OBJECT) {
+ String fieldName = reader.getFieldName();
+ reader.nextToken();
+
+ if ("leaseId".equals(fieldName)) {
+ deserializedLeaseShareResponseInner.leaseId = reader.getString();
+ } else if ("leaseTimeSeconds".equals(fieldName)) {
+ deserializedLeaseShareResponseInner.leaseTimeSeconds = reader.getString();
+ } else {
+ reader.skipChildren();
+ }
+ }
+
+ return deserializedLeaseShareResponseInner;
+ });
+ }
+}
diff --git a/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/LegalHoldInner.java b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/LegalHoldInner.java
new file mode 100644
index 0000000000000..6f939fde5c3b5
--- /dev/null
+++ b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/LegalHoldInner.java
@@ -0,0 +1,157 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.storage.generated.fluent.models;
+
+import com.azure.core.annotation.Fluent;
+import com.azure.core.util.logging.ClientLogger;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonSerializable;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
+import java.util.List;
+
+/**
+ * The LegalHold property of a blob container.
+ */
+@Fluent
+public final class LegalHoldInner implements JsonSerializable {
+ /*
+ * The hasLegalHold public property is set to true by SRP if there are at least one existing tag. The hasLegalHold
+ * public property is set to false by SRP if all existing legal hold tags are cleared out. There can be a maximum of
+ * 1000 blob containers with hasLegalHold=true for a given account.
+ */
+ private Boolean hasLegalHold;
+
+ /*
+ * Each tag should be 3 to 23 alphanumeric characters and is normalized to lower case at SRP.
+ */
+ private List tags;
+
+ /*
+ * When enabled, new blocks can be written to both 'Append and Bock Blobs' while maintaining legal hold protection
+ * and compliance. Only new blocks can be added and any existing blocks cannot be modified or deleted.
+ */
+ private Boolean allowProtectedAppendWritesAll;
+
+ /**
+ * Creates an instance of LegalHoldInner class.
+ */
+ public LegalHoldInner() {
+ }
+
+ /**
+ * Get the hasLegalHold property: The hasLegalHold public property is set to true by SRP if there are at least one
+ * existing tag. The hasLegalHold public property is set to false by SRP if all existing legal hold tags are cleared
+ * out. There can be a maximum of 1000 blob containers with hasLegalHold=true for a given account.
+ *
+ * @return the hasLegalHold value.
+ */
+ public Boolean hasLegalHold() {
+ return this.hasLegalHold;
+ }
+
+ /**
+ * Get the tags property: Each tag should be 3 to 23 alphanumeric characters and is normalized to lower case at SRP.
+ *
+ * @return the tags value.
+ */
+ public List tags() {
+ return this.tags;
+ }
+
+ /**
+ * Set the tags property: Each tag should be 3 to 23 alphanumeric characters and is normalized to lower case at SRP.
+ *
+ * @param tags the tags value to set.
+ * @return the LegalHoldInner object itself.
+ */
+ public LegalHoldInner withTags(List tags) {
+ this.tags = tags;
+ return this;
+ }
+
+ /**
+ * Get the allowProtectedAppendWritesAll property: When enabled, new blocks can be written to both 'Append and Bock
+ * Blobs' while maintaining legal hold protection and compliance. Only new blocks can be added and any existing
+ * blocks cannot be modified or deleted.
+ *
+ * @return the allowProtectedAppendWritesAll value.
+ */
+ public Boolean allowProtectedAppendWritesAll() {
+ return this.allowProtectedAppendWritesAll;
+ }
+
+ /**
+ * Set the allowProtectedAppendWritesAll property: When enabled, new blocks can be written to both 'Append and Bock
+ * Blobs' while maintaining legal hold protection and compliance. Only new blocks can be added and any existing
+ * blocks cannot be modified or deleted.
+ *
+ * @param allowProtectedAppendWritesAll the allowProtectedAppendWritesAll value to set.
+ * @return the LegalHoldInner object itself.
+ */
+ public LegalHoldInner withAllowProtectedAppendWritesAll(Boolean allowProtectedAppendWritesAll) {
+ this.allowProtectedAppendWritesAll = allowProtectedAppendWritesAll;
+ return this;
+ }
+
+ /**
+ * Validates the instance.
+ *
+ * @throws IllegalArgumentException thrown if the instance is not valid.
+ */
+ public void validate() {
+ if (tags() == null) {
+ throw LOGGER.atError()
+ .log(new IllegalArgumentException("Missing required property tags in model LegalHoldInner"));
+ }
+ }
+
+ private static final ClientLogger LOGGER = new ClientLogger(LegalHoldInner.class);
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+ jsonWriter.writeStartObject();
+ jsonWriter.writeArrayField("tags", this.tags, (writer, element) -> writer.writeString(element));
+ jsonWriter.writeBooleanField("allowProtectedAppendWritesAll", this.allowProtectedAppendWritesAll);
+ return jsonWriter.writeEndObject();
+ }
+
+ /**
+ * Reads an instance of LegalHoldInner from the JsonReader.
+ *
+ * @param jsonReader The JsonReader being read.
+ * @return An instance of LegalHoldInner if the JsonReader was pointing to an instance of it, or null if it was
+ * pointing to JSON null.
+ * @throws IllegalStateException If the deserialized JSON object was missing any required properties.
+ * @throws IOException If an error occurs while reading the LegalHoldInner.
+ */
+ public static LegalHoldInner fromJson(JsonReader jsonReader) throws IOException {
+ return jsonReader.readObject(reader -> {
+ LegalHoldInner deserializedLegalHoldInner = new LegalHoldInner();
+ while (reader.nextToken() != JsonToken.END_OBJECT) {
+ String fieldName = reader.getFieldName();
+ reader.nextToken();
+
+ if ("tags".equals(fieldName)) {
+ List tags = reader.readArray(reader1 -> reader1.getString());
+ deserializedLegalHoldInner.tags = tags;
+ } else if ("hasLegalHold".equals(fieldName)) {
+ deserializedLegalHoldInner.hasLegalHold = reader.getNullable(JsonReader::getBoolean);
+ } else if ("allowProtectedAppendWritesAll".equals(fieldName)) {
+ deserializedLegalHoldInner.allowProtectedAppendWritesAll
+ = reader.getNullable(JsonReader::getBoolean);
+ } else {
+ reader.skipChildren();
+ }
+ }
+
+ return deserializedLegalHoldInner;
+ });
+ }
+}
diff --git a/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/ListAccountSasResponseInner.java b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/ListAccountSasResponseInner.java
new file mode 100644
index 0000000000000..0096e454c2785
--- /dev/null
+++ b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/ListAccountSasResponseInner.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.storage.generated.fluent.models;
+
+import com.azure.core.annotation.Immutable;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonSerializable;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
+
+/**
+ * The List SAS credentials operation response.
+ */
+@Immutable
+public final class ListAccountSasResponseInner implements JsonSerializable {
+ /*
+ * List SAS credentials of storage account.
+ */
+ private String accountSasToken;
+
+ /**
+ * Creates an instance of ListAccountSasResponseInner class.
+ */
+ public ListAccountSasResponseInner() {
+ }
+
+ /**
+ * Get the accountSasToken property: List SAS credentials of storage account.
+ *
+ * @return the accountSasToken value.
+ */
+ public String accountSasToken() {
+ return this.accountSasToken;
+ }
+
+ /**
+ * Validates the instance.
+ *
+ * @throws IllegalArgumentException thrown if the instance is not valid.
+ */
+ public void validate() {
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+ jsonWriter.writeStartObject();
+ return jsonWriter.writeEndObject();
+ }
+
+ /**
+ * Reads an instance of ListAccountSasResponseInner from the JsonReader.
+ *
+ * @param jsonReader The JsonReader being read.
+ * @return An instance of ListAccountSasResponseInner if the JsonReader was pointing to an instance of it, or null
+ * if it was pointing to JSON null.
+ * @throws IOException If an error occurs while reading the ListAccountSasResponseInner.
+ */
+ public static ListAccountSasResponseInner fromJson(JsonReader jsonReader) throws IOException {
+ return jsonReader.readObject(reader -> {
+ ListAccountSasResponseInner deserializedListAccountSasResponseInner = new ListAccountSasResponseInner();
+ while (reader.nextToken() != JsonToken.END_OBJECT) {
+ String fieldName = reader.getFieldName();
+ reader.nextToken();
+
+ if ("accountSasToken".equals(fieldName)) {
+ deserializedListAccountSasResponseInner.accountSasToken = reader.getString();
+ } else {
+ reader.skipChildren();
+ }
+ }
+
+ return deserializedListAccountSasResponseInner;
+ });
+ }
+}
diff --git a/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/ListContainerItemInner.java b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/ListContainerItemInner.java
new file mode 100644
index 0000000000000..16ec54c977ddb
--- /dev/null
+++ b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/ListContainerItemInner.java
@@ -0,0 +1,445 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.storage.generated.fluent.models;
+
+import com.azure.core.annotation.Fluent;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import com.azure.resourcemanager.storage.generated.models.AzureEntityResource;
+import com.azure.resourcemanager.storage.generated.models.ImmutabilityPolicyProperties;
+import com.azure.resourcemanager.storage.generated.models.ImmutableStorageWithVersioning;
+import com.azure.resourcemanager.storage.generated.models.LeaseDuration;
+import com.azure.resourcemanager.storage.generated.models.LeaseState;
+import com.azure.resourcemanager.storage.generated.models.LeaseStatus;
+import com.azure.resourcemanager.storage.generated.models.LegalHoldProperties;
+import com.azure.resourcemanager.storage.generated.models.PublicAccess;
+import java.io.IOException;
+import java.time.OffsetDateTime;
+import java.util.Map;
+
+/**
+ * The blob container properties be listed out.
+ */
+@Fluent
+public final class ListContainerItemInner extends AzureEntityResource {
+ /*
+ * The blob container properties be listed out.
+ */
+ private ContainerProperties innerProperties;
+
+ /*
+ * Resource Etag.
+ */
+ private String etag;
+
+ /*
+ * The type of the resource.
+ */
+ private String type;
+
+ /*
+ * The name of the resource.
+ */
+ private String name;
+
+ /*
+ * Fully qualified resource Id for the resource.
+ */
+ private String id;
+
+ /**
+ * Creates an instance of ListContainerItemInner class.
+ */
+ public ListContainerItemInner() {
+ }
+
+ /**
+ * Get the innerProperties property: The blob container properties be listed out.
+ *
+ * @return the innerProperties value.
+ */
+ private ContainerProperties innerProperties() {
+ return this.innerProperties;
+ }
+
+ /**
+ * Get the etag property: Resource Etag.
+ *
+ * @return the etag value.
+ */
+ @Override
+ public String etag() {
+ return this.etag;
+ }
+
+ /**
+ * Get the type property: The type of the resource.
+ *
+ * @return the type value.
+ */
+ @Override
+ public String type() {
+ return this.type;
+ }
+
+ /**
+ * Get the name property: The name of the resource.
+ *
+ * @return the name value.
+ */
+ @Override
+ public String name() {
+ return this.name;
+ }
+
+ /**
+ * Get the id property: Fully qualified resource Id for the resource.
+ *
+ * @return the id value.
+ */
+ @Override
+ public String id() {
+ return this.id;
+ }
+
+ /**
+ * Get the version property: The version of the deleted blob container.
+ *
+ * @return the version value.
+ */
+ public String version() {
+ return this.innerProperties() == null ? null : this.innerProperties().version();
+ }
+
+ /**
+ * Get the deleted property: Indicates whether the blob container was deleted.
+ *
+ * @return the deleted value.
+ */
+ public Boolean deleted() {
+ return this.innerProperties() == null ? null : this.innerProperties().deleted();
+ }
+
+ /**
+ * Get the deletedTime property: Blob container deletion time.
+ *
+ * @return the deletedTime value.
+ */
+ public OffsetDateTime deletedTime() {
+ return this.innerProperties() == null ? null : this.innerProperties().deletedTime();
+ }
+
+ /**
+ * Get the remainingRetentionDays property: Remaining retention days for soft deleted blob container.
+ *
+ * @return the remainingRetentionDays value.
+ */
+ public Integer remainingRetentionDays() {
+ return this.innerProperties() == null ? null : this.innerProperties().remainingRetentionDays();
+ }
+
+ /**
+ * Get the defaultEncryptionScope property: Default the container to use specified encryption scope for all writes.
+ *
+ * @return the defaultEncryptionScope value.
+ */
+ public String defaultEncryptionScope() {
+ return this.innerProperties() == null ? null : this.innerProperties().defaultEncryptionScope();
+ }
+
+ /**
+ * Set the defaultEncryptionScope property: Default the container to use specified encryption scope for all writes.
+ *
+ * @param defaultEncryptionScope the defaultEncryptionScope value to set.
+ * @return the ListContainerItemInner object itself.
+ */
+ public ListContainerItemInner withDefaultEncryptionScope(String defaultEncryptionScope) {
+ if (this.innerProperties() == null) {
+ this.innerProperties = new ContainerProperties();
+ }
+ this.innerProperties().withDefaultEncryptionScope(defaultEncryptionScope);
+ return this;
+ }
+
+ /**
+ * Get the denyEncryptionScopeOverride property: Block override of encryption scope from the container default.
+ *
+ * @return the denyEncryptionScopeOverride value.
+ */
+ public Boolean denyEncryptionScopeOverride() {
+ return this.innerProperties() == null ? null : this.innerProperties().denyEncryptionScopeOverride();
+ }
+
+ /**
+ * Set the denyEncryptionScopeOverride property: Block override of encryption scope from the container default.
+ *
+ * @param denyEncryptionScopeOverride the denyEncryptionScopeOverride value to set.
+ * @return the ListContainerItemInner object itself.
+ */
+ public ListContainerItemInner withDenyEncryptionScopeOverride(Boolean denyEncryptionScopeOverride) {
+ if (this.innerProperties() == null) {
+ this.innerProperties = new ContainerProperties();
+ }
+ this.innerProperties().withDenyEncryptionScopeOverride(denyEncryptionScopeOverride);
+ return this;
+ }
+
+ /**
+ * Get the publicAccess property: Specifies whether data in the container may be accessed publicly and the level of
+ * access.
+ *
+ * @return the publicAccess value.
+ */
+ public PublicAccess publicAccess() {
+ return this.innerProperties() == null ? null : this.innerProperties().publicAccess();
+ }
+
+ /**
+ * Set the publicAccess property: Specifies whether data in the container may be accessed publicly and the level of
+ * access.
+ *
+ * @param publicAccess the publicAccess value to set.
+ * @return the ListContainerItemInner object itself.
+ */
+ public ListContainerItemInner withPublicAccess(PublicAccess publicAccess) {
+ if (this.innerProperties() == null) {
+ this.innerProperties = new ContainerProperties();
+ }
+ this.innerProperties().withPublicAccess(publicAccess);
+ return this;
+ }
+
+ /**
+ * Get the lastModifiedTime property: Returns the date and time the container was last modified.
+ *
+ * @return the lastModifiedTime value.
+ */
+ public OffsetDateTime lastModifiedTime() {
+ return this.innerProperties() == null ? null : this.innerProperties().lastModifiedTime();
+ }
+
+ /**
+ * Get the leaseStatus property: The lease status of the container.
+ *
+ * @return the leaseStatus value.
+ */
+ public LeaseStatus leaseStatus() {
+ return this.innerProperties() == null ? null : this.innerProperties().leaseStatus();
+ }
+
+ /**
+ * Get the leaseState property: Lease state of the container.
+ *
+ * @return the leaseState value.
+ */
+ public LeaseState leaseState() {
+ return this.innerProperties() == null ? null : this.innerProperties().leaseState();
+ }
+
+ /**
+ * Get the leaseDuration property: Specifies whether the lease on a container is of infinite or fixed duration, only
+ * when the container is leased.
+ *
+ * @return the leaseDuration value.
+ */
+ public LeaseDuration leaseDuration() {
+ return this.innerProperties() == null ? null : this.innerProperties().leaseDuration();
+ }
+
+ /**
+ * Get the metadata property: A name-value pair to associate with the container as metadata.
+ *
+ * @return the metadata value.
+ */
+ public Map metadata() {
+ return this.innerProperties() == null ? null : this.innerProperties().metadata();
+ }
+
+ /**
+ * Set the metadata property: A name-value pair to associate with the container as metadata.
+ *
+ * @param metadata the metadata value to set.
+ * @return the ListContainerItemInner object itself.
+ */
+ public ListContainerItemInner withMetadata(Map metadata) {
+ if (this.innerProperties() == null) {
+ this.innerProperties = new ContainerProperties();
+ }
+ this.innerProperties().withMetadata(metadata);
+ return this;
+ }
+
+ /**
+ * Get the immutabilityPolicy property: The ImmutabilityPolicy property of the container.
+ *
+ * @return the immutabilityPolicy value.
+ */
+ public ImmutabilityPolicyProperties immutabilityPolicy() {
+ return this.innerProperties() == null ? null : this.innerProperties().immutabilityPolicy();
+ }
+
+ /**
+ * Get the legalHold property: The LegalHold property of the container.
+ *
+ * @return the legalHold value.
+ */
+ public LegalHoldProperties legalHold() {
+ return this.innerProperties() == null ? null : this.innerProperties().legalHold();
+ }
+
+ /**
+ * Get the hasLegalHold property: The hasLegalHold public property is set to true by SRP if there are at least one
+ * existing tag. The hasLegalHold public property is set to false by SRP if all existing legal hold tags are cleared
+ * out. There can be a maximum of 1000 blob containers with hasLegalHold=true for a given account.
+ *
+ * @return the hasLegalHold value.
+ */
+ public Boolean hasLegalHold() {
+ return this.innerProperties() == null ? null : this.innerProperties().hasLegalHold();
+ }
+
+ /**
+ * Get the hasImmutabilityPolicy property: The hasImmutabilityPolicy public property is set to true by SRP if
+ * ImmutabilityPolicy has been created for this container. The hasImmutabilityPolicy public property is set to false
+ * by SRP if ImmutabilityPolicy has not been created for this container.
+ *
+ * @return the hasImmutabilityPolicy value.
+ */
+ public Boolean hasImmutabilityPolicy() {
+ return this.innerProperties() == null ? null : this.innerProperties().hasImmutabilityPolicy();
+ }
+
+ /**
+ * Get the immutableStorageWithVersioning property: The object level immutability property of the container. The
+ * property is immutable and can only be set to true at the container creation time. Existing containers must
+ * undergo a migration process.
+ *
+ * @return the immutableStorageWithVersioning value.
+ */
+ public ImmutableStorageWithVersioning immutableStorageWithVersioning() {
+ return this.innerProperties() == null ? null : this.innerProperties().immutableStorageWithVersioning();
+ }
+
+ /**
+ * Set the immutableStorageWithVersioning property: The object level immutability property of the container. The
+ * property is immutable and can only be set to true at the container creation time. Existing containers must
+ * undergo a migration process.
+ *
+ * @param immutableStorageWithVersioning the immutableStorageWithVersioning value to set.
+ * @return the ListContainerItemInner object itself.
+ */
+ public ListContainerItemInner
+ withImmutableStorageWithVersioning(ImmutableStorageWithVersioning immutableStorageWithVersioning) {
+ if (this.innerProperties() == null) {
+ this.innerProperties = new ContainerProperties();
+ }
+ this.innerProperties().withImmutableStorageWithVersioning(immutableStorageWithVersioning);
+ return this;
+ }
+
+ /**
+ * Get the enableNfsV3RootSquash property: Enable NFSv3 root squash on blob container.
+ *
+ * @return the enableNfsV3RootSquash value.
+ */
+ public Boolean enableNfsV3RootSquash() {
+ return this.innerProperties() == null ? null : this.innerProperties().enableNfsV3RootSquash();
+ }
+
+ /**
+ * Set the enableNfsV3RootSquash property: Enable NFSv3 root squash on blob container.
+ *
+ * @param enableNfsV3RootSquash the enableNfsV3RootSquash value to set.
+ * @return the ListContainerItemInner object itself.
+ */
+ public ListContainerItemInner withEnableNfsV3RootSquash(Boolean enableNfsV3RootSquash) {
+ if (this.innerProperties() == null) {
+ this.innerProperties = new ContainerProperties();
+ }
+ this.innerProperties().withEnableNfsV3RootSquash(enableNfsV3RootSquash);
+ return this;
+ }
+
+ /**
+ * Get the enableNfsV3AllSquash property: Enable NFSv3 all squash on blob container.
+ *
+ * @return the enableNfsV3AllSquash value.
+ */
+ public Boolean enableNfsV3AllSquash() {
+ return this.innerProperties() == null ? null : this.innerProperties().enableNfsV3AllSquash();
+ }
+
+ /**
+ * Set the enableNfsV3AllSquash property: Enable NFSv3 all squash on blob container.
+ *
+ * @param enableNfsV3AllSquash the enableNfsV3AllSquash value to set.
+ * @return the ListContainerItemInner object itself.
+ */
+ public ListContainerItemInner withEnableNfsV3AllSquash(Boolean enableNfsV3AllSquash) {
+ if (this.innerProperties() == null) {
+ this.innerProperties = new ContainerProperties();
+ }
+ this.innerProperties().withEnableNfsV3AllSquash(enableNfsV3AllSquash);
+ return this;
+ }
+
+ /**
+ * Validates the instance.
+ *
+ * @throws IllegalArgumentException thrown if the instance is not valid.
+ */
+ @Override
+ public void validate() {
+ if (innerProperties() != null) {
+ innerProperties().validate();
+ }
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+ jsonWriter.writeStartObject();
+ jsonWriter.writeJsonField("properties", this.innerProperties);
+ return jsonWriter.writeEndObject();
+ }
+
+ /**
+ * Reads an instance of ListContainerItemInner from the JsonReader.
+ *
+ * @param jsonReader The JsonReader being read.
+ * @return An instance of ListContainerItemInner if the JsonReader was pointing to an instance of it, or null if it
+ * was pointing to JSON null.
+ * @throws IllegalStateException If the deserialized JSON object was missing any required properties.
+ * @throws IOException If an error occurs while reading the ListContainerItemInner.
+ */
+ public static ListContainerItemInner fromJson(JsonReader jsonReader) throws IOException {
+ return jsonReader.readObject(reader -> {
+ ListContainerItemInner deserializedListContainerItemInner = new ListContainerItemInner();
+ while (reader.nextToken() != JsonToken.END_OBJECT) {
+ String fieldName = reader.getFieldName();
+ reader.nextToken();
+
+ if ("id".equals(fieldName)) {
+ deserializedListContainerItemInner.id = reader.getString();
+ } else if ("name".equals(fieldName)) {
+ deserializedListContainerItemInner.name = reader.getString();
+ } else if ("type".equals(fieldName)) {
+ deserializedListContainerItemInner.type = reader.getString();
+ } else if ("etag".equals(fieldName)) {
+ deserializedListContainerItemInner.etag = reader.getString();
+ } else if ("properties".equals(fieldName)) {
+ deserializedListContainerItemInner.innerProperties = ContainerProperties.fromJson(reader);
+ } else {
+ reader.skipChildren();
+ }
+ }
+
+ return deserializedListContainerItemInner;
+ });
+ }
+}
diff --git a/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/ListQueueInner.java b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/ListQueueInner.java
new file mode 100644
index 0000000000000..1b9110e8e9d16
--- /dev/null
+++ b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/ListQueueInner.java
@@ -0,0 +1,161 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.storage.generated.fluent.models;
+
+import com.azure.core.annotation.Fluent;
+import com.azure.core.management.ProxyResource;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
+import java.util.Map;
+
+/**
+ * The ListQueue model.
+ */
+@Fluent
+public final class ListQueueInner extends ProxyResource {
+ /*
+ * List Queue resource properties.
+ */
+ private ListQueueProperties innerQueueProperties;
+
+ /*
+ * The type of the resource.
+ */
+ private String type;
+
+ /*
+ * The name of the resource.
+ */
+ private String name;
+
+ /*
+ * Fully qualified resource Id for the resource.
+ */
+ private String id;
+
+ /**
+ * Creates an instance of ListQueueInner class.
+ */
+ public ListQueueInner() {
+ }
+
+ /**
+ * Get the innerQueueProperties property: List Queue resource properties.
+ *
+ * @return the innerQueueProperties value.
+ */
+ private ListQueueProperties innerQueueProperties() {
+ return this.innerQueueProperties;
+ }
+
+ /**
+ * Get the type property: The type of the resource.
+ *
+ * @return the type value.
+ */
+ @Override
+ public String type() {
+ return this.type;
+ }
+
+ /**
+ * Get the name property: The name of the resource.
+ *
+ * @return the name value.
+ */
+ @Override
+ public String name() {
+ return this.name;
+ }
+
+ /**
+ * Get the id property: Fully qualified resource Id for the resource.
+ *
+ * @return the id value.
+ */
+ @Override
+ public String id() {
+ return this.id;
+ }
+
+ /**
+ * Get the metadata property: A name-value pair that represents queue metadata.
+ *
+ * @return the metadata value.
+ */
+ public Map metadata() {
+ return this.innerQueueProperties() == null ? null : this.innerQueueProperties().metadata();
+ }
+
+ /**
+ * Set the metadata property: A name-value pair that represents queue metadata.
+ *
+ * @param metadata the metadata value to set.
+ * @return the ListQueueInner object itself.
+ */
+ public ListQueueInner withMetadata(Map metadata) {
+ if (this.innerQueueProperties() == null) {
+ this.innerQueueProperties = new ListQueueProperties();
+ }
+ this.innerQueueProperties().withMetadata(metadata);
+ return this;
+ }
+
+ /**
+ * Validates the instance.
+ *
+ * @throws IllegalArgumentException thrown if the instance is not valid.
+ */
+ public void validate() {
+ if (innerQueueProperties() != null) {
+ innerQueueProperties().validate();
+ }
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+ jsonWriter.writeStartObject();
+ jsonWriter.writeJsonField("properties", this.innerQueueProperties);
+ return jsonWriter.writeEndObject();
+ }
+
+ /**
+ * Reads an instance of ListQueueInner from the JsonReader.
+ *
+ * @param jsonReader The JsonReader being read.
+ * @return An instance of ListQueueInner if the JsonReader was pointing to an instance of it, or null if it was
+ * pointing to JSON null.
+ * @throws IllegalStateException If the deserialized JSON object was missing any required properties.
+ * @throws IOException If an error occurs while reading the ListQueueInner.
+ */
+ public static ListQueueInner fromJson(JsonReader jsonReader) throws IOException {
+ return jsonReader.readObject(reader -> {
+ ListQueueInner deserializedListQueueInner = new ListQueueInner();
+ while (reader.nextToken() != JsonToken.END_OBJECT) {
+ String fieldName = reader.getFieldName();
+ reader.nextToken();
+
+ if ("id".equals(fieldName)) {
+ deserializedListQueueInner.id = reader.getString();
+ } else if ("name".equals(fieldName)) {
+ deserializedListQueueInner.name = reader.getString();
+ } else if ("type".equals(fieldName)) {
+ deserializedListQueueInner.type = reader.getString();
+ } else if ("properties".equals(fieldName)) {
+ deserializedListQueueInner.innerQueueProperties = ListQueueProperties.fromJson(reader);
+ } else {
+ reader.skipChildren();
+ }
+ }
+
+ return deserializedListQueueInner;
+ });
+ }
+}
diff --git a/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/ListQueueProperties.java b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/ListQueueProperties.java
new file mode 100644
index 0000000000000..dcf3f10351e4b
--- /dev/null
+++ b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/ListQueueProperties.java
@@ -0,0 +1,95 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.storage.generated.fluent.models;
+
+import com.azure.core.annotation.Fluent;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonSerializable;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
+import java.util.Map;
+
+/**
+ * The ListQueueProperties model.
+ */
+@Fluent
+public final class ListQueueProperties implements JsonSerializable {
+ /*
+ * A name-value pair that represents queue metadata.
+ */
+ private Map metadata;
+
+ /**
+ * Creates an instance of ListQueueProperties class.
+ */
+ public ListQueueProperties() {
+ }
+
+ /**
+ * Get the metadata property: A name-value pair that represents queue metadata.
+ *
+ * @return the metadata value.
+ */
+ public Map metadata() {
+ return this.metadata;
+ }
+
+ /**
+ * Set the metadata property: A name-value pair that represents queue metadata.
+ *
+ * @param metadata the metadata value to set.
+ * @return the ListQueueProperties object itself.
+ */
+ public ListQueueProperties withMetadata(Map metadata) {
+ this.metadata = metadata;
+ return this;
+ }
+
+ /**
+ * Validates the instance.
+ *
+ * @throws IllegalArgumentException thrown if the instance is not valid.
+ */
+ public void validate() {
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+ jsonWriter.writeStartObject();
+ jsonWriter.writeMapField("metadata", this.metadata, (writer, element) -> writer.writeString(element));
+ return jsonWriter.writeEndObject();
+ }
+
+ /**
+ * Reads an instance of ListQueueProperties from the JsonReader.
+ *
+ * @param jsonReader The JsonReader being read.
+ * @return An instance of ListQueueProperties if the JsonReader was pointing to an instance of it, or null if it was
+ * pointing to JSON null.
+ * @throws IOException If an error occurs while reading the ListQueueProperties.
+ */
+ public static ListQueueProperties fromJson(JsonReader jsonReader) throws IOException {
+ return jsonReader.readObject(reader -> {
+ ListQueueProperties deserializedListQueueProperties = new ListQueueProperties();
+ while (reader.nextToken() != JsonToken.END_OBJECT) {
+ String fieldName = reader.getFieldName();
+ reader.nextToken();
+
+ if ("metadata".equals(fieldName)) {
+ Map metadata = reader.readMap(reader1 -> reader1.getString());
+ deserializedListQueueProperties.metadata = metadata;
+ } else {
+ reader.skipChildren();
+ }
+ }
+
+ return deserializedListQueueProperties;
+ });
+ }
+}
diff --git a/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/ListQueueServicesInner.java b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/ListQueueServicesInner.java
new file mode 100644
index 0000000000000..e817a5769792b
--- /dev/null
+++ b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/ListQueueServicesInner.java
@@ -0,0 +1,87 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.storage.generated.fluent.models;
+
+import com.azure.core.annotation.Immutable;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonSerializable;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
+import java.util.List;
+
+/**
+ * The ListQueueServices model.
+ */
+@Immutable
+public final class ListQueueServicesInner implements JsonSerializable {
+ /*
+ * List of queue services returned.
+ */
+ private List value;
+
+ /**
+ * Creates an instance of ListQueueServicesInner class.
+ */
+ public ListQueueServicesInner() {
+ }
+
+ /**
+ * Get the value property: List of queue services returned.
+ *
+ * @return the value value.
+ */
+ public List value() {
+ return this.value;
+ }
+
+ /**
+ * Validates the instance.
+ *
+ * @throws IllegalArgumentException thrown if the instance is not valid.
+ */
+ public void validate() {
+ if (value() != null) {
+ value().forEach(e -> e.validate());
+ }
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+ jsonWriter.writeStartObject();
+ return jsonWriter.writeEndObject();
+ }
+
+ /**
+ * Reads an instance of ListQueueServicesInner from the JsonReader.
+ *
+ * @param jsonReader The JsonReader being read.
+ * @return An instance of ListQueueServicesInner if the JsonReader was pointing to an instance of it, or null if it
+ * was pointing to JSON null.
+ * @throws IOException If an error occurs while reading the ListQueueServicesInner.
+ */
+ public static ListQueueServicesInner fromJson(JsonReader jsonReader) throws IOException {
+ return jsonReader.readObject(reader -> {
+ ListQueueServicesInner deserializedListQueueServicesInner = new ListQueueServicesInner();
+ while (reader.nextToken() != JsonToken.END_OBJECT) {
+ String fieldName = reader.getFieldName();
+ reader.nextToken();
+
+ if ("value".equals(fieldName)) {
+ List value
+ = reader.readArray(reader1 -> QueueServicePropertiesInner.fromJson(reader1));
+ deserializedListQueueServicesInner.value = value;
+ } else {
+ reader.skipChildren();
+ }
+ }
+
+ return deserializedListQueueServicesInner;
+ });
+ }
+}
diff --git a/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/ListServiceSasResponseInner.java b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/ListServiceSasResponseInner.java
new file mode 100644
index 0000000000000..b0fae4f0cd511
--- /dev/null
+++ b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/ListServiceSasResponseInner.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.storage.generated.fluent.models;
+
+import com.azure.core.annotation.Immutable;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonSerializable;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
+
+/**
+ * The List service SAS credentials operation response.
+ */
+@Immutable
+public final class ListServiceSasResponseInner implements JsonSerializable {
+ /*
+ * List service SAS credentials of specific resource.
+ */
+ private String serviceSasToken;
+
+ /**
+ * Creates an instance of ListServiceSasResponseInner class.
+ */
+ public ListServiceSasResponseInner() {
+ }
+
+ /**
+ * Get the serviceSasToken property: List service SAS credentials of specific resource.
+ *
+ * @return the serviceSasToken value.
+ */
+ public String serviceSasToken() {
+ return this.serviceSasToken;
+ }
+
+ /**
+ * Validates the instance.
+ *
+ * @throws IllegalArgumentException thrown if the instance is not valid.
+ */
+ public void validate() {
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+ jsonWriter.writeStartObject();
+ return jsonWriter.writeEndObject();
+ }
+
+ /**
+ * Reads an instance of ListServiceSasResponseInner from the JsonReader.
+ *
+ * @param jsonReader The JsonReader being read.
+ * @return An instance of ListServiceSasResponseInner if the JsonReader was pointing to an instance of it, or null
+ * if it was pointing to JSON null.
+ * @throws IOException If an error occurs while reading the ListServiceSasResponseInner.
+ */
+ public static ListServiceSasResponseInner fromJson(JsonReader jsonReader) throws IOException {
+ return jsonReader.readObject(reader -> {
+ ListServiceSasResponseInner deserializedListServiceSasResponseInner = new ListServiceSasResponseInner();
+ while (reader.nextToken() != JsonToken.END_OBJECT) {
+ String fieldName = reader.getFieldName();
+ reader.nextToken();
+
+ if ("serviceSasToken".equals(fieldName)) {
+ deserializedListServiceSasResponseInner.serviceSasToken = reader.getString();
+ } else {
+ reader.skipChildren();
+ }
+ }
+
+ return deserializedListServiceSasResponseInner;
+ });
+ }
+}
diff --git a/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/ListTableServicesInner.java b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/ListTableServicesInner.java
new file mode 100644
index 0000000000000..1ce46559be267
--- /dev/null
+++ b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/ListTableServicesInner.java
@@ -0,0 +1,87 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.storage.generated.fluent.models;
+
+import com.azure.core.annotation.Immutable;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonSerializable;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
+import java.util.List;
+
+/**
+ * The ListTableServices model.
+ */
+@Immutable
+public final class ListTableServicesInner implements JsonSerializable {
+ /*
+ * List of table services returned.
+ */
+ private List value;
+
+ /**
+ * Creates an instance of ListTableServicesInner class.
+ */
+ public ListTableServicesInner() {
+ }
+
+ /**
+ * Get the value property: List of table services returned.
+ *
+ * @return the value value.
+ */
+ public List value() {
+ return this.value;
+ }
+
+ /**
+ * Validates the instance.
+ *
+ * @throws IllegalArgumentException thrown if the instance is not valid.
+ */
+ public void validate() {
+ if (value() != null) {
+ value().forEach(e -> e.validate());
+ }
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+ jsonWriter.writeStartObject();
+ return jsonWriter.writeEndObject();
+ }
+
+ /**
+ * Reads an instance of ListTableServicesInner from the JsonReader.
+ *
+ * @param jsonReader The JsonReader being read.
+ * @return An instance of ListTableServicesInner if the JsonReader was pointing to an instance of it, or null if it
+ * was pointing to JSON null.
+ * @throws IOException If an error occurs while reading the ListTableServicesInner.
+ */
+ public static ListTableServicesInner fromJson(JsonReader jsonReader) throws IOException {
+ return jsonReader.readObject(reader -> {
+ ListTableServicesInner deserializedListTableServicesInner = new ListTableServicesInner();
+ while (reader.nextToken() != JsonToken.END_OBJECT) {
+ String fieldName = reader.getFieldName();
+ reader.nextToken();
+
+ if ("value".equals(fieldName)) {
+ List value
+ = reader.readArray(reader1 -> TableServicePropertiesInner.fromJson(reader1));
+ deserializedListTableServicesInner.value = value;
+ } else {
+ reader.skipChildren();
+ }
+ }
+
+ return deserializedListTableServicesInner;
+ });
+ }
+}
diff --git a/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/LocalUserInner.java b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/LocalUserInner.java
new file mode 100644
index 0000000000000..92a971c1b366d
--- /dev/null
+++ b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/LocalUserInner.java
@@ -0,0 +1,413 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.storage.generated.fluent.models;
+
+import com.azure.core.annotation.Fluent;
+import com.azure.core.management.ProxyResource;
+import com.azure.core.management.SystemData;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import com.azure.resourcemanager.storage.generated.models.PermissionScope;
+import com.azure.resourcemanager.storage.generated.models.SshPublicKey;
+import java.io.IOException;
+import java.util.List;
+
+/**
+ * The local user associated with the storage accounts.
+ */
+@Fluent
+public final class LocalUserInner extends ProxyResource {
+ /*
+ * Storage account local user properties.
+ */
+ private LocalUserProperties innerProperties;
+
+ /*
+ * Metadata pertaining to creation and last modification of the resource.
+ */
+ private SystemData systemData;
+
+ /*
+ * The type of the resource.
+ */
+ private String type;
+
+ /*
+ * The name of the resource.
+ */
+ private String name;
+
+ /*
+ * Fully qualified resource Id for the resource.
+ */
+ private String id;
+
+ /**
+ * Creates an instance of LocalUserInner class.
+ */
+ public LocalUserInner() {
+ }
+
+ /**
+ * Get the innerProperties property: Storage account local user properties.
+ *
+ * @return the innerProperties value.
+ */
+ private LocalUserProperties innerProperties() {
+ return this.innerProperties;
+ }
+
+ /**
+ * Get the systemData property: Metadata pertaining to creation and last modification of the resource.
+ *
+ * @return the systemData value.
+ */
+ public SystemData systemData() {
+ return this.systemData;
+ }
+
+ /**
+ * Get the type property: The type of the resource.
+ *
+ * @return the type value.
+ */
+ @Override
+ public String type() {
+ return this.type;
+ }
+
+ /**
+ * Get the name property: The name of the resource.
+ *
+ * @return the name value.
+ */
+ @Override
+ public String name() {
+ return this.name;
+ }
+
+ /**
+ * Get the id property: Fully qualified resource Id for the resource.
+ *
+ * @return the id value.
+ */
+ @Override
+ public String id() {
+ return this.id;
+ }
+
+ /**
+ * Get the permissionScopes property: The permission scopes of the local user.
+ *
+ * @return the permissionScopes value.
+ */
+ public List permissionScopes() {
+ return this.innerProperties() == null ? null : this.innerProperties().permissionScopes();
+ }
+
+ /**
+ * Set the permissionScopes property: The permission scopes of the local user.
+ *
+ * @param permissionScopes the permissionScopes value to set.
+ * @return the LocalUserInner object itself.
+ */
+ public LocalUserInner withPermissionScopes(List permissionScopes) {
+ if (this.innerProperties() == null) {
+ this.innerProperties = new LocalUserProperties();
+ }
+ this.innerProperties().withPermissionScopes(permissionScopes);
+ return this;
+ }
+
+ /**
+ * Get the homeDirectory property: Optional, local user home directory.
+ *
+ * @return the homeDirectory value.
+ */
+ public String homeDirectory() {
+ return this.innerProperties() == null ? null : this.innerProperties().homeDirectory();
+ }
+
+ /**
+ * Set the homeDirectory property: Optional, local user home directory.
+ *
+ * @param homeDirectory the homeDirectory value to set.
+ * @return the LocalUserInner object itself.
+ */
+ public LocalUserInner withHomeDirectory(String homeDirectory) {
+ if (this.innerProperties() == null) {
+ this.innerProperties = new LocalUserProperties();
+ }
+ this.innerProperties().withHomeDirectory(homeDirectory);
+ return this;
+ }
+
+ /**
+ * Get the sshAuthorizedKeys property: Optional, local user ssh authorized keys for SFTP.
+ *
+ * @return the sshAuthorizedKeys value.
+ */
+ public List sshAuthorizedKeys() {
+ return this.innerProperties() == null ? null : this.innerProperties().sshAuthorizedKeys();
+ }
+
+ /**
+ * Set the sshAuthorizedKeys property: Optional, local user ssh authorized keys for SFTP.
+ *
+ * @param sshAuthorizedKeys the sshAuthorizedKeys value to set.
+ * @return the LocalUserInner object itself.
+ */
+ public LocalUserInner withSshAuthorizedKeys(List sshAuthorizedKeys) {
+ if (this.innerProperties() == null) {
+ this.innerProperties = new LocalUserProperties();
+ }
+ this.innerProperties().withSshAuthorizedKeys(sshAuthorizedKeys);
+ return this;
+ }
+
+ /**
+ * Get the sid property: A unique Security Identifier that is generated by the server.
+ *
+ * @return the sid value.
+ */
+ public String sid() {
+ return this.innerProperties() == null ? null : this.innerProperties().sid();
+ }
+
+ /**
+ * Get the hasSharedKey property: Indicates whether shared key exists. Set it to false to remove existing shared
+ * key.
+ *
+ * @return the hasSharedKey value.
+ */
+ public Boolean hasSharedKey() {
+ return this.innerProperties() == null ? null : this.innerProperties().hasSharedKey();
+ }
+
+ /**
+ * Set the hasSharedKey property: Indicates whether shared key exists. Set it to false to remove existing shared
+ * key.
+ *
+ * @param hasSharedKey the hasSharedKey value to set.
+ * @return the LocalUserInner object itself.
+ */
+ public LocalUserInner withHasSharedKey(Boolean hasSharedKey) {
+ if (this.innerProperties() == null) {
+ this.innerProperties = new LocalUserProperties();
+ }
+ this.innerProperties().withHasSharedKey(hasSharedKey);
+ return this;
+ }
+
+ /**
+ * Get the hasSshKey property: Indicates whether ssh key exists. Set it to false to remove existing SSH key.
+ *
+ * @return the hasSshKey value.
+ */
+ public Boolean hasSshKey() {
+ return this.innerProperties() == null ? null : this.innerProperties().hasSshKey();
+ }
+
+ /**
+ * Set the hasSshKey property: Indicates whether ssh key exists. Set it to false to remove existing SSH key.
+ *
+ * @param hasSshKey the hasSshKey value to set.
+ * @return the LocalUserInner object itself.
+ */
+ public LocalUserInner withHasSshKey(Boolean hasSshKey) {
+ if (this.innerProperties() == null) {
+ this.innerProperties = new LocalUserProperties();
+ }
+ this.innerProperties().withHasSshKey(hasSshKey);
+ return this;
+ }
+
+ /**
+ * Get the hasSshPassword property: Indicates whether ssh password exists. Set it to false to remove existing SSH
+ * password.
+ *
+ * @return the hasSshPassword value.
+ */
+ public Boolean hasSshPassword() {
+ return this.innerProperties() == null ? null : this.innerProperties().hasSshPassword();
+ }
+
+ /**
+ * Set the hasSshPassword property: Indicates whether ssh password exists. Set it to false to remove existing SSH
+ * password.
+ *
+ * @param hasSshPassword the hasSshPassword value to set.
+ * @return the LocalUserInner object itself.
+ */
+ public LocalUserInner withHasSshPassword(Boolean hasSshPassword) {
+ if (this.innerProperties() == null) {
+ this.innerProperties = new LocalUserProperties();
+ }
+ this.innerProperties().withHasSshPassword(hasSshPassword);
+ return this;
+ }
+
+ /**
+ * Get the userId property: A unique Identifier that is generated by the server.
+ *
+ * @return the userId value.
+ */
+ public Integer userId() {
+ return this.innerProperties() == null ? null : this.innerProperties().userId();
+ }
+
+ /**
+ * Get the groupId property: An identifier for associating a group of users.
+ *
+ * @return the groupId value.
+ */
+ public Integer groupId() {
+ return this.innerProperties() == null ? null : this.innerProperties().groupId();
+ }
+
+ /**
+ * Set the groupId property: An identifier for associating a group of users.
+ *
+ * @param groupId the groupId value to set.
+ * @return the LocalUserInner object itself.
+ */
+ public LocalUserInner withGroupId(Integer groupId) {
+ if (this.innerProperties() == null) {
+ this.innerProperties = new LocalUserProperties();
+ }
+ this.innerProperties().withGroupId(groupId);
+ return this;
+ }
+
+ /**
+ * Get the allowAclAuthorization property: Indicates whether ACL authorization is allowed for this user. Set it to
+ * false to disallow using ACL authorization.
+ *
+ * @return the allowAclAuthorization value.
+ */
+ public Boolean allowAclAuthorization() {
+ return this.innerProperties() == null ? null : this.innerProperties().allowAclAuthorization();
+ }
+
+ /**
+ * Set the allowAclAuthorization property: Indicates whether ACL authorization is allowed for this user. Set it to
+ * false to disallow using ACL authorization.
+ *
+ * @param allowAclAuthorization the allowAclAuthorization value to set.
+ * @return the LocalUserInner object itself.
+ */
+ public LocalUserInner withAllowAclAuthorization(Boolean allowAclAuthorization) {
+ if (this.innerProperties() == null) {
+ this.innerProperties = new LocalUserProperties();
+ }
+ this.innerProperties().withAllowAclAuthorization(allowAclAuthorization);
+ return this;
+ }
+
+ /**
+ * Get the extendedGroups property: Supplementary group membership. Only applicable for local users enabled for
+ * NFSv3 access.
+ *
+ * @return the extendedGroups value.
+ */
+ public List extendedGroups() {
+ return this.innerProperties() == null ? null : this.innerProperties().extendedGroups();
+ }
+
+ /**
+ * Set the extendedGroups property: Supplementary group membership. Only applicable for local users enabled for
+ * NFSv3 access.
+ *
+ * @param extendedGroups the extendedGroups value to set.
+ * @return the LocalUserInner object itself.
+ */
+ public LocalUserInner withExtendedGroups(List extendedGroups) {
+ if (this.innerProperties() == null) {
+ this.innerProperties = new LocalUserProperties();
+ }
+ this.innerProperties().withExtendedGroups(extendedGroups);
+ return this;
+ }
+
+ /**
+ * Get the isNFSv3Enabled property: Indicates if the local user is enabled for access with NFSv3 protocol.
+ *
+ * @return the isNFSv3Enabled value.
+ */
+ public Boolean isNFSv3Enabled() {
+ return this.innerProperties() == null ? null : this.innerProperties().isNFSv3Enabled();
+ }
+
+ /**
+ * Set the isNFSv3Enabled property: Indicates if the local user is enabled for access with NFSv3 protocol.
+ *
+ * @param isNFSv3Enabled the isNFSv3Enabled value to set.
+ * @return the LocalUserInner object itself.
+ */
+ public LocalUserInner withIsNFSv3Enabled(Boolean isNFSv3Enabled) {
+ if (this.innerProperties() == null) {
+ this.innerProperties = new LocalUserProperties();
+ }
+ this.innerProperties().withIsNFSv3Enabled(isNFSv3Enabled);
+ return this;
+ }
+
+ /**
+ * Validates the instance.
+ *
+ * @throws IllegalArgumentException thrown if the instance is not valid.
+ */
+ public void validate() {
+ if (innerProperties() != null) {
+ innerProperties().validate();
+ }
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+ jsonWriter.writeStartObject();
+ jsonWriter.writeJsonField("properties", this.innerProperties);
+ return jsonWriter.writeEndObject();
+ }
+
+ /**
+ * Reads an instance of LocalUserInner from the JsonReader.
+ *
+ * @param jsonReader The JsonReader being read.
+ * @return An instance of LocalUserInner if the JsonReader was pointing to an instance of it, or null if it was
+ * pointing to JSON null.
+ * @throws IllegalStateException If the deserialized JSON object was missing any required properties.
+ * @throws IOException If an error occurs while reading the LocalUserInner.
+ */
+ public static LocalUserInner fromJson(JsonReader jsonReader) throws IOException {
+ return jsonReader.readObject(reader -> {
+ LocalUserInner deserializedLocalUserInner = new LocalUserInner();
+ while (reader.nextToken() != JsonToken.END_OBJECT) {
+ String fieldName = reader.getFieldName();
+ reader.nextToken();
+
+ if ("id".equals(fieldName)) {
+ deserializedLocalUserInner.id = reader.getString();
+ } else if ("name".equals(fieldName)) {
+ deserializedLocalUserInner.name = reader.getString();
+ } else if ("type".equals(fieldName)) {
+ deserializedLocalUserInner.type = reader.getString();
+ } else if ("properties".equals(fieldName)) {
+ deserializedLocalUserInner.innerProperties = LocalUserProperties.fromJson(reader);
+ } else if ("systemData".equals(fieldName)) {
+ deserializedLocalUserInner.systemData = SystemData.fromJson(reader);
+ } else {
+ reader.skipChildren();
+ }
+ }
+
+ return deserializedLocalUserInner;
+ });
+ }
+}
diff --git a/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/LocalUserKeysInner.java b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/LocalUserKeysInner.java
new file mode 100644
index 0000000000000..2bc0832f4ce0e
--- /dev/null
+++ b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/LocalUserKeysInner.java
@@ -0,0 +1,116 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.storage.generated.fluent.models;
+
+import com.azure.core.annotation.Fluent;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonSerializable;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import com.azure.resourcemanager.storage.generated.models.SshPublicKey;
+import java.io.IOException;
+import java.util.List;
+
+/**
+ * The Storage Account Local User keys.
+ */
+@Fluent
+public final class LocalUserKeysInner implements JsonSerializable {
+ /*
+ * Optional, local user ssh authorized keys for SFTP.
+ */
+ private List sshAuthorizedKeys;
+
+ /*
+ * Auto generated by the server for SMB authentication.
+ */
+ private String sharedKey;
+
+ /**
+ * Creates an instance of LocalUserKeysInner class.
+ */
+ public LocalUserKeysInner() {
+ }
+
+ /**
+ * Get the sshAuthorizedKeys property: Optional, local user ssh authorized keys for SFTP.
+ *
+ * @return the sshAuthorizedKeys value.
+ */
+ public List sshAuthorizedKeys() {
+ return this.sshAuthorizedKeys;
+ }
+
+ /**
+ * Set the sshAuthorizedKeys property: Optional, local user ssh authorized keys for SFTP.
+ *
+ * @param sshAuthorizedKeys the sshAuthorizedKeys value to set.
+ * @return the LocalUserKeysInner object itself.
+ */
+ public LocalUserKeysInner withSshAuthorizedKeys(List sshAuthorizedKeys) {
+ this.sshAuthorizedKeys = sshAuthorizedKeys;
+ return this;
+ }
+
+ /**
+ * Get the sharedKey property: Auto generated by the server for SMB authentication.
+ *
+ * @return the sharedKey value.
+ */
+ public String sharedKey() {
+ return this.sharedKey;
+ }
+
+ /**
+ * Validates the instance.
+ *
+ * @throws IllegalArgumentException thrown if the instance is not valid.
+ */
+ public void validate() {
+ if (sshAuthorizedKeys() != null) {
+ sshAuthorizedKeys().forEach(e -> e.validate());
+ }
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+ jsonWriter.writeStartObject();
+ jsonWriter.writeArrayField("sshAuthorizedKeys", this.sshAuthorizedKeys,
+ (writer, element) -> writer.writeJson(element));
+ return jsonWriter.writeEndObject();
+ }
+
+ /**
+ * Reads an instance of LocalUserKeysInner from the JsonReader.
+ *
+ * @param jsonReader The JsonReader being read.
+ * @return An instance of LocalUserKeysInner if the JsonReader was pointing to an instance of it, or null if it was
+ * pointing to JSON null.
+ * @throws IOException If an error occurs while reading the LocalUserKeysInner.
+ */
+ public static LocalUserKeysInner fromJson(JsonReader jsonReader) throws IOException {
+ return jsonReader.readObject(reader -> {
+ LocalUserKeysInner deserializedLocalUserKeysInner = new LocalUserKeysInner();
+ while (reader.nextToken() != JsonToken.END_OBJECT) {
+ String fieldName = reader.getFieldName();
+ reader.nextToken();
+
+ if ("sshAuthorizedKeys".equals(fieldName)) {
+ List sshAuthorizedKeys = reader.readArray(reader1 -> SshPublicKey.fromJson(reader1));
+ deserializedLocalUserKeysInner.sshAuthorizedKeys = sshAuthorizedKeys;
+ } else if ("sharedKey".equals(fieldName)) {
+ deserializedLocalUserKeysInner.sharedKey = reader.getString();
+ } else {
+ reader.skipChildren();
+ }
+ }
+
+ return deserializedLocalUserKeysInner;
+ });
+ }
+}
diff --git a/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/LocalUserProperties.java b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/LocalUserProperties.java
new file mode 100644
index 0000000000000..3377b5efbe4bc
--- /dev/null
+++ b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/LocalUserProperties.java
@@ -0,0 +1,402 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.storage.generated.fluent.models;
+
+import com.azure.core.annotation.Fluent;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonSerializable;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import com.azure.resourcemanager.storage.generated.models.PermissionScope;
+import com.azure.resourcemanager.storage.generated.models.SshPublicKey;
+import java.io.IOException;
+import java.util.List;
+
+/**
+ * The Storage Account Local User properties.
+ */
+@Fluent
+public final class LocalUserProperties implements JsonSerializable {
+ /*
+ * The permission scopes of the local user.
+ */
+ private List permissionScopes;
+
+ /*
+ * Optional, local user home directory.
+ */
+ private String homeDirectory;
+
+ /*
+ * Optional, local user ssh authorized keys for SFTP.
+ */
+ private List sshAuthorizedKeys;
+
+ /*
+ * A unique Security Identifier that is generated by the server.
+ */
+ private String sid;
+
+ /*
+ * Indicates whether shared key exists. Set it to false to remove existing shared key.
+ */
+ private Boolean hasSharedKey;
+
+ /*
+ * Indicates whether ssh key exists. Set it to false to remove existing SSH key.
+ */
+ private Boolean hasSshKey;
+
+ /*
+ * Indicates whether ssh password exists. Set it to false to remove existing SSH password.
+ */
+ private Boolean hasSshPassword;
+
+ /*
+ * A unique Identifier that is generated by the server.
+ */
+ private Integer userId;
+
+ /*
+ * An identifier for associating a group of users.
+ */
+ private Integer groupId;
+
+ /*
+ * Indicates whether ACL authorization is allowed for this user. Set it to false to disallow using ACL
+ * authorization.
+ */
+ private Boolean allowAclAuthorization;
+
+ /*
+ * Supplementary group membership. Only applicable for local users enabled for NFSv3 access.
+ */
+ private List extendedGroups;
+
+ /*
+ * Indicates if the local user is enabled for access with NFSv3 protocol.
+ */
+ private Boolean isNFSv3Enabled;
+
+ /**
+ * Creates an instance of LocalUserProperties class.
+ */
+ public LocalUserProperties() {
+ }
+
+ /**
+ * Get the permissionScopes property: The permission scopes of the local user.
+ *
+ * @return the permissionScopes value.
+ */
+ public List permissionScopes() {
+ return this.permissionScopes;
+ }
+
+ /**
+ * Set the permissionScopes property: The permission scopes of the local user.
+ *
+ * @param permissionScopes the permissionScopes value to set.
+ * @return the LocalUserProperties object itself.
+ */
+ public LocalUserProperties withPermissionScopes(List permissionScopes) {
+ this.permissionScopes = permissionScopes;
+ return this;
+ }
+
+ /**
+ * Get the homeDirectory property: Optional, local user home directory.
+ *
+ * @return the homeDirectory value.
+ */
+ public String homeDirectory() {
+ return this.homeDirectory;
+ }
+
+ /**
+ * Set the homeDirectory property: Optional, local user home directory.
+ *
+ * @param homeDirectory the homeDirectory value to set.
+ * @return the LocalUserProperties object itself.
+ */
+ public LocalUserProperties withHomeDirectory(String homeDirectory) {
+ this.homeDirectory = homeDirectory;
+ return this;
+ }
+
+ /**
+ * Get the sshAuthorizedKeys property: Optional, local user ssh authorized keys for SFTP.
+ *
+ * @return the sshAuthorizedKeys value.
+ */
+ public List sshAuthorizedKeys() {
+ return this.sshAuthorizedKeys;
+ }
+
+ /**
+ * Set the sshAuthorizedKeys property: Optional, local user ssh authorized keys for SFTP.
+ *
+ * @param sshAuthorizedKeys the sshAuthorizedKeys value to set.
+ * @return the LocalUserProperties object itself.
+ */
+ public LocalUserProperties withSshAuthorizedKeys(List sshAuthorizedKeys) {
+ this.sshAuthorizedKeys = sshAuthorizedKeys;
+ return this;
+ }
+
+ /**
+ * Get the sid property: A unique Security Identifier that is generated by the server.
+ *
+ * @return the sid value.
+ */
+ public String sid() {
+ return this.sid;
+ }
+
+ /**
+ * Get the hasSharedKey property: Indicates whether shared key exists. Set it to false to remove existing shared
+ * key.
+ *
+ * @return the hasSharedKey value.
+ */
+ public Boolean hasSharedKey() {
+ return this.hasSharedKey;
+ }
+
+ /**
+ * Set the hasSharedKey property: Indicates whether shared key exists. Set it to false to remove existing shared
+ * key.
+ *
+ * @param hasSharedKey the hasSharedKey value to set.
+ * @return the LocalUserProperties object itself.
+ */
+ public LocalUserProperties withHasSharedKey(Boolean hasSharedKey) {
+ this.hasSharedKey = hasSharedKey;
+ return this;
+ }
+
+ /**
+ * Get the hasSshKey property: Indicates whether ssh key exists. Set it to false to remove existing SSH key.
+ *
+ * @return the hasSshKey value.
+ */
+ public Boolean hasSshKey() {
+ return this.hasSshKey;
+ }
+
+ /**
+ * Set the hasSshKey property: Indicates whether ssh key exists. Set it to false to remove existing SSH key.
+ *
+ * @param hasSshKey the hasSshKey value to set.
+ * @return the LocalUserProperties object itself.
+ */
+ public LocalUserProperties withHasSshKey(Boolean hasSshKey) {
+ this.hasSshKey = hasSshKey;
+ return this;
+ }
+
+ /**
+ * Get the hasSshPassword property: Indicates whether ssh password exists. Set it to false to remove existing SSH
+ * password.
+ *
+ * @return the hasSshPassword value.
+ */
+ public Boolean hasSshPassword() {
+ return this.hasSshPassword;
+ }
+
+ /**
+ * Set the hasSshPassword property: Indicates whether ssh password exists. Set it to false to remove existing SSH
+ * password.
+ *
+ * @param hasSshPassword the hasSshPassword value to set.
+ * @return the LocalUserProperties object itself.
+ */
+ public LocalUserProperties withHasSshPassword(Boolean hasSshPassword) {
+ this.hasSshPassword = hasSshPassword;
+ return this;
+ }
+
+ /**
+ * Get the userId property: A unique Identifier that is generated by the server.
+ *
+ * @return the userId value.
+ */
+ public Integer userId() {
+ return this.userId;
+ }
+
+ /**
+ * Get the groupId property: An identifier for associating a group of users.
+ *
+ * @return the groupId value.
+ */
+ public Integer groupId() {
+ return this.groupId;
+ }
+
+ /**
+ * Set the groupId property: An identifier for associating a group of users.
+ *
+ * @param groupId the groupId value to set.
+ * @return the LocalUserProperties object itself.
+ */
+ public LocalUserProperties withGroupId(Integer groupId) {
+ this.groupId = groupId;
+ return this;
+ }
+
+ /**
+ * Get the allowAclAuthorization property: Indicates whether ACL authorization is allowed for this user. Set it to
+ * false to disallow using ACL authorization.
+ *
+ * @return the allowAclAuthorization value.
+ */
+ public Boolean allowAclAuthorization() {
+ return this.allowAclAuthorization;
+ }
+
+ /**
+ * Set the allowAclAuthorization property: Indicates whether ACL authorization is allowed for this user. Set it to
+ * false to disallow using ACL authorization.
+ *
+ * @param allowAclAuthorization the allowAclAuthorization value to set.
+ * @return the LocalUserProperties object itself.
+ */
+ public LocalUserProperties withAllowAclAuthorization(Boolean allowAclAuthorization) {
+ this.allowAclAuthorization = allowAclAuthorization;
+ return this;
+ }
+
+ /**
+ * Get the extendedGroups property: Supplementary group membership. Only applicable for local users enabled for
+ * NFSv3 access.
+ *
+ * @return the extendedGroups value.
+ */
+ public List extendedGroups() {
+ return this.extendedGroups;
+ }
+
+ /**
+ * Set the extendedGroups property: Supplementary group membership. Only applicable for local users enabled for
+ * NFSv3 access.
+ *
+ * @param extendedGroups the extendedGroups value to set.
+ * @return the LocalUserProperties object itself.
+ */
+ public LocalUserProperties withExtendedGroups(List extendedGroups) {
+ this.extendedGroups = extendedGroups;
+ return this;
+ }
+
+ /**
+ * Get the isNFSv3Enabled property: Indicates if the local user is enabled for access with NFSv3 protocol.
+ *
+ * @return the isNFSv3Enabled value.
+ */
+ public Boolean isNFSv3Enabled() {
+ return this.isNFSv3Enabled;
+ }
+
+ /**
+ * Set the isNFSv3Enabled property: Indicates if the local user is enabled for access with NFSv3 protocol.
+ *
+ * @param isNFSv3Enabled the isNFSv3Enabled value to set.
+ * @return the LocalUserProperties object itself.
+ */
+ public LocalUserProperties withIsNFSv3Enabled(Boolean isNFSv3Enabled) {
+ this.isNFSv3Enabled = isNFSv3Enabled;
+ return this;
+ }
+
+ /**
+ * Validates the instance.
+ *
+ * @throws IllegalArgumentException thrown if the instance is not valid.
+ */
+ public void validate() {
+ if (permissionScopes() != null) {
+ permissionScopes().forEach(e -> e.validate());
+ }
+ if (sshAuthorizedKeys() != null) {
+ sshAuthorizedKeys().forEach(e -> e.validate());
+ }
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+ jsonWriter.writeStartObject();
+ jsonWriter.writeArrayField("permissionScopes", this.permissionScopes,
+ (writer, element) -> writer.writeJson(element));
+ jsonWriter.writeStringField("homeDirectory", this.homeDirectory);
+ jsonWriter.writeArrayField("sshAuthorizedKeys", this.sshAuthorizedKeys,
+ (writer, element) -> writer.writeJson(element));
+ jsonWriter.writeBooleanField("hasSharedKey", this.hasSharedKey);
+ jsonWriter.writeBooleanField("hasSshKey", this.hasSshKey);
+ jsonWriter.writeBooleanField("hasSshPassword", this.hasSshPassword);
+ jsonWriter.writeNumberField("groupId", this.groupId);
+ jsonWriter.writeBooleanField("allowAclAuthorization", this.allowAclAuthorization);
+ jsonWriter.writeArrayField("extendedGroups", this.extendedGroups,
+ (writer, element) -> writer.writeInt(element));
+ jsonWriter.writeBooleanField("isNFSv3Enabled", this.isNFSv3Enabled);
+ return jsonWriter.writeEndObject();
+ }
+
+ /**
+ * Reads an instance of LocalUserProperties from the JsonReader.
+ *
+ * @param jsonReader The JsonReader being read.
+ * @return An instance of LocalUserProperties if the JsonReader was pointing to an instance of it, or null if it was
+ * pointing to JSON null.
+ * @throws IOException If an error occurs while reading the LocalUserProperties.
+ */
+ public static LocalUserProperties fromJson(JsonReader jsonReader) throws IOException {
+ return jsonReader.readObject(reader -> {
+ LocalUserProperties deserializedLocalUserProperties = new LocalUserProperties();
+ while (reader.nextToken() != JsonToken.END_OBJECT) {
+ String fieldName = reader.getFieldName();
+ reader.nextToken();
+
+ if ("permissionScopes".equals(fieldName)) {
+ List permissionScopes
+ = reader.readArray(reader1 -> PermissionScope.fromJson(reader1));
+ deserializedLocalUserProperties.permissionScopes = permissionScopes;
+ } else if ("homeDirectory".equals(fieldName)) {
+ deserializedLocalUserProperties.homeDirectory = reader.getString();
+ } else if ("sshAuthorizedKeys".equals(fieldName)) {
+ List sshAuthorizedKeys = reader.readArray(reader1 -> SshPublicKey.fromJson(reader1));
+ deserializedLocalUserProperties.sshAuthorizedKeys = sshAuthorizedKeys;
+ } else if ("sid".equals(fieldName)) {
+ deserializedLocalUserProperties.sid = reader.getString();
+ } else if ("hasSharedKey".equals(fieldName)) {
+ deserializedLocalUserProperties.hasSharedKey = reader.getNullable(JsonReader::getBoolean);
+ } else if ("hasSshKey".equals(fieldName)) {
+ deserializedLocalUserProperties.hasSshKey = reader.getNullable(JsonReader::getBoolean);
+ } else if ("hasSshPassword".equals(fieldName)) {
+ deserializedLocalUserProperties.hasSshPassword = reader.getNullable(JsonReader::getBoolean);
+ } else if ("userId".equals(fieldName)) {
+ deserializedLocalUserProperties.userId = reader.getNullable(JsonReader::getInt);
+ } else if ("groupId".equals(fieldName)) {
+ deserializedLocalUserProperties.groupId = reader.getNullable(JsonReader::getInt);
+ } else if ("allowAclAuthorization".equals(fieldName)) {
+ deserializedLocalUserProperties.allowAclAuthorization = reader.getNullable(JsonReader::getBoolean);
+ } else if ("extendedGroups".equals(fieldName)) {
+ List extendedGroups = reader.readArray(reader1 -> reader1.getInt());
+ deserializedLocalUserProperties.extendedGroups = extendedGroups;
+ } else if ("isNFSv3Enabled".equals(fieldName)) {
+ deserializedLocalUserProperties.isNFSv3Enabled = reader.getNullable(JsonReader::getBoolean);
+ } else {
+ reader.skipChildren();
+ }
+ }
+
+ return deserializedLocalUserProperties;
+ });
+ }
+}
diff --git a/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/LocalUserRegeneratePasswordResultInner.java b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/LocalUserRegeneratePasswordResultInner.java
new file mode 100644
index 0000000000000..3ae94fd28b56f
--- /dev/null
+++ b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/LocalUserRegeneratePasswordResultInner.java
@@ -0,0 +1,85 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.storage.generated.fluent.models;
+
+import com.azure.core.annotation.Immutable;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonSerializable;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import java.io.IOException;
+
+/**
+ * The secrets of Storage Account Local User.
+ */
+@Immutable
+public final class LocalUserRegeneratePasswordResultInner
+ implements JsonSerializable {
+ /*
+ * Auto generated password by the server for SSH authentication if hasSshPassword is set to true on the creation of
+ * local user.
+ */
+ private String sshPassword;
+
+ /**
+ * Creates an instance of LocalUserRegeneratePasswordResultInner class.
+ */
+ public LocalUserRegeneratePasswordResultInner() {
+ }
+
+ /**
+ * Get the sshPassword property: Auto generated password by the server for SSH authentication if hasSshPassword is
+ * set to true on the creation of local user.
+ *
+ * @return the sshPassword value.
+ */
+ public String sshPassword() {
+ return this.sshPassword;
+ }
+
+ /**
+ * Validates the instance.
+ *
+ * @throws IllegalArgumentException thrown if the instance is not valid.
+ */
+ public void validate() {
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+ jsonWriter.writeStartObject();
+ return jsonWriter.writeEndObject();
+ }
+
+ /**
+ * Reads an instance of LocalUserRegeneratePasswordResultInner from the JsonReader.
+ *
+ * @param jsonReader The JsonReader being read.
+ * @return An instance of LocalUserRegeneratePasswordResultInner if the JsonReader was pointing to an instance of
+ * it, or null if it was pointing to JSON null.
+ * @throws IOException If an error occurs while reading the LocalUserRegeneratePasswordResultInner.
+ */
+ public static LocalUserRegeneratePasswordResultInner fromJson(JsonReader jsonReader) throws IOException {
+ return jsonReader.readObject(reader -> {
+ LocalUserRegeneratePasswordResultInner deserializedLocalUserRegeneratePasswordResultInner
+ = new LocalUserRegeneratePasswordResultInner();
+ while (reader.nextToken() != JsonToken.END_OBJECT) {
+ String fieldName = reader.getFieldName();
+ reader.nextToken();
+
+ if ("sshPassword".equals(fieldName)) {
+ deserializedLocalUserRegeneratePasswordResultInner.sshPassword = reader.getString();
+ } else {
+ reader.skipChildren();
+ }
+ }
+
+ return deserializedLocalUserRegeneratePasswordResultInner;
+ });
+ }
+}
diff --git a/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/ManagementPolicyInner.java b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/ManagementPolicyInner.java
new file mode 100644
index 0000000000000..cf068727066cd
--- /dev/null
+++ b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/ManagementPolicyInner.java
@@ -0,0 +1,173 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.storage.generated.fluent.models;
+
+import com.azure.core.annotation.Fluent;
+import com.azure.core.management.ProxyResource;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import com.azure.resourcemanager.storage.generated.models.ManagementPolicySchema;
+import java.io.IOException;
+import java.time.OffsetDateTime;
+
+/**
+ * The Get Storage Account ManagementPolicies operation response.
+ */
+@Fluent
+public final class ManagementPolicyInner extends ProxyResource {
+ /*
+ * Returns the Storage Account Data Policies Rules.
+ */
+ private ManagementPolicyProperties innerProperties;
+
+ /*
+ * The type of the resource.
+ */
+ private String type;
+
+ /*
+ * The name of the resource.
+ */
+ private String name;
+
+ /*
+ * Fully qualified resource Id for the resource.
+ */
+ private String id;
+
+ /**
+ * Creates an instance of ManagementPolicyInner class.
+ */
+ public ManagementPolicyInner() {
+ }
+
+ /**
+ * Get the innerProperties property: Returns the Storage Account Data Policies Rules.
+ *
+ * @return the innerProperties value.
+ */
+ private ManagementPolicyProperties innerProperties() {
+ return this.innerProperties;
+ }
+
+ /**
+ * Get the type property: The type of the resource.
+ *
+ * @return the type value.
+ */
+ @Override
+ public String type() {
+ return this.type;
+ }
+
+ /**
+ * Get the name property: The name of the resource.
+ *
+ * @return the name value.
+ */
+ @Override
+ public String name() {
+ return this.name;
+ }
+
+ /**
+ * Get the id property: Fully qualified resource Id for the resource.
+ *
+ * @return the id value.
+ */
+ @Override
+ public String id() {
+ return this.id;
+ }
+
+ /**
+ * Get the lastModifiedTime property: Returns the date and time the ManagementPolicies was last modified.
+ *
+ * @return the lastModifiedTime value.
+ */
+ public OffsetDateTime lastModifiedTime() {
+ return this.innerProperties() == null ? null : this.innerProperties().lastModifiedTime();
+ }
+
+ /**
+ * Get the policy property: The Storage Account ManagementPolicy, in JSON format. See more details in:
+ * https://docs.microsoft.com/en-us/azure/storage/common/storage-lifecycle-managment-concepts.
+ *
+ * @return the policy value.
+ */
+ public ManagementPolicySchema policy() {
+ return this.innerProperties() == null ? null : this.innerProperties().policy();
+ }
+
+ /**
+ * Set the policy property: The Storage Account ManagementPolicy, in JSON format. See more details in:
+ * https://docs.microsoft.com/en-us/azure/storage/common/storage-lifecycle-managment-concepts.
+ *
+ * @param policy the policy value to set.
+ * @return the ManagementPolicyInner object itself.
+ */
+ public ManagementPolicyInner withPolicy(ManagementPolicySchema policy) {
+ if (this.innerProperties() == null) {
+ this.innerProperties = new ManagementPolicyProperties();
+ }
+ this.innerProperties().withPolicy(policy);
+ return this;
+ }
+
+ /**
+ * Validates the instance.
+ *
+ * @throws IllegalArgumentException thrown if the instance is not valid.
+ */
+ public void validate() {
+ if (innerProperties() != null) {
+ innerProperties().validate();
+ }
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+ jsonWriter.writeStartObject();
+ jsonWriter.writeJsonField("properties", this.innerProperties);
+ return jsonWriter.writeEndObject();
+ }
+
+ /**
+ * Reads an instance of ManagementPolicyInner from the JsonReader.
+ *
+ * @param jsonReader The JsonReader being read.
+ * @return An instance of ManagementPolicyInner if the JsonReader was pointing to an instance of it, or null if it
+ * was pointing to JSON null.
+ * @throws IllegalStateException If the deserialized JSON object was missing any required properties.
+ * @throws IOException If an error occurs while reading the ManagementPolicyInner.
+ */
+ public static ManagementPolicyInner fromJson(JsonReader jsonReader) throws IOException {
+ return jsonReader.readObject(reader -> {
+ ManagementPolicyInner deserializedManagementPolicyInner = new ManagementPolicyInner();
+ while (reader.nextToken() != JsonToken.END_OBJECT) {
+ String fieldName = reader.getFieldName();
+ reader.nextToken();
+
+ if ("id".equals(fieldName)) {
+ deserializedManagementPolicyInner.id = reader.getString();
+ } else if ("name".equals(fieldName)) {
+ deserializedManagementPolicyInner.name = reader.getString();
+ } else if ("type".equals(fieldName)) {
+ deserializedManagementPolicyInner.type = reader.getString();
+ } else if ("properties".equals(fieldName)) {
+ deserializedManagementPolicyInner.innerProperties = ManagementPolicyProperties.fromJson(reader);
+ } else {
+ reader.skipChildren();
+ }
+ }
+
+ return deserializedManagementPolicyInner;
+ });
+ }
+}
diff --git a/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/ManagementPolicyProperties.java b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/ManagementPolicyProperties.java
new file mode 100644
index 0000000000000..86600b3388a0b
--- /dev/null
+++ b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/ManagementPolicyProperties.java
@@ -0,0 +1,127 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.storage.generated.fluent.models;
+
+import com.azure.core.annotation.Fluent;
+import com.azure.core.util.CoreUtils;
+import com.azure.core.util.logging.ClientLogger;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonSerializable;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import com.azure.resourcemanager.storage.generated.models.ManagementPolicySchema;
+import java.io.IOException;
+import java.time.OffsetDateTime;
+
+/**
+ * The Storage Account ManagementPolicy properties.
+ */
+@Fluent
+public final class ManagementPolicyProperties implements JsonSerializable {
+ /*
+ * Returns the date and time the ManagementPolicies was last modified.
+ */
+ private OffsetDateTime lastModifiedTime;
+
+ /*
+ * The Storage Account ManagementPolicy, in JSON format. See more details in:
+ * https://docs.microsoft.com/en-us/azure/storage/common/storage-lifecycle-managment-concepts.
+ */
+ private ManagementPolicySchema policy;
+
+ /**
+ * Creates an instance of ManagementPolicyProperties class.
+ */
+ public ManagementPolicyProperties() {
+ }
+
+ /**
+ * Get the lastModifiedTime property: Returns the date and time the ManagementPolicies was last modified.
+ *
+ * @return the lastModifiedTime value.
+ */
+ public OffsetDateTime lastModifiedTime() {
+ return this.lastModifiedTime;
+ }
+
+ /**
+ * Get the policy property: The Storage Account ManagementPolicy, in JSON format. See more details in:
+ * https://docs.microsoft.com/en-us/azure/storage/common/storage-lifecycle-managment-concepts.
+ *
+ * @return the policy value.
+ */
+ public ManagementPolicySchema policy() {
+ return this.policy;
+ }
+
+ /**
+ * Set the policy property: The Storage Account ManagementPolicy, in JSON format. See more details in:
+ * https://docs.microsoft.com/en-us/azure/storage/common/storage-lifecycle-managment-concepts.
+ *
+ * @param policy the policy value to set.
+ * @return the ManagementPolicyProperties object itself.
+ */
+ public ManagementPolicyProperties withPolicy(ManagementPolicySchema policy) {
+ this.policy = policy;
+ return this;
+ }
+
+ /**
+ * Validates the instance.
+ *
+ * @throws IllegalArgumentException thrown if the instance is not valid.
+ */
+ public void validate() {
+ if (policy() == null) {
+ throw LOGGER.atError()
+ .log(new IllegalArgumentException(
+ "Missing required property policy in model ManagementPolicyProperties"));
+ } else {
+ policy().validate();
+ }
+ }
+
+ private static final ClientLogger LOGGER = new ClientLogger(ManagementPolicyProperties.class);
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+ jsonWriter.writeStartObject();
+ jsonWriter.writeJsonField("policy", this.policy);
+ return jsonWriter.writeEndObject();
+ }
+
+ /**
+ * Reads an instance of ManagementPolicyProperties from the JsonReader.
+ *
+ * @param jsonReader The JsonReader being read.
+ * @return An instance of ManagementPolicyProperties if the JsonReader was pointing to an instance of it, or null if
+ * it was pointing to JSON null.
+ * @throws IllegalStateException If the deserialized JSON object was missing any required properties.
+ * @throws IOException If an error occurs while reading the ManagementPolicyProperties.
+ */
+ public static ManagementPolicyProperties fromJson(JsonReader jsonReader) throws IOException {
+ return jsonReader.readObject(reader -> {
+ ManagementPolicyProperties deserializedManagementPolicyProperties = new ManagementPolicyProperties();
+ while (reader.nextToken() != JsonToken.END_OBJECT) {
+ String fieldName = reader.getFieldName();
+ reader.nextToken();
+
+ if ("policy".equals(fieldName)) {
+ deserializedManagementPolicyProperties.policy = ManagementPolicySchema.fromJson(reader);
+ } else if ("lastModifiedTime".equals(fieldName)) {
+ deserializedManagementPolicyProperties.lastModifiedTime = reader
+ .getNullable(nonNullReader -> CoreUtils.parseBestOffsetDateTime(nonNullReader.getString()));
+ } else {
+ reader.skipChildren();
+ }
+ }
+
+ return deserializedManagementPolicyProperties;
+ });
+ }
+}
diff --git a/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/NetworkSecurityPerimeterConfigurationInner.java b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/NetworkSecurityPerimeterConfigurationInner.java
new file mode 100644
index 0000000000000..4bec7077ee5d6
--- /dev/null
+++ b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/NetworkSecurityPerimeterConfigurationInner.java
@@ -0,0 +1,206 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.storage.generated.fluent.models;
+
+import com.azure.core.annotation.Immutable;
+import com.azure.core.management.ProxyResource;
+import com.azure.core.management.SystemData;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import com.azure.resourcemanager.storage.generated.models.NetworkSecurityPerimeter;
+import com.azure.resourcemanager.storage.generated.models.NetworkSecurityPerimeterConfigurationPropertiesProfile;
+import com.azure.resourcemanager.storage.generated.models.NetworkSecurityPerimeterConfigurationPropertiesResourceAssociation;
+import com.azure.resourcemanager.storage.generated.models.NetworkSecurityPerimeterConfigurationProvisioningState;
+import com.azure.resourcemanager.storage.generated.models.ProvisioningIssue;
+import java.io.IOException;
+import java.util.List;
+
+/**
+ * The Network Security Perimeter configuration resource.
+ */
+@Immutable
+public final class NetworkSecurityPerimeterConfigurationInner extends ProxyResource {
+ /*
+ * Properties of the Network Security Perimeter Configuration
+ */
+ private NetworkSecurityPerimeterConfigurationProperties innerProperties;
+
+ /*
+ * Azure Resource Manager metadata containing createdBy and modifiedBy information.
+ */
+ private SystemData systemData;
+
+ /*
+ * The type of the resource.
+ */
+ private String type;
+
+ /*
+ * The name of the resource.
+ */
+ private String name;
+
+ /*
+ * Fully qualified resource Id for the resource.
+ */
+ private String id;
+
+ /**
+ * Creates an instance of NetworkSecurityPerimeterConfigurationInner class.
+ */
+ public NetworkSecurityPerimeterConfigurationInner() {
+ }
+
+ /**
+ * Get the innerProperties property: Properties of the Network Security Perimeter Configuration.
+ *
+ * @return the innerProperties value.
+ */
+ private NetworkSecurityPerimeterConfigurationProperties innerProperties() {
+ return this.innerProperties;
+ }
+
+ /**
+ * Get the systemData property: Azure Resource Manager metadata containing createdBy and modifiedBy information.
+ *
+ * @return the systemData value.
+ */
+ public SystemData systemData() {
+ return this.systemData;
+ }
+
+ /**
+ * Get the type property: The type of the resource.
+ *
+ * @return the type value.
+ */
+ @Override
+ public String type() {
+ return this.type;
+ }
+
+ /**
+ * Get the name property: The name of the resource.
+ *
+ * @return the name value.
+ */
+ @Override
+ public String name() {
+ return this.name;
+ }
+
+ /**
+ * Get the id property: Fully qualified resource Id for the resource.
+ *
+ * @return the id value.
+ */
+ @Override
+ public String id() {
+ return this.id;
+ }
+
+ /**
+ * Get the provisioningState property: Provisioning state of Network Security Perimeter configuration propagation.
+ *
+ * @return the provisioningState value.
+ */
+ public NetworkSecurityPerimeterConfigurationProvisioningState provisioningState() {
+ return this.innerProperties() == null ? null : this.innerProperties().provisioningState();
+ }
+
+ /**
+ * Get the provisioningIssues property: List of Provisioning Issues if any.
+ *
+ * @return the provisioningIssues value.
+ */
+ public List provisioningIssues() {
+ return this.innerProperties() == null ? null : this.innerProperties().provisioningIssues();
+ }
+
+ /**
+ * Get the networkSecurityPerimeter property: NetworkSecurityPerimeter related information.
+ *
+ * @return the networkSecurityPerimeter value.
+ */
+ public NetworkSecurityPerimeter networkSecurityPerimeter() {
+ return this.innerProperties() == null ? null : this.innerProperties().networkSecurityPerimeter();
+ }
+
+ /**
+ * Get the resourceAssociation property: Information about resource association.
+ *
+ * @return the resourceAssociation value.
+ */
+ public NetworkSecurityPerimeterConfigurationPropertiesResourceAssociation resourceAssociation() {
+ return this.innerProperties() == null ? null : this.innerProperties().resourceAssociation();
+ }
+
+ /**
+ * Get the profile property: Network Security Perimeter profile.
+ *
+ * @return the profile value.
+ */
+ public NetworkSecurityPerimeterConfigurationPropertiesProfile profile() {
+ return this.innerProperties() == null ? null : this.innerProperties().profile();
+ }
+
+ /**
+ * Validates the instance.
+ *
+ * @throws IllegalArgumentException thrown if the instance is not valid.
+ */
+ public void validate() {
+ if (innerProperties() != null) {
+ innerProperties().validate();
+ }
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+ jsonWriter.writeStartObject();
+ return jsonWriter.writeEndObject();
+ }
+
+ /**
+ * Reads an instance of NetworkSecurityPerimeterConfigurationInner from the JsonReader.
+ *
+ * @param jsonReader The JsonReader being read.
+ * @return An instance of NetworkSecurityPerimeterConfigurationInner if the JsonReader was pointing to an instance
+ * of it, or null if it was pointing to JSON null.
+ * @throws IllegalStateException If the deserialized JSON object was missing any required properties.
+ * @throws IOException If an error occurs while reading the NetworkSecurityPerimeterConfigurationInner.
+ */
+ public static NetworkSecurityPerimeterConfigurationInner fromJson(JsonReader jsonReader) throws IOException {
+ return jsonReader.readObject(reader -> {
+ NetworkSecurityPerimeterConfigurationInner deserializedNetworkSecurityPerimeterConfigurationInner
+ = new NetworkSecurityPerimeterConfigurationInner();
+ while (reader.nextToken() != JsonToken.END_OBJECT) {
+ String fieldName = reader.getFieldName();
+ reader.nextToken();
+
+ if ("id".equals(fieldName)) {
+ deserializedNetworkSecurityPerimeterConfigurationInner.id = reader.getString();
+ } else if ("name".equals(fieldName)) {
+ deserializedNetworkSecurityPerimeterConfigurationInner.name = reader.getString();
+ } else if ("type".equals(fieldName)) {
+ deserializedNetworkSecurityPerimeterConfigurationInner.type = reader.getString();
+ } else if ("properties".equals(fieldName)) {
+ deserializedNetworkSecurityPerimeterConfigurationInner.innerProperties
+ = NetworkSecurityPerimeterConfigurationProperties.fromJson(reader);
+ } else if ("systemData".equals(fieldName)) {
+ deserializedNetworkSecurityPerimeterConfigurationInner.systemData = SystemData.fromJson(reader);
+ } else {
+ reader.skipChildren();
+ }
+ }
+
+ return deserializedNetworkSecurityPerimeterConfigurationInner;
+ });
+ }
+}
diff --git a/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/NetworkSecurityPerimeterConfigurationProperties.java b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/NetworkSecurityPerimeterConfigurationProperties.java
new file mode 100644
index 0000000000000..e4ee9ff1f0721
--- /dev/null
+++ b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/NetworkSecurityPerimeterConfigurationProperties.java
@@ -0,0 +1,171 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.storage.generated.fluent.models;
+
+import com.azure.core.annotation.Immutable;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonSerializable;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import com.azure.resourcemanager.storage.generated.models.NetworkSecurityPerimeter;
+import com.azure.resourcemanager.storage.generated.models.NetworkSecurityPerimeterConfigurationPropertiesProfile;
+import com.azure.resourcemanager.storage.generated.models.NetworkSecurityPerimeterConfigurationPropertiesResourceAssociation;
+import com.azure.resourcemanager.storage.generated.models.NetworkSecurityPerimeterConfigurationProvisioningState;
+import com.azure.resourcemanager.storage.generated.models.ProvisioningIssue;
+import java.io.IOException;
+import java.util.List;
+
+/**
+ * Properties of the Network Security Perimeter Configuration.
+ */
+@Immutable
+public final class NetworkSecurityPerimeterConfigurationProperties
+ implements JsonSerializable {
+ /*
+ * Provisioning state of Network Security Perimeter configuration propagation
+ */
+ private NetworkSecurityPerimeterConfigurationProvisioningState provisioningState;
+
+ /*
+ * List of Provisioning Issues if any
+ */
+ private List provisioningIssues;
+
+ /*
+ * NetworkSecurityPerimeter related information
+ */
+ private NetworkSecurityPerimeter networkSecurityPerimeter;
+
+ /*
+ * Information about resource association
+ */
+ private NetworkSecurityPerimeterConfigurationPropertiesResourceAssociation resourceAssociation;
+
+ /*
+ * Network Security Perimeter profile
+ */
+ private NetworkSecurityPerimeterConfigurationPropertiesProfile profile;
+
+ /**
+ * Creates an instance of NetworkSecurityPerimeterConfigurationProperties class.
+ */
+ public NetworkSecurityPerimeterConfigurationProperties() {
+ }
+
+ /**
+ * Get the provisioningState property: Provisioning state of Network Security Perimeter configuration propagation.
+ *
+ * @return the provisioningState value.
+ */
+ public NetworkSecurityPerimeterConfigurationProvisioningState provisioningState() {
+ return this.provisioningState;
+ }
+
+ /**
+ * Get the provisioningIssues property: List of Provisioning Issues if any.
+ *
+ * @return the provisioningIssues value.
+ */
+ public List provisioningIssues() {
+ return this.provisioningIssues;
+ }
+
+ /**
+ * Get the networkSecurityPerimeter property: NetworkSecurityPerimeter related information.
+ *
+ * @return the networkSecurityPerimeter value.
+ */
+ public NetworkSecurityPerimeter networkSecurityPerimeter() {
+ return this.networkSecurityPerimeter;
+ }
+
+ /**
+ * Get the resourceAssociation property: Information about resource association.
+ *
+ * @return the resourceAssociation value.
+ */
+ public NetworkSecurityPerimeterConfigurationPropertiesResourceAssociation resourceAssociation() {
+ return this.resourceAssociation;
+ }
+
+ /**
+ * Get the profile property: Network Security Perimeter profile.
+ *
+ * @return the profile value.
+ */
+ public NetworkSecurityPerimeterConfigurationPropertiesProfile profile() {
+ return this.profile;
+ }
+
+ /**
+ * Validates the instance.
+ *
+ * @throws IllegalArgumentException thrown if the instance is not valid.
+ */
+ public void validate() {
+ if (provisioningIssues() != null) {
+ provisioningIssues().forEach(e -> e.validate());
+ }
+ if (networkSecurityPerimeter() != null) {
+ networkSecurityPerimeter().validate();
+ }
+ if (resourceAssociation() != null) {
+ resourceAssociation().validate();
+ }
+ if (profile() != null) {
+ profile().validate();
+ }
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+ jsonWriter.writeStartObject();
+ return jsonWriter.writeEndObject();
+ }
+
+ /**
+ * Reads an instance of NetworkSecurityPerimeterConfigurationProperties from the JsonReader.
+ *
+ * @param jsonReader The JsonReader being read.
+ * @return An instance of NetworkSecurityPerimeterConfigurationProperties if the JsonReader was pointing to an
+ * instance of it, or null if it was pointing to JSON null.
+ * @throws IOException If an error occurs while reading the NetworkSecurityPerimeterConfigurationProperties.
+ */
+ public static NetworkSecurityPerimeterConfigurationProperties fromJson(JsonReader jsonReader) throws IOException {
+ return jsonReader.readObject(reader -> {
+ NetworkSecurityPerimeterConfigurationProperties deserializedNetworkSecurityPerimeterConfigurationProperties
+ = new NetworkSecurityPerimeterConfigurationProperties();
+ while (reader.nextToken() != JsonToken.END_OBJECT) {
+ String fieldName = reader.getFieldName();
+ reader.nextToken();
+
+ if ("provisioningState".equals(fieldName)) {
+ deserializedNetworkSecurityPerimeterConfigurationProperties.provisioningState
+ = NetworkSecurityPerimeterConfigurationProvisioningState.fromString(reader.getString());
+ } else if ("provisioningIssues".equals(fieldName)) {
+ List provisioningIssues
+ = reader.readArray(reader1 -> ProvisioningIssue.fromJson(reader1));
+ deserializedNetworkSecurityPerimeterConfigurationProperties.provisioningIssues = provisioningIssues;
+ } else if ("networkSecurityPerimeter".equals(fieldName)) {
+ deserializedNetworkSecurityPerimeterConfigurationProperties.networkSecurityPerimeter
+ = NetworkSecurityPerimeter.fromJson(reader);
+ } else if ("resourceAssociation".equals(fieldName)) {
+ deserializedNetworkSecurityPerimeterConfigurationProperties.resourceAssociation
+ = NetworkSecurityPerimeterConfigurationPropertiesResourceAssociation.fromJson(reader);
+ } else if ("profile".equals(fieldName)) {
+ deserializedNetworkSecurityPerimeterConfigurationProperties.profile
+ = NetworkSecurityPerimeterConfigurationPropertiesProfile.fromJson(reader);
+ } else {
+ reader.skipChildren();
+ }
+ }
+
+ return deserializedNetworkSecurityPerimeterConfigurationProperties;
+ });
+ }
+}
diff --git a/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/ObjectReplicationPolicyInner.java b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/ObjectReplicationPolicyInner.java
new file mode 100644
index 0000000000000..fe59be6265c77
--- /dev/null
+++ b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/ObjectReplicationPolicyInner.java
@@ -0,0 +1,256 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.storage.generated.fluent.models;
+
+import com.azure.core.annotation.Fluent;
+import com.azure.core.management.ProxyResource;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import com.azure.resourcemanager.storage.generated.models.ObjectReplicationPolicyPropertiesMetrics;
+import com.azure.resourcemanager.storage.generated.models.ObjectReplicationPolicyRule;
+import java.io.IOException;
+import java.time.OffsetDateTime;
+import java.util.List;
+
+/**
+ * The replication policy between two storage accounts. Multiple rules can be defined in one policy.
+ */
+@Fluent
+public final class ObjectReplicationPolicyInner extends ProxyResource {
+ /*
+ * Returns the Storage Account Object Replication Policy.
+ */
+ private ObjectReplicationPolicyProperties innerProperties;
+
+ /*
+ * The type of the resource.
+ */
+ private String type;
+
+ /*
+ * The name of the resource.
+ */
+ private String name;
+
+ /*
+ * Fully qualified resource Id for the resource.
+ */
+ private String id;
+
+ /**
+ * Creates an instance of ObjectReplicationPolicyInner class.
+ */
+ public ObjectReplicationPolicyInner() {
+ }
+
+ /**
+ * Get the innerProperties property: Returns the Storage Account Object Replication Policy.
+ *
+ * @return the innerProperties value.
+ */
+ private ObjectReplicationPolicyProperties innerProperties() {
+ return this.innerProperties;
+ }
+
+ /**
+ * Get the type property: The type of the resource.
+ *
+ * @return the type value.
+ */
+ @Override
+ public String type() {
+ return this.type;
+ }
+
+ /**
+ * Get the name property: The name of the resource.
+ *
+ * @return the name value.
+ */
+ @Override
+ public String name() {
+ return this.name;
+ }
+
+ /**
+ * Get the id property: Fully qualified resource Id for the resource.
+ *
+ * @return the id value.
+ */
+ @Override
+ public String id() {
+ return this.id;
+ }
+
+ /**
+ * Get the policyId property: A unique id for object replication policy.
+ *
+ * @return the policyId value.
+ */
+ public String policyId() {
+ return this.innerProperties() == null ? null : this.innerProperties().policyId();
+ }
+
+ /**
+ * Get the enabledTime property: Indicates when the policy is enabled on the source account.
+ *
+ * @return the enabledTime value.
+ */
+ public OffsetDateTime enabledTime() {
+ return this.innerProperties() == null ? null : this.innerProperties().enabledTime();
+ }
+
+ /**
+ * Get the sourceAccount property: Required. Source account name. It should be full resource id if
+ * allowCrossTenantReplication set to false.
+ *
+ * @return the sourceAccount value.
+ */
+ public String sourceAccount() {
+ return this.innerProperties() == null ? null : this.innerProperties().sourceAccount();
+ }
+
+ /**
+ * Set the sourceAccount property: Required. Source account name. It should be full resource id if
+ * allowCrossTenantReplication set to false.
+ *
+ * @param sourceAccount the sourceAccount value to set.
+ * @return the ObjectReplicationPolicyInner object itself.
+ */
+ public ObjectReplicationPolicyInner withSourceAccount(String sourceAccount) {
+ if (this.innerProperties() == null) {
+ this.innerProperties = new ObjectReplicationPolicyProperties();
+ }
+ this.innerProperties().withSourceAccount(sourceAccount);
+ return this;
+ }
+
+ /**
+ * Get the destinationAccount property: Required. Destination account name. It should be full resource id if
+ * allowCrossTenantReplication set to false.
+ *
+ * @return the destinationAccount value.
+ */
+ public String destinationAccount() {
+ return this.innerProperties() == null ? null : this.innerProperties().destinationAccount();
+ }
+
+ /**
+ * Set the destinationAccount property: Required. Destination account name. It should be full resource id if
+ * allowCrossTenantReplication set to false.
+ *
+ * @param destinationAccount the destinationAccount value to set.
+ * @return the ObjectReplicationPolicyInner object itself.
+ */
+ public ObjectReplicationPolicyInner withDestinationAccount(String destinationAccount) {
+ if (this.innerProperties() == null) {
+ this.innerProperties = new ObjectReplicationPolicyProperties();
+ }
+ this.innerProperties().withDestinationAccount(destinationAccount);
+ return this;
+ }
+
+ /**
+ * Get the rules property: The storage account object replication rules.
+ *
+ * @return the rules value.
+ */
+ public List rules() {
+ return this.innerProperties() == null ? null : this.innerProperties().rules();
+ }
+
+ /**
+ * Set the rules property: The storage account object replication rules.
+ *
+ * @param rules the rules value to set.
+ * @return the ObjectReplicationPolicyInner object itself.
+ */
+ public ObjectReplicationPolicyInner withRules(List rules) {
+ if (this.innerProperties() == null) {
+ this.innerProperties = new ObjectReplicationPolicyProperties();
+ }
+ this.innerProperties().withRules(rules);
+ return this;
+ }
+
+ /**
+ * Get the metrics property: Optional. The object replication policy metrics feature options.
+ *
+ * @return the metrics value.
+ */
+ public ObjectReplicationPolicyPropertiesMetrics metrics() {
+ return this.innerProperties() == null ? null : this.innerProperties().metrics();
+ }
+
+ /**
+ * Set the metrics property: Optional. The object replication policy metrics feature options.
+ *
+ * @param metrics the metrics value to set.
+ * @return the ObjectReplicationPolicyInner object itself.
+ */
+ public ObjectReplicationPolicyInner withMetrics(ObjectReplicationPolicyPropertiesMetrics metrics) {
+ if (this.innerProperties() == null) {
+ this.innerProperties = new ObjectReplicationPolicyProperties();
+ }
+ this.innerProperties().withMetrics(metrics);
+ return this;
+ }
+
+ /**
+ * Validates the instance.
+ *
+ * @throws IllegalArgumentException thrown if the instance is not valid.
+ */
+ public void validate() {
+ if (innerProperties() != null) {
+ innerProperties().validate();
+ }
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+ jsonWriter.writeStartObject();
+ jsonWriter.writeJsonField("properties", this.innerProperties);
+ return jsonWriter.writeEndObject();
+ }
+
+ /**
+ * Reads an instance of ObjectReplicationPolicyInner from the JsonReader.
+ *
+ * @param jsonReader The JsonReader being read.
+ * @return An instance of ObjectReplicationPolicyInner if the JsonReader was pointing to an instance of it, or null
+ * if it was pointing to JSON null.
+ * @throws IllegalStateException If the deserialized JSON object was missing any required properties.
+ * @throws IOException If an error occurs while reading the ObjectReplicationPolicyInner.
+ */
+ public static ObjectReplicationPolicyInner fromJson(JsonReader jsonReader) throws IOException {
+ return jsonReader.readObject(reader -> {
+ ObjectReplicationPolicyInner deserializedObjectReplicationPolicyInner = new ObjectReplicationPolicyInner();
+ while (reader.nextToken() != JsonToken.END_OBJECT) {
+ String fieldName = reader.getFieldName();
+ reader.nextToken();
+
+ if ("id".equals(fieldName)) {
+ deserializedObjectReplicationPolicyInner.id = reader.getString();
+ } else if ("name".equals(fieldName)) {
+ deserializedObjectReplicationPolicyInner.name = reader.getString();
+ } else if ("type".equals(fieldName)) {
+ deserializedObjectReplicationPolicyInner.type = reader.getString();
+ } else if ("properties".equals(fieldName)) {
+ deserializedObjectReplicationPolicyInner.innerProperties
+ = ObjectReplicationPolicyProperties.fromJson(reader);
+ } else {
+ reader.skipChildren();
+ }
+ }
+
+ return deserializedObjectReplicationPolicyInner;
+ });
+ }
+}
diff --git a/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/ObjectReplicationPolicyProperties.java b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/ObjectReplicationPolicyProperties.java
new file mode 100644
index 0000000000000..19e2e22583a53
--- /dev/null
+++ b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/ObjectReplicationPolicyProperties.java
@@ -0,0 +1,243 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.storage.generated.fluent.models;
+
+import com.azure.core.annotation.Fluent;
+import com.azure.core.util.CoreUtils;
+import com.azure.core.util.logging.ClientLogger;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonSerializable;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import com.azure.resourcemanager.storage.generated.models.ObjectReplicationPolicyPropertiesMetrics;
+import com.azure.resourcemanager.storage.generated.models.ObjectReplicationPolicyRule;
+import java.io.IOException;
+import java.time.OffsetDateTime;
+import java.util.List;
+
+/**
+ * The Storage Account ObjectReplicationPolicy properties.
+ */
+@Fluent
+public final class ObjectReplicationPolicyProperties implements JsonSerializable {
+ /*
+ * A unique id for object replication policy.
+ */
+ private String policyId;
+
+ /*
+ * Indicates when the policy is enabled on the source account.
+ */
+ private OffsetDateTime enabledTime;
+
+ /*
+ * Required. Source account name. It should be full resource id if allowCrossTenantReplication set to false.
+ */
+ private String sourceAccount;
+
+ /*
+ * Required. Destination account name. It should be full resource id if allowCrossTenantReplication set to false.
+ */
+ private String destinationAccount;
+
+ /*
+ * The storage account object replication rules.
+ */
+ private List rules;
+
+ /*
+ * Optional. The object replication policy metrics feature options.
+ */
+ private ObjectReplicationPolicyPropertiesMetrics metrics;
+
+ /**
+ * Creates an instance of ObjectReplicationPolicyProperties class.
+ */
+ public ObjectReplicationPolicyProperties() {
+ }
+
+ /**
+ * Get the policyId property: A unique id for object replication policy.
+ *
+ * @return the policyId value.
+ */
+ public String policyId() {
+ return this.policyId;
+ }
+
+ /**
+ * Get the enabledTime property: Indicates when the policy is enabled on the source account.
+ *
+ * @return the enabledTime value.
+ */
+ public OffsetDateTime enabledTime() {
+ return this.enabledTime;
+ }
+
+ /**
+ * Get the sourceAccount property: Required. Source account name. It should be full resource id if
+ * allowCrossTenantReplication set to false.
+ *
+ * @return the sourceAccount value.
+ */
+ public String sourceAccount() {
+ return this.sourceAccount;
+ }
+
+ /**
+ * Set the sourceAccount property: Required. Source account name. It should be full resource id if
+ * allowCrossTenantReplication set to false.
+ *
+ * @param sourceAccount the sourceAccount value to set.
+ * @return the ObjectReplicationPolicyProperties object itself.
+ */
+ public ObjectReplicationPolicyProperties withSourceAccount(String sourceAccount) {
+ this.sourceAccount = sourceAccount;
+ return this;
+ }
+
+ /**
+ * Get the destinationAccount property: Required. Destination account name. It should be full resource id if
+ * allowCrossTenantReplication set to false.
+ *
+ * @return the destinationAccount value.
+ */
+ public String destinationAccount() {
+ return this.destinationAccount;
+ }
+
+ /**
+ * Set the destinationAccount property: Required. Destination account name. It should be full resource id if
+ * allowCrossTenantReplication set to false.
+ *
+ * @param destinationAccount the destinationAccount value to set.
+ * @return the ObjectReplicationPolicyProperties object itself.
+ */
+ public ObjectReplicationPolicyProperties withDestinationAccount(String destinationAccount) {
+ this.destinationAccount = destinationAccount;
+ return this;
+ }
+
+ /**
+ * Get the rules property: The storage account object replication rules.
+ *
+ * @return the rules value.
+ */
+ public List rules() {
+ return this.rules;
+ }
+
+ /**
+ * Set the rules property: The storage account object replication rules.
+ *
+ * @param rules the rules value to set.
+ * @return the ObjectReplicationPolicyProperties object itself.
+ */
+ public ObjectReplicationPolicyProperties withRules(List rules) {
+ this.rules = rules;
+ return this;
+ }
+
+ /**
+ * Get the metrics property: Optional. The object replication policy metrics feature options.
+ *
+ * @return the metrics value.
+ */
+ public ObjectReplicationPolicyPropertiesMetrics metrics() {
+ return this.metrics;
+ }
+
+ /**
+ * Set the metrics property: Optional. The object replication policy metrics feature options.
+ *
+ * @param metrics the metrics value to set.
+ * @return the ObjectReplicationPolicyProperties object itself.
+ */
+ public ObjectReplicationPolicyProperties withMetrics(ObjectReplicationPolicyPropertiesMetrics metrics) {
+ this.metrics = metrics;
+ return this;
+ }
+
+ /**
+ * Validates the instance.
+ *
+ * @throws IllegalArgumentException thrown if the instance is not valid.
+ */
+ public void validate() {
+ if (sourceAccount() == null) {
+ throw LOGGER.atError()
+ .log(new IllegalArgumentException(
+ "Missing required property sourceAccount in model ObjectReplicationPolicyProperties"));
+ }
+ if (destinationAccount() == null) {
+ throw LOGGER.atError()
+ .log(new IllegalArgumentException(
+ "Missing required property destinationAccount in model ObjectReplicationPolicyProperties"));
+ }
+ if (rules() != null) {
+ rules().forEach(e -> e.validate());
+ }
+ if (metrics() != null) {
+ metrics().validate();
+ }
+ }
+
+ private static final ClientLogger LOGGER = new ClientLogger(ObjectReplicationPolicyProperties.class);
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+ jsonWriter.writeStartObject();
+ jsonWriter.writeStringField("sourceAccount", this.sourceAccount);
+ jsonWriter.writeStringField("destinationAccount", this.destinationAccount);
+ jsonWriter.writeArrayField("rules", this.rules, (writer, element) -> writer.writeJson(element));
+ jsonWriter.writeJsonField("metrics", this.metrics);
+ return jsonWriter.writeEndObject();
+ }
+
+ /**
+ * Reads an instance of ObjectReplicationPolicyProperties from the JsonReader.
+ *
+ * @param jsonReader The JsonReader being read.
+ * @return An instance of ObjectReplicationPolicyProperties if the JsonReader was pointing to an instance of it, or
+ * null if it was pointing to JSON null.
+ * @throws IllegalStateException If the deserialized JSON object was missing any required properties.
+ * @throws IOException If an error occurs while reading the ObjectReplicationPolicyProperties.
+ */
+ public static ObjectReplicationPolicyProperties fromJson(JsonReader jsonReader) throws IOException {
+ return jsonReader.readObject(reader -> {
+ ObjectReplicationPolicyProperties deserializedObjectReplicationPolicyProperties
+ = new ObjectReplicationPolicyProperties();
+ while (reader.nextToken() != JsonToken.END_OBJECT) {
+ String fieldName = reader.getFieldName();
+ reader.nextToken();
+
+ if ("sourceAccount".equals(fieldName)) {
+ deserializedObjectReplicationPolicyProperties.sourceAccount = reader.getString();
+ } else if ("destinationAccount".equals(fieldName)) {
+ deserializedObjectReplicationPolicyProperties.destinationAccount = reader.getString();
+ } else if ("policyId".equals(fieldName)) {
+ deserializedObjectReplicationPolicyProperties.policyId = reader.getString();
+ } else if ("enabledTime".equals(fieldName)) {
+ deserializedObjectReplicationPolicyProperties.enabledTime = reader
+ .getNullable(nonNullReader -> CoreUtils.parseBestOffsetDateTime(nonNullReader.getString()));
+ } else if ("rules".equals(fieldName)) {
+ List rules
+ = reader.readArray(reader1 -> ObjectReplicationPolicyRule.fromJson(reader1));
+ deserializedObjectReplicationPolicyProperties.rules = rules;
+ } else if ("metrics".equals(fieldName)) {
+ deserializedObjectReplicationPolicyProperties.metrics
+ = ObjectReplicationPolicyPropertiesMetrics.fromJson(reader);
+ } else {
+ reader.skipChildren();
+ }
+ }
+
+ return deserializedObjectReplicationPolicyProperties;
+ });
+ }
+}
diff --git a/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/OperationInner.java b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/OperationInner.java
new file mode 100644
index 0000000000000..e8a95a51a029e
--- /dev/null
+++ b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/OperationInner.java
@@ -0,0 +1,197 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.storage.generated.fluent.models;
+
+import com.azure.core.annotation.Fluent;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonSerializable;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import com.azure.resourcemanager.storage.generated.models.OperationDisplay;
+import com.azure.resourcemanager.storage.generated.models.ServiceSpecification;
+import java.io.IOException;
+
+/**
+ * Storage REST API operation definition.
+ */
+@Fluent
+public final class OperationInner implements JsonSerializable {
+ /*
+ * Operation name: {provider}/{resource}/{operation}
+ */
+ private String name;
+
+ /*
+ * Display metadata associated with the operation.
+ */
+ private OperationDisplay display;
+
+ /*
+ * The origin of operations.
+ */
+ private String origin;
+
+ /*
+ * Properties of operation, include metric specifications.
+ */
+ private OperationProperties innerOperationProperties;
+
+ /**
+ * Creates an instance of OperationInner class.
+ */
+ public OperationInner() {
+ }
+
+ /**
+ * Get the name property: Operation name: {provider}/{resource}/{operation}.
+ *
+ * @return the name value.
+ */
+ public String name() {
+ return this.name;
+ }
+
+ /**
+ * Set the name property: Operation name: {provider}/{resource}/{operation}.
+ *
+ * @param name the name value to set.
+ * @return the OperationInner object itself.
+ */
+ public OperationInner withName(String name) {
+ this.name = name;
+ return this;
+ }
+
+ /**
+ * Get the display property: Display metadata associated with the operation.
+ *
+ * @return the display value.
+ */
+ public OperationDisplay display() {
+ return this.display;
+ }
+
+ /**
+ * Set the display property: Display metadata associated with the operation.
+ *
+ * @param display the display value to set.
+ * @return the OperationInner object itself.
+ */
+ public OperationInner withDisplay(OperationDisplay display) {
+ this.display = display;
+ return this;
+ }
+
+ /**
+ * Get the origin property: The origin of operations.
+ *
+ * @return the origin value.
+ */
+ public String origin() {
+ return this.origin;
+ }
+
+ /**
+ * Set the origin property: The origin of operations.
+ *
+ * @param origin the origin value to set.
+ * @return the OperationInner object itself.
+ */
+ public OperationInner withOrigin(String origin) {
+ this.origin = origin;
+ return this;
+ }
+
+ /**
+ * Get the innerOperationProperties property: Properties of operation, include metric specifications.
+ *
+ * @return the innerOperationProperties value.
+ */
+ private OperationProperties innerOperationProperties() {
+ return this.innerOperationProperties;
+ }
+
+ /**
+ * Get the serviceSpecification property: One property of operation, include metric specifications.
+ *
+ * @return the serviceSpecification value.
+ */
+ public ServiceSpecification serviceSpecification() {
+ return this.innerOperationProperties() == null ? null : this.innerOperationProperties().serviceSpecification();
+ }
+
+ /**
+ * Set the serviceSpecification property: One property of operation, include metric specifications.
+ *
+ * @param serviceSpecification the serviceSpecification value to set.
+ * @return the OperationInner object itself.
+ */
+ public OperationInner withServiceSpecification(ServiceSpecification serviceSpecification) {
+ if (this.innerOperationProperties() == null) {
+ this.innerOperationProperties = new OperationProperties();
+ }
+ this.innerOperationProperties().withServiceSpecification(serviceSpecification);
+ return this;
+ }
+
+ /**
+ * Validates the instance.
+ *
+ * @throws IllegalArgumentException thrown if the instance is not valid.
+ */
+ public void validate() {
+ if (display() != null) {
+ display().validate();
+ }
+ if (innerOperationProperties() != null) {
+ innerOperationProperties().validate();
+ }
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+ jsonWriter.writeStartObject();
+ jsonWriter.writeStringField("name", this.name);
+ jsonWriter.writeJsonField("display", this.display);
+ jsonWriter.writeStringField("origin", this.origin);
+ jsonWriter.writeJsonField("properties", this.innerOperationProperties);
+ return jsonWriter.writeEndObject();
+ }
+
+ /**
+ * Reads an instance of OperationInner from the JsonReader.
+ *
+ * @param jsonReader The JsonReader being read.
+ * @return An instance of OperationInner if the JsonReader was pointing to an instance of it, or null if it was
+ * pointing to JSON null.
+ * @throws IOException If an error occurs while reading the OperationInner.
+ */
+ public static OperationInner fromJson(JsonReader jsonReader) throws IOException {
+ return jsonReader.readObject(reader -> {
+ OperationInner deserializedOperationInner = new OperationInner();
+ while (reader.nextToken() != JsonToken.END_OBJECT) {
+ String fieldName = reader.getFieldName();
+ reader.nextToken();
+
+ if ("name".equals(fieldName)) {
+ deserializedOperationInner.name = reader.getString();
+ } else if ("display".equals(fieldName)) {
+ deserializedOperationInner.display = OperationDisplay.fromJson(reader);
+ } else if ("origin".equals(fieldName)) {
+ deserializedOperationInner.origin = reader.getString();
+ } else if ("properties".equals(fieldName)) {
+ deserializedOperationInner.innerOperationProperties = OperationProperties.fromJson(reader);
+ } else {
+ reader.skipChildren();
+ }
+ }
+
+ return deserializedOperationInner;
+ });
+ }
+}
diff --git a/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/OperationProperties.java b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/OperationProperties.java
new file mode 100644
index 0000000000000..61d27f128c7c3
--- /dev/null
+++ b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/OperationProperties.java
@@ -0,0 +1,97 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.storage.generated.fluent.models;
+
+import com.azure.core.annotation.Fluent;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonSerializable;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import com.azure.resourcemanager.storage.generated.models.ServiceSpecification;
+import java.io.IOException;
+
+/**
+ * Properties of operation, include metric specifications.
+ */
+@Fluent
+public final class OperationProperties implements JsonSerializable {
+ /*
+ * One property of operation, include metric specifications.
+ */
+ private ServiceSpecification serviceSpecification;
+
+ /**
+ * Creates an instance of OperationProperties class.
+ */
+ public OperationProperties() {
+ }
+
+ /**
+ * Get the serviceSpecification property: One property of operation, include metric specifications.
+ *
+ * @return the serviceSpecification value.
+ */
+ public ServiceSpecification serviceSpecification() {
+ return this.serviceSpecification;
+ }
+
+ /**
+ * Set the serviceSpecification property: One property of operation, include metric specifications.
+ *
+ * @param serviceSpecification the serviceSpecification value to set.
+ * @return the OperationProperties object itself.
+ */
+ public OperationProperties withServiceSpecification(ServiceSpecification serviceSpecification) {
+ this.serviceSpecification = serviceSpecification;
+ return this;
+ }
+
+ /**
+ * Validates the instance.
+ *
+ * @throws IllegalArgumentException thrown if the instance is not valid.
+ */
+ public void validate() {
+ if (serviceSpecification() != null) {
+ serviceSpecification().validate();
+ }
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+ jsonWriter.writeStartObject();
+ jsonWriter.writeJsonField("serviceSpecification", this.serviceSpecification);
+ return jsonWriter.writeEndObject();
+ }
+
+ /**
+ * Reads an instance of OperationProperties from the JsonReader.
+ *
+ * @param jsonReader The JsonReader being read.
+ * @return An instance of OperationProperties if the JsonReader was pointing to an instance of it, or null if it was
+ * pointing to JSON null.
+ * @throws IOException If an error occurs while reading the OperationProperties.
+ */
+ public static OperationProperties fromJson(JsonReader jsonReader) throws IOException {
+ return jsonReader.readObject(reader -> {
+ OperationProperties deserializedOperationProperties = new OperationProperties();
+ while (reader.nextToken() != JsonToken.END_OBJECT) {
+ String fieldName = reader.getFieldName();
+ reader.nextToken();
+
+ if ("serviceSpecification".equals(fieldName)) {
+ deserializedOperationProperties.serviceSpecification = ServiceSpecification.fromJson(reader);
+ } else {
+ reader.skipChildren();
+ }
+ }
+
+ return deserializedOperationProperties;
+ });
+ }
+}
diff --git a/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/PrivateEndpointConnectionInner.java b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/PrivateEndpointConnectionInner.java
new file mode 100644
index 0000000000000..4f96c1a477406
--- /dev/null
+++ b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/PrivateEndpointConnectionInner.java
@@ -0,0 +1,200 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.storage.generated.fluent.models;
+
+import com.azure.core.annotation.Fluent;
+import com.azure.core.management.ProxyResource;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import com.azure.resourcemanager.storage.generated.models.PrivateEndpoint;
+import com.azure.resourcemanager.storage.generated.models.PrivateEndpointConnectionProvisioningState;
+import com.azure.resourcemanager.storage.generated.models.PrivateLinkServiceConnectionState;
+import java.io.IOException;
+
+/**
+ * The Private Endpoint Connection resource.
+ */
+@Fluent
+public final class PrivateEndpointConnectionInner extends ProxyResource {
+ /*
+ * Resource properties.
+ */
+ private PrivateEndpointConnectionProperties innerProperties;
+
+ /*
+ * The type of the resource.
+ */
+ private String type;
+
+ /*
+ * The name of the resource.
+ */
+ private String name;
+
+ /*
+ * Fully qualified resource Id for the resource.
+ */
+ private String id;
+
+ /**
+ * Creates an instance of PrivateEndpointConnectionInner class.
+ */
+ public PrivateEndpointConnectionInner() {
+ }
+
+ /**
+ * Get the innerProperties property: Resource properties.
+ *
+ * @return the innerProperties value.
+ */
+ private PrivateEndpointConnectionProperties innerProperties() {
+ return this.innerProperties;
+ }
+
+ /**
+ * Get the type property: The type of the resource.
+ *
+ * @return the type value.
+ */
+ @Override
+ public String type() {
+ return this.type;
+ }
+
+ /**
+ * Get the name property: The name of the resource.
+ *
+ * @return the name value.
+ */
+ @Override
+ public String name() {
+ return this.name;
+ }
+
+ /**
+ * Get the id property: Fully qualified resource Id for the resource.
+ *
+ * @return the id value.
+ */
+ @Override
+ public String id() {
+ return this.id;
+ }
+
+ /**
+ * Get the privateEndpoint property: The resource of private end point.
+ *
+ * @return the privateEndpoint value.
+ */
+ public PrivateEndpoint privateEndpoint() {
+ return this.innerProperties() == null ? null : this.innerProperties().privateEndpoint();
+ }
+
+ /**
+ * Set the privateEndpoint property: The resource of private end point.
+ *
+ * @param privateEndpoint the privateEndpoint value to set.
+ * @return the PrivateEndpointConnectionInner object itself.
+ */
+ public PrivateEndpointConnectionInner withPrivateEndpoint(PrivateEndpoint privateEndpoint) {
+ if (this.innerProperties() == null) {
+ this.innerProperties = new PrivateEndpointConnectionProperties();
+ }
+ this.innerProperties().withPrivateEndpoint(privateEndpoint);
+ return this;
+ }
+
+ /**
+ * Get the privateLinkServiceConnectionState property: A collection of information about the state of the connection
+ * between service consumer and provider.
+ *
+ * @return the privateLinkServiceConnectionState value.
+ */
+ public PrivateLinkServiceConnectionState privateLinkServiceConnectionState() {
+ return this.innerProperties() == null ? null : this.innerProperties().privateLinkServiceConnectionState();
+ }
+
+ /**
+ * Set the privateLinkServiceConnectionState property: A collection of information about the state of the connection
+ * between service consumer and provider.
+ *
+ * @param privateLinkServiceConnectionState the privateLinkServiceConnectionState value to set.
+ * @return the PrivateEndpointConnectionInner object itself.
+ */
+ public PrivateEndpointConnectionInner
+ withPrivateLinkServiceConnectionState(PrivateLinkServiceConnectionState privateLinkServiceConnectionState) {
+ if (this.innerProperties() == null) {
+ this.innerProperties = new PrivateEndpointConnectionProperties();
+ }
+ this.innerProperties().withPrivateLinkServiceConnectionState(privateLinkServiceConnectionState);
+ return this;
+ }
+
+ /**
+ * Get the provisioningState property: The provisioning state of the private endpoint connection resource.
+ *
+ * @return the provisioningState value.
+ */
+ public PrivateEndpointConnectionProvisioningState provisioningState() {
+ return this.innerProperties() == null ? null : this.innerProperties().provisioningState();
+ }
+
+ /**
+ * Validates the instance.
+ *
+ * @throws IllegalArgumentException thrown if the instance is not valid.
+ */
+ public void validate() {
+ if (innerProperties() != null) {
+ innerProperties().validate();
+ }
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+ jsonWriter.writeStartObject();
+ jsonWriter.writeJsonField("properties", this.innerProperties);
+ return jsonWriter.writeEndObject();
+ }
+
+ /**
+ * Reads an instance of PrivateEndpointConnectionInner from the JsonReader.
+ *
+ * @param jsonReader The JsonReader being read.
+ * @return An instance of PrivateEndpointConnectionInner if the JsonReader was pointing to an instance of it, or
+ * null if it was pointing to JSON null.
+ * @throws IllegalStateException If the deserialized JSON object was missing any required properties.
+ * @throws IOException If an error occurs while reading the PrivateEndpointConnectionInner.
+ */
+ public static PrivateEndpointConnectionInner fromJson(JsonReader jsonReader) throws IOException {
+ return jsonReader.readObject(reader -> {
+ PrivateEndpointConnectionInner deserializedPrivateEndpointConnectionInner
+ = new PrivateEndpointConnectionInner();
+ while (reader.nextToken() != JsonToken.END_OBJECT) {
+ String fieldName = reader.getFieldName();
+ reader.nextToken();
+
+ if ("id".equals(fieldName)) {
+ deserializedPrivateEndpointConnectionInner.id = reader.getString();
+ } else if ("name".equals(fieldName)) {
+ deserializedPrivateEndpointConnectionInner.name = reader.getString();
+ } else if ("type".equals(fieldName)) {
+ deserializedPrivateEndpointConnectionInner.type = reader.getString();
+ } else if ("properties".equals(fieldName)) {
+ deserializedPrivateEndpointConnectionInner.innerProperties
+ = PrivateEndpointConnectionProperties.fromJson(reader);
+ } else {
+ reader.skipChildren();
+ }
+ }
+
+ return deserializedPrivateEndpointConnectionInner;
+ });
+ }
+}
diff --git a/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/PrivateEndpointConnectionProperties.java b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/PrivateEndpointConnectionProperties.java
new file mode 100644
index 0000000000000..75e958254335e
--- /dev/null
+++ b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/PrivateEndpointConnectionProperties.java
@@ -0,0 +1,161 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.storage.generated.fluent.models;
+
+import com.azure.core.annotation.Fluent;
+import com.azure.core.util.logging.ClientLogger;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonSerializable;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import com.azure.resourcemanager.storage.generated.models.PrivateEndpoint;
+import com.azure.resourcemanager.storage.generated.models.PrivateEndpointConnectionProvisioningState;
+import com.azure.resourcemanager.storage.generated.models.PrivateLinkServiceConnectionState;
+import java.io.IOException;
+
+/**
+ * Properties of the PrivateEndpointConnectProperties.
+ */
+@Fluent
+public final class PrivateEndpointConnectionProperties
+ implements JsonSerializable {
+ /*
+ * The resource of private end point.
+ */
+ private PrivateEndpoint privateEndpoint;
+
+ /*
+ * A collection of information about the state of the connection between service consumer and provider.
+ */
+ private PrivateLinkServiceConnectionState privateLinkServiceConnectionState;
+
+ /*
+ * The provisioning state of the private endpoint connection resource.
+ */
+ private PrivateEndpointConnectionProvisioningState provisioningState;
+
+ /**
+ * Creates an instance of PrivateEndpointConnectionProperties class.
+ */
+ public PrivateEndpointConnectionProperties() {
+ }
+
+ /**
+ * Get the privateEndpoint property: The resource of private end point.
+ *
+ * @return the privateEndpoint value.
+ */
+ public PrivateEndpoint privateEndpoint() {
+ return this.privateEndpoint;
+ }
+
+ /**
+ * Set the privateEndpoint property: The resource of private end point.
+ *
+ * @param privateEndpoint the privateEndpoint value to set.
+ * @return the PrivateEndpointConnectionProperties object itself.
+ */
+ public PrivateEndpointConnectionProperties withPrivateEndpoint(PrivateEndpoint privateEndpoint) {
+ this.privateEndpoint = privateEndpoint;
+ return this;
+ }
+
+ /**
+ * Get the privateLinkServiceConnectionState property: A collection of information about the state of the connection
+ * between service consumer and provider.
+ *
+ * @return the privateLinkServiceConnectionState value.
+ */
+ public PrivateLinkServiceConnectionState privateLinkServiceConnectionState() {
+ return this.privateLinkServiceConnectionState;
+ }
+
+ /**
+ * Set the privateLinkServiceConnectionState property: A collection of information about the state of the connection
+ * between service consumer and provider.
+ *
+ * @param privateLinkServiceConnectionState the privateLinkServiceConnectionState value to set.
+ * @return the PrivateEndpointConnectionProperties object itself.
+ */
+ public PrivateEndpointConnectionProperties
+ withPrivateLinkServiceConnectionState(PrivateLinkServiceConnectionState privateLinkServiceConnectionState) {
+ this.privateLinkServiceConnectionState = privateLinkServiceConnectionState;
+ return this;
+ }
+
+ /**
+ * Get the provisioningState property: The provisioning state of the private endpoint connection resource.
+ *
+ * @return the provisioningState value.
+ */
+ public PrivateEndpointConnectionProvisioningState provisioningState() {
+ return this.provisioningState;
+ }
+
+ /**
+ * Validates the instance.
+ *
+ * @throws IllegalArgumentException thrown if the instance is not valid.
+ */
+ public void validate() {
+ if (privateEndpoint() != null) {
+ privateEndpoint().validate();
+ }
+ if (privateLinkServiceConnectionState() == null) {
+ throw LOGGER.atError()
+ .log(new IllegalArgumentException(
+ "Missing required property privateLinkServiceConnectionState in model PrivateEndpointConnectionProperties"));
+ } else {
+ privateLinkServiceConnectionState().validate();
+ }
+ }
+
+ private static final ClientLogger LOGGER = new ClientLogger(PrivateEndpointConnectionProperties.class);
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
+ jsonWriter.writeStartObject();
+ jsonWriter.writeJsonField("privateLinkServiceConnectionState", this.privateLinkServiceConnectionState);
+ jsonWriter.writeJsonField("privateEndpoint", this.privateEndpoint);
+ return jsonWriter.writeEndObject();
+ }
+
+ /**
+ * Reads an instance of PrivateEndpointConnectionProperties from the JsonReader.
+ *
+ * @param jsonReader The JsonReader being read.
+ * @return An instance of PrivateEndpointConnectionProperties if the JsonReader was pointing to an instance of it,
+ * or null if it was pointing to JSON null.
+ * @throws IllegalStateException If the deserialized JSON object was missing any required properties.
+ * @throws IOException If an error occurs while reading the PrivateEndpointConnectionProperties.
+ */
+ public static PrivateEndpointConnectionProperties fromJson(JsonReader jsonReader) throws IOException {
+ return jsonReader.readObject(reader -> {
+ PrivateEndpointConnectionProperties deserializedPrivateEndpointConnectionProperties
+ = new PrivateEndpointConnectionProperties();
+ while (reader.nextToken() != JsonToken.END_OBJECT) {
+ String fieldName = reader.getFieldName();
+ reader.nextToken();
+
+ if ("privateLinkServiceConnectionState".equals(fieldName)) {
+ deserializedPrivateEndpointConnectionProperties.privateLinkServiceConnectionState
+ = PrivateLinkServiceConnectionState.fromJson(reader);
+ } else if ("privateEndpoint".equals(fieldName)) {
+ deserializedPrivateEndpointConnectionProperties.privateEndpoint = PrivateEndpoint.fromJson(reader);
+ } else if ("provisioningState".equals(fieldName)) {
+ deserializedPrivateEndpointConnectionProperties.provisioningState
+ = PrivateEndpointConnectionProvisioningState.fromString(reader.getString());
+ } else {
+ reader.skipChildren();
+ }
+ }
+
+ return deserializedPrivateEndpointConnectionProperties;
+ });
+ }
+}
diff --git a/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/PrivateLinkResourceListResultInner.java b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/PrivateLinkResourceListResultInner.java
new file mode 100644
index 0000000000000..d91ff05682249
--- /dev/null
+++ b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/PrivateLinkResourceListResultInner.java
@@ -0,0 +1,101 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.storage.generated.fluent.models;
+
+import com.azure.core.annotation.Fluent;
+import com.azure.json.JsonReader;
+import com.azure.json.JsonSerializable;
+import com.azure.json.JsonToken;
+import com.azure.json.JsonWriter;
+import com.azure.resourcemanager.storage.generated.models.PrivateLinkResource;
+import java.io.IOException;
+import java.util.List;
+
+/**
+ * A list of private link resources.
+ */
+@Fluent
+public final class PrivateLinkResourceListResultInner implements JsonSerializable