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 ArmChallengeAuthenticationPolicy(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 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 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 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;
+ }
+
+ /**
+ * @return Wrapped service client StorageManagementClient providing direct access to the underlying auto-generated
+ * API implementation, based on Azure REST API.
+ */
+ 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..4aca40c9f0030
--- /dev/null
+++ b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/BlobContainersClient.java
@@ -0,0 +1,694 @@
+// 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.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.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);
+
+ /**
+ * 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);
+
+ /**
+ * 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);
+
+ /**
+ * 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);
+
+ /**
+ * 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);
+
+ /**
+ * 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);
+
+ /**
+ * 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);
+
+ /**
+ * 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);
+
+ /**
+ * 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);
+
+ /**
+ * 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);
+
+ /**
+ * 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);
+
+ /**
+ * 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);
+
+ /**
+ * 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);
+
+ /**
+ * 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. A value of "*" can be used
+ * to apply the operation only if the immutability policy already exists. If omitted, this operation will always
+ * be applied.
+ * @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);
+
+ /**
+ * 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);
+
+ /**
+ * 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. A value of "*" can be used
+ * to apply the operation only if the immutability policy already exists. If omitted, this operation will always
+ * be applied.
+ * @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);
+
+ /**
+ * 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. A value of "*" can be used
+ * to apply the operation only if the immutability policy already exists. If omitted, this operation will always
+ * be applied.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.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);
+
+ /**
+ * 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. A value of "*" can be used
+ * to apply the operation only if the immutability policy already exists. If omitted, this operation will always
+ * be applied.
+ * @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);
+
+ /**
+ * 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. A value of "*" can be used
+ * to apply the operation only if the immutability policy already exists. If omitted, this operation will always
+ * be applied.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.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);
+
+ /**
+ * 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. A value of "*" can be used
+ * to apply the operation only if the immutability policy already exists. If omitted, this operation will always
+ * be applied.
+ * @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);
+
+ /**
+ * 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. A value of "*" can be used
+ * to apply the operation only if the immutability policy already exists. If omitted, this operation will always
+ * be applied.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.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);
+
+ /**
+ * 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. A value of "*" can be used
+ * to apply the operation only if the immutability policy already exists. If omitted, this operation will always
+ * be applied.
+ * @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);
+
+ /**
+ * 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);
+
+ /**
+ * 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);
+
+ /**
+ * 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..bad4d13151ed6
--- /dev/null
+++ b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/BlobInventoryPoliciesClient.java
@@ -0,0 +1,167 @@
+// 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'.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.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);
+
+ /**
+ * 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);
+
+ /**
+ * 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);
+
+ /**
+ * 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);
+
+ /**
+ * 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);
+
+ /**
+ * 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);
+
+ /**
+ * 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..488b0bd0b9012
--- /dev/null
+++ b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/BlobServicesClient.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.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.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.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);
+
+ /**
+ * 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);
+
+ /**
+ * 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);
+
+ /**
+ * 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);
+}
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..61b5c447bae3a
--- /dev/null
+++ b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/DeletedAccountsClient.java
@@ -0,0 +1,64 @@
+// 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.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.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);
+
+ /**
+ * 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);
+}
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..9858968743f6d
--- /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;
+
+/** 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.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.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);
+
+ /**
+ * 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);
+
+ /**
+ * 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);
+
+ /**
+ * 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);
+
+ /**
+ * 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);
+
+ /**
+ * 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);
+
+ /**
+ * 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 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, 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..cdecfbcd2eb69
--- /dev/null
+++ b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/FileServicesClient.java
@@ -0,0 +1,117 @@
+// 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.FileServiceItemsInner;
+import com.azure.resourcemanager.storage.generated.fluent.models.FileServicePropertiesInner;
+
+/** 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.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.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);
+
+ /**
+ * 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);
+
+ /**
+ * 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);
+
+ /**
+ * 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);
+
+ /**
+ * 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 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);
+}
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..5bbaf29577b2b
--- /dev/null
+++ b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/FileSharesClient.java
@@ -0,0 +1,334 @@
+// 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.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.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);
+
+ /**
+ * 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);
+
+ /**
+ * 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);
+
+ /**
+ * 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);
+
+ /**
+ * 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);
+
+ /**
+ * 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);
+
+ /**
+ * 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);
+
+ /**
+ * 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);
+
+ /**
+ * 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 deleted share to be restored.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.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);
+
+ /**
+ * 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 deleted share to be restored.
+ * @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);
+
+ /**
+ * 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);
+
+ /**
+ * 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);
+}
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..a71af92163a4c
--- /dev/null
+++ b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/LocalUsersOperationsClient.java
@@ -0,0 +1,230 @@
+// 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;
+
+/** 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 storage account 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 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 local users as paginated response with {@link PagedIterable}.
+ */
+ @ServiceMethod(returns = ReturnType.COLLECTION)
+ PagedIterable list(String resourceGroupName, String accountName, 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);
+
+ /**
+ * 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);
+
+ /**
+ * Create or update the properties of a local user 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 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);
+
+ /**
+ * Create or update the properties of a local user 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 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);
+
+ /**
+ * 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);
+
+ /**
+ * 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);
+
+ /**
+ * 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);
+
+ /**
+ * 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);
+
+ /**
+ * 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);
+
+ /**
+ * 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);
+}
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..adb3a5fcfa885
--- /dev/null
+++ b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/ManagementPoliciesClient.java
@@ -0,0 +1,126 @@
+// 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'.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.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);
+
+ /**
+ * 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);
+
+ /**
+ * 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);
+
+ /**
+ * 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);
+
+ /**
+ * 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);
+
+ /**
+ * 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);
+}
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..97d13c2e7b977
--- /dev/null
+++ b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/ObjectReplicationPoliciesOperationsClient.java
@@ -0,0 +1,179 @@
+// 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.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.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);
+
+ /**
+ * 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);
+
+ /**
+ * 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);
+
+ /**
+ * 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);
+
+ /**
+ * 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);
+
+ /**
+ * 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);
+}
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..c83d9d9bb5264
--- /dev/null
+++ b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/OperationsClient.java
@@ -0,0 +1,36 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.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..00eb3c837ad8a
--- /dev/null
+++ b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/PrivateEndpointConnectionsClient.java
@@ -0,0 +1,167 @@
+// 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.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.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);
+
+ /**
+ * 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);
+
+ /**
+ * 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);
+
+ /**
+ * 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);
+
+ /**
+ * 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);
+
+ /**
+ * 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);
+}
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..640bae31005fe
--- /dev/null
+++ b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/PrivateLinkResourcesClient.java
@@ -0,0 +1,46 @@
+// 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.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.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);
+
+ /**
+ * 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);
+}
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..8a5a428c15416
--- /dev/null
+++ b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/QueueServicesClient.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.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.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.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);
+
+ /**
+ * 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);
+
+ /**
+ * 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);
+
+ /**
+ * 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);
+
+ /**
+ * 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);
+
+ /**
+ * 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);
+}
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..27f9ec5034902
--- /dev/null
+++ b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/QueuesClient.java
@@ -0,0 +1,208 @@
+// 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.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.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 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 update(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);
+
+ /**
+ * 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);
+
+ /**
+ * 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);
+
+ /**
+ * 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);
+
+ /**
+ * 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);
+
+ /**
+ * 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..3fdb3e97f97f1
--- /dev/null
+++ b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/SkusClient.java
@@ -0,0 +1,36 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.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..0809db5e2b88d
--- /dev/null
+++ b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/StorageAccountsClient.java
@@ -0,0 +1,749 @@
+// 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.models.AccountSasParameters;
+import com.azure.resourcemanager.storage.generated.models.BlobRestoreParameters;
+import com.azure.resourcemanager.storage.generated.models.ListKeyExpand;
+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.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.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);
+
+ /**
+ * 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);
+
+ /**
+ * 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.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.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);
+
+ /**
+ * 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);
+
+ /**
+ * 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);
+
+ /**
+ * 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);
+
+ /**
+ * 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);
+
+ /**
+ * 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);
+
+ /**
+ * 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.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.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);
+
+ /**
+ * 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);
+
+ /**
+ * 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);
+
+ /**
+ * 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);
+
+ /**
+ * 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 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 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);
+
+ /**
+ * 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);
+
+ /**
+ * Failover request can be triggered for a storage account in case of availability issues. The failover occurs from
+ * the storage account's primary cluster to secondary cluster for RA-GRS accounts. The secondary cluster will become
+ * primary after failover.
+ *
+ * @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);
+
+ /**
+ * Failover request can be triggered for a storage account in case of availability issues. The failover occurs from
+ * the storage account's primary cluster to secondary cluster for RA-GRS accounts. The secondary cluster will become
+ * primary after failover.
+ *
+ * @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> beginFailover(String resourceGroupName, String accountName, Context context);
+
+ /**
+ * Failover request can be triggered for a storage account in case of availability issues. The failover occurs from
+ * the storage account's primary cluster to secondary cluster for RA-GRS accounts. The secondary cluster will become
+ * primary after failover.
+ *
+ * @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);
+
+ /**
+ * Failover request can be triggered for a storage account in case of availability issues. The failover occurs from
+ * the storage account's primary cluster to secondary cluster for RA-GRS accounts. The secondary cluster will become
+ * primary after failover.
+ *
+ * @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 failover(String resourceGroupName, String accountName, 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);
+
+ /**
+ * 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.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.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);
+
+ /**
+ * 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);
+}
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..8afa8cc6fd4a3
--- /dev/null
+++ b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/StorageManagementClient.java
@@ -0,0 +1,186 @@
+// 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 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 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 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();
+}
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..1678e50024ad1
--- /dev/null
+++ b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/TableServicesClient.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.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.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.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);
+
+ /**
+ * 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);
+
+ /**
+ * 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);
+
+ /**
+ * 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);
+
+ /**
+ * 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);
+
+ /**
+ * 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);
+}
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..6c6b3aa98d060
--- /dev/null
+++ b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/TablesClient.java
@@ -0,0 +1,193 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.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.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.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 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 update(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);
+
+ /**
+ * 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);
+
+ /**
+ * 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);
+
+ /**
+ * 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);
+
+ /**
+ * 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);
+
+ /**
+ * 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..fb78d134e3f4c
--- /dev/null
+++ b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/UsagesClient.java
@@ -0,0 +1,41 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.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..e7878b4c45208
--- /dev/null
+++ b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/BlobContainerInner.java
@@ -0,0 +1,339 @@
+// 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.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 com.fasterxml.jackson.annotation.JsonProperty;
+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.
+ */
+ @JsonProperty(value = "properties")
+ private ContainerProperties innerContainerProperties;
+
+ /**
+ * Get the innerContainerProperties property: Properties of the blob container.
+ *
+ * @return the innerContainerProperties value.
+ */
+ private ContainerProperties innerContainerProperties() {
+ return this.innerContainerProperties;
+ }
+
+ /**
+ * 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() {
+ super.validate();
+ if (innerContainerProperties() != null) {
+ innerContainerProperties().validate();
+ }
+ }
+}
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..f782cda5a4a2b
--- /dev/null
+++ b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/BlobInventoryPolicyInner.java
@@ -0,0 +1,89 @@
+// 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.resourcemanager.storage.generated.models.BlobInventoryPolicySchema;
+import com.fasterxml.jackson.annotation.JsonProperty;
+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.
+ */
+ @JsonProperty(value = "properties")
+ private BlobInventoryPolicyProperties innerProperties;
+
+ /*
+ * Metadata pertaining to creation and last modification of the resource.
+ */
+ @JsonProperty(value = "systemData", access = JsonProperty.Access.WRITE_ONLY)
+ private SystemData systemData;
+
+ /**
+ * 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 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();
+ }
+ }
+}
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..67f46a1b45265
--- /dev/null
+++ b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/BlobInventoryPolicyProperties.java
@@ -0,0 +1,74 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.storage.generated.fluent.models;
+
+import com.azure.core.annotation.Fluent;
+import com.azure.core.util.logging.ClientLogger;
+import com.azure.resourcemanager.storage.generated.models.BlobInventoryPolicySchema;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import java.time.OffsetDateTime;
+
+/** The storage account blob inventory policy properties. */
+@Fluent
+public final class BlobInventoryPolicyProperties {
+ /*
+ * Returns the last modified date and time of the blob inventory policy.
+ */
+ @JsonProperty(value = "lastModifiedTime", access = JsonProperty.Access.WRITE_ONLY)
+ private OffsetDateTime lastModifiedTime;
+
+ /*
+ * The storage account blob inventory policy object. It is composed of policy rules.
+ */
+ @JsonProperty(value = "policy", required = true)
+ private BlobInventoryPolicySchema policy;
+
+ /**
+ * 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
+ .logExceptionAsError(
+ new IllegalArgumentException(
+ "Missing required property policy in model BlobInventoryPolicyProperties"));
+ } else {
+ policy().validate();
+ }
+ }
+
+ private static final ClientLogger LOGGER = new ClientLogger(BlobInventoryPolicyProperties.class);
+}
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..736c0bb5dcc86
--- /dev/null
+++ b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/BlobRestoreStatusInner.java
@@ -0,0 +1,89 @@
+// 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.resourcemanager.storage.generated.models.BlobRestoreParameters;
+import com.azure.resourcemanager.storage.generated.models.BlobRestoreProgressStatus;
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/** Blob restore status. */
+@Immutable
+public final class BlobRestoreStatusInner {
+ /*
+ * 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.
+ */
+ @JsonProperty(value = "status", access = JsonProperty.Access.WRITE_ONLY)
+ private BlobRestoreProgressStatus status;
+
+ /*
+ * Failure reason when blob restore is failed.
+ */
+ @JsonProperty(value = "failureReason", access = JsonProperty.Access.WRITE_ONLY)
+ private String failureReason;
+
+ /*
+ * Id for tracking blob restore request.
+ */
+ @JsonProperty(value = "restoreId", access = JsonProperty.Access.WRITE_ONLY)
+ private String restoreId;
+
+ /*
+ * Blob restore request parameters.
+ */
+ @JsonProperty(value = "parameters", access = JsonProperty.Access.WRITE_ONLY)
+ private BlobRestoreParameters parameters;
+
+ /**
+ * 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();
+ }
+ }
+}
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..853f0890e3ad5
--- /dev/null
+++ b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/BlobServicePropertiesInner.java
@@ -0,0 +1,294 @@
+// 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.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 com.fasterxml.jackson.annotation.JsonProperty;
+
+/** 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.
+ */
+ @JsonProperty(value = "properties")
+ private BlobServicePropertiesProperties innerBlobServiceProperties;
+
+ /*
+ * Sku name and tier.
+ */
+ @JsonProperty(value = "sku", access = JsonProperty.Access.WRITE_ONLY)
+ private Sku sku;
+
+ /**
+ * 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 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();
+ }
+ }
+}
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..5f54766daafae
--- /dev/null
+++ b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/BlobServicePropertiesProperties.java
@@ -0,0 +1,292 @@
+// 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.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.fasterxml.jackson.annotation.JsonProperty;
+
+/** The properties of a storage account’s Blob service. */
+@Fluent
+public final class BlobServicePropertiesProperties {
+ /*
+ * 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.
+ */
+ @JsonProperty(value = "cors")
+ 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.
+ */
+ @JsonProperty(value = "defaultServiceVersion")
+ private String defaultServiceVersion;
+
+ /*
+ * The blob service properties for blob soft delete.
+ */
+ @JsonProperty(value = "deleteRetentionPolicy")
+ private DeleteRetentionPolicy deleteRetentionPolicy;
+
+ /*
+ * Versioning is enabled if set to true.
+ */
+ @JsonProperty(value = "isVersioningEnabled")
+ private Boolean isVersioningEnabled;
+
+ /*
+ * Deprecated in favor of isVersioningEnabled property.
+ */
+ @JsonProperty(value = "automaticSnapshotPolicyEnabled")
+ private Boolean automaticSnapshotPolicyEnabled;
+
+ /*
+ * The blob service properties for change feed events.
+ */
+ @JsonProperty(value = "changeFeed")
+ private ChangeFeed changeFeed;
+
+ /*
+ * The blob service properties for blob restore policy.
+ */
+ @JsonProperty(value = "restorePolicy")
+ private RestorePolicyProperties restorePolicy;
+
+ /*
+ * The blob service properties for container soft delete.
+ */
+ @JsonProperty(value = "containerDeleteRetentionPolicy")
+ private DeleteRetentionPolicy containerDeleteRetentionPolicy;
+
+ /*
+ * The blob service property to configure last access time based tracking policy.
+ */
+ @JsonProperty(value = "lastAccessTimeTrackingPolicy")
+ private LastAccessTimeTrackingPolicy lastAccessTimeTrackingPolicy;
+
+ /**
+ * 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();
+ }
+ }
+}
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..a53ab329e437e
--- /dev/null
+++ b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/CheckNameAvailabilityResultInner.java
@@ -0,0 +1,70 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.storage.generated.fluent.models;
+
+import com.azure.core.annotation.Immutable;
+import com.azure.resourcemanager.storage.generated.models.Reason;
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/** The CheckNameAvailability operation response. */
+@Immutable
+public final class CheckNameAvailabilityResultInner {
+ /*
+ * 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.
+ */
+ @JsonProperty(value = "nameAvailable", access = JsonProperty.Access.WRITE_ONLY)
+ 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.
+ */
+ @JsonProperty(value = "reason", access = JsonProperty.Access.WRITE_ONLY)
+ private Reason reason;
+
+ /*
+ * Gets an error message explaining the Reason value in more detail.
+ */
+ @JsonProperty(value = "message", access = JsonProperty.Access.WRITE_ONLY)
+ private String message;
+
+ /**
+ * 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() {
+ }
+}
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..85e7b7f7d7184
--- /dev/null
+++ b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/ContainerProperties.java
@@ -0,0 +1,419 @@
+// 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.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 com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import java.time.OffsetDateTime;
+import java.util.Map;
+
+/** The properties of a container. */
+@Fluent
+public final class ContainerProperties {
+ /*
+ * The version of the deleted blob container.
+ */
+ @JsonProperty(value = "version", access = JsonProperty.Access.WRITE_ONLY)
+ private String version;
+
+ /*
+ * Indicates whether the blob container was deleted.
+ */
+ @JsonProperty(value = "deleted", access = JsonProperty.Access.WRITE_ONLY)
+ private Boolean deleted;
+
+ /*
+ * Blob container deletion time.
+ */
+ @JsonProperty(value = "deletedTime", access = JsonProperty.Access.WRITE_ONLY)
+ private OffsetDateTime deletedTime;
+
+ /*
+ * Remaining retention days for soft deleted blob container.
+ */
+ @JsonProperty(value = "remainingRetentionDays", access = JsonProperty.Access.WRITE_ONLY)
+ private Integer remainingRetentionDays;
+
+ /*
+ * Default the container to use specified encryption scope for all writes.
+ */
+ @JsonProperty(value = "defaultEncryptionScope")
+ private String defaultEncryptionScope;
+
+ /*
+ * Block override of encryption scope from the container default.
+ */
+ @JsonProperty(value = "denyEncryptionScopeOverride")
+ private Boolean denyEncryptionScopeOverride;
+
+ /*
+ * Specifies whether data in the container may be accessed publicly and the level of access.
+ */
+ @JsonProperty(value = "publicAccess")
+ private PublicAccess publicAccess;
+
+ /*
+ * Returns the date and time the container was last modified.
+ */
+ @JsonProperty(value = "lastModifiedTime", access = JsonProperty.Access.WRITE_ONLY)
+ private OffsetDateTime lastModifiedTime;
+
+ /*
+ * The lease status of the container.
+ */
+ @JsonProperty(value = "leaseStatus", access = JsonProperty.Access.WRITE_ONLY)
+ private LeaseStatus leaseStatus;
+
+ /*
+ * Lease state of the container.
+ */
+ @JsonProperty(value = "leaseState", access = JsonProperty.Access.WRITE_ONLY)
+ private LeaseState leaseState;
+
+ /*
+ * Specifies whether the lease on a container is of infinite or fixed duration, only when the container is leased.
+ */
+ @JsonProperty(value = "leaseDuration", access = JsonProperty.Access.WRITE_ONLY)
+ private LeaseDuration leaseDuration;
+
+ /*
+ * A name-value pair to associate with the container as metadata.
+ */
+ @JsonProperty(value = "metadata")
+ @JsonInclude(value = JsonInclude.Include.NON_NULL, content = JsonInclude.Include.ALWAYS)
+ private Map metadata;
+
+ /*
+ * The ImmutabilityPolicy property of the container.
+ */
+ @JsonProperty(value = "immutabilityPolicy", access = JsonProperty.Access.WRITE_ONLY)
+ private ImmutabilityPolicyProperties immutabilityPolicy;
+
+ /*
+ * The LegalHold property of the container.
+ */
+ @JsonProperty(value = "legalHold", access = JsonProperty.Access.WRITE_ONLY)
+ 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.
+ */
+ @JsonProperty(value = "hasLegalHold", access = JsonProperty.Access.WRITE_ONLY)
+ 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.
+ */
+ @JsonProperty(value = "hasImmutabilityPolicy", access = JsonProperty.Access.WRITE_ONLY)
+ 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.
+ */
+ @JsonProperty(value = "immutableStorageWithVersioning")
+ private ImmutableStorageWithVersioning immutableStorageWithVersioning;
+
+ /*
+ * Enable NFSv3 root squash on blob container.
+ */
+ @JsonProperty(value = "enableNfsV3RootSquash")
+ private Boolean enableNfsV3RootSquash;
+
+ /*
+ * Enable NFSv3 all squash on blob container.
+ */
+ @JsonProperty(value = "enableNfsV3AllSquash")
+ private Boolean enableNfsV3AllSquash;
+
+ /**
+ * 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();
+ }
+ }
+}
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..785ee1158f630
--- /dev/null
+++ b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/DeletedAccountInner.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.Fluent;
+import com.azure.core.management.ProxyResource;
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/** Deleted storage account. */
+@Fluent
+public final class DeletedAccountInner extends ProxyResource {
+ /*
+ * Properties of the deleted account.
+ */
+ @JsonProperty(value = "properties")
+ private DeletedAccountProperties innerProperties;
+
+ /**
+ * Get the innerProperties property: Properties of the deleted account.
+ *
+ * @return the innerProperties value.
+ */
+ private DeletedAccountProperties innerProperties() {
+ return this.innerProperties;
+ }
+
+ /**
+ * 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();
+ }
+ }
+}
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..6c91050307d95
--- /dev/null
+++ b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/DeletedAccountProperties.java
@@ -0,0 +1,96 @@
+// 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.fasterxml.jackson.annotation.JsonProperty;
+
+/** Attributes of a deleted storage account. */
+@Immutable
+public final class DeletedAccountProperties {
+ /*
+ * Full resource id of the original storage account.
+ */
+ @JsonProperty(value = "storageAccountResourceId", access = JsonProperty.Access.WRITE_ONLY)
+ private String storageAccountResourceId;
+
+ /*
+ * Location of the deleted account.
+ */
+ @JsonProperty(value = "location", access = JsonProperty.Access.WRITE_ONLY)
+ private String location;
+
+ /*
+ * Can be used to attempt recovering this deleted account via PutStorageAccount API.
+ */
+ @JsonProperty(value = "restoreReference", access = JsonProperty.Access.WRITE_ONLY)
+ private String restoreReference;
+
+ /*
+ * Creation time of the deleted account.
+ */
+ @JsonProperty(value = "creationTime", access = JsonProperty.Access.WRITE_ONLY)
+ private String creationTime;
+
+ /*
+ * Deletion time of the deleted account.
+ */
+ @JsonProperty(value = "deletionTime", access = JsonProperty.Access.WRITE_ONLY)
+ private String deletionTime;
+
+ /**
+ * 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() {
+ }
+}
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..da83029c070f9
--- /dev/null
+++ b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/EncryptionScopeInner.java
@@ -0,0 +1,167 @@
+// 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.resourcemanager.storage.generated.models.EncryptionScopeKeyVaultProperties;
+import com.azure.resourcemanager.storage.generated.models.EncryptionScopeSource;
+import com.azure.resourcemanager.storage.generated.models.EncryptionScopeState;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import java.time.OffsetDateTime;
+
+/** The Encryption Scope resource. */
+@Fluent
+public final class EncryptionScopeInner extends ProxyResource {
+ /*
+ * Properties of the encryption scope.
+ */
+ @JsonProperty(value = "properties")
+ private EncryptionScopeProperties innerEncryptionScopeProperties;
+
+ /**
+ * Get the innerEncryptionScopeProperties property: Properties of the encryption scope.
+ *
+ * @return the innerEncryptionScopeProperties value.
+ */
+ private EncryptionScopeProperties innerEncryptionScopeProperties() {
+ return this.innerEncryptionScopeProperties;
+ }
+
+ /**
+ * 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();
+ }
+ }
+}
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..fa4c33e7b301e
--- /dev/null
+++ b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/EncryptionScopeProperties.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.resourcemanager.storage.generated.models.EncryptionScopeKeyVaultProperties;
+import com.azure.resourcemanager.storage.generated.models.EncryptionScopeSource;
+import com.azure.resourcemanager.storage.generated.models.EncryptionScopeState;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import java.time.OffsetDateTime;
+
+/** Properties of the encryption scope. */
+@Fluent
+public final class EncryptionScopeProperties {
+ /*
+ * The provider for the encryption scope. Possible values (case-insensitive): Microsoft.Storage,
+ * Microsoft.KeyVault.
+ */
+ @JsonProperty(value = "source")
+ private EncryptionScopeSource source;
+
+ /*
+ * The state of the encryption scope. Possible values (case-insensitive): Enabled, Disabled.
+ */
+ @JsonProperty(value = "state")
+ private EncryptionScopeState state;
+
+ /*
+ * Gets the creation date and time of the encryption scope in UTC.
+ */
+ @JsonProperty(value = "creationTime", access = JsonProperty.Access.WRITE_ONLY)
+ private OffsetDateTime creationTime;
+
+ /*
+ * Gets the last modification date and time of the encryption scope in UTC.
+ */
+ @JsonProperty(value = "lastModifiedTime", access = JsonProperty.Access.WRITE_ONLY)
+ 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'.
+ */
+ @JsonProperty(value = "keyVaultProperties")
+ 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.
+ */
+ @JsonProperty(value = "requireInfrastructureEncryption")
+ private Boolean requireInfrastructureEncryption;
+
+ /**
+ * 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();
+ }
+ }
+}
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..156f10efab0fc
--- /dev/null
+++ b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/FileServiceItemsInner.java
@@ -0,0 +1,39 @@
+// 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.fasterxml.jackson.annotation.JsonProperty;
+import java.util.List;
+
+/** The FileServiceItems model. */
+@Immutable
+public final class FileServiceItemsInner {
+ /*
+ * List of file services returned.
+ */
+ @JsonProperty(value = "value", access = JsonProperty.Access.WRITE_ONLY)
+ private List value;
+
+ /**
+ * 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());
+ }
+ }
+}
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..7c89237454c87
--- /dev/null
+++ b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/FileServicePropertiesInner.java
@@ -0,0 +1,136 @@
+// 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.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 com.fasterxml.jackson.annotation.JsonProperty;
+
+/** The properties of File services in storage account. */
+@Fluent
+public final class FileServicePropertiesInner extends ProxyResource {
+ /*
+ * The properties of File services in storage account.
+ */
+ @JsonProperty(value = "properties")
+ private FileServicePropertiesProperties innerFileServiceProperties;
+
+ /*
+ * Sku name and tier.
+ */
+ @JsonProperty(value = "sku", access = JsonProperty.Access.WRITE_ONLY)
+ private Sku sku;
+
+ /**
+ * 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 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();
+ }
+ }
+}
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..754bae7bd821b
--- /dev/null
+++ b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/FileServicePropertiesProperties.java
@@ -0,0 +1,117 @@
+// 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.resourcemanager.storage.generated.models.CorsRules;
+import com.azure.resourcemanager.storage.generated.models.DeleteRetentionPolicy;
+import com.azure.resourcemanager.storage.generated.models.ProtocolSettings;
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/** The properties of File services in storage account. */
+@Fluent
+public final class FileServicePropertiesProperties {
+ /*
+ * 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.
+ */
+ @JsonProperty(value = "cors")
+ private CorsRules cors;
+
+ /*
+ * The file service properties for share soft delete.
+ */
+ @JsonProperty(value = "shareDeleteRetentionPolicy")
+ private DeleteRetentionPolicy shareDeleteRetentionPolicy;
+
+ /*
+ * Protocol settings for file service
+ */
+ @JsonProperty(value = "protocolSettings")
+ private ProtocolSettings protocolSettings;
+
+ /**
+ * 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();
+ }
+ }
+}
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..1c155eed46fab
--- /dev/null
+++ b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/FileShareInner.java
@@ -0,0 +1,308 @@
+// 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.resourcemanager.storage.generated.models.AzureEntityResource;
+import com.azure.resourcemanager.storage.generated.models.EnabledProtocols;
+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 com.fasterxml.jackson.annotation.JsonProperty;
+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.
+ */
+ @JsonProperty(value = "properties")
+ private FileShareProperties innerFileShareProperties;
+
+ /**
+ * Get the innerFileShareProperties property: Properties of the file share.
+ *
+ * @return the innerFileShareProperties value.
+ */
+ private FileShareProperties innerFileShareProperties() {
+ return this.innerFileShareProperties;
+ }
+
+ /**
+ * 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 maximum size of the share, in gigabytes. Must be greater than 0, and less than
+ * or equal to 5TB (5120). For Large File Shares, the maximum size is 102400.
+ *
+ * @return the shareQuota value.
+ */
+ public Integer shareQuota() {
+ return this.innerFileShareProperties() == null ? null : this.innerFileShareProperties().shareQuota();
+ }
+
+ /**
+ * Set the shareQuota property: The maximum size of the share, in gigabytes. Must be greater than 0, and less than
+ * or equal to 5TB (5120). For Large File Shares, the maximum size is 102400.
+ *
+ * @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 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();
+ }
+
+ /**
+ * Validates the instance.
+ *
+ * @throws IllegalArgumentException thrown if the instance is not valid.
+ */
+ @Override
+ public void validate() {
+ super.validate();
+ if (innerFileShareProperties() != null) {
+ innerFileShareProperties().validate();
+ }
+ }
+}
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..01852779cf879
--- /dev/null
+++ b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/FileShareItemInner.java
@@ -0,0 +1,306 @@
+// 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.resourcemanager.storage.generated.models.AzureEntityResource;
+import com.azure.resourcemanager.storage.generated.models.EnabledProtocols;
+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 com.fasterxml.jackson.annotation.JsonProperty;
+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.
+ */
+ @JsonProperty(value = "properties")
+ private FileShareProperties innerProperties;
+
+ /**
+ * Get the innerProperties property: The file share properties be listed out.
+ *
+ * @return the innerProperties value.
+ */
+ private FileShareProperties innerProperties() {
+ return this.innerProperties;
+ }
+
+ /**
+ * 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 maximum size of the share, in gigabytes. Must be greater than 0, and less than
+ * or equal to 5TB (5120). For Large File Shares, the maximum size is 102400.
+ *
+ * @return the shareQuota value.
+ */
+ public Integer shareQuota() {
+ return this.innerProperties() == null ? null : this.innerProperties().shareQuota();
+ }
+
+ /**
+ * Set the shareQuota property: The maximum size of the share, in gigabytes. Must be greater than 0, and less than
+ * or equal to 5TB (5120). For Large File Shares, the maximum size is 102400.
+ *
+ * @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 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();
+ }
+
+ /**
+ * Validates the instance.
+ *
+ * @throws IllegalArgumentException thrown if the instance is not valid.
+ */
+ @Override
+ public void validate() {
+ super.validate();
+ if (innerProperties() != null) {
+ innerProperties().validate();
+ }
+ }
+}
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..f495f68c14336
--- /dev/null
+++ b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/FileShareProperties.java
@@ -0,0 +1,383 @@
+// 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.resourcemanager.storage.generated.models.EnabledProtocols;
+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 com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import java.time.OffsetDateTime;
+import java.util.List;
+import java.util.Map;
+
+/** The properties of the file share. */
+@Fluent
+public final class FileShareProperties {
+ /*
+ * Returns the date and time the share was last modified.
+ */
+ @JsonProperty(value = "lastModifiedTime", access = JsonProperty.Access.WRITE_ONLY)
+ private OffsetDateTime lastModifiedTime;
+
+ /*
+ * A name-value pair to associate with the share as metadata.
+ */
+ @JsonProperty(value = "metadata")
+ @JsonInclude(value = JsonInclude.Include.NON_NULL, content = JsonInclude.Include.ALWAYS)
+ private Map metadata;
+
+ /*
+ * The maximum size of the share, in gigabytes. Must be greater than 0, and less than or equal to 5TB (5120). For
+ * Large File Shares, the maximum size is 102400.
+ */
+ @JsonProperty(value = "shareQuota")
+ private Integer shareQuota;
+
+ /*
+ * The authentication protocol that is used for the file share. Can only be specified when creating a share.
+ */
+ @JsonProperty(value = "enabledProtocols")
+ private EnabledProtocols enabledProtocols;
+
+ /*
+ * The property is for NFS share only. The default is NoRootSquash.
+ */
+ @JsonProperty(value = "rootSquash")
+ private RootSquashType rootSquash;
+
+ /*
+ * The version of the share.
+ */
+ @JsonProperty(value = "version", access = JsonProperty.Access.WRITE_ONLY)
+ private String version;
+
+ /*
+ * Indicates whether the share was deleted.
+ */
+ @JsonProperty(value = "deleted", access = JsonProperty.Access.WRITE_ONLY)
+ private Boolean deleted;
+
+ /*
+ * The deleted time if the share was deleted.
+ */
+ @JsonProperty(value = "deletedTime", access = JsonProperty.Access.WRITE_ONLY)
+ private OffsetDateTime deletedTime;
+
+ /*
+ * Remaining retention days for share that was soft deleted.
+ */
+ @JsonProperty(value = "remainingRetentionDays", access = JsonProperty.Access.WRITE_ONLY)
+ private Integer remainingRetentionDays;
+
+ /*
+ * Access tier for specific share. GpV2 account can choose between TransactionOptimized (default), Hot, and Cool.
+ * FileStorage account can choose Premium.
+ */
+ @JsonProperty(value = "accessTier")
+ private ShareAccessTier accessTier;
+
+ /*
+ * Indicates the last modification time for share access tier.
+ */
+ @JsonProperty(value = "accessTierChangeTime", access = JsonProperty.Access.WRITE_ONLY)
+ private OffsetDateTime accessTierChangeTime;
+
+ /*
+ * Indicates if there is a pending transition for access tier.
+ */
+ @JsonProperty(value = "accessTierStatus", access = JsonProperty.Access.WRITE_ONLY)
+ 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.
+ */
+ @JsonProperty(value = "shareUsageBytes", access = JsonProperty.Access.WRITE_ONLY)
+ private Long shareUsageBytes;
+
+ /*
+ * The lease status of the share.
+ */
+ @JsonProperty(value = "leaseStatus", access = JsonProperty.Access.WRITE_ONLY)
+ private LeaseStatus leaseStatus;
+
+ /*
+ * Lease state of the share.
+ */
+ @JsonProperty(value = "leaseState", access = JsonProperty.Access.WRITE_ONLY)
+ private LeaseState leaseState;
+
+ /*
+ * Specifies whether the lease on a share is of infinite or fixed duration, only when the share is leased.
+ */
+ @JsonProperty(value = "leaseDuration", access = JsonProperty.Access.WRITE_ONLY)
+ private LeaseDuration leaseDuration;
+
+ /*
+ * List of stored access policies specified on the share.
+ */
+ @JsonProperty(value = "signedIdentifiers")
+ private List signedIdentifiers;
+
+ /*
+ * Creation time of share snapshot returned in the response of list shares with expand param "snapshots".
+ */
+ @JsonProperty(value = "snapshotTime", access = JsonProperty.Access.WRITE_ONLY)
+ private OffsetDateTime snapshotTime;
+
+ /**
+ * 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 maximum size of the share, in gigabytes. Must be greater than 0, and less than
+ * or equal to 5TB (5120). For Large File Shares, the maximum size is 102400.
+ *
+ * @return the shareQuota value.
+ */
+ public Integer shareQuota() {
+ return this.shareQuota;
+ }
+
+ /**
+ * Set the shareQuota property: The maximum size of the share, in gigabytes. Must be greater than 0, and less than
+ * or equal to 5TB (5120). For Large File Shares, the maximum size is 102400.
+ *
+ * @param shareQuota the shareQuota value to set.
+ * @return the FileShareProperties object itself.
+ */
+ public FileShareProperties withShareQuota(Integer shareQuota) {
+ this.shareQuota = shareQuota;
+ return this;
+ }
+
+ /**
+ * 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;
+ }
+
+ /**
+ * Validates the instance.
+ *
+ * @throws IllegalArgumentException thrown if the instance is not valid.
+ */
+ public void validate() {
+ if (signedIdentifiers() != null) {
+ signedIdentifiers().forEach(e -> e.validate());
+ }
+ }
+}
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..377abb1a6789d
--- /dev/null
+++ b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/ImmutabilityPolicyInner.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.Fluent;
+import com.azure.core.util.logging.ClientLogger;
+import com.azure.resourcemanager.storage.generated.models.AzureEntityResource;
+import com.azure.resourcemanager.storage.generated.models.ImmutabilityPolicyState;
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/** 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.
+ */
+ @JsonProperty(value = "properties", required = true)
+ private ImmutabilityPolicyProperty innerProperties = new ImmutabilityPolicyProperty();
+
+ /**
+ * 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 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() {
+ super.validate();
+ if (innerProperties() == null) {
+ throw LOGGER
+ .logExceptionAsError(
+ new IllegalArgumentException(
+ "Missing required property innerProperties in model ImmutabilityPolicyInner"));
+ } else {
+ innerProperties().validate();
+ }
+ }
+
+ private static final ClientLogger LOGGER = new ClientLogger(ImmutabilityPolicyInner.class);
+}
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..95338835a9bfb
--- /dev/null
+++ b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/ImmutabilityPolicyProperty.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.Fluent;
+import com.azure.resourcemanager.storage.generated.models.ImmutabilityPolicyState;
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/** The properties of an ImmutabilityPolicy of a blob container. */
+@Fluent
+public final class ImmutabilityPolicyProperty {
+ /*
+ * The immutability period for the blobs in the container since the policy creation, in days.
+ */
+ @JsonProperty(value = "immutabilityPeriodSinceCreationInDays")
+ private Integer immutabilityPeriodSinceCreationInDays;
+
+ /*
+ * The ImmutabilityPolicy state of a blob container, possible values include: Locked and Unlocked.
+ */
+ @JsonProperty(value = "state", access = JsonProperty.Access.WRITE_ONLY)
+ 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.
+ */
+ @JsonProperty(value = "allowProtectedAppendWrites")
+ 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.
+ */
+ @JsonProperty(value = "allowProtectedAppendWritesAll")
+ private Boolean allowProtectedAppendWritesAll;
+
+ /**
+ * 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() {
+ }
+}
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..5b37c775d5941
--- /dev/null
+++ b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/LeaseContainerResponseInner.java
@@ -0,0 +1,75 @@
+// 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.fasterxml.jackson.annotation.JsonProperty;
+
+/** Lease Container response schema. */
+@Fluent
+public final class LeaseContainerResponseInner {
+ /*
+ * Returned unique lease ID that must be included with any request to delete the container, or to renew, change, or
+ * release the lease.
+ */
+ @JsonProperty(value = "leaseId")
+ private String leaseId;
+
+ /*
+ * Approximate time remaining in the lease period, in seconds.
+ */
+ @JsonProperty(value = "leaseTimeSeconds")
+ private String leaseTimeSeconds;
+
+ /**
+ * 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() {
+ }
+}
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..d5388529397d7
--- /dev/null
+++ b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/LeaseShareResponseInner.java
@@ -0,0 +1,75 @@
+// 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.fasterxml.jackson.annotation.JsonProperty;
+
+/** Lease Share response schema. */
+@Fluent
+public final class LeaseShareResponseInner {
+ /*
+ * Returned unique lease ID that must be included with any request to delete the share, or to renew, change, or
+ * release the lease.
+ */
+ @JsonProperty(value = "leaseId")
+ private String leaseId;
+
+ /*
+ * Approximate time remaining in the lease period, in seconds.
+ */
+ @JsonProperty(value = "leaseTimeSeconds")
+ private String leaseTimeSeconds;
+
+ /**
+ * 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() {
+ }
+}
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..7ba308f2bbe7d
--- /dev/null
+++ b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/LegalHoldInner.java
@@ -0,0 +1,105 @@
+// 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.fasterxml.jackson.annotation.JsonProperty;
+import java.util.List;
+
+/** The LegalHold property of a blob container. */
+@Fluent
+public final class LegalHoldInner {
+ /*
+ * 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.
+ */
+ @JsonProperty(value = "hasLegalHold", access = JsonProperty.Access.WRITE_ONLY)
+ private Boolean hasLegalHold;
+
+ /*
+ * Each tag should be 3 to 23 alphanumeric characters and is normalized to lower case at SRP.
+ */
+ @JsonProperty(value = "tags", required = true)
+ 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.
+ */
+ @JsonProperty(value = "allowProtectedAppendWritesAll")
+ private Boolean allowProtectedAppendWritesAll;
+
+ /**
+ * 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
+ .logExceptionAsError(
+ new IllegalArgumentException("Missing required property tags in model LegalHoldInner"));
+ }
+ }
+
+ private static final ClientLogger LOGGER = new ClientLogger(LegalHoldInner.class);
+}
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..36294922397ae
--- /dev/null
+++ b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/ListAccountSasResponseInner.java
@@ -0,0 +1,35 @@
+// 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.fasterxml.jackson.annotation.JsonProperty;
+
+/** The List SAS credentials operation response. */
+@Immutable
+public final class ListAccountSasResponseInner {
+ /*
+ * List SAS credentials of storage account.
+ */
+ @JsonProperty(value = "accountSasToken", access = JsonProperty.Access.WRITE_ONLY)
+ private String accountSasToken;
+
+ /**
+ * 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() {
+ }
+}
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..21c42cf09d4f9
--- /dev/null
+++ b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/ListContainerItemInner.java
@@ -0,0 +1,331 @@
+// 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.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 com.fasterxml.jackson.annotation.JsonProperty;
+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.
+ */
+ @JsonProperty(value = "properties")
+ private ContainerProperties innerProperties;
+
+ /**
+ * Get the innerProperties property: The blob container properties be listed out.
+ *
+ * @return the innerProperties value.
+ */
+ private ContainerProperties innerProperties() {
+ return this.innerProperties;
+ }
+
+ /**
+ * 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() {
+ super.validate();
+ if (innerProperties() != null) {
+ innerProperties().validate();
+ }
+ }
+}
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..dfcfdf2c878d4
--- /dev/null
+++ b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/ListQueueInner.java
@@ -0,0 +1,63 @@
+// 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.fasterxml.jackson.annotation.JsonProperty;
+import java.util.Map;
+
+/** The ListQueue model. */
+@Fluent
+public final class ListQueueInner extends ProxyResource {
+ /*
+ * List Queue resource properties.
+ */
+ @JsonProperty(value = "properties")
+ private ListQueueProperties innerQueueProperties;
+
+ /**
+ * Get the innerQueueProperties property: List Queue resource properties.
+ *
+ * @return the innerQueueProperties value.
+ */
+ private ListQueueProperties innerQueueProperties() {
+ return this.innerQueueProperties;
+ }
+
+ /**
+ * 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();
+ }
+ }
+}
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..42cee2323c5b4
--- /dev/null
+++ b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/ListQueueProperties.java
@@ -0,0 +1,49 @@
+// 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.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import java.util.Map;
+
+/** The ListQueueProperties model. */
+@Fluent
+public final class ListQueueProperties {
+ /*
+ * A name-value pair that represents queue metadata.
+ */
+ @JsonProperty(value = "metadata")
+ @JsonInclude(value = JsonInclude.Include.NON_NULL, content = JsonInclude.Include.ALWAYS)
+ private Map metadata;
+
+ /**
+ * 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() {
+ }
+}
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..8be7e8826217b
--- /dev/null
+++ b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/ListQueueServicesInner.java
@@ -0,0 +1,39 @@
+// 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.fasterxml.jackson.annotation.JsonProperty;
+import java.util.List;
+
+/** The ListQueueServices model. */
+@Immutable
+public final class ListQueueServicesInner {
+ /*
+ * List of queue services returned.
+ */
+ @JsonProperty(value = "value", access = JsonProperty.Access.WRITE_ONLY)
+ private List value;
+
+ /**
+ * 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());
+ }
+ }
+}
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..21d4262b73527
--- /dev/null
+++ b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/ListServiceSasResponseInner.java
@@ -0,0 +1,35 @@
+// 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.fasterxml.jackson.annotation.JsonProperty;
+
+/** The List service SAS credentials operation response. */
+@Immutable
+public final class ListServiceSasResponseInner {
+ /*
+ * List service SAS credentials of specific resource.
+ */
+ @JsonProperty(value = "serviceSasToken", access = JsonProperty.Access.WRITE_ONLY)
+ private String serviceSasToken;
+
+ /**
+ * 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() {
+ }
+}
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..a888c037363e2
--- /dev/null
+++ b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/ListTableServicesInner.java
@@ -0,0 +1,39 @@
+// 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.fasterxml.jackson.annotation.JsonProperty;
+import java.util.List;
+
+/** The ListTableServices model. */
+@Immutable
+public final class ListTableServicesInner {
+ /*
+ * List of table services returned.
+ */
+ @JsonProperty(value = "value", access = JsonProperty.Access.WRITE_ONLY)
+ private List value;
+
+ /**
+ * 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());
+ }
+ }
+}
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..0eac9da489d00
--- /dev/null
+++ b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/LocalUserInner.java
@@ -0,0 +1,209 @@
+// 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.resourcemanager.storage.generated.models.PermissionScope;
+import com.azure.resourcemanager.storage.generated.models.SshPublicKey;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import java.util.List;
+
+/** The local user associated with the storage accounts. */
+@Fluent
+public final class LocalUserInner extends ProxyResource {
+ /*
+ * Storage account local user properties.
+ */
+ @JsonProperty(value = "properties")
+ private LocalUserProperties innerProperties;
+
+ /*
+ * Metadata pertaining to creation and last modification of the resource.
+ */
+ @JsonProperty(value = "systemData", access = JsonProperty.Access.WRITE_ONLY)
+ private SystemData systemData;
+
+ /**
+ * 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 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;
+ }
+
+ /**
+ * Validates the instance.
+ *
+ * @throws IllegalArgumentException thrown if the instance is not valid.
+ */
+ public void validate() {
+ if (innerProperties() != null) {
+ innerProperties().validate();
+ }
+ }
+}
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..58e56776ddda7
--- /dev/null
+++ b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/LocalUserKeysInner.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.models;
+
+import com.azure.core.annotation.Fluent;
+import com.azure.resourcemanager.storage.generated.models.SshPublicKey;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import java.util.List;
+
+/** The Storage Account Local User keys. */
+@Fluent
+public final class LocalUserKeysInner {
+ /*
+ * Optional, local user ssh authorized keys for SFTP.
+ */
+ @JsonProperty(value = "sshAuthorizedKeys")
+ private List sshAuthorizedKeys;
+
+ /*
+ * Auto generated by the server for SMB authentication.
+ */
+ @JsonProperty(value = "sharedKey", access = JsonProperty.Access.WRITE_ONLY)
+ private String sharedKey;
+
+ /**
+ * 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());
+ }
+ }
+}
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..687c09ed24dad
--- /dev/null
+++ b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/LocalUserProperties.java
@@ -0,0 +1,204 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.storage.generated.fluent.models;
+
+import com.azure.core.annotation.Fluent;
+import com.azure.resourcemanager.storage.generated.models.PermissionScope;
+import com.azure.resourcemanager.storage.generated.models.SshPublicKey;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import java.util.List;
+
+/** The Storage Account Local User properties. */
+@Fluent
+public final class LocalUserProperties {
+ /*
+ * The permission scopes of the local user.
+ */
+ @JsonProperty(value = "permissionScopes")
+ private List permissionScopes;
+
+ /*
+ * Optional, local user home directory.
+ */
+ @JsonProperty(value = "homeDirectory")
+ private String homeDirectory;
+
+ /*
+ * Optional, local user ssh authorized keys for SFTP.
+ */
+ @JsonProperty(value = "sshAuthorizedKeys")
+ private List sshAuthorizedKeys;
+
+ /*
+ * A unique Security Identifier that is generated by the server.
+ */
+ @JsonProperty(value = "sid", access = JsonProperty.Access.WRITE_ONLY)
+ private String sid;
+
+ /*
+ * Indicates whether shared key exists. Set it to false to remove existing shared key.
+ */
+ @JsonProperty(value = "hasSharedKey")
+ private Boolean hasSharedKey;
+
+ /*
+ * Indicates whether ssh key exists. Set it to false to remove existing SSH key.
+ */
+ @JsonProperty(value = "hasSshKey")
+ private Boolean hasSshKey;
+
+ /*
+ * Indicates whether ssh password exists. Set it to false to remove existing SSH password.
+ */
+ @JsonProperty(value = "hasSshPassword")
+ private Boolean hasSshPassword;
+
+ /**
+ * 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;
+ }
+
+ /**
+ * 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());
+ }
+ }
+}
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..688615163254e
--- /dev/null
+++ b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/LocalUserRegeneratePasswordResultInner.java
@@ -0,0 +1,37 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.storage.generated.fluent.models;
+
+import com.azure.core.annotation.Immutable;
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/** The secrets of Storage Account Local User. */
+@Immutable
+public final class LocalUserRegeneratePasswordResultInner {
+ /*
+ * Auto generated password by the server for SSH authentication if hasSshPassword is set to true on the creation of
+ * local user.
+ */
+ @JsonProperty(value = "sshPassword", access = JsonProperty.Access.WRITE_ONLY)
+ private String sshPassword;
+
+ /**
+ * 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() {
+ }
+}
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..7f5111c97532f
--- /dev/null
+++ b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/ManagementPolicyInner.java
@@ -0,0 +1,75 @@
+// 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.resourcemanager.storage.generated.models.ManagementPolicySchema;
+import com.fasterxml.jackson.annotation.JsonProperty;
+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.
+ */
+ @JsonProperty(value = "properties")
+ private ManagementPolicyProperties innerProperties;
+
+ /**
+ * Get the innerProperties property: Returns the Storage Account Data Policies Rules.
+ *
+ * @return the innerProperties value.
+ */
+ private ManagementPolicyProperties innerProperties() {
+ return this.innerProperties;
+ }
+
+ /**
+ * 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();
+ }
+ }
+}
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..f7c9edf0b226f
--- /dev/null
+++ b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/ManagementPolicyProperties.java
@@ -0,0 +1,77 @@
+// 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.resourcemanager.storage.generated.models.ManagementPolicySchema;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import java.time.OffsetDateTime;
+
+/** The Storage Account ManagementPolicy properties. */
+@Fluent
+public final class ManagementPolicyProperties {
+ /*
+ * Returns the date and time the ManagementPolicies was last modified.
+ */
+ @JsonProperty(value = "lastModifiedTime", access = JsonProperty.Access.WRITE_ONLY)
+ 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.
+ */
+ @JsonProperty(value = "policy", required = true)
+ private ManagementPolicySchema policy;
+
+ /**
+ * 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
+ .logExceptionAsError(
+ new IllegalArgumentException(
+ "Missing required property policy in model ManagementPolicyProperties"));
+ } else {
+ policy().validate();
+ }
+ }
+
+ private static final ClientLogger LOGGER = new ClientLogger(ManagementPolicyProperties.class);
+}
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..fcef72f629e9b
--- /dev/null
+++ b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/ObjectReplicationPolicyInner.java
@@ -0,0 +1,133 @@
+// 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.resourcemanager.storage.generated.models.ObjectReplicationPolicyRule;
+import com.fasterxml.jackson.annotation.JsonProperty;
+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.
+ */
+ @JsonProperty(value = "properties")
+ private ObjectReplicationPolicyProperties innerProperties;
+
+ /**
+ * Get the innerProperties property: Returns the Storage Account Object Replication Policy.
+ *
+ * @return the innerProperties value.
+ */
+ private ObjectReplicationPolicyProperties innerProperties() {
+ return this.innerProperties;
+ }
+
+ /**
+ * 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;
+ }
+
+ /**
+ * Validates the instance.
+ *
+ * @throws IllegalArgumentException thrown if the instance is not valid.
+ */
+ public void validate() {
+ if (innerProperties() != null) {
+ innerProperties().validate();
+ }
+ }
+}
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..f6382cef876f1
--- /dev/null
+++ b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/ObjectReplicationPolicyProperties.java
@@ -0,0 +1,153 @@
+// 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.resourcemanager.storage.generated.models.ObjectReplicationPolicyRule;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import java.time.OffsetDateTime;
+import java.util.List;
+
+/** The Storage Account ObjectReplicationPolicy properties. */
+@Fluent
+public final class ObjectReplicationPolicyProperties {
+ /*
+ * A unique id for object replication policy.
+ */
+ @JsonProperty(value = "policyId", access = JsonProperty.Access.WRITE_ONLY)
+ private String policyId;
+
+ /*
+ * Indicates when the policy is enabled on the source account.
+ */
+ @JsonProperty(value = "enabledTime", access = JsonProperty.Access.WRITE_ONLY)
+ private OffsetDateTime enabledTime;
+
+ /*
+ * Required. Source account name. It should be full resource id if allowCrossTenantReplication set to false.
+ */
+ @JsonProperty(value = "sourceAccount", required = true)
+ private String sourceAccount;
+
+ /*
+ * Required. Destination account name. It should be full resource id if allowCrossTenantReplication set to false.
+ */
+ @JsonProperty(value = "destinationAccount", required = true)
+ private String destinationAccount;
+
+ /*
+ * The storage account object replication rules.
+ */
+ @JsonProperty(value = "rules")
+ private List rules;
+
+ /**
+ * 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;
+ }
+
+ /**
+ * Validates the instance.
+ *
+ * @throws IllegalArgumentException thrown if the instance is not valid.
+ */
+ public void validate() {
+ if (sourceAccount() == null) {
+ throw LOGGER
+ .logExceptionAsError(
+ new IllegalArgumentException(
+ "Missing required property sourceAccount in model ObjectReplicationPolicyProperties"));
+ }
+ if (destinationAccount() == null) {
+ throw LOGGER
+ .logExceptionAsError(
+ new IllegalArgumentException(
+ "Missing required property destinationAccount in model ObjectReplicationPolicyProperties"));
+ }
+ if (rules() != null) {
+ rules().forEach(e -> e.validate());
+ }
+ }
+
+ private static final ClientLogger LOGGER = new ClientLogger(ObjectReplicationPolicyProperties.class);
+}
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..50b5c51f2d0d0
--- /dev/null
+++ b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/OperationInner.java
@@ -0,0 +1,144 @@
+// 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.resourcemanager.storage.generated.models.OperationDisplay;
+import com.azure.resourcemanager.storage.generated.models.ServiceSpecification;
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/** Storage REST API operation definition. */
+@Fluent
+public final class OperationInner {
+ /*
+ * Operation name: {provider}/{resource}/{operation}
+ */
+ @JsonProperty(value = "name")
+ private String name;
+
+ /*
+ * Display metadata associated with the operation.
+ */
+ @JsonProperty(value = "display")
+ private OperationDisplay display;
+
+ /*
+ * The origin of operations.
+ */
+ @JsonProperty(value = "origin")
+ private String origin;
+
+ /*
+ * Properties of operation, include metric specifications.
+ */
+ @JsonProperty(value = "properties")
+ private OperationProperties innerOperationProperties;
+
+ /**
+ * 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();
+ }
+ }
+}
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..2e6118de017d7
--- /dev/null
+++ b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/OperationProperties.java
@@ -0,0 +1,50 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.storage.generated.fluent.models;
+
+import com.azure.core.annotation.Fluent;
+import com.azure.resourcemanager.storage.generated.models.ServiceSpecification;
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/** Properties of operation, include metric specifications. */
+@Fluent
+public final class OperationProperties {
+ /*
+ * One property of operation, include metric specifications.
+ */
+ @JsonProperty(value = "serviceSpecification")
+ private ServiceSpecification serviceSpecification;
+
+ /**
+ * 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();
+ }
+ }
+}
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..3076878ff6a6c
--- /dev/null
+++ b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/PrivateEndpointConnectionInner.java
@@ -0,0 +1,100 @@
+// 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.resourcemanager.storage.generated.models.PrivateEndpoint;
+import com.azure.resourcemanager.storage.generated.models.PrivateEndpointConnectionProvisioningState;
+import com.azure.resourcemanager.storage.generated.models.PrivateLinkServiceConnectionState;
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/** The Private Endpoint Connection resource. */
+@Fluent
+public final class PrivateEndpointConnectionInner extends ProxyResource {
+ /*
+ * Resource properties.
+ */
+ @JsonProperty(value = "properties")
+ private PrivateEndpointConnectionProperties innerProperties;
+
+ /**
+ * Get the innerProperties property: Resource properties.
+ *
+ * @return the innerProperties value.
+ */
+ private PrivateEndpointConnectionProperties innerProperties() {
+ return this.innerProperties;
+ }
+
+ /**
+ * 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();
+ }
+ }
+}
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..d6735e0e927e1
--- /dev/null
+++ b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/PrivateEndpointConnectionProperties.java
@@ -0,0 +1,108 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.storage.generated.fluent.models;
+
+import com.azure.core.annotation.Fluent;
+import com.azure.core.util.logging.ClientLogger;
+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 com.fasterxml.jackson.annotation.JsonProperty;
+
+/** Properties of the PrivateEndpointConnectProperties. */
+@Fluent
+public final class PrivateEndpointConnectionProperties {
+ /*
+ * The resource of private end point.
+ */
+ @JsonProperty(value = "privateEndpoint")
+ private PrivateEndpoint privateEndpoint;
+
+ /*
+ * A collection of information about the state of the connection between service consumer and provider.
+ */
+ @JsonProperty(value = "privateLinkServiceConnectionState", required = true)
+ private PrivateLinkServiceConnectionState privateLinkServiceConnectionState;
+
+ /*
+ * The provisioning state of the private endpoint connection resource.
+ */
+ @JsonProperty(value = "provisioningState", access = JsonProperty.Access.WRITE_ONLY)
+ private PrivateEndpointConnectionProvisioningState provisioningState;
+
+ /**
+ * 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
+ .logExceptionAsError(
+ new IllegalArgumentException(
+ "Missing required property privateLinkServiceConnectionState in model"
+ + " PrivateEndpointConnectionProperties"));
+ } else {
+ privateLinkServiceConnectionState().validate();
+ }
+ }
+
+ private static final ClientLogger LOGGER = new ClientLogger(PrivateEndpointConnectionProperties.class);
+}
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..4f61dd8236c20
--- /dev/null
+++ b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/PrivateLinkResourceListResultInner.java
@@ -0,0 +1,51 @@
+// 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.resourcemanager.storage.generated.models.PrivateLinkResource;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import java.util.List;
+
+/** A list of private link resources. */
+@Fluent
+public final class PrivateLinkResourceListResultInner {
+ /*
+ * Array of private link resources
+ */
+ @JsonProperty(value = "value")
+ private List value;
+
+ /**
+ * Get the value property: Array of private link resources.
+ *
+ * @return the value value.
+ */
+ public List value() {
+ return this.value;
+ }
+
+ /**
+ * Set the value property: Array of private link resources.
+ *
+ * @param value the value value to set.
+ * @return the PrivateLinkResourceListResultInner object itself.
+ */
+ public PrivateLinkResourceListResultInner withValue(List value) {
+ this.value = value;
+ return this;
+ }
+
+ /**
+ * Validates the instance.
+ *
+ * @throws IllegalArgumentException thrown if the instance is not valid.
+ */
+ public void validate() {
+ if (value() != null) {
+ value().forEach(e -> e.validate());
+ }
+ }
+}
diff --git a/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/PrivateLinkResourceProperties.java b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/PrivateLinkResourceProperties.java
new file mode 100644
index 0000000000000..bca44d6247f83
--- /dev/null
+++ b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/PrivateLinkResourceProperties.java
@@ -0,0 +1,77 @@
+// 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.fasterxml.jackson.annotation.JsonProperty;
+import java.util.List;
+
+/** Properties of a private link resource. */
+@Fluent
+public final class PrivateLinkResourceProperties {
+ /*
+ * The private link resource group id.
+ */
+ @JsonProperty(value = "groupId", access = JsonProperty.Access.WRITE_ONLY)
+ private String groupId;
+
+ /*
+ * The private link resource required member names.
+ */
+ @JsonProperty(value = "requiredMembers", access = JsonProperty.Access.WRITE_ONLY)
+ private List requiredMembers;
+
+ /*
+ * The private link resource Private link DNS zone name.
+ */
+ @JsonProperty(value = "requiredZoneNames")
+ private List requiredZoneNames;
+
+ /**
+ * Get the groupId property: The private link resource group id.
+ *
+ * @return the groupId value.
+ */
+ public String groupId() {
+ return this.groupId;
+ }
+
+ /**
+ * Get the requiredMembers property: The private link resource required member names.
+ *
+ * @return the requiredMembers value.
+ */
+ public List requiredMembers() {
+ return this.requiredMembers;
+ }
+
+ /**
+ * Get the requiredZoneNames property: The private link resource Private link DNS zone name.
+ *
+ * @return the requiredZoneNames value.
+ */
+ public List requiredZoneNames() {
+ return this.requiredZoneNames;
+ }
+
+ /**
+ * Set the requiredZoneNames property: The private link resource Private link DNS zone name.
+ *
+ * @param requiredZoneNames the requiredZoneNames value to set.
+ * @return the PrivateLinkResourceProperties object itself.
+ */
+ public PrivateLinkResourceProperties withRequiredZoneNames(List requiredZoneNames) {
+ this.requiredZoneNames = requiredZoneNames;
+ return this;
+ }
+
+ /**
+ * Validates the instance.
+ *
+ * @throws IllegalArgumentException thrown if the instance is not valid.
+ */
+ public void validate() {
+ }
+}
diff --git a/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/QueueProperties.java b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/QueueProperties.java
new file mode 100644
index 0000000000000..562492af1c82c
--- /dev/null
+++ b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/QueueProperties.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.models;
+
+import com.azure.core.annotation.Fluent;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import java.util.Map;
+
+/** The QueueProperties model. */
+@Fluent
+public final class QueueProperties {
+ /*
+ * A name-value pair that represents queue metadata.
+ */
+ @JsonProperty(value = "metadata")
+ @JsonInclude(value = JsonInclude.Include.NON_NULL, content = JsonInclude.Include.ALWAYS)
+ private Map metadata;
+
+ /*
+ * Integer indicating an approximate number of messages in the queue. This number is not lower than the actual
+ * number of messages in the queue, but could be higher.
+ */
+ @JsonProperty(value = "approximateMessageCount", access = JsonProperty.Access.WRITE_ONLY)
+ private Integer approximateMessageCount;
+
+ /**
+ * 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 QueueProperties object itself.
+ */
+ public QueueProperties withMetadata(Map metadata) {
+ this.metadata = metadata;
+ return this;
+ }
+
+ /**
+ * Get the approximateMessageCount property: Integer indicating an approximate number of messages in the queue. This
+ * number is not lower than the actual number of messages in the queue, but could be higher.
+ *
+ * @return the approximateMessageCount value.
+ */
+ public Integer approximateMessageCount() {
+ return this.approximateMessageCount;
+ }
+
+ /**
+ * Validates the instance.
+ *
+ * @throws IllegalArgumentException thrown if the instance is not valid.
+ */
+ public void validate() {
+ }
+}
diff --git a/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/QueueServicePropertiesInner.java b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/QueueServicePropertiesInner.java
new file mode 100644
index 0000000000000..9ae89e023b12c
--- /dev/null
+++ b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/QueueServicePropertiesInner.java
@@ -0,0 +1,67 @@
+// 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.resourcemanager.storage.generated.models.CorsRules;
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/** The properties of a storage account’s Queue service. */
+@Fluent
+public final class QueueServicePropertiesInner extends ProxyResource {
+ /*
+ * The properties of a storage account’s Queue service.
+ */
+ @JsonProperty(value = "properties")
+ private QueueServicePropertiesProperties innerQueueServiceProperties;
+
+ /**
+ * Get the innerQueueServiceProperties property: The properties of a storage account’s Queue service.
+ *
+ * @return the innerQueueServiceProperties value.
+ */
+ private QueueServicePropertiesProperties innerQueueServiceProperties() {
+ return this.innerQueueServiceProperties;
+ }
+
+ /**
+ * Get the cors property: Specifies CORS rules for the Queue 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 Queue service.
+ *
+ * @return the cors value.
+ */
+ public CorsRules cors() {
+ return this.innerQueueServiceProperties() == null ? null : this.innerQueueServiceProperties().cors();
+ }
+
+ /**
+ * Set the cors property: Specifies CORS rules for the Queue 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 Queue service.
+ *
+ * @param cors the cors value to set.
+ * @return the QueueServicePropertiesInner object itself.
+ */
+ public QueueServicePropertiesInner withCors(CorsRules cors) {
+ if (this.innerQueueServiceProperties() == null) {
+ this.innerQueueServiceProperties = new QueueServicePropertiesProperties();
+ }
+ this.innerQueueServiceProperties().withCors(cors);
+ return this;
+ }
+
+ /**
+ * Validates the instance.
+ *
+ * @throws IllegalArgumentException thrown if the instance is not valid.
+ */
+ public void validate() {
+ if (innerQueueServiceProperties() != null) {
+ innerQueueServiceProperties().validate();
+ }
+ }
+}
diff --git a/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/QueueServicePropertiesProperties.java b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/QueueServicePropertiesProperties.java
new file mode 100644
index 0000000000000..663a678a941f6
--- /dev/null
+++ b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/QueueServicePropertiesProperties.java
@@ -0,0 +1,56 @@
+// 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.resourcemanager.storage.generated.models.CorsRules;
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/** The properties of a storage account’s Queue service. */
+@Fluent
+public final class QueueServicePropertiesProperties {
+ /*
+ * Specifies CORS rules for the Queue 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 Queue service.
+ */
+ @JsonProperty(value = "cors")
+ private CorsRules cors;
+
+ /**
+ * Get the cors property: Specifies CORS rules for the Queue 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 Queue service.
+ *
+ * @return the cors value.
+ */
+ public CorsRules cors() {
+ return this.cors;
+ }
+
+ /**
+ * Set the cors property: Specifies CORS rules for the Queue 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 Queue service.
+ *
+ * @param cors the cors value to set.
+ * @return the QueueServicePropertiesProperties object itself.
+ */
+ public QueueServicePropertiesProperties withCors(CorsRules cors) {
+ this.cors = cors;
+ return this;
+ }
+
+ /**
+ * Validates the instance.
+ *
+ * @throws IllegalArgumentException thrown if the instance is not valid.
+ */
+ public void validate() {
+ if (cors() != null) {
+ cors().validate();
+ }
+ }
+}
diff --git a/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/SkuInformationInner.java b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/SkuInformationInner.java
new file mode 100644
index 0000000000000..0721a646c2212
--- /dev/null
+++ b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/SkuInformationInner.java
@@ -0,0 +1,176 @@
+// 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.resourcemanager.storage.generated.models.Kind;
+import com.azure.resourcemanager.storage.generated.models.Restriction;
+import com.azure.resourcemanager.storage.generated.models.SkuCapability;
+import com.azure.resourcemanager.storage.generated.models.SkuName;
+import com.azure.resourcemanager.storage.generated.models.SkuTier;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import java.util.List;
+
+/** Storage SKU and its properties. */
+@Fluent
+public final class SkuInformationInner {
+ /*
+ * The SKU name. Required for account creation; optional for update. Note that in older versions, SKU name was
+ * called accountType.
+ */
+ @JsonProperty(value = "name", required = true)
+ private SkuName name;
+
+ /*
+ * The SKU tier. This is based on the SKU name.
+ */
+ @JsonProperty(value = "tier", access = JsonProperty.Access.WRITE_ONLY)
+ private SkuTier tier;
+
+ /*
+ * The type of the resource, usually it is 'storageAccounts'.
+ */
+ @JsonProperty(value = "resourceType", access = JsonProperty.Access.WRITE_ONLY)
+ private String resourceType;
+
+ /*
+ * Indicates the type of storage account.
+ */
+ @JsonProperty(value = "kind", access = JsonProperty.Access.WRITE_ONLY)
+ private Kind kind;
+
+ /*
+ * The set of locations that the SKU is available. This will be supported and registered Azure Geo Regions (e.g.
+ * West US, East US, Southeast Asia, etc.).
+ */
+ @JsonProperty(value = "locations", access = JsonProperty.Access.WRITE_ONLY)
+ private List locations;
+
+ /*
+ * The capability information in the specified SKU, including file encryption, network ACLs, change notification,
+ * etc.
+ */
+ @JsonProperty(value = "capabilities", access = JsonProperty.Access.WRITE_ONLY)
+ private List capabilities;
+
+ /*
+ * The restrictions because of which SKU cannot be used. This is empty if there are no restrictions.
+ */
+ @JsonProperty(value = "restrictions")
+ private List restrictions;
+
+ /**
+ * Get the name property: The SKU name. Required for account creation; optional for update. Note that in older
+ * versions, SKU name was called accountType.
+ *
+ * @return the name value.
+ */
+ public SkuName name() {
+ return this.name;
+ }
+
+ /**
+ * Set the name property: The SKU name. Required for account creation; optional for update. Note that in older
+ * versions, SKU name was called accountType.
+ *
+ * @param name the name value to set.
+ * @return the SkuInformationInner object itself.
+ */
+ public SkuInformationInner withName(SkuName name) {
+ this.name = name;
+ return this;
+ }
+
+ /**
+ * Get the tier property: The SKU tier. This is based on the SKU name.
+ *
+ * @return the tier value.
+ */
+ public SkuTier tier() {
+ return this.tier;
+ }
+
+ /**
+ * Get the resourceType property: The type of the resource, usually it is 'storageAccounts'.
+ *
+ * @return the resourceType value.
+ */
+ public String resourceType() {
+ return this.resourceType;
+ }
+
+ /**
+ * Get the kind property: Indicates the type of storage account.
+ *
+ * @return the kind value.
+ */
+ public Kind kind() {
+ return this.kind;
+ }
+
+ /**
+ * Get the locations property: The set of locations that the SKU is available. This will be supported and registered
+ * Azure Geo Regions (e.g. West US, East US, Southeast Asia, etc.).
+ *
+ * @return the locations value.
+ */
+ public List locations() {
+ return this.locations;
+ }
+
+ /**
+ * Get the capabilities property: The capability information in the specified SKU, including file encryption,
+ * network ACLs, change notification, etc.
+ *
+ * @return the capabilities value.
+ */
+ public List capabilities() {
+ return this.capabilities;
+ }
+
+ /**
+ * Get the restrictions property: The restrictions because of which SKU cannot be used. This is empty if there are
+ * no restrictions.
+ *
+ * @return the restrictions value.
+ */
+ public List restrictions() {
+ return this.restrictions;
+ }
+
+ /**
+ * Set the restrictions property: The restrictions because of which SKU cannot be used. This is empty if there are
+ * no restrictions.
+ *
+ * @param restrictions the restrictions value to set.
+ * @return the SkuInformationInner object itself.
+ */
+ public SkuInformationInner withRestrictions(List restrictions) {
+ this.restrictions = restrictions;
+ return this;
+ }
+
+ /**
+ * Validates the instance.
+ *
+ * @throws IllegalArgumentException thrown if the instance is not valid.
+ */
+ public void validate() {
+ if (name() == null) {
+ throw LOGGER
+ .logExceptionAsError(
+ new IllegalArgumentException("Missing required property name in model SkuInformationInner"));
+ }
+ if (capabilities() != null) {
+ capabilities().forEach(e -> e.validate());
+ }
+ if (restrictions() != null) {
+ restrictions().forEach(e -> e.validate());
+ }
+ }
+
+ private static final ClientLogger LOGGER = new ClientLogger(SkuInformationInner.class);
+}
diff --git a/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/StorageAccountInner.java b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/StorageAccountInner.java
new file mode 100644
index 0000000000000..d1f5d21c6d162
--- /dev/null
+++ b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/StorageAccountInner.java
@@ -0,0 +1,812 @@
+// 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.Resource;
+import com.azure.resourcemanager.storage.generated.models.AccessTier;
+import com.azure.resourcemanager.storage.generated.models.AccountStatus;
+import com.azure.resourcemanager.storage.generated.models.AllowedCopyScope;
+import com.azure.resourcemanager.storage.generated.models.AzureFilesIdentityBasedAuthentication;
+import com.azure.resourcemanager.storage.generated.models.CustomDomain;
+import com.azure.resourcemanager.storage.generated.models.DnsEndpointType;
+import com.azure.resourcemanager.storage.generated.models.Encryption;
+import com.azure.resourcemanager.storage.generated.models.Endpoints;
+import com.azure.resourcemanager.storage.generated.models.ExtendedLocation;
+import com.azure.resourcemanager.storage.generated.models.GeoReplicationStats;
+import com.azure.resourcemanager.storage.generated.models.Identity;
+import com.azure.resourcemanager.storage.generated.models.ImmutableStorageAccount;
+import com.azure.resourcemanager.storage.generated.models.KeyCreationTime;
+import com.azure.resourcemanager.storage.generated.models.KeyPolicy;
+import com.azure.resourcemanager.storage.generated.models.Kind;
+import com.azure.resourcemanager.storage.generated.models.LargeFileSharesState;
+import com.azure.resourcemanager.storage.generated.models.MinimumTlsVersion;
+import com.azure.resourcemanager.storage.generated.models.NetworkRuleSet;
+import com.azure.resourcemanager.storage.generated.models.ProvisioningState;
+import com.azure.resourcemanager.storage.generated.models.PublicNetworkAccess;
+import com.azure.resourcemanager.storage.generated.models.RoutingPreference;
+import com.azure.resourcemanager.storage.generated.models.SasPolicy;
+import com.azure.resourcemanager.storage.generated.models.Sku;
+import com.azure.resourcemanager.storage.generated.models.StorageAccountSkuConversionStatus;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import java.time.OffsetDateTime;
+import java.util.List;
+import java.util.Map;
+
+/** The storage account. */
+@Fluent
+public final class StorageAccountInner extends Resource {
+ /*
+ * Gets the SKU.
+ */
+ @JsonProperty(value = "sku", access = JsonProperty.Access.WRITE_ONLY)
+ private Sku sku;
+
+ /*
+ * Gets the Kind.
+ */
+ @JsonProperty(value = "kind", access = JsonProperty.Access.WRITE_ONLY)
+ private Kind kind;
+
+ /*
+ * The identity of the resource.
+ */
+ @JsonProperty(value = "identity")
+ private Identity identity;
+
+ /*
+ * The extendedLocation of the resource.
+ */
+ @JsonProperty(value = "extendedLocation")
+ private ExtendedLocation extendedLocation;
+
+ /*
+ * Properties of the storage account.
+ */
+ @JsonProperty(value = "properties")
+ private StorageAccountPropertiesInner innerProperties;
+
+ /**
+ * Get the sku property: Gets the SKU.
+ *
+ * @return the sku value.
+ */
+ public Sku sku() {
+ return this.sku;
+ }
+
+ /**
+ * Get the kind property: Gets the Kind.
+ *
+ * @return the kind value.
+ */
+ public Kind kind() {
+ return this.kind;
+ }
+
+ /**
+ * Get the identity property: The identity of the resource.
+ *
+ * @return the identity value.
+ */
+ public Identity identity() {
+ return this.identity;
+ }
+
+ /**
+ * Set the identity property: The identity of the resource.
+ *
+ * @param identity the identity value to set.
+ * @return the StorageAccountInner object itself.
+ */
+ public StorageAccountInner withIdentity(Identity identity) {
+ this.identity = identity;
+ return this;
+ }
+
+ /**
+ * Get the extendedLocation property: The extendedLocation of the resource.
+ *
+ * @return the extendedLocation value.
+ */
+ public ExtendedLocation extendedLocation() {
+ return this.extendedLocation;
+ }
+
+ /**
+ * Set the extendedLocation property: The extendedLocation of the resource.
+ *
+ * @param extendedLocation the extendedLocation value to set.
+ * @return the StorageAccountInner object itself.
+ */
+ public StorageAccountInner withExtendedLocation(ExtendedLocation extendedLocation) {
+ this.extendedLocation = extendedLocation;
+ return this;
+ }
+
+ /**
+ * Get the innerProperties property: Properties of the storage account.
+ *
+ * @return the innerProperties value.
+ */
+ private StorageAccountPropertiesInner innerProperties() {
+ return this.innerProperties;
+ }
+
+ /** {@inheritDoc} */
+ @Override
+ public StorageAccountInner withLocation(String location) {
+ super.withLocation(location);
+ return this;
+ }
+
+ /** {@inheritDoc} */
+ @Override
+ public StorageAccountInner withTags(Map tags) {
+ super.withTags(tags);
+ return this;
+ }
+
+ /**
+ * Get the provisioningState property: Gets the status of the storage account at the time the operation was called.
+ *
+ * @return the provisioningState value.
+ */
+ public ProvisioningState provisioningState() {
+ return this.innerProperties() == null ? null : this.innerProperties().provisioningState();
+ }
+
+ /**
+ * Get the primaryEndpoints property: Gets the URLs that are used to perform a retrieval of a public blob, queue, or
+ * table object. Note that Standard_ZRS and Premium_LRS accounts only return the blob endpoint.
+ *
+ * @return the primaryEndpoints value.
+ */
+ public Endpoints primaryEndpoints() {
+ return this.innerProperties() == null ? null : this.innerProperties().primaryEndpoints();
+ }
+
+ /**
+ * Get the primaryLocation property: Gets the location of the primary data center for the storage account.
+ *
+ * @return the primaryLocation value.
+ */
+ public String primaryLocation() {
+ return this.innerProperties() == null ? null : this.innerProperties().primaryLocation();
+ }
+
+ /**
+ * Get the statusOfPrimary property: Gets the status indicating whether the primary location of the storage account
+ * is available or unavailable.
+ *
+ * @return the statusOfPrimary value.
+ */
+ public AccountStatus statusOfPrimary() {
+ return this.innerProperties() == null ? null : this.innerProperties().statusOfPrimary();
+ }
+
+ /**
+ * Get the lastGeoFailoverTime property: Gets the timestamp of the most recent instance of a failover to the
+ * secondary location. Only the most recent timestamp is retained. This element is not returned if there has never
+ * been a failover instance. Only available if the accountType is Standard_GRS or Standard_RAGRS.
+ *
+ * @return the lastGeoFailoverTime value.
+ */
+ public OffsetDateTime lastGeoFailoverTime() {
+ return this.innerProperties() == null ? null : this.innerProperties().lastGeoFailoverTime();
+ }
+
+ /**
+ * Get the secondaryLocation property: Gets the location of the geo-replicated secondary for the storage account.
+ * Only available if the accountType is Standard_GRS or Standard_RAGRS.
+ *
+ * @return the secondaryLocation value.
+ */
+ public String secondaryLocation() {
+ return this.innerProperties() == null ? null : this.innerProperties().secondaryLocation();
+ }
+
+ /**
+ * Get the statusOfSecondary property: Gets the status indicating whether the secondary location of the storage
+ * account is available or unavailable. Only available if the SKU name is Standard_GRS or Standard_RAGRS.
+ *
+ * @return the statusOfSecondary value.
+ */
+ public AccountStatus statusOfSecondary() {
+ return this.innerProperties() == null ? null : this.innerProperties().statusOfSecondary();
+ }
+
+ /**
+ * Get the creationTime property: Gets the creation date and time of the storage account in UTC.
+ *
+ * @return the creationTime value.
+ */
+ public OffsetDateTime creationTime() {
+ return this.innerProperties() == null ? null : this.innerProperties().creationTime();
+ }
+
+ /**
+ * Get the customDomain property: Gets the custom domain the user assigned to this storage account.
+ *
+ * @return the customDomain value.
+ */
+ public CustomDomain customDomain() {
+ return this.innerProperties() == null ? null : this.innerProperties().customDomain();
+ }
+
+ /**
+ * Get the sasPolicy property: SasPolicy assigned to the storage account.
+ *
+ * @return the sasPolicy value.
+ */
+ public SasPolicy sasPolicy() {
+ return this.innerProperties() == null ? null : this.innerProperties().sasPolicy();
+ }
+
+ /**
+ * Get the keyPolicy property: KeyPolicy assigned to the storage account.
+ *
+ * @return the keyPolicy value.
+ */
+ public KeyPolicy keyPolicy() {
+ return this.innerProperties() == null ? null : this.innerProperties().keyPolicy();
+ }
+
+ /**
+ * Get the keyCreationTime property: Storage account keys creation time.
+ *
+ * @return the keyCreationTime value.
+ */
+ public KeyCreationTime keyCreationTime() {
+ return this.innerProperties() == null ? null : this.innerProperties().keyCreationTime();
+ }
+
+ /**
+ * Get the secondaryEndpoints property: Gets the URLs that are used to perform a retrieval of a public blob, queue,
+ * or table object from the secondary location of the storage account. Only available if the SKU name is
+ * Standard_RAGRS.
+ *
+ * @return the secondaryEndpoints value.
+ */
+ public Endpoints secondaryEndpoints() {
+ return this.innerProperties() == null ? null : this.innerProperties().secondaryEndpoints();
+ }
+
+ /**
+ * Get the encryption property: Encryption settings to be used for server-side encryption for the storage account.
+ *
+ * @return the encryption value.
+ */
+ public Encryption encryption() {
+ return this.innerProperties() == null ? null : this.innerProperties().encryption();
+ }
+
+ /**
+ * Get the accessTier property: Required for storage accounts where kind = BlobStorage. The access tier is used for
+ * billing. The 'Premium' access tier is the default value for premium block blobs storage account type and it
+ * cannot be changed for the premium block blobs storage account type.
+ *
+ * @return the accessTier value.
+ */
+ public AccessTier accessTier() {
+ return this.innerProperties() == null ? null : this.innerProperties().accessTier();
+ }
+
+ /**
+ * Get the azureFilesIdentityBasedAuthentication property: Provides the identity based authentication settings for
+ * Azure Files.
+ *
+ * @return the azureFilesIdentityBasedAuthentication value.
+ */
+ public AzureFilesIdentityBasedAuthentication azureFilesIdentityBasedAuthentication() {
+ return this.innerProperties() == null ? null : this.innerProperties().azureFilesIdentityBasedAuthentication();
+ }
+
+ /**
+ * Set the azureFilesIdentityBasedAuthentication property: Provides the identity based authentication settings for
+ * Azure Files.
+ *
+ * @param azureFilesIdentityBasedAuthentication the azureFilesIdentityBasedAuthentication value to set.
+ * @return the StorageAccountInner object itself.
+ */
+ public StorageAccountInner withAzureFilesIdentityBasedAuthentication(
+ AzureFilesIdentityBasedAuthentication azureFilesIdentityBasedAuthentication) {
+ if (this.innerProperties() == null) {
+ this.innerProperties = new StorageAccountPropertiesInner();
+ }
+ this.innerProperties().withAzureFilesIdentityBasedAuthentication(azureFilesIdentityBasedAuthentication);
+ return this;
+ }
+
+ /**
+ * Get the enableHttpsTrafficOnly property: Allows https traffic only to storage service if sets to true.
+ *
+ * @return the enableHttpsTrafficOnly value.
+ */
+ public Boolean enableHttpsTrafficOnly() {
+ return this.innerProperties() == null ? null : this.innerProperties().enableHttpsTrafficOnly();
+ }
+
+ /**
+ * Set the enableHttpsTrafficOnly property: Allows https traffic only to storage service if sets to true.
+ *
+ * @param enableHttpsTrafficOnly the enableHttpsTrafficOnly value to set.
+ * @return the StorageAccountInner object itself.
+ */
+ public StorageAccountInner withEnableHttpsTrafficOnly(Boolean enableHttpsTrafficOnly) {
+ if (this.innerProperties() == null) {
+ this.innerProperties = new StorageAccountPropertiesInner();
+ }
+ this.innerProperties().withEnableHttpsTrafficOnly(enableHttpsTrafficOnly);
+ return this;
+ }
+
+ /**
+ * Get the networkRuleSet property: Network rule set.
+ *
+ * @return the networkRuleSet value.
+ */
+ public NetworkRuleSet networkRuleSet() {
+ return this.innerProperties() == null ? null : this.innerProperties().networkRuleSet();
+ }
+
+ /**
+ * Get the isSftpEnabled property: Enables Secure File Transfer Protocol, if set to true.
+ *
+ * @return the isSftpEnabled value.
+ */
+ public Boolean isSftpEnabled() {
+ return this.innerProperties() == null ? null : this.innerProperties().isSftpEnabled();
+ }
+
+ /**
+ * Set the isSftpEnabled property: Enables Secure File Transfer Protocol, if set to true.
+ *
+ * @param isSftpEnabled the isSftpEnabled value to set.
+ * @return the StorageAccountInner object itself.
+ */
+ public StorageAccountInner withIsSftpEnabled(Boolean isSftpEnabled) {
+ if (this.innerProperties() == null) {
+ this.innerProperties = new StorageAccountPropertiesInner();
+ }
+ this.innerProperties().withIsSftpEnabled(isSftpEnabled);
+ return this;
+ }
+
+ /**
+ * Get the isLocalUserEnabled property: Enables local users feature, if set to true.
+ *
+ * @return the isLocalUserEnabled value.
+ */
+ public Boolean isLocalUserEnabled() {
+ return this.innerProperties() == null ? null : this.innerProperties().isLocalUserEnabled();
+ }
+
+ /**
+ * Set the isLocalUserEnabled property: Enables local users feature, if set to true.
+ *
+ * @param isLocalUserEnabled the isLocalUserEnabled value to set.
+ * @return the StorageAccountInner object itself.
+ */
+ public StorageAccountInner withIsLocalUserEnabled(Boolean isLocalUserEnabled) {
+ if (this.innerProperties() == null) {
+ this.innerProperties = new StorageAccountPropertiesInner();
+ }
+ this.innerProperties().withIsLocalUserEnabled(isLocalUserEnabled);
+ return this;
+ }
+
+ /**
+ * Get the isHnsEnabled property: Account HierarchicalNamespace enabled if sets to true.
+ *
+ * @return the isHnsEnabled value.
+ */
+ public Boolean isHnsEnabled() {
+ return this.innerProperties() == null ? null : this.innerProperties().isHnsEnabled();
+ }
+
+ /**
+ * Set the isHnsEnabled property: Account HierarchicalNamespace enabled if sets to true.
+ *
+ * @param isHnsEnabled the isHnsEnabled value to set.
+ * @return the StorageAccountInner object itself.
+ */
+ public StorageAccountInner withIsHnsEnabled(Boolean isHnsEnabled) {
+ if (this.innerProperties() == null) {
+ this.innerProperties = new StorageAccountPropertiesInner();
+ }
+ this.innerProperties().withIsHnsEnabled(isHnsEnabled);
+ return this;
+ }
+
+ /**
+ * Get the geoReplicationStats property: Geo Replication Stats.
+ *
+ * @return the geoReplicationStats value.
+ */
+ public GeoReplicationStats geoReplicationStats() {
+ return this.innerProperties() == null ? null : this.innerProperties().geoReplicationStats();
+ }
+
+ /**
+ * Get the failoverInProgress property: If the failover is in progress, the value will be true, otherwise, it will
+ * be null.
+ *
+ * @return the failoverInProgress value.
+ */
+ public Boolean failoverInProgress() {
+ return this.innerProperties() == null ? null : this.innerProperties().failoverInProgress();
+ }
+
+ /**
+ * Get the largeFileSharesState property: Allow large file shares if sets to Enabled. It cannot be disabled once it
+ * is enabled.
+ *
+ * @return the largeFileSharesState value.
+ */
+ public LargeFileSharesState largeFileSharesState() {
+ return this.innerProperties() == null ? null : this.innerProperties().largeFileSharesState();
+ }
+
+ /**
+ * Set the largeFileSharesState property: Allow large file shares if sets to Enabled. It cannot be disabled once it
+ * is enabled.
+ *
+ * @param largeFileSharesState the largeFileSharesState value to set.
+ * @return the StorageAccountInner object itself.
+ */
+ public StorageAccountInner withLargeFileSharesState(LargeFileSharesState largeFileSharesState) {
+ if (this.innerProperties() == null) {
+ this.innerProperties = new StorageAccountPropertiesInner();
+ }
+ this.innerProperties().withLargeFileSharesState(largeFileSharesState);
+ return this;
+ }
+
+ /**
+ * Get the privateEndpointConnections property: List of private endpoint connection associated with the specified
+ * storage account.
+ *
+ * @return the privateEndpointConnections value.
+ */
+ public List privateEndpointConnections() {
+ return this.innerProperties() == null ? null : this.innerProperties().privateEndpointConnections();
+ }
+
+ /**
+ * Get the routingPreference property: Maintains information about the network routing choice opted by the user for
+ * data transfer.
+ *
+ * @return the routingPreference value.
+ */
+ public RoutingPreference routingPreference() {
+ return this.innerProperties() == null ? null : this.innerProperties().routingPreference();
+ }
+
+ /**
+ * Set the routingPreference property: Maintains information about the network routing choice opted by the user for
+ * data transfer.
+ *
+ * @param routingPreference the routingPreference value to set.
+ * @return the StorageAccountInner object itself.
+ */
+ public StorageAccountInner withRoutingPreference(RoutingPreference routingPreference) {
+ if (this.innerProperties() == null) {
+ this.innerProperties = new StorageAccountPropertiesInner();
+ }
+ this.innerProperties().withRoutingPreference(routingPreference);
+ return this;
+ }
+
+ /**
+ * Get the blobRestoreStatus property: Blob restore status.
+ *
+ * @return the blobRestoreStatus value.
+ */
+ public BlobRestoreStatusInner blobRestoreStatus() {
+ return this.innerProperties() == null ? null : this.innerProperties().blobRestoreStatus();
+ }
+
+ /**
+ * Get the allowBlobPublicAccess property: Allow or disallow public access to all blobs or containers in the storage
+ * account. The default interpretation is true for this property.
+ *
+ * @return the allowBlobPublicAccess value.
+ */
+ public Boolean allowBlobPublicAccess() {
+ return this.innerProperties() == null ? null : this.innerProperties().allowBlobPublicAccess();
+ }
+
+ /**
+ * Set the allowBlobPublicAccess property: Allow or disallow public access to all blobs or containers in the storage
+ * account. The default interpretation is true for this property.
+ *
+ * @param allowBlobPublicAccess the allowBlobPublicAccess value to set.
+ * @return the StorageAccountInner object itself.
+ */
+ public StorageAccountInner withAllowBlobPublicAccess(Boolean allowBlobPublicAccess) {
+ if (this.innerProperties() == null) {
+ this.innerProperties = new StorageAccountPropertiesInner();
+ }
+ this.innerProperties().withAllowBlobPublicAccess(allowBlobPublicAccess);
+ return this;
+ }
+
+ /**
+ * Get the minimumTlsVersion property: Set the minimum TLS version to be permitted on requests to storage. The
+ * default interpretation is TLS 1.0 for this property.
+ *
+ * @return the minimumTlsVersion value.
+ */
+ public MinimumTlsVersion minimumTlsVersion() {
+ return this.innerProperties() == null ? null : this.innerProperties().minimumTlsVersion();
+ }
+
+ /**
+ * Set the minimumTlsVersion property: Set the minimum TLS version to be permitted on requests to storage. The
+ * default interpretation is TLS 1.0 for this property.
+ *
+ * @param minimumTlsVersion the minimumTlsVersion value to set.
+ * @return the StorageAccountInner object itself.
+ */
+ public StorageAccountInner withMinimumTlsVersion(MinimumTlsVersion minimumTlsVersion) {
+ if (this.innerProperties() == null) {
+ this.innerProperties = new StorageAccountPropertiesInner();
+ }
+ this.innerProperties().withMinimumTlsVersion(minimumTlsVersion);
+ return this;
+ }
+
+ /**
+ * Get the allowSharedKeyAccess property: Indicates whether the storage account permits requests to be authorized
+ * with the account access key via Shared Key. If false, then all requests, including shared access signatures, must
+ * be authorized with Azure Active Directory (Azure AD). The default value is null, which is equivalent to true.
+ *
+ * @return the allowSharedKeyAccess value.
+ */
+ public Boolean allowSharedKeyAccess() {
+ return this.innerProperties() == null ? null : this.innerProperties().allowSharedKeyAccess();
+ }
+
+ /**
+ * Set the allowSharedKeyAccess property: Indicates whether the storage account permits requests to be authorized
+ * with the account access key via Shared Key. If false, then all requests, including shared access signatures, must
+ * be authorized with Azure Active Directory (Azure AD). The default value is null, which is equivalent to true.
+ *
+ * @param allowSharedKeyAccess the allowSharedKeyAccess value to set.
+ * @return the StorageAccountInner object itself.
+ */
+ public StorageAccountInner withAllowSharedKeyAccess(Boolean allowSharedKeyAccess) {
+ if (this.innerProperties() == null) {
+ this.innerProperties = new StorageAccountPropertiesInner();
+ }
+ this.innerProperties().withAllowSharedKeyAccess(allowSharedKeyAccess);
+ return this;
+ }
+
+ /**
+ * Get the enableNfsV3 property: NFS 3.0 protocol support enabled if set to true.
+ *
+ * @return the enableNfsV3 value.
+ */
+ public Boolean enableNfsV3() {
+ return this.innerProperties() == null ? null : this.innerProperties().enableNfsV3();
+ }
+
+ /**
+ * Set the enableNfsV3 property: NFS 3.0 protocol support enabled if set to true.
+ *
+ * @param enableNfsV3 the enableNfsV3 value to set.
+ * @return the StorageAccountInner object itself.
+ */
+ public StorageAccountInner withEnableNfsV3(Boolean enableNfsV3) {
+ if (this.innerProperties() == null) {
+ this.innerProperties = new StorageAccountPropertiesInner();
+ }
+ this.innerProperties().withEnableNfsV3(enableNfsV3);
+ return this;
+ }
+
+ /**
+ * Get the allowCrossTenantReplication property: Allow or disallow cross AAD tenant object replication. The default
+ * interpretation is true for this property.
+ *
+ * @return the allowCrossTenantReplication value.
+ */
+ public Boolean allowCrossTenantReplication() {
+ return this.innerProperties() == null ? null : this.innerProperties().allowCrossTenantReplication();
+ }
+
+ /**
+ * Set the allowCrossTenantReplication property: Allow or disallow cross AAD tenant object replication. The default
+ * interpretation is true for this property.
+ *
+ * @param allowCrossTenantReplication the allowCrossTenantReplication value to set.
+ * @return the StorageAccountInner object itself.
+ */
+ public StorageAccountInner withAllowCrossTenantReplication(Boolean allowCrossTenantReplication) {
+ if (this.innerProperties() == null) {
+ this.innerProperties = new StorageAccountPropertiesInner();
+ }
+ this.innerProperties().withAllowCrossTenantReplication(allowCrossTenantReplication);
+ return this;
+ }
+
+ /**
+ * Get the defaultToOAuthAuthentication property: A boolean flag which indicates whether the default authentication
+ * is OAuth or not. The default interpretation is false for this property.
+ *
+ * @return the defaultToOAuthAuthentication value.
+ */
+ public Boolean defaultToOAuthAuthentication() {
+ return this.innerProperties() == null ? null : this.innerProperties().defaultToOAuthAuthentication();
+ }
+
+ /**
+ * Set the defaultToOAuthAuthentication property: A boolean flag which indicates whether the default authentication
+ * is OAuth or not. The default interpretation is false for this property.
+ *
+ * @param defaultToOAuthAuthentication the defaultToOAuthAuthentication value to set.
+ * @return the StorageAccountInner object itself.
+ */
+ public StorageAccountInner withDefaultToOAuthAuthentication(Boolean defaultToOAuthAuthentication) {
+ if (this.innerProperties() == null) {
+ this.innerProperties = new StorageAccountPropertiesInner();
+ }
+ this.innerProperties().withDefaultToOAuthAuthentication(defaultToOAuthAuthentication);
+ return this;
+ }
+
+ /**
+ * Get the publicNetworkAccess property: Allow or disallow public network access to Storage Account. Value is
+ * optional but if passed in, must be 'Enabled' or 'Disabled'.
+ *
+ * @return the publicNetworkAccess value.
+ */
+ public PublicNetworkAccess publicNetworkAccess() {
+ return this.innerProperties() == null ? null : this.innerProperties().publicNetworkAccess();
+ }
+
+ /**
+ * Set the publicNetworkAccess property: Allow or disallow public network access to Storage Account. Value is
+ * optional but if passed in, must be 'Enabled' or 'Disabled'.
+ *
+ * @param publicNetworkAccess the publicNetworkAccess value to set.
+ * @return the StorageAccountInner object itself.
+ */
+ public StorageAccountInner withPublicNetworkAccess(PublicNetworkAccess publicNetworkAccess) {
+ if (this.innerProperties() == null) {
+ this.innerProperties = new StorageAccountPropertiesInner();
+ }
+ this.innerProperties().withPublicNetworkAccess(publicNetworkAccess);
+ return this;
+ }
+
+ /**
+ * Get the immutableStorageWithVersioning property: The property is immutable and can only be set to true at the
+ * account creation time. When set to true, it enables object level immutability for all the containers in the
+ * account by default.
+ *
+ * @return the immutableStorageWithVersioning value.
+ */
+ public ImmutableStorageAccount immutableStorageWithVersioning() {
+ return this.innerProperties() == null ? null : this.innerProperties().immutableStorageWithVersioning();
+ }
+
+ /**
+ * Set the immutableStorageWithVersioning property: The property is immutable and can only be set to true at the
+ * account creation time. When set to true, it enables object level immutability for all the containers in the
+ * account by default.
+ *
+ * @param immutableStorageWithVersioning the immutableStorageWithVersioning value to set.
+ * @return the StorageAccountInner object itself.
+ */
+ public StorageAccountInner withImmutableStorageWithVersioning(
+ ImmutableStorageAccount immutableStorageWithVersioning) {
+ if (this.innerProperties() == null) {
+ this.innerProperties = new StorageAccountPropertiesInner();
+ }
+ this.innerProperties().withImmutableStorageWithVersioning(immutableStorageWithVersioning);
+ return this;
+ }
+
+ /**
+ * Get the allowedCopyScope property: Restrict copy to and from Storage Accounts within an AAD tenant or with
+ * Private Links to the same VNet.
+ *
+ * @return the allowedCopyScope value.
+ */
+ public AllowedCopyScope allowedCopyScope() {
+ return this.innerProperties() == null ? null : this.innerProperties().allowedCopyScope();
+ }
+
+ /**
+ * Set the allowedCopyScope property: Restrict copy to and from Storage Accounts within an AAD tenant or with
+ * Private Links to the same VNet.
+ *
+ * @param allowedCopyScope the allowedCopyScope value to set.
+ * @return the StorageAccountInner object itself.
+ */
+ public StorageAccountInner withAllowedCopyScope(AllowedCopyScope allowedCopyScope) {
+ if (this.innerProperties() == null) {
+ this.innerProperties = new StorageAccountPropertiesInner();
+ }
+ this.innerProperties().withAllowedCopyScope(allowedCopyScope);
+ return this;
+ }
+
+ /**
+ * Get the storageAccountSkuConversionStatus property: This property is readOnly and is set by server during
+ * asynchronous storage account sku conversion operations.
+ *
+ * @return the storageAccountSkuConversionStatus value.
+ */
+ public StorageAccountSkuConversionStatus storageAccountSkuConversionStatus() {
+ return this.innerProperties() == null ? null : this.innerProperties().storageAccountSkuConversionStatus();
+ }
+
+ /**
+ * Set the storageAccountSkuConversionStatus property: This property is readOnly and is set by server during
+ * asynchronous storage account sku conversion operations.
+ *
+ * @param storageAccountSkuConversionStatus the storageAccountSkuConversionStatus value to set.
+ * @return the StorageAccountInner object itself.
+ */
+ public StorageAccountInner withStorageAccountSkuConversionStatus(
+ StorageAccountSkuConversionStatus storageAccountSkuConversionStatus) {
+ if (this.innerProperties() == null) {
+ this.innerProperties = new StorageAccountPropertiesInner();
+ }
+ this.innerProperties().withStorageAccountSkuConversionStatus(storageAccountSkuConversionStatus);
+ return this;
+ }
+
+ /**
+ * Get the dnsEndpointType property: Allows you to specify the type of endpoint. Set this to AzureDNSZone to create
+ * a large number of accounts in a single subscription, which creates accounts in an Azure DNS Zone and the endpoint
+ * URL will have an alphanumeric DNS Zone identifier.
+ *
+ * @return the dnsEndpointType value.
+ */
+ public DnsEndpointType dnsEndpointType() {
+ return this.innerProperties() == null ? null : this.innerProperties().dnsEndpointType();
+ }
+
+ /**
+ * Set the dnsEndpointType property: Allows you to specify the type of endpoint. Set this to AzureDNSZone to create
+ * a large number of accounts in a single subscription, which creates accounts in an Azure DNS Zone and the endpoint
+ * URL will have an alphanumeric DNS Zone identifier.
+ *
+ * @param dnsEndpointType the dnsEndpointType value to set.
+ * @return the StorageAccountInner object itself.
+ */
+ public StorageAccountInner withDnsEndpointType(DnsEndpointType dnsEndpointType) {
+ if (this.innerProperties() == null) {
+ this.innerProperties = new StorageAccountPropertiesInner();
+ }
+ this.innerProperties().withDnsEndpointType(dnsEndpointType);
+ return this;
+ }
+
+ /**
+ * Validates the instance.
+ *
+ * @throws IllegalArgumentException thrown if the instance is not valid.
+ */
+ public void validate() {
+ if (sku() != null) {
+ sku().validate();
+ }
+ if (identity() != null) {
+ identity().validate();
+ }
+ if (extendedLocation() != null) {
+ extendedLocation().validate();
+ }
+ if (innerProperties() != null) {
+ innerProperties().validate();
+ }
+ }
+}
diff --git a/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/StorageAccountListKeysResultInner.java b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/StorageAccountListKeysResultInner.java
new file mode 100644
index 0000000000000..81871decdd5b5
--- /dev/null
+++ b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/StorageAccountListKeysResultInner.java
@@ -0,0 +1,41 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.storage.generated.fluent.models;
+
+import com.azure.core.annotation.Immutable;
+import com.azure.resourcemanager.storage.generated.models.StorageAccountKey;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import java.util.List;
+
+/** The response from the ListKeys operation. */
+@Immutable
+public final class StorageAccountListKeysResultInner {
+ /*
+ * Gets the list of storage account keys and their properties for the specified storage account.
+ */
+ @JsonProperty(value = "keys", access = JsonProperty.Access.WRITE_ONLY)
+ private List keys;
+
+ /**
+ * Get the keys property: Gets the list of storage account keys and their properties for the specified storage
+ * account.
+ *
+ * @return the keys value.
+ */
+ public List keys() {
+ return this.keys;
+ }
+
+ /**
+ * Validates the instance.
+ *
+ * @throws IllegalArgumentException thrown if the instance is not valid.
+ */
+ public void validate() {
+ if (keys() != null) {
+ keys().forEach(e -> e.validate());
+ }
+ }
+}
diff --git a/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/StorageAccountPropertiesCreateParameters.java b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/StorageAccountPropertiesCreateParameters.java
new file mode 100644
index 0000000000000..2b92eadff054a
--- /dev/null
+++ b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/StorageAccountPropertiesCreateParameters.java
@@ -0,0 +1,715 @@
+// 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.resourcemanager.storage.generated.models.AccessTier;
+import com.azure.resourcemanager.storage.generated.models.AllowedCopyScope;
+import com.azure.resourcemanager.storage.generated.models.AzureFilesIdentityBasedAuthentication;
+import com.azure.resourcemanager.storage.generated.models.CustomDomain;
+import com.azure.resourcemanager.storage.generated.models.DnsEndpointType;
+import com.azure.resourcemanager.storage.generated.models.Encryption;
+import com.azure.resourcemanager.storage.generated.models.ImmutableStorageAccount;
+import com.azure.resourcemanager.storage.generated.models.KeyPolicy;
+import com.azure.resourcemanager.storage.generated.models.LargeFileSharesState;
+import com.azure.resourcemanager.storage.generated.models.MinimumTlsVersion;
+import com.azure.resourcemanager.storage.generated.models.NetworkRuleSet;
+import com.azure.resourcemanager.storage.generated.models.PublicNetworkAccess;
+import com.azure.resourcemanager.storage.generated.models.RoutingPreference;
+import com.azure.resourcemanager.storage.generated.models.SasPolicy;
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/** The parameters used to create the storage account. */
+@Fluent
+public final class StorageAccountPropertiesCreateParameters {
+ /*
+ * Restrict copy to and from Storage Accounts within an AAD tenant or with Private Links to the same VNet.
+ */
+ @JsonProperty(value = "allowedCopyScope")
+ private AllowedCopyScope allowedCopyScope;
+
+ /*
+ * Allow or disallow public network access to Storage Account. Value is optional but if passed in, must be
+ * 'Enabled' or 'Disabled'.
+ */
+ @JsonProperty(value = "publicNetworkAccess")
+ private PublicNetworkAccess publicNetworkAccess;
+
+ /*
+ * SasPolicy assigned to the storage account.
+ */
+ @JsonProperty(value = "sasPolicy")
+ private SasPolicy sasPolicy;
+
+ /*
+ * KeyPolicy assigned to the storage account.
+ */
+ @JsonProperty(value = "keyPolicy")
+ private KeyPolicy keyPolicy;
+
+ /*
+ * User domain assigned to the storage account. Name is the CNAME source. Only one custom domain is supported per
+ * storage account at this time. To clear the existing custom domain, use an empty string for the custom domain
+ * name property.
+ */
+ @JsonProperty(value = "customDomain")
+ private CustomDomain customDomain;
+
+ /*
+ * Encryption settings to be used for server-side encryption for the storage account.
+ */
+ @JsonProperty(value = "encryption")
+ private Encryption encryption;
+
+ /*
+ * Network rule set
+ */
+ @JsonProperty(value = "networkAcls")
+ private NetworkRuleSet networkRuleSet;
+
+ /*
+ * Required for storage accounts where kind = BlobStorage. The access tier is used for billing. The 'Premium'
+ * access tier is the default value for premium block blobs storage account type and it cannot be changed for the
+ * premium block blobs storage account type.
+ */
+ @JsonProperty(value = "accessTier")
+ private AccessTier accessTier;
+
+ /*
+ * Provides the identity based authentication settings for Azure Files.
+ */
+ @JsonProperty(value = "azureFilesIdentityBasedAuthentication")
+ private AzureFilesIdentityBasedAuthentication azureFilesIdentityBasedAuthentication;
+
+ /*
+ * Allows https traffic only to storage service if sets to true. The default value is true since API version
+ * 2019-04-01.
+ */
+ @JsonProperty(value = "supportsHttpsTrafficOnly")
+ private Boolean enableHttpsTrafficOnly;
+
+ /*
+ * Enables Secure File Transfer Protocol, if set to true
+ */
+ @JsonProperty(value = "isSftpEnabled")
+ private Boolean isSftpEnabled;
+
+ /*
+ * Enables local users feature, if set to true
+ */
+ @JsonProperty(value = "isLocalUserEnabled")
+ private Boolean isLocalUserEnabled;
+
+ /*
+ * Account HierarchicalNamespace enabled if sets to true.
+ */
+ @JsonProperty(value = "isHnsEnabled")
+ private Boolean isHnsEnabled;
+
+ /*
+ * Allow large file shares if sets to Enabled. It cannot be disabled once it is enabled.
+ */
+ @JsonProperty(value = "largeFileSharesState")
+ private LargeFileSharesState largeFileSharesState;
+
+ /*
+ * Maintains information about the network routing choice opted by the user for data transfer
+ */
+ @JsonProperty(value = "routingPreference")
+ private RoutingPreference routingPreference;
+
+ /*
+ * Allow or disallow public access to all blobs or containers in the storage account. The default interpretation is
+ * true for this property.
+ */
+ @JsonProperty(value = "allowBlobPublicAccess")
+ private Boolean allowBlobPublicAccess;
+
+ /*
+ * Set the minimum TLS version to be permitted on requests to storage. The default interpretation is TLS 1.0 for
+ * this property.
+ */
+ @JsonProperty(value = "minimumTlsVersion")
+ private MinimumTlsVersion minimumTlsVersion;
+
+ /*
+ * Indicates whether the storage account permits requests to be authorized with the account access key via Shared
+ * Key. If false, then all requests, including shared access signatures, must be authorized with Azure Active
+ * Directory (Azure AD). The default value is null, which is equivalent to true.
+ */
+ @JsonProperty(value = "allowSharedKeyAccess")
+ private Boolean allowSharedKeyAccess;
+
+ /*
+ * NFS 3.0 protocol support enabled if set to true.
+ */
+ @JsonProperty(value = "isNfsV3Enabled")
+ private Boolean enableNfsV3;
+
+ /*
+ * Allow or disallow cross AAD tenant object replication. The default interpretation is true for this property.
+ */
+ @JsonProperty(value = "allowCrossTenantReplication")
+ private Boolean allowCrossTenantReplication;
+
+ /*
+ * A boolean flag which indicates whether the default authentication is OAuth or not. The default interpretation is
+ * false for this property.
+ */
+ @JsonProperty(value = "defaultToOAuthAuthentication")
+ private Boolean defaultToOAuthAuthentication;
+
+ /*
+ * The property is immutable and can only be set to true at the account creation time. When set to true, it enables
+ * object level immutability for all the new containers in the account by default.
+ */
+ @JsonProperty(value = "immutableStorageWithVersioning")
+ private ImmutableStorageAccount immutableStorageWithVersioning;
+
+ /*
+ * Allows you to specify the type of endpoint. Set this to AzureDNSZone to create a large number of accounts in a
+ * single subscription, which creates accounts in an Azure DNS Zone and the endpoint URL will have an alphanumeric
+ * DNS Zone identifier.
+ */
+ @JsonProperty(value = "dnsEndpointType")
+ private DnsEndpointType dnsEndpointType;
+
+ /**
+ * Get the allowedCopyScope property: Restrict copy to and from Storage Accounts within an AAD tenant or with
+ * Private Links to the same VNet.
+ *
+ * @return the allowedCopyScope value.
+ */
+ public AllowedCopyScope allowedCopyScope() {
+ return this.allowedCopyScope;
+ }
+
+ /**
+ * Set the allowedCopyScope property: Restrict copy to and from Storage Accounts within an AAD tenant or with
+ * Private Links to the same VNet.
+ *
+ * @param allowedCopyScope the allowedCopyScope value to set.
+ * @return the StorageAccountPropertiesCreateParameters object itself.
+ */
+ public StorageAccountPropertiesCreateParameters withAllowedCopyScope(AllowedCopyScope allowedCopyScope) {
+ this.allowedCopyScope = allowedCopyScope;
+ return this;
+ }
+
+ /**
+ * Get the publicNetworkAccess property: Allow or disallow public network access to Storage Account. Value is
+ * optional but if passed in, must be 'Enabled' or 'Disabled'.
+ *
+ * @return the publicNetworkAccess value.
+ */
+ public PublicNetworkAccess publicNetworkAccess() {
+ return this.publicNetworkAccess;
+ }
+
+ /**
+ * Set the publicNetworkAccess property: Allow or disallow public network access to Storage Account. Value is
+ * optional but if passed in, must be 'Enabled' or 'Disabled'.
+ *
+ * @param publicNetworkAccess the publicNetworkAccess value to set.
+ * @return the StorageAccountPropertiesCreateParameters object itself.
+ */
+ public StorageAccountPropertiesCreateParameters withPublicNetworkAccess(PublicNetworkAccess publicNetworkAccess) {
+ this.publicNetworkAccess = publicNetworkAccess;
+ return this;
+ }
+
+ /**
+ * Get the sasPolicy property: SasPolicy assigned to the storage account.
+ *
+ * @return the sasPolicy value.
+ */
+ public SasPolicy sasPolicy() {
+ return this.sasPolicy;
+ }
+
+ /**
+ * Set the sasPolicy property: SasPolicy assigned to the storage account.
+ *
+ * @param sasPolicy the sasPolicy value to set.
+ * @return the StorageAccountPropertiesCreateParameters object itself.
+ */
+ public StorageAccountPropertiesCreateParameters withSasPolicy(SasPolicy sasPolicy) {
+ this.sasPolicy = sasPolicy;
+ return this;
+ }
+
+ /**
+ * Get the keyPolicy property: KeyPolicy assigned to the storage account.
+ *
+ * @return the keyPolicy value.
+ */
+ public KeyPolicy keyPolicy() {
+ return this.keyPolicy;
+ }
+
+ /**
+ * Set the keyPolicy property: KeyPolicy assigned to the storage account.
+ *
+ * @param keyPolicy the keyPolicy value to set.
+ * @return the StorageAccountPropertiesCreateParameters object itself.
+ */
+ public StorageAccountPropertiesCreateParameters withKeyPolicy(KeyPolicy keyPolicy) {
+ this.keyPolicy = keyPolicy;
+ return this;
+ }
+
+ /**
+ * Get the customDomain property: User domain assigned to the storage account. Name is the CNAME source. Only one
+ * custom domain is supported per storage account at this time. To clear the existing custom domain, use an empty
+ * string for the custom domain name property.
+ *
+ * @return the customDomain value.
+ */
+ public CustomDomain customDomain() {
+ return this.customDomain;
+ }
+
+ /**
+ * Set the customDomain property: User domain assigned to the storage account. Name is the CNAME source. Only one
+ * custom domain is supported per storage account at this time. To clear the existing custom domain, use an empty
+ * string for the custom domain name property.
+ *
+ * @param customDomain the customDomain value to set.
+ * @return the StorageAccountPropertiesCreateParameters object itself.
+ */
+ public StorageAccountPropertiesCreateParameters withCustomDomain(CustomDomain customDomain) {
+ this.customDomain = customDomain;
+ return this;
+ }
+
+ /**
+ * Get the encryption property: Encryption settings to be used for server-side encryption for the storage account.
+ *
+ * @return the encryption value.
+ */
+ public Encryption encryption() {
+ return this.encryption;
+ }
+
+ /**
+ * Set the encryption property: Encryption settings to be used for server-side encryption for the storage account.
+ *
+ * @param encryption the encryption value to set.
+ * @return the StorageAccountPropertiesCreateParameters object itself.
+ */
+ public StorageAccountPropertiesCreateParameters withEncryption(Encryption encryption) {
+ this.encryption = encryption;
+ return this;
+ }
+
+ /**
+ * Get the networkRuleSet property: Network rule set.
+ *
+ * @return the networkRuleSet value.
+ */
+ public NetworkRuleSet networkRuleSet() {
+ return this.networkRuleSet;
+ }
+
+ /**
+ * Set the networkRuleSet property: Network rule set.
+ *
+ * @param networkRuleSet the networkRuleSet value to set.
+ * @return the StorageAccountPropertiesCreateParameters object itself.
+ */
+ public StorageAccountPropertiesCreateParameters withNetworkRuleSet(NetworkRuleSet networkRuleSet) {
+ this.networkRuleSet = networkRuleSet;
+ return this;
+ }
+
+ /**
+ * Get the accessTier property: Required for storage accounts where kind = BlobStorage. The access tier is used for
+ * billing. The 'Premium' access tier is the default value for premium block blobs storage account type and it
+ * cannot be changed for the premium block blobs storage account type.
+ *
+ * @return the accessTier value.
+ */
+ public AccessTier accessTier() {
+ return this.accessTier;
+ }
+
+ /**
+ * Set the accessTier property: Required for storage accounts where kind = BlobStorage. The access tier is used for
+ * billing. The 'Premium' access tier is the default value for premium block blobs storage account type and it
+ * cannot be changed for the premium block blobs storage account type.
+ *
+ * @param accessTier the accessTier value to set.
+ * @return the StorageAccountPropertiesCreateParameters object itself.
+ */
+ public StorageAccountPropertiesCreateParameters withAccessTier(AccessTier accessTier) {
+ this.accessTier = accessTier;
+ return this;
+ }
+
+ /**
+ * Get the azureFilesIdentityBasedAuthentication property: Provides the identity based authentication settings for
+ * Azure Files.
+ *
+ * @return the azureFilesIdentityBasedAuthentication value.
+ */
+ public AzureFilesIdentityBasedAuthentication azureFilesIdentityBasedAuthentication() {
+ return this.azureFilesIdentityBasedAuthentication;
+ }
+
+ /**
+ * Set the azureFilesIdentityBasedAuthentication property: Provides the identity based authentication settings for
+ * Azure Files.
+ *
+ * @param azureFilesIdentityBasedAuthentication the azureFilesIdentityBasedAuthentication value to set.
+ * @return the StorageAccountPropertiesCreateParameters object itself.
+ */
+ public StorageAccountPropertiesCreateParameters withAzureFilesIdentityBasedAuthentication(
+ AzureFilesIdentityBasedAuthentication azureFilesIdentityBasedAuthentication) {
+ this.azureFilesIdentityBasedAuthentication = azureFilesIdentityBasedAuthentication;
+ return this;
+ }
+
+ /**
+ * Get the enableHttpsTrafficOnly property: Allows https traffic only to storage service if sets to true. The
+ * default value is true since API version 2019-04-01.
+ *
+ * @return the enableHttpsTrafficOnly value.
+ */
+ public Boolean enableHttpsTrafficOnly() {
+ return this.enableHttpsTrafficOnly;
+ }
+
+ /**
+ * Set the enableHttpsTrafficOnly property: Allows https traffic only to storage service if sets to true. The
+ * default value is true since API version 2019-04-01.
+ *
+ * @param enableHttpsTrafficOnly the enableHttpsTrafficOnly value to set.
+ * @return the StorageAccountPropertiesCreateParameters object itself.
+ */
+ public StorageAccountPropertiesCreateParameters withEnableHttpsTrafficOnly(Boolean enableHttpsTrafficOnly) {
+ this.enableHttpsTrafficOnly = enableHttpsTrafficOnly;
+ return this;
+ }
+
+ /**
+ * Get the isSftpEnabled property: Enables Secure File Transfer Protocol, if set to true.
+ *
+ * @return the isSftpEnabled value.
+ */
+ public Boolean isSftpEnabled() {
+ return this.isSftpEnabled;
+ }
+
+ /**
+ * Set the isSftpEnabled property: Enables Secure File Transfer Protocol, if set to true.
+ *
+ * @param isSftpEnabled the isSftpEnabled value to set.
+ * @return the StorageAccountPropertiesCreateParameters object itself.
+ */
+ public StorageAccountPropertiesCreateParameters withIsSftpEnabled(Boolean isSftpEnabled) {
+ this.isSftpEnabled = isSftpEnabled;
+ return this;
+ }
+
+ /**
+ * Get the isLocalUserEnabled property: Enables local users feature, if set to true.
+ *
+ * @return the isLocalUserEnabled value.
+ */
+ public Boolean isLocalUserEnabled() {
+ return this.isLocalUserEnabled;
+ }
+
+ /**
+ * Set the isLocalUserEnabled property: Enables local users feature, if set to true.
+ *
+ * @param isLocalUserEnabled the isLocalUserEnabled value to set.
+ * @return the StorageAccountPropertiesCreateParameters object itself.
+ */
+ public StorageAccountPropertiesCreateParameters withIsLocalUserEnabled(Boolean isLocalUserEnabled) {
+ this.isLocalUserEnabled = isLocalUserEnabled;
+ return this;
+ }
+
+ /**
+ * Get the isHnsEnabled property: Account HierarchicalNamespace enabled if sets to true.
+ *
+ * @return the isHnsEnabled value.
+ */
+ public Boolean isHnsEnabled() {
+ return this.isHnsEnabled;
+ }
+
+ /**
+ * Set the isHnsEnabled property: Account HierarchicalNamespace enabled if sets to true.
+ *
+ * @param isHnsEnabled the isHnsEnabled value to set.
+ * @return the StorageAccountPropertiesCreateParameters object itself.
+ */
+ public StorageAccountPropertiesCreateParameters withIsHnsEnabled(Boolean isHnsEnabled) {
+ this.isHnsEnabled = isHnsEnabled;
+ return this;
+ }
+
+ /**
+ * Get the largeFileSharesState property: Allow large file shares if sets to Enabled. It cannot be disabled once it
+ * is enabled.
+ *
+ * @return the largeFileSharesState value.
+ */
+ public LargeFileSharesState largeFileSharesState() {
+ return this.largeFileSharesState;
+ }
+
+ /**
+ * Set the largeFileSharesState property: Allow large file shares if sets to Enabled. It cannot be disabled once it
+ * is enabled.
+ *
+ * @param largeFileSharesState the largeFileSharesState value to set.
+ * @return the StorageAccountPropertiesCreateParameters object itself.
+ */
+ public StorageAccountPropertiesCreateParameters withLargeFileSharesState(
+ LargeFileSharesState largeFileSharesState) {
+ this.largeFileSharesState = largeFileSharesState;
+ return this;
+ }
+
+ /**
+ * Get the routingPreference property: Maintains information about the network routing choice opted by the user for
+ * data transfer.
+ *
+ * @return the routingPreference value.
+ */
+ public RoutingPreference routingPreference() {
+ return this.routingPreference;
+ }
+
+ /**
+ * Set the routingPreference property: Maintains information about the network routing choice opted by the user for
+ * data transfer.
+ *
+ * @param routingPreference the routingPreference value to set.
+ * @return the StorageAccountPropertiesCreateParameters object itself.
+ */
+ public StorageAccountPropertiesCreateParameters withRoutingPreference(RoutingPreference routingPreference) {
+ this.routingPreference = routingPreference;
+ return this;
+ }
+
+ /**
+ * Get the allowBlobPublicAccess property: Allow or disallow public access to all blobs or containers in the storage
+ * account. The default interpretation is true for this property.
+ *
+ * @return the allowBlobPublicAccess value.
+ */
+ public Boolean allowBlobPublicAccess() {
+ return this.allowBlobPublicAccess;
+ }
+
+ /**
+ * Set the allowBlobPublicAccess property: Allow or disallow public access to all blobs or containers in the storage
+ * account. The default interpretation is true for this property.
+ *
+ * @param allowBlobPublicAccess the allowBlobPublicAccess value to set.
+ * @return the StorageAccountPropertiesCreateParameters object itself.
+ */
+ public StorageAccountPropertiesCreateParameters withAllowBlobPublicAccess(Boolean allowBlobPublicAccess) {
+ this.allowBlobPublicAccess = allowBlobPublicAccess;
+ return this;
+ }
+
+ /**
+ * Get the minimumTlsVersion property: Set the minimum TLS version to be permitted on requests to storage. The
+ * default interpretation is TLS 1.0 for this property.
+ *
+ * @return the minimumTlsVersion value.
+ */
+ public MinimumTlsVersion minimumTlsVersion() {
+ return this.minimumTlsVersion;
+ }
+
+ /**
+ * Set the minimumTlsVersion property: Set the minimum TLS version to be permitted on requests to storage. The
+ * default interpretation is TLS 1.0 for this property.
+ *
+ * @param minimumTlsVersion the minimumTlsVersion value to set.
+ * @return the StorageAccountPropertiesCreateParameters object itself.
+ */
+ public StorageAccountPropertiesCreateParameters withMinimumTlsVersion(MinimumTlsVersion minimumTlsVersion) {
+ this.minimumTlsVersion = minimumTlsVersion;
+ return this;
+ }
+
+ /**
+ * Get the allowSharedKeyAccess property: Indicates whether the storage account permits requests to be authorized
+ * with the account access key via Shared Key. If false, then all requests, including shared access signatures, must
+ * be authorized with Azure Active Directory (Azure AD). The default value is null, which is equivalent to true.
+ *
+ * @return the allowSharedKeyAccess value.
+ */
+ public Boolean allowSharedKeyAccess() {
+ return this.allowSharedKeyAccess;
+ }
+
+ /**
+ * Set the allowSharedKeyAccess property: Indicates whether the storage account permits requests to be authorized
+ * with the account access key via Shared Key. If false, then all requests, including shared access signatures, must
+ * be authorized with Azure Active Directory (Azure AD). The default value is null, which is equivalent to true.
+ *
+ * @param allowSharedKeyAccess the allowSharedKeyAccess value to set.
+ * @return the StorageAccountPropertiesCreateParameters object itself.
+ */
+ public StorageAccountPropertiesCreateParameters withAllowSharedKeyAccess(Boolean allowSharedKeyAccess) {
+ this.allowSharedKeyAccess = allowSharedKeyAccess;
+ return this;
+ }
+
+ /**
+ * Get the enableNfsV3 property: NFS 3.0 protocol support enabled if set to true.
+ *
+ * @return the enableNfsV3 value.
+ */
+ public Boolean enableNfsV3() {
+ return this.enableNfsV3;
+ }
+
+ /**
+ * Set the enableNfsV3 property: NFS 3.0 protocol support enabled if set to true.
+ *
+ * @param enableNfsV3 the enableNfsV3 value to set.
+ * @return the StorageAccountPropertiesCreateParameters object itself.
+ */
+ public StorageAccountPropertiesCreateParameters withEnableNfsV3(Boolean enableNfsV3) {
+ this.enableNfsV3 = enableNfsV3;
+ return this;
+ }
+
+ /**
+ * Get the allowCrossTenantReplication property: Allow or disallow cross AAD tenant object replication. The default
+ * interpretation is true for this property.
+ *
+ * @return the allowCrossTenantReplication value.
+ */
+ public Boolean allowCrossTenantReplication() {
+ return this.allowCrossTenantReplication;
+ }
+
+ /**
+ * Set the allowCrossTenantReplication property: Allow or disallow cross AAD tenant object replication. The default
+ * interpretation is true for this property.
+ *
+ * @param allowCrossTenantReplication the allowCrossTenantReplication value to set.
+ * @return the StorageAccountPropertiesCreateParameters object itself.
+ */
+ public StorageAccountPropertiesCreateParameters withAllowCrossTenantReplication(
+ Boolean allowCrossTenantReplication) {
+ this.allowCrossTenantReplication = allowCrossTenantReplication;
+ return this;
+ }
+
+ /**
+ * Get the defaultToOAuthAuthentication property: A boolean flag which indicates whether the default authentication
+ * is OAuth or not. The default interpretation is false for this property.
+ *
+ * @return the defaultToOAuthAuthentication value.
+ */
+ public Boolean defaultToOAuthAuthentication() {
+ return this.defaultToOAuthAuthentication;
+ }
+
+ /**
+ * Set the defaultToOAuthAuthentication property: A boolean flag which indicates whether the default authentication
+ * is OAuth or not. The default interpretation is false for this property.
+ *
+ * @param defaultToOAuthAuthentication the defaultToOAuthAuthentication value to set.
+ * @return the StorageAccountPropertiesCreateParameters object itself.
+ */
+ public StorageAccountPropertiesCreateParameters withDefaultToOAuthAuthentication(
+ Boolean defaultToOAuthAuthentication) {
+ this.defaultToOAuthAuthentication = defaultToOAuthAuthentication;
+ return this;
+ }
+
+ /**
+ * Get the immutableStorageWithVersioning property: The property is immutable and can only be set to true at the
+ * account creation time. When set to true, it enables object level immutability for all the new containers in the
+ * account by default.
+ *
+ * @return the immutableStorageWithVersioning value.
+ */
+ public ImmutableStorageAccount immutableStorageWithVersioning() {
+ return this.immutableStorageWithVersioning;
+ }
+
+ /**
+ * Set the immutableStorageWithVersioning property: The property is immutable and can only be set to true at the
+ * account creation time. When set to true, it enables object level immutability for all the new containers in the
+ * account by default.
+ *
+ * @param immutableStorageWithVersioning the immutableStorageWithVersioning value to set.
+ * @return the StorageAccountPropertiesCreateParameters object itself.
+ */
+ public StorageAccountPropertiesCreateParameters withImmutableStorageWithVersioning(
+ ImmutableStorageAccount immutableStorageWithVersioning) {
+ this.immutableStorageWithVersioning = immutableStorageWithVersioning;
+ return this;
+ }
+
+ /**
+ * Get the dnsEndpointType property: Allows you to specify the type of endpoint. Set this to AzureDNSZone to create
+ * a large number of accounts in a single subscription, which creates accounts in an Azure DNS Zone and the endpoint
+ * URL will have an alphanumeric DNS Zone identifier.
+ *
+ * @return the dnsEndpointType value.
+ */
+ public DnsEndpointType dnsEndpointType() {
+ return this.dnsEndpointType;
+ }
+
+ /**
+ * Set the dnsEndpointType property: Allows you to specify the type of endpoint. Set this to AzureDNSZone to create
+ * a large number of accounts in a single subscription, which creates accounts in an Azure DNS Zone and the endpoint
+ * URL will have an alphanumeric DNS Zone identifier.
+ *
+ * @param dnsEndpointType the dnsEndpointType value to set.
+ * @return the StorageAccountPropertiesCreateParameters object itself.
+ */
+ public StorageAccountPropertiesCreateParameters withDnsEndpointType(DnsEndpointType dnsEndpointType) {
+ this.dnsEndpointType = dnsEndpointType;
+ return this;
+ }
+
+ /**
+ * Validates the instance.
+ *
+ * @throws IllegalArgumentException thrown if the instance is not valid.
+ */
+ public void validate() {
+ if (sasPolicy() != null) {
+ sasPolicy().validate();
+ }
+ if (keyPolicy() != null) {
+ keyPolicy().validate();
+ }
+ if (customDomain() != null) {
+ customDomain().validate();
+ }
+ if (encryption() != null) {
+ encryption().validate();
+ }
+ if (networkRuleSet() != null) {
+ networkRuleSet().validate();
+ }
+ if (azureFilesIdentityBasedAuthentication() != null) {
+ azureFilesIdentityBasedAuthentication().validate();
+ }
+ if (routingPreference() != null) {
+ routingPreference().validate();
+ }
+ if (immutableStorageWithVersioning() != null) {
+ immutableStorageWithVersioning().validate();
+ }
+ }
+}
diff --git a/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/StorageAccountPropertiesInner.java b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/StorageAccountPropertiesInner.java
new file mode 100644
index 0000000000000..5c804af1ee802
--- /dev/null
+++ b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/StorageAccountPropertiesInner.java
@@ -0,0 +1,919 @@
+// 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.resourcemanager.storage.generated.models.AccessTier;
+import com.azure.resourcemanager.storage.generated.models.AccountStatus;
+import com.azure.resourcemanager.storage.generated.models.AllowedCopyScope;
+import com.azure.resourcemanager.storage.generated.models.AzureFilesIdentityBasedAuthentication;
+import com.azure.resourcemanager.storage.generated.models.CustomDomain;
+import com.azure.resourcemanager.storage.generated.models.DnsEndpointType;
+import com.azure.resourcemanager.storage.generated.models.Encryption;
+import com.azure.resourcemanager.storage.generated.models.Endpoints;
+import com.azure.resourcemanager.storage.generated.models.GeoReplicationStats;
+import com.azure.resourcemanager.storage.generated.models.ImmutableStorageAccount;
+import com.azure.resourcemanager.storage.generated.models.KeyCreationTime;
+import com.azure.resourcemanager.storage.generated.models.KeyPolicy;
+import com.azure.resourcemanager.storage.generated.models.LargeFileSharesState;
+import com.azure.resourcemanager.storage.generated.models.MinimumTlsVersion;
+import com.azure.resourcemanager.storage.generated.models.NetworkRuleSet;
+import com.azure.resourcemanager.storage.generated.models.ProvisioningState;
+import com.azure.resourcemanager.storage.generated.models.PublicNetworkAccess;
+import com.azure.resourcemanager.storage.generated.models.RoutingPreference;
+import com.azure.resourcemanager.storage.generated.models.SasPolicy;
+import com.azure.resourcemanager.storage.generated.models.StorageAccountSkuConversionStatus;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import java.time.OffsetDateTime;
+import java.util.List;
+
+/** Properties of the storage account. */
+@Fluent
+public final class StorageAccountPropertiesInner {
+ /*
+ * Gets the status of the storage account at the time the operation was called.
+ */
+ @JsonProperty(value = "provisioningState", access = JsonProperty.Access.WRITE_ONLY)
+ private ProvisioningState provisioningState;
+
+ /*
+ * Gets the URLs that are used to perform a retrieval of a public blob, queue, or table object. Note that
+ * Standard_ZRS and Premium_LRS accounts only return the blob endpoint.
+ */
+ @JsonProperty(value = "primaryEndpoints", access = JsonProperty.Access.WRITE_ONLY)
+ private Endpoints primaryEndpoints;
+
+ /*
+ * Gets the location of the primary data center for the storage account.
+ */
+ @JsonProperty(value = "primaryLocation", access = JsonProperty.Access.WRITE_ONLY)
+ private String primaryLocation;
+
+ /*
+ * Gets the status indicating whether the primary location of the storage account is available or unavailable.
+ */
+ @JsonProperty(value = "statusOfPrimary", access = JsonProperty.Access.WRITE_ONLY)
+ private AccountStatus statusOfPrimary;
+
+ /*
+ * Gets the timestamp of the most recent instance of a failover to the secondary location. Only the most recent
+ * timestamp is retained. This element is not returned if there has never been a failover instance. Only available
+ * if the accountType is Standard_GRS or Standard_RAGRS.
+ */
+ @JsonProperty(value = "lastGeoFailoverTime", access = JsonProperty.Access.WRITE_ONLY)
+ private OffsetDateTime lastGeoFailoverTime;
+
+ /*
+ * Gets the location of the geo-replicated secondary for the storage account. Only available if the accountType is
+ * Standard_GRS or Standard_RAGRS.
+ */
+ @JsonProperty(value = "secondaryLocation", access = JsonProperty.Access.WRITE_ONLY)
+ private String secondaryLocation;
+
+ /*
+ * Gets the status indicating whether the secondary location of the storage account is available or unavailable.
+ * Only available if the SKU name is Standard_GRS or Standard_RAGRS.
+ */
+ @JsonProperty(value = "statusOfSecondary", access = JsonProperty.Access.WRITE_ONLY)
+ private AccountStatus statusOfSecondary;
+
+ /*
+ * Gets the creation date and time of the storage account in UTC.
+ */
+ @JsonProperty(value = "creationTime", access = JsonProperty.Access.WRITE_ONLY)
+ private OffsetDateTime creationTime;
+
+ /*
+ * Gets the custom domain the user assigned to this storage account.
+ */
+ @JsonProperty(value = "customDomain", access = JsonProperty.Access.WRITE_ONLY)
+ private CustomDomain customDomain;
+
+ /*
+ * SasPolicy assigned to the storage account.
+ */
+ @JsonProperty(value = "sasPolicy", access = JsonProperty.Access.WRITE_ONLY)
+ private SasPolicy sasPolicy;
+
+ /*
+ * KeyPolicy assigned to the storage account.
+ */
+ @JsonProperty(value = "keyPolicy", access = JsonProperty.Access.WRITE_ONLY)
+ private KeyPolicy keyPolicy;
+
+ /*
+ * Storage account keys creation time.
+ */
+ @JsonProperty(value = "keyCreationTime", access = JsonProperty.Access.WRITE_ONLY)
+ private KeyCreationTime keyCreationTime;
+
+ /*
+ * Gets the URLs that are used to perform a retrieval of a public blob, queue, or table object from the secondary
+ * location of the storage account. Only available if the SKU name is Standard_RAGRS.
+ */
+ @JsonProperty(value = "secondaryEndpoints", access = JsonProperty.Access.WRITE_ONLY)
+ private Endpoints secondaryEndpoints;
+
+ /*
+ * Encryption settings to be used for server-side encryption for the storage account.
+ */
+ @JsonProperty(value = "encryption", access = JsonProperty.Access.WRITE_ONLY)
+ private Encryption encryption;
+
+ /*
+ * Required for storage accounts where kind = BlobStorage. The access tier is used for billing. The 'Premium'
+ * access tier is the default value for premium block blobs storage account type and it cannot be changed for the
+ * premium block blobs storage account type.
+ */
+ @JsonProperty(value = "accessTier", access = JsonProperty.Access.WRITE_ONLY)
+ private AccessTier accessTier;
+
+ /*
+ * Provides the identity based authentication settings for Azure Files.
+ */
+ @JsonProperty(value = "azureFilesIdentityBasedAuthentication")
+ private AzureFilesIdentityBasedAuthentication azureFilesIdentityBasedAuthentication;
+
+ /*
+ * Allows https traffic only to storage service if sets to true.
+ */
+ @JsonProperty(value = "supportsHttpsTrafficOnly")
+ private Boolean enableHttpsTrafficOnly;
+
+ /*
+ * Network rule set
+ */
+ @JsonProperty(value = "networkAcls", access = JsonProperty.Access.WRITE_ONLY)
+ private NetworkRuleSet networkRuleSet;
+
+ /*
+ * Enables Secure File Transfer Protocol, if set to true
+ */
+ @JsonProperty(value = "isSftpEnabled")
+ private Boolean isSftpEnabled;
+
+ /*
+ * Enables local users feature, if set to true
+ */
+ @JsonProperty(value = "isLocalUserEnabled")
+ private Boolean isLocalUserEnabled;
+
+ /*
+ * Account HierarchicalNamespace enabled if sets to true.
+ */
+ @JsonProperty(value = "isHnsEnabled")
+ private Boolean isHnsEnabled;
+
+ /*
+ * Geo Replication Stats
+ */
+ @JsonProperty(value = "geoReplicationStats", access = JsonProperty.Access.WRITE_ONLY)
+ private GeoReplicationStats geoReplicationStats;
+
+ /*
+ * If the failover is in progress, the value will be true, otherwise, it will be null.
+ */
+ @JsonProperty(value = "failoverInProgress", access = JsonProperty.Access.WRITE_ONLY)
+ private Boolean failoverInProgress;
+
+ /*
+ * Allow large file shares if sets to Enabled. It cannot be disabled once it is enabled.
+ */
+ @JsonProperty(value = "largeFileSharesState")
+ private LargeFileSharesState largeFileSharesState;
+
+ /*
+ * List of private endpoint connection associated with the specified storage account
+ */
+ @JsonProperty(value = "privateEndpointConnections", access = JsonProperty.Access.WRITE_ONLY)
+ private List privateEndpointConnections;
+
+ /*
+ * Maintains information about the network routing choice opted by the user for data transfer
+ */
+ @JsonProperty(value = "routingPreference")
+ private RoutingPreference routingPreference;
+
+ /*
+ * Blob restore status
+ */
+ @JsonProperty(value = "blobRestoreStatus", access = JsonProperty.Access.WRITE_ONLY)
+ private BlobRestoreStatusInner blobRestoreStatus;
+
+ /*
+ * Allow or disallow public access to all blobs or containers in the storage account. The default interpretation is
+ * true for this property.
+ */
+ @JsonProperty(value = "allowBlobPublicAccess")
+ private Boolean allowBlobPublicAccess;
+
+ /*
+ * Set the minimum TLS version to be permitted on requests to storage. The default interpretation is TLS 1.0 for
+ * this property.
+ */
+ @JsonProperty(value = "minimumTlsVersion")
+ private MinimumTlsVersion minimumTlsVersion;
+
+ /*
+ * Indicates whether the storage account permits requests to be authorized with the account access key via Shared
+ * Key. If false, then all requests, including shared access signatures, must be authorized with Azure Active
+ * Directory (Azure AD). The default value is null, which is equivalent to true.
+ */
+ @JsonProperty(value = "allowSharedKeyAccess")
+ private Boolean allowSharedKeyAccess;
+
+ /*
+ * NFS 3.0 protocol support enabled if set to true.
+ */
+ @JsonProperty(value = "isNfsV3Enabled")
+ private Boolean enableNfsV3;
+
+ /*
+ * Allow or disallow cross AAD tenant object replication. The default interpretation is true for this property.
+ */
+ @JsonProperty(value = "allowCrossTenantReplication")
+ private Boolean allowCrossTenantReplication;
+
+ /*
+ * A boolean flag which indicates whether the default authentication is OAuth or not. The default interpretation is
+ * false for this property.
+ */
+ @JsonProperty(value = "defaultToOAuthAuthentication")
+ private Boolean defaultToOAuthAuthentication;
+
+ /*
+ * Allow or disallow public network access to Storage Account. Value is optional but if passed in, must be
+ * 'Enabled' or 'Disabled'.
+ */
+ @JsonProperty(value = "publicNetworkAccess")
+ private PublicNetworkAccess publicNetworkAccess;
+
+ /*
+ * The property is immutable and can only be set to true at the account creation time. When set to true, it enables
+ * object level immutability for all the containers in the account by default.
+ */
+ @JsonProperty(value = "immutableStorageWithVersioning")
+ private ImmutableStorageAccount immutableStorageWithVersioning;
+
+ /*
+ * Restrict copy to and from Storage Accounts within an AAD tenant or with Private Links to the same VNet.
+ */
+ @JsonProperty(value = "allowedCopyScope")
+ private AllowedCopyScope allowedCopyScope;
+
+ /*
+ * This property is readOnly and is set by server during asynchronous storage account sku conversion operations.
+ */
+ @JsonProperty(value = "storageAccountSkuConversionStatus")
+ private StorageAccountSkuConversionStatus storageAccountSkuConversionStatus;
+
+ /*
+ * Allows you to specify the type of endpoint. Set this to AzureDNSZone to create a large number of accounts in a
+ * single subscription, which creates accounts in an Azure DNS Zone and the endpoint URL will have an alphanumeric
+ * DNS Zone identifier.
+ */
+ @JsonProperty(value = "dnsEndpointType")
+ private DnsEndpointType dnsEndpointType;
+
+ /**
+ * Get the provisioningState property: Gets the status of the storage account at the time the operation was called.
+ *
+ * @return the provisioningState value.
+ */
+ public ProvisioningState provisioningState() {
+ return this.provisioningState;
+ }
+
+ /**
+ * Get the primaryEndpoints property: Gets the URLs that are used to perform a retrieval of a public blob, queue, or
+ * table object. Note that Standard_ZRS and Premium_LRS accounts only return the blob endpoint.
+ *
+ * @return the primaryEndpoints value.
+ */
+ public Endpoints primaryEndpoints() {
+ return this.primaryEndpoints;
+ }
+
+ /**
+ * Get the primaryLocation property: Gets the location of the primary data center for the storage account.
+ *
+ * @return the primaryLocation value.
+ */
+ public String primaryLocation() {
+ return this.primaryLocation;
+ }
+
+ /**
+ * Get the statusOfPrimary property: Gets the status indicating whether the primary location of the storage account
+ * is available or unavailable.
+ *
+ * @return the statusOfPrimary value.
+ */
+ public AccountStatus statusOfPrimary() {
+ return this.statusOfPrimary;
+ }
+
+ /**
+ * Get the lastGeoFailoverTime property: Gets the timestamp of the most recent instance of a failover to the
+ * secondary location. Only the most recent timestamp is retained. This element is not returned if there has never
+ * been a failover instance. Only available if the accountType is Standard_GRS or Standard_RAGRS.
+ *
+ * @return the lastGeoFailoverTime value.
+ */
+ public OffsetDateTime lastGeoFailoverTime() {
+ return this.lastGeoFailoverTime;
+ }
+
+ /**
+ * Get the secondaryLocation property: Gets the location of the geo-replicated secondary for the storage account.
+ * Only available if the accountType is Standard_GRS or Standard_RAGRS.
+ *
+ * @return the secondaryLocation value.
+ */
+ public String secondaryLocation() {
+ return this.secondaryLocation;
+ }
+
+ /**
+ * Get the statusOfSecondary property: Gets the status indicating whether the secondary location of the storage
+ * account is available or unavailable. Only available if the SKU name is Standard_GRS or Standard_RAGRS.
+ *
+ * @return the statusOfSecondary value.
+ */
+ public AccountStatus statusOfSecondary() {
+ return this.statusOfSecondary;
+ }
+
+ /**
+ * Get the creationTime property: Gets the creation date and time of the storage account in UTC.
+ *
+ * @return the creationTime value.
+ */
+ public OffsetDateTime creationTime() {
+ return this.creationTime;
+ }
+
+ /**
+ * Get the customDomain property: Gets the custom domain the user assigned to this storage account.
+ *
+ * @return the customDomain value.
+ */
+ public CustomDomain customDomain() {
+ return this.customDomain;
+ }
+
+ /**
+ * Get the sasPolicy property: SasPolicy assigned to the storage account.
+ *
+ * @return the sasPolicy value.
+ */
+ public SasPolicy sasPolicy() {
+ return this.sasPolicy;
+ }
+
+ /**
+ * Get the keyPolicy property: KeyPolicy assigned to the storage account.
+ *
+ * @return the keyPolicy value.
+ */
+ public KeyPolicy keyPolicy() {
+ return this.keyPolicy;
+ }
+
+ /**
+ * Get the keyCreationTime property: Storage account keys creation time.
+ *
+ * @return the keyCreationTime value.
+ */
+ public KeyCreationTime keyCreationTime() {
+ return this.keyCreationTime;
+ }
+
+ /**
+ * Get the secondaryEndpoints property: Gets the URLs that are used to perform a retrieval of a public blob, queue,
+ * or table object from the secondary location of the storage account. Only available if the SKU name is
+ * Standard_RAGRS.
+ *
+ * @return the secondaryEndpoints value.
+ */
+ public Endpoints secondaryEndpoints() {
+ return this.secondaryEndpoints;
+ }
+
+ /**
+ * Get the encryption property: Encryption settings to be used for server-side encryption for the storage account.
+ *
+ * @return the encryption value.
+ */
+ public Encryption encryption() {
+ return this.encryption;
+ }
+
+ /**
+ * Get the accessTier property: Required for storage accounts where kind = BlobStorage. The access tier is used for
+ * billing. The 'Premium' access tier is the default value for premium block blobs storage account type and it
+ * cannot be changed for the premium block blobs storage account type.
+ *
+ * @return the accessTier value.
+ */
+ public AccessTier accessTier() {
+ return this.accessTier;
+ }
+
+ /**
+ * Get the azureFilesIdentityBasedAuthentication property: Provides the identity based authentication settings for
+ * Azure Files.
+ *
+ * @return the azureFilesIdentityBasedAuthentication value.
+ */
+ public AzureFilesIdentityBasedAuthentication azureFilesIdentityBasedAuthentication() {
+ return this.azureFilesIdentityBasedAuthentication;
+ }
+
+ /**
+ * Set the azureFilesIdentityBasedAuthentication property: Provides the identity based authentication settings for
+ * Azure Files.
+ *
+ * @param azureFilesIdentityBasedAuthentication the azureFilesIdentityBasedAuthentication value to set.
+ * @return the StorageAccountPropertiesInner object itself.
+ */
+ public StorageAccountPropertiesInner withAzureFilesIdentityBasedAuthentication(
+ AzureFilesIdentityBasedAuthentication azureFilesIdentityBasedAuthentication) {
+ this.azureFilesIdentityBasedAuthentication = azureFilesIdentityBasedAuthentication;
+ return this;
+ }
+
+ /**
+ * Get the enableHttpsTrafficOnly property: Allows https traffic only to storage service if sets to true.
+ *
+ * @return the enableHttpsTrafficOnly value.
+ */
+ public Boolean enableHttpsTrafficOnly() {
+ return this.enableHttpsTrafficOnly;
+ }
+
+ /**
+ * Set the enableHttpsTrafficOnly property: Allows https traffic only to storage service if sets to true.
+ *
+ * @param enableHttpsTrafficOnly the enableHttpsTrafficOnly value to set.
+ * @return the StorageAccountPropertiesInner object itself.
+ */
+ public StorageAccountPropertiesInner withEnableHttpsTrafficOnly(Boolean enableHttpsTrafficOnly) {
+ this.enableHttpsTrafficOnly = enableHttpsTrafficOnly;
+ return this;
+ }
+
+ /**
+ * Get the networkRuleSet property: Network rule set.
+ *
+ * @return the networkRuleSet value.
+ */
+ public NetworkRuleSet networkRuleSet() {
+ return this.networkRuleSet;
+ }
+
+ /**
+ * Get the isSftpEnabled property: Enables Secure File Transfer Protocol, if set to true.
+ *
+ * @return the isSftpEnabled value.
+ */
+ public Boolean isSftpEnabled() {
+ return this.isSftpEnabled;
+ }
+
+ /**
+ * Set the isSftpEnabled property: Enables Secure File Transfer Protocol, if set to true.
+ *
+ * @param isSftpEnabled the isSftpEnabled value to set.
+ * @return the StorageAccountPropertiesInner object itself.
+ */
+ public StorageAccountPropertiesInner withIsSftpEnabled(Boolean isSftpEnabled) {
+ this.isSftpEnabled = isSftpEnabled;
+ return this;
+ }
+
+ /**
+ * Get the isLocalUserEnabled property: Enables local users feature, if set to true.
+ *
+ * @return the isLocalUserEnabled value.
+ */
+ public Boolean isLocalUserEnabled() {
+ return this.isLocalUserEnabled;
+ }
+
+ /**
+ * Set the isLocalUserEnabled property: Enables local users feature, if set to true.
+ *
+ * @param isLocalUserEnabled the isLocalUserEnabled value to set.
+ * @return the StorageAccountPropertiesInner object itself.
+ */
+ public StorageAccountPropertiesInner withIsLocalUserEnabled(Boolean isLocalUserEnabled) {
+ this.isLocalUserEnabled = isLocalUserEnabled;
+ return this;
+ }
+
+ /**
+ * Get the isHnsEnabled property: Account HierarchicalNamespace enabled if sets to true.
+ *
+ * @return the isHnsEnabled value.
+ */
+ public Boolean isHnsEnabled() {
+ return this.isHnsEnabled;
+ }
+
+ /**
+ * Set the isHnsEnabled property: Account HierarchicalNamespace enabled if sets to true.
+ *
+ * @param isHnsEnabled the isHnsEnabled value to set.
+ * @return the StorageAccountPropertiesInner object itself.
+ */
+ public StorageAccountPropertiesInner withIsHnsEnabled(Boolean isHnsEnabled) {
+ this.isHnsEnabled = isHnsEnabled;
+ return this;
+ }
+
+ /**
+ * Get the geoReplicationStats property: Geo Replication Stats.
+ *
+ * @return the geoReplicationStats value.
+ */
+ public GeoReplicationStats geoReplicationStats() {
+ return this.geoReplicationStats;
+ }
+
+ /**
+ * Get the failoverInProgress property: If the failover is in progress, the value will be true, otherwise, it will
+ * be null.
+ *
+ * @return the failoverInProgress value.
+ */
+ public Boolean failoverInProgress() {
+ return this.failoverInProgress;
+ }
+
+ /**
+ * Get the largeFileSharesState property: Allow large file shares if sets to Enabled. It cannot be disabled once it
+ * is enabled.
+ *
+ * @return the largeFileSharesState value.
+ */
+ public LargeFileSharesState largeFileSharesState() {
+ return this.largeFileSharesState;
+ }
+
+ /**
+ * Set the largeFileSharesState property: Allow large file shares if sets to Enabled. It cannot be disabled once it
+ * is enabled.
+ *
+ * @param largeFileSharesState the largeFileSharesState value to set.
+ * @return the StorageAccountPropertiesInner object itself.
+ */
+ public StorageAccountPropertiesInner withLargeFileSharesState(LargeFileSharesState largeFileSharesState) {
+ this.largeFileSharesState = largeFileSharesState;
+ return this;
+ }
+
+ /**
+ * Get the privateEndpointConnections property: List of private endpoint connection associated with the specified
+ * storage account.
+ *
+ * @return the privateEndpointConnections value.
+ */
+ public List privateEndpointConnections() {
+ return this.privateEndpointConnections;
+ }
+
+ /**
+ * Get the routingPreference property: Maintains information about the network routing choice opted by the user for
+ * data transfer.
+ *
+ * @return the routingPreference value.
+ */
+ public RoutingPreference routingPreference() {
+ return this.routingPreference;
+ }
+
+ /**
+ * Set the routingPreference property: Maintains information about the network routing choice opted by the user for
+ * data transfer.
+ *
+ * @param routingPreference the routingPreference value to set.
+ * @return the StorageAccountPropertiesInner object itself.
+ */
+ public StorageAccountPropertiesInner withRoutingPreference(RoutingPreference routingPreference) {
+ this.routingPreference = routingPreference;
+ return this;
+ }
+
+ /**
+ * Get the blobRestoreStatus property: Blob restore status.
+ *
+ * @return the blobRestoreStatus value.
+ */
+ public BlobRestoreStatusInner blobRestoreStatus() {
+ return this.blobRestoreStatus;
+ }
+
+ /**
+ * Get the allowBlobPublicAccess property: Allow or disallow public access to all blobs or containers in the storage
+ * account. The default interpretation is true for this property.
+ *
+ * @return the allowBlobPublicAccess value.
+ */
+ public Boolean allowBlobPublicAccess() {
+ return this.allowBlobPublicAccess;
+ }
+
+ /**
+ * Set the allowBlobPublicAccess property: Allow or disallow public access to all blobs or containers in the storage
+ * account. The default interpretation is true for this property.
+ *
+ * @param allowBlobPublicAccess the allowBlobPublicAccess value to set.
+ * @return the StorageAccountPropertiesInner object itself.
+ */
+ public StorageAccountPropertiesInner withAllowBlobPublicAccess(Boolean allowBlobPublicAccess) {
+ this.allowBlobPublicAccess = allowBlobPublicAccess;
+ return this;
+ }
+
+ /**
+ * Get the minimumTlsVersion property: Set the minimum TLS version to be permitted on requests to storage. The
+ * default interpretation is TLS 1.0 for this property.
+ *
+ * @return the minimumTlsVersion value.
+ */
+ public MinimumTlsVersion minimumTlsVersion() {
+ return this.minimumTlsVersion;
+ }
+
+ /**
+ * Set the minimumTlsVersion property: Set the minimum TLS version to be permitted on requests to storage. The
+ * default interpretation is TLS 1.0 for this property.
+ *
+ * @param minimumTlsVersion the minimumTlsVersion value to set.
+ * @return the StorageAccountPropertiesInner object itself.
+ */
+ public StorageAccountPropertiesInner withMinimumTlsVersion(MinimumTlsVersion minimumTlsVersion) {
+ this.minimumTlsVersion = minimumTlsVersion;
+ return this;
+ }
+
+ /**
+ * Get the allowSharedKeyAccess property: Indicates whether the storage account permits requests to be authorized
+ * with the account access key via Shared Key. If false, then all requests, including shared access signatures, must
+ * be authorized with Azure Active Directory (Azure AD). The default value is null, which is equivalent to true.
+ *
+ * @return the allowSharedKeyAccess value.
+ */
+ public Boolean allowSharedKeyAccess() {
+ return this.allowSharedKeyAccess;
+ }
+
+ /**
+ * Set the allowSharedKeyAccess property: Indicates whether the storage account permits requests to be authorized
+ * with the account access key via Shared Key. If false, then all requests, including shared access signatures, must
+ * be authorized with Azure Active Directory (Azure AD). The default value is null, which is equivalent to true.
+ *
+ * @param allowSharedKeyAccess the allowSharedKeyAccess value to set.
+ * @return the StorageAccountPropertiesInner object itself.
+ */
+ public StorageAccountPropertiesInner withAllowSharedKeyAccess(Boolean allowSharedKeyAccess) {
+ this.allowSharedKeyAccess = allowSharedKeyAccess;
+ return this;
+ }
+
+ /**
+ * Get the enableNfsV3 property: NFS 3.0 protocol support enabled if set to true.
+ *
+ * @return the enableNfsV3 value.
+ */
+ public Boolean enableNfsV3() {
+ return this.enableNfsV3;
+ }
+
+ /**
+ * Set the enableNfsV3 property: NFS 3.0 protocol support enabled if set to true.
+ *
+ * @param enableNfsV3 the enableNfsV3 value to set.
+ * @return the StorageAccountPropertiesInner object itself.
+ */
+ public StorageAccountPropertiesInner withEnableNfsV3(Boolean enableNfsV3) {
+ this.enableNfsV3 = enableNfsV3;
+ return this;
+ }
+
+ /**
+ * Get the allowCrossTenantReplication property: Allow or disallow cross AAD tenant object replication. The default
+ * interpretation is true for this property.
+ *
+ * @return the allowCrossTenantReplication value.
+ */
+ public Boolean allowCrossTenantReplication() {
+ return this.allowCrossTenantReplication;
+ }
+
+ /**
+ * Set the allowCrossTenantReplication property: Allow or disallow cross AAD tenant object replication. The default
+ * interpretation is true for this property.
+ *
+ * @param allowCrossTenantReplication the allowCrossTenantReplication value to set.
+ * @return the StorageAccountPropertiesInner object itself.
+ */
+ public StorageAccountPropertiesInner withAllowCrossTenantReplication(Boolean allowCrossTenantReplication) {
+ this.allowCrossTenantReplication = allowCrossTenantReplication;
+ return this;
+ }
+
+ /**
+ * Get the defaultToOAuthAuthentication property: A boolean flag which indicates whether the default authentication
+ * is OAuth or not. The default interpretation is false for this property.
+ *
+ * @return the defaultToOAuthAuthentication value.
+ */
+ public Boolean defaultToOAuthAuthentication() {
+ return this.defaultToOAuthAuthentication;
+ }
+
+ /**
+ * Set the defaultToOAuthAuthentication property: A boolean flag which indicates whether the default authentication
+ * is OAuth or not. The default interpretation is false for this property.
+ *
+ * @param defaultToOAuthAuthentication the defaultToOAuthAuthentication value to set.
+ * @return the StorageAccountPropertiesInner object itself.
+ */
+ public StorageAccountPropertiesInner withDefaultToOAuthAuthentication(Boolean defaultToOAuthAuthentication) {
+ this.defaultToOAuthAuthentication = defaultToOAuthAuthentication;
+ return this;
+ }
+
+ /**
+ * Get the publicNetworkAccess property: Allow or disallow public network access to Storage Account. Value is
+ * optional but if passed in, must be 'Enabled' or 'Disabled'.
+ *
+ * @return the publicNetworkAccess value.
+ */
+ public PublicNetworkAccess publicNetworkAccess() {
+ return this.publicNetworkAccess;
+ }
+
+ /**
+ * Set the publicNetworkAccess property: Allow or disallow public network access to Storage Account. Value is
+ * optional but if passed in, must be 'Enabled' or 'Disabled'.
+ *
+ * @param publicNetworkAccess the publicNetworkAccess value to set.
+ * @return the StorageAccountPropertiesInner object itself.
+ */
+ public StorageAccountPropertiesInner withPublicNetworkAccess(PublicNetworkAccess publicNetworkAccess) {
+ this.publicNetworkAccess = publicNetworkAccess;
+ return this;
+ }
+
+ /**
+ * Get the immutableStorageWithVersioning property: The property is immutable and can only be set to true at the
+ * account creation time. When set to true, it enables object level immutability for all the containers in the
+ * account by default.
+ *
+ * @return the immutableStorageWithVersioning value.
+ */
+ public ImmutableStorageAccount immutableStorageWithVersioning() {
+ return this.immutableStorageWithVersioning;
+ }
+
+ /**
+ * Set the immutableStorageWithVersioning property: The property is immutable and can only be set to true at the
+ * account creation time. When set to true, it enables object level immutability for all the containers in the
+ * account by default.
+ *
+ * @param immutableStorageWithVersioning the immutableStorageWithVersioning value to set.
+ * @return the StorageAccountPropertiesInner object itself.
+ */
+ public StorageAccountPropertiesInner withImmutableStorageWithVersioning(
+ ImmutableStorageAccount immutableStorageWithVersioning) {
+ this.immutableStorageWithVersioning = immutableStorageWithVersioning;
+ return this;
+ }
+
+ /**
+ * Get the allowedCopyScope property: Restrict copy to and from Storage Accounts within an AAD tenant or with
+ * Private Links to the same VNet.
+ *
+ * @return the allowedCopyScope value.
+ */
+ public AllowedCopyScope allowedCopyScope() {
+ return this.allowedCopyScope;
+ }
+
+ /**
+ * Set the allowedCopyScope property: Restrict copy to and from Storage Accounts within an AAD tenant or with
+ * Private Links to the same VNet.
+ *
+ * @param allowedCopyScope the allowedCopyScope value to set.
+ * @return the StorageAccountPropertiesInner object itself.
+ */
+ public StorageAccountPropertiesInner withAllowedCopyScope(AllowedCopyScope allowedCopyScope) {
+ this.allowedCopyScope = allowedCopyScope;
+ return this;
+ }
+
+ /**
+ * Get the storageAccountSkuConversionStatus property: This property is readOnly and is set by server during
+ * asynchronous storage account sku conversion operations.
+ *
+ * @return the storageAccountSkuConversionStatus value.
+ */
+ public StorageAccountSkuConversionStatus storageAccountSkuConversionStatus() {
+ return this.storageAccountSkuConversionStatus;
+ }
+
+ /**
+ * Set the storageAccountSkuConversionStatus property: This property is readOnly and is set by server during
+ * asynchronous storage account sku conversion operations.
+ *
+ * @param storageAccountSkuConversionStatus the storageAccountSkuConversionStatus value to set.
+ * @return the StorageAccountPropertiesInner object itself.
+ */
+ public StorageAccountPropertiesInner withStorageAccountSkuConversionStatus(
+ StorageAccountSkuConversionStatus storageAccountSkuConversionStatus) {
+ this.storageAccountSkuConversionStatus = storageAccountSkuConversionStatus;
+ return this;
+ }
+
+ /**
+ * Get the dnsEndpointType property: Allows you to specify the type of endpoint. Set this to AzureDNSZone to create
+ * a large number of accounts in a single subscription, which creates accounts in an Azure DNS Zone and the endpoint
+ * URL will have an alphanumeric DNS Zone identifier.
+ *
+ * @return the dnsEndpointType value.
+ */
+ public DnsEndpointType dnsEndpointType() {
+ return this.dnsEndpointType;
+ }
+
+ /**
+ * Set the dnsEndpointType property: Allows you to specify the type of endpoint. Set this to AzureDNSZone to create
+ * a large number of accounts in a single subscription, which creates accounts in an Azure DNS Zone and the endpoint
+ * URL will have an alphanumeric DNS Zone identifier.
+ *
+ * @param dnsEndpointType the dnsEndpointType value to set.
+ * @return the StorageAccountPropertiesInner object itself.
+ */
+ public StorageAccountPropertiesInner withDnsEndpointType(DnsEndpointType dnsEndpointType) {
+ this.dnsEndpointType = dnsEndpointType;
+ return this;
+ }
+
+ /**
+ * Validates the instance.
+ *
+ * @throws IllegalArgumentException thrown if the instance is not valid.
+ */
+ public void validate() {
+ if (primaryEndpoints() != null) {
+ primaryEndpoints().validate();
+ }
+ if (customDomain() != null) {
+ customDomain().validate();
+ }
+ if (sasPolicy() != null) {
+ sasPolicy().validate();
+ }
+ if (keyPolicy() != null) {
+ keyPolicy().validate();
+ }
+ if (keyCreationTime() != null) {
+ keyCreationTime().validate();
+ }
+ if (secondaryEndpoints() != null) {
+ secondaryEndpoints().validate();
+ }
+ if (encryption() != null) {
+ encryption().validate();
+ }
+ if (azureFilesIdentityBasedAuthentication() != null) {
+ azureFilesIdentityBasedAuthentication().validate();
+ }
+ if (networkRuleSet() != null) {
+ networkRuleSet().validate();
+ }
+ if (geoReplicationStats() != null) {
+ geoReplicationStats().validate();
+ }
+ if (privateEndpointConnections() != null) {
+ privateEndpointConnections().forEach(e -> e.validate());
+ }
+ if (routingPreference() != null) {
+ routingPreference().validate();
+ }
+ if (blobRestoreStatus() != null) {
+ blobRestoreStatus().validate();
+ }
+ if (immutableStorageWithVersioning() != null) {
+ immutableStorageWithVersioning().validate();
+ }
+ if (storageAccountSkuConversionStatus() != null) {
+ storageAccountSkuConversionStatus().validate();
+ }
+ }
+}
diff --git a/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/StorageAccountPropertiesUpdateParameters.java b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/StorageAccountPropertiesUpdateParameters.java
new file mode 100644
index 0000000000000..d553fbc9d219b
--- /dev/null
+++ b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/StorageAccountPropertiesUpdateParameters.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.resourcemanager.storage.generated.models.AccessTier;
+import com.azure.resourcemanager.storage.generated.models.AllowedCopyScope;
+import com.azure.resourcemanager.storage.generated.models.AzureFilesIdentityBasedAuthentication;
+import com.azure.resourcemanager.storage.generated.models.CustomDomain;
+import com.azure.resourcemanager.storage.generated.models.DnsEndpointType;
+import com.azure.resourcemanager.storage.generated.models.Encryption;
+import com.azure.resourcemanager.storage.generated.models.ImmutableStorageAccount;
+import com.azure.resourcemanager.storage.generated.models.KeyPolicy;
+import com.azure.resourcemanager.storage.generated.models.LargeFileSharesState;
+import com.azure.resourcemanager.storage.generated.models.MinimumTlsVersion;
+import com.azure.resourcemanager.storage.generated.models.NetworkRuleSet;
+import com.azure.resourcemanager.storage.generated.models.PublicNetworkAccess;
+import com.azure.resourcemanager.storage.generated.models.RoutingPreference;
+import com.azure.resourcemanager.storage.generated.models.SasPolicy;
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/** The parameters used when updating a storage account. */
+@Fluent
+public final class StorageAccountPropertiesUpdateParameters {
+ /*
+ * Custom domain assigned to the storage account by the user. Name is the CNAME source. Only one custom domain is
+ * supported per storage account at this time. To clear the existing custom domain, use an empty string for the
+ * custom domain name property.
+ */
+ @JsonProperty(value = "customDomain")
+ private CustomDomain customDomain;
+
+ /*
+ * Not applicable. Azure Storage encryption at rest is enabled by default for all storage accounts and cannot be
+ * disabled.
+ */
+ @JsonProperty(value = "encryption")
+ private Encryption encryption;
+
+ /*
+ * SasPolicy assigned to the storage account.
+ */
+ @JsonProperty(value = "sasPolicy")
+ private SasPolicy sasPolicy;
+
+ /*
+ * KeyPolicy assigned to the storage account.
+ */
+ @JsonProperty(value = "keyPolicy")
+ private KeyPolicy keyPolicy;
+
+ /*
+ * Required for storage accounts where kind = BlobStorage. The access tier is used for billing. The 'Premium'
+ * access tier is the default value for premium block blobs storage account type and it cannot be changed for the
+ * premium block blobs storage account type.
+ */
+ @JsonProperty(value = "accessTier")
+ private AccessTier accessTier;
+
+ /*
+ * Provides the identity based authentication settings for Azure Files.
+ */
+ @JsonProperty(value = "azureFilesIdentityBasedAuthentication")
+ private AzureFilesIdentityBasedAuthentication azureFilesIdentityBasedAuthentication;
+
+ /*
+ * Allows https traffic only to storage service if sets to true.
+ */
+ @JsonProperty(value = "supportsHttpsTrafficOnly")
+ private Boolean enableHttpsTrafficOnly;
+
+ /*
+ * Enables Secure File Transfer Protocol, if set to true
+ */
+ @JsonProperty(value = "isSftpEnabled")
+ private Boolean isSftpEnabled;
+
+ /*
+ * Enables local users feature, if set to true
+ */
+ @JsonProperty(value = "isLocalUserEnabled")
+ private Boolean isLocalUserEnabled;
+
+ /*
+ * Network rule set
+ */
+ @JsonProperty(value = "networkAcls")
+ private NetworkRuleSet networkRuleSet;
+
+ /*
+ * Allow large file shares if sets to Enabled. It cannot be disabled once it is enabled.
+ */
+ @JsonProperty(value = "largeFileSharesState")
+ private LargeFileSharesState largeFileSharesState;
+
+ /*
+ * Maintains information about the network routing choice opted by the user for data transfer
+ */
+ @JsonProperty(value = "routingPreference")
+ private RoutingPreference routingPreference;
+
+ /*
+ * Allow or disallow public access to all blobs or containers in the storage account. The default interpretation is
+ * true for this property.
+ */
+ @JsonProperty(value = "allowBlobPublicAccess")
+ private Boolean allowBlobPublicAccess;
+
+ /*
+ * Set the minimum TLS version to be permitted on requests to storage. The default interpretation is TLS 1.0 for
+ * this property.
+ */
+ @JsonProperty(value = "minimumTlsVersion")
+ private MinimumTlsVersion minimumTlsVersion;
+
+ /*
+ * Indicates whether the storage account permits requests to be authorized with the account access key via Shared
+ * Key. If false, then all requests, including shared access signatures, must be authorized with Azure Active
+ * Directory (Azure AD). The default value is null, which is equivalent to true.
+ */
+ @JsonProperty(value = "allowSharedKeyAccess")
+ private Boolean allowSharedKeyAccess;
+
+ /*
+ * Allow or disallow cross AAD tenant object replication. The default interpretation is true for this property.
+ */
+ @JsonProperty(value = "allowCrossTenantReplication")
+ private Boolean allowCrossTenantReplication;
+
+ /*
+ * A boolean flag which indicates whether the default authentication is OAuth or not. The default interpretation is
+ * false for this property.
+ */
+ @JsonProperty(value = "defaultToOAuthAuthentication")
+ private Boolean defaultToOAuthAuthentication;
+
+ /*
+ * Allow or disallow public network access to Storage Account. Value is optional but if passed in, must be
+ * 'Enabled' or 'Disabled'.
+ */
+ @JsonProperty(value = "publicNetworkAccess")
+ private PublicNetworkAccess publicNetworkAccess;
+
+ /*
+ * The property is immutable and can only be set to true at the account creation time. When set to true, it enables
+ * object level immutability for all the containers in the account by default.
+ */
+ @JsonProperty(value = "immutableStorageWithVersioning")
+ private ImmutableStorageAccount immutableStorageWithVersioning;
+
+ /*
+ * Restrict copy to and from Storage Accounts within an AAD tenant or with Private Links to the same VNet.
+ */
+ @JsonProperty(value = "allowedCopyScope")
+ private AllowedCopyScope allowedCopyScope;
+
+ /*
+ * Allows you to specify the type of endpoint. Set this to AzureDNSZone to create a large number of accounts in a
+ * single subscription, which creates accounts in an Azure DNS Zone and the endpoint URL will have an alphanumeric
+ * DNS Zone identifier.
+ */
+ @JsonProperty(value = "dnsEndpointType")
+ private DnsEndpointType dnsEndpointType;
+
+ /**
+ * Get the customDomain property: Custom domain assigned to the storage account by the user. Name is the CNAME
+ * source. Only one custom domain is supported per storage account at this time. To clear the existing custom
+ * domain, use an empty string for the custom domain name property.
+ *
+ * @return the customDomain value.
+ */
+ public CustomDomain customDomain() {
+ return this.customDomain;
+ }
+
+ /**
+ * Set the customDomain property: Custom domain assigned to the storage account by the user. Name is the CNAME
+ * source. Only one custom domain is supported per storage account at this time. To clear the existing custom
+ * domain, use an empty string for the custom domain name property.
+ *
+ * @param customDomain the customDomain value to set.
+ * @return the StorageAccountPropertiesUpdateParameters object itself.
+ */
+ public StorageAccountPropertiesUpdateParameters withCustomDomain(CustomDomain customDomain) {
+ this.customDomain = customDomain;
+ return this;
+ }
+
+ /**
+ * Get the encryption property: Not applicable. Azure Storage encryption at rest is enabled by default for all
+ * storage accounts and cannot be disabled.
+ *
+ * @return the encryption value.
+ */
+ public Encryption encryption() {
+ return this.encryption;
+ }
+
+ /**
+ * Set the encryption property: Not applicable. Azure Storage encryption at rest is enabled by default for all
+ * storage accounts and cannot be disabled.
+ *
+ * @param encryption the encryption value to set.
+ * @return the StorageAccountPropertiesUpdateParameters object itself.
+ */
+ public StorageAccountPropertiesUpdateParameters withEncryption(Encryption encryption) {
+ this.encryption = encryption;
+ return this;
+ }
+
+ /**
+ * Get the sasPolicy property: SasPolicy assigned to the storage account.
+ *
+ * @return the sasPolicy value.
+ */
+ public SasPolicy sasPolicy() {
+ return this.sasPolicy;
+ }
+
+ /**
+ * Set the sasPolicy property: SasPolicy assigned to the storage account.
+ *
+ * @param sasPolicy the sasPolicy value to set.
+ * @return the StorageAccountPropertiesUpdateParameters object itself.
+ */
+ public StorageAccountPropertiesUpdateParameters withSasPolicy(SasPolicy sasPolicy) {
+ this.sasPolicy = sasPolicy;
+ return this;
+ }
+
+ /**
+ * Get the keyPolicy property: KeyPolicy assigned to the storage account.
+ *
+ * @return the keyPolicy value.
+ */
+ public KeyPolicy keyPolicy() {
+ return this.keyPolicy;
+ }
+
+ /**
+ * Set the keyPolicy property: KeyPolicy assigned to the storage account.
+ *
+ * @param keyPolicy the keyPolicy value to set.
+ * @return the StorageAccountPropertiesUpdateParameters object itself.
+ */
+ public StorageAccountPropertiesUpdateParameters withKeyPolicy(KeyPolicy keyPolicy) {
+ this.keyPolicy = keyPolicy;
+ return this;
+ }
+
+ /**
+ * Get the accessTier property: Required for storage accounts where kind = BlobStorage. The access tier is used for
+ * billing. The 'Premium' access tier is the default value for premium block blobs storage account type and it
+ * cannot be changed for the premium block blobs storage account type.
+ *
+ * @return the accessTier value.
+ */
+ public AccessTier accessTier() {
+ return this.accessTier;
+ }
+
+ /**
+ * Set the accessTier property: Required for storage accounts where kind = BlobStorage. The access tier is used for
+ * billing. The 'Premium' access tier is the default value for premium block blobs storage account type and it
+ * cannot be changed for the premium block blobs storage account type.
+ *
+ * @param accessTier the accessTier value to set.
+ * @return the StorageAccountPropertiesUpdateParameters object itself.
+ */
+ public StorageAccountPropertiesUpdateParameters withAccessTier(AccessTier accessTier) {
+ this.accessTier = accessTier;
+ return this;
+ }
+
+ /**
+ * Get the azureFilesIdentityBasedAuthentication property: Provides the identity based authentication settings for
+ * Azure Files.
+ *
+ * @return the azureFilesIdentityBasedAuthentication value.
+ */
+ public AzureFilesIdentityBasedAuthentication azureFilesIdentityBasedAuthentication() {
+ return this.azureFilesIdentityBasedAuthentication;
+ }
+
+ /**
+ * Set the azureFilesIdentityBasedAuthentication property: Provides the identity based authentication settings for
+ * Azure Files.
+ *
+ * @param azureFilesIdentityBasedAuthentication the azureFilesIdentityBasedAuthentication value to set.
+ * @return the StorageAccountPropertiesUpdateParameters object itself.
+ */
+ public StorageAccountPropertiesUpdateParameters withAzureFilesIdentityBasedAuthentication(
+ AzureFilesIdentityBasedAuthentication azureFilesIdentityBasedAuthentication) {
+ this.azureFilesIdentityBasedAuthentication = azureFilesIdentityBasedAuthentication;
+ return this;
+ }
+
+ /**
+ * Get the enableHttpsTrafficOnly property: Allows https traffic only to storage service if sets to true.
+ *
+ * @return the enableHttpsTrafficOnly value.
+ */
+ public Boolean enableHttpsTrafficOnly() {
+ return this.enableHttpsTrafficOnly;
+ }
+
+ /**
+ * Set the enableHttpsTrafficOnly property: Allows https traffic only to storage service if sets to true.
+ *
+ * @param enableHttpsTrafficOnly the enableHttpsTrafficOnly value to set.
+ * @return the StorageAccountPropertiesUpdateParameters object itself.
+ */
+ public StorageAccountPropertiesUpdateParameters withEnableHttpsTrafficOnly(Boolean enableHttpsTrafficOnly) {
+ this.enableHttpsTrafficOnly = enableHttpsTrafficOnly;
+ return this;
+ }
+
+ /**
+ * Get the isSftpEnabled property: Enables Secure File Transfer Protocol, if set to true.
+ *
+ * @return the isSftpEnabled value.
+ */
+ public Boolean isSftpEnabled() {
+ return this.isSftpEnabled;
+ }
+
+ /**
+ * Set the isSftpEnabled property: Enables Secure File Transfer Protocol, if set to true.
+ *
+ * @param isSftpEnabled the isSftpEnabled value to set.
+ * @return the StorageAccountPropertiesUpdateParameters object itself.
+ */
+ public StorageAccountPropertiesUpdateParameters withIsSftpEnabled(Boolean isSftpEnabled) {
+ this.isSftpEnabled = isSftpEnabled;
+ return this;
+ }
+
+ /**
+ * Get the isLocalUserEnabled property: Enables local users feature, if set to true.
+ *
+ * @return the isLocalUserEnabled value.
+ */
+ public Boolean isLocalUserEnabled() {
+ return this.isLocalUserEnabled;
+ }
+
+ /**
+ * Set the isLocalUserEnabled property: Enables local users feature, if set to true.
+ *
+ * @param isLocalUserEnabled the isLocalUserEnabled value to set.
+ * @return the StorageAccountPropertiesUpdateParameters object itself.
+ */
+ public StorageAccountPropertiesUpdateParameters withIsLocalUserEnabled(Boolean isLocalUserEnabled) {
+ this.isLocalUserEnabled = isLocalUserEnabled;
+ return this;
+ }
+
+ /**
+ * Get the networkRuleSet property: Network rule set.
+ *
+ * @return the networkRuleSet value.
+ */
+ public NetworkRuleSet networkRuleSet() {
+ return this.networkRuleSet;
+ }
+
+ /**
+ * Set the networkRuleSet property: Network rule set.
+ *
+ * @param networkRuleSet the networkRuleSet value to set.
+ * @return the StorageAccountPropertiesUpdateParameters object itself.
+ */
+ public StorageAccountPropertiesUpdateParameters withNetworkRuleSet(NetworkRuleSet networkRuleSet) {
+ this.networkRuleSet = networkRuleSet;
+ return this;
+ }
+
+ /**
+ * Get the largeFileSharesState property: Allow large file shares if sets to Enabled. It cannot be disabled once it
+ * is enabled.
+ *
+ * @return the largeFileSharesState value.
+ */
+ public LargeFileSharesState largeFileSharesState() {
+ return this.largeFileSharesState;
+ }
+
+ /**
+ * Set the largeFileSharesState property: Allow large file shares if sets to Enabled. It cannot be disabled once it
+ * is enabled.
+ *
+ * @param largeFileSharesState the largeFileSharesState value to set.
+ * @return the StorageAccountPropertiesUpdateParameters object itself.
+ */
+ public StorageAccountPropertiesUpdateParameters withLargeFileSharesState(
+ LargeFileSharesState largeFileSharesState) {
+ this.largeFileSharesState = largeFileSharesState;
+ return this;
+ }
+
+ /**
+ * Get the routingPreference property: Maintains information about the network routing choice opted by the user for
+ * data transfer.
+ *
+ * @return the routingPreference value.
+ */
+ public RoutingPreference routingPreference() {
+ return this.routingPreference;
+ }
+
+ /**
+ * Set the routingPreference property: Maintains information about the network routing choice opted by the user for
+ * data transfer.
+ *
+ * @param routingPreference the routingPreference value to set.
+ * @return the StorageAccountPropertiesUpdateParameters object itself.
+ */
+ public StorageAccountPropertiesUpdateParameters withRoutingPreference(RoutingPreference routingPreference) {
+ this.routingPreference = routingPreference;
+ return this;
+ }
+
+ /**
+ * Get the allowBlobPublicAccess property: Allow or disallow public access to all blobs or containers in the storage
+ * account. The default interpretation is true for this property.
+ *
+ * @return the allowBlobPublicAccess value.
+ */
+ public Boolean allowBlobPublicAccess() {
+ return this.allowBlobPublicAccess;
+ }
+
+ /**
+ * Set the allowBlobPublicAccess property: Allow or disallow public access to all blobs or containers in the storage
+ * account. The default interpretation is true for this property.
+ *
+ * @param allowBlobPublicAccess the allowBlobPublicAccess value to set.
+ * @return the StorageAccountPropertiesUpdateParameters object itself.
+ */
+ public StorageAccountPropertiesUpdateParameters withAllowBlobPublicAccess(Boolean allowBlobPublicAccess) {
+ this.allowBlobPublicAccess = allowBlobPublicAccess;
+ return this;
+ }
+
+ /**
+ * Get the minimumTlsVersion property: Set the minimum TLS version to be permitted on requests to storage. The
+ * default interpretation is TLS 1.0 for this property.
+ *
+ * @return the minimumTlsVersion value.
+ */
+ public MinimumTlsVersion minimumTlsVersion() {
+ return this.minimumTlsVersion;
+ }
+
+ /**
+ * Set the minimumTlsVersion property: Set the minimum TLS version to be permitted on requests to storage. The
+ * default interpretation is TLS 1.0 for this property.
+ *
+ * @param minimumTlsVersion the minimumTlsVersion value to set.
+ * @return the StorageAccountPropertiesUpdateParameters object itself.
+ */
+ public StorageAccountPropertiesUpdateParameters withMinimumTlsVersion(MinimumTlsVersion minimumTlsVersion) {
+ this.minimumTlsVersion = minimumTlsVersion;
+ return this;
+ }
+
+ /**
+ * Get the allowSharedKeyAccess property: Indicates whether the storage account permits requests to be authorized
+ * with the account access key via Shared Key. If false, then all requests, including shared access signatures, must
+ * be authorized with Azure Active Directory (Azure AD). The default value is null, which is equivalent to true.
+ *
+ * @return the allowSharedKeyAccess value.
+ */
+ public Boolean allowSharedKeyAccess() {
+ return this.allowSharedKeyAccess;
+ }
+
+ /**
+ * Set the allowSharedKeyAccess property: Indicates whether the storage account permits requests to be authorized
+ * with the account access key via Shared Key. If false, then all requests, including shared access signatures, must
+ * be authorized with Azure Active Directory (Azure AD). The default value is null, which is equivalent to true.
+ *
+ * @param allowSharedKeyAccess the allowSharedKeyAccess value to set.
+ * @return the StorageAccountPropertiesUpdateParameters object itself.
+ */
+ public StorageAccountPropertiesUpdateParameters withAllowSharedKeyAccess(Boolean allowSharedKeyAccess) {
+ this.allowSharedKeyAccess = allowSharedKeyAccess;
+ return this;
+ }
+
+ /**
+ * Get the allowCrossTenantReplication property: Allow or disallow cross AAD tenant object replication. The default
+ * interpretation is true for this property.
+ *
+ * @return the allowCrossTenantReplication value.
+ */
+ public Boolean allowCrossTenantReplication() {
+ return this.allowCrossTenantReplication;
+ }
+
+ /**
+ * Set the allowCrossTenantReplication property: Allow or disallow cross AAD tenant object replication. The default
+ * interpretation is true for this property.
+ *
+ * @param allowCrossTenantReplication the allowCrossTenantReplication value to set.
+ * @return the StorageAccountPropertiesUpdateParameters object itself.
+ */
+ public StorageAccountPropertiesUpdateParameters withAllowCrossTenantReplication(
+ Boolean allowCrossTenantReplication) {
+ this.allowCrossTenantReplication = allowCrossTenantReplication;
+ return this;
+ }
+
+ /**
+ * Get the defaultToOAuthAuthentication property: A boolean flag which indicates whether the default authentication
+ * is OAuth or not. The default interpretation is false for this property.
+ *
+ * @return the defaultToOAuthAuthentication value.
+ */
+ public Boolean defaultToOAuthAuthentication() {
+ return this.defaultToOAuthAuthentication;
+ }
+
+ /**
+ * Set the defaultToOAuthAuthentication property: A boolean flag which indicates whether the default authentication
+ * is OAuth or not. The default interpretation is false for this property.
+ *
+ * @param defaultToOAuthAuthentication the defaultToOAuthAuthentication value to set.
+ * @return the StorageAccountPropertiesUpdateParameters object itself.
+ */
+ public StorageAccountPropertiesUpdateParameters withDefaultToOAuthAuthentication(
+ Boolean defaultToOAuthAuthentication) {
+ this.defaultToOAuthAuthentication = defaultToOAuthAuthentication;
+ return this;
+ }
+
+ /**
+ * Get the publicNetworkAccess property: Allow or disallow public network access to Storage Account. Value is
+ * optional but if passed in, must be 'Enabled' or 'Disabled'.
+ *
+ * @return the publicNetworkAccess value.
+ */
+ public PublicNetworkAccess publicNetworkAccess() {
+ return this.publicNetworkAccess;
+ }
+
+ /**
+ * Set the publicNetworkAccess property: Allow or disallow public network access to Storage Account. Value is
+ * optional but if passed in, must be 'Enabled' or 'Disabled'.
+ *
+ * @param publicNetworkAccess the publicNetworkAccess value to set.
+ * @return the StorageAccountPropertiesUpdateParameters object itself.
+ */
+ public StorageAccountPropertiesUpdateParameters withPublicNetworkAccess(PublicNetworkAccess publicNetworkAccess) {
+ this.publicNetworkAccess = publicNetworkAccess;
+ return this;
+ }
+
+ /**
+ * Get the immutableStorageWithVersioning property: The property is immutable and can only be set to true at the
+ * account creation time. When set to true, it enables object level immutability for all the containers in the
+ * account by default.
+ *
+ * @return the immutableStorageWithVersioning value.
+ */
+ public ImmutableStorageAccount immutableStorageWithVersioning() {
+ return this.immutableStorageWithVersioning;
+ }
+
+ /**
+ * Set the immutableStorageWithVersioning property: The property is immutable and can only be set to true at the
+ * account creation time. When set to true, it enables object level immutability for all the containers in the
+ * account by default.
+ *
+ * @param immutableStorageWithVersioning the immutableStorageWithVersioning value to set.
+ * @return the StorageAccountPropertiesUpdateParameters object itself.
+ */
+ public StorageAccountPropertiesUpdateParameters withImmutableStorageWithVersioning(
+ ImmutableStorageAccount immutableStorageWithVersioning) {
+ this.immutableStorageWithVersioning = immutableStorageWithVersioning;
+ return this;
+ }
+
+ /**
+ * Get the allowedCopyScope property: Restrict copy to and from Storage Accounts within an AAD tenant or with
+ * Private Links to the same VNet.
+ *
+ * @return the allowedCopyScope value.
+ */
+ public AllowedCopyScope allowedCopyScope() {
+ return this.allowedCopyScope;
+ }
+
+ /**
+ * Set the allowedCopyScope property: Restrict copy to and from Storage Accounts within an AAD tenant or with
+ * Private Links to the same VNet.
+ *
+ * @param allowedCopyScope the allowedCopyScope value to set.
+ * @return the StorageAccountPropertiesUpdateParameters object itself.
+ */
+ public StorageAccountPropertiesUpdateParameters withAllowedCopyScope(AllowedCopyScope allowedCopyScope) {
+ this.allowedCopyScope = allowedCopyScope;
+ return this;
+ }
+
+ /**
+ * Get the dnsEndpointType property: Allows you to specify the type of endpoint. Set this to AzureDNSZone to create
+ * a large number of accounts in a single subscription, which creates accounts in an Azure DNS Zone and the endpoint
+ * URL will have an alphanumeric DNS Zone identifier.
+ *
+ * @return the dnsEndpointType value.
+ */
+ public DnsEndpointType dnsEndpointType() {
+ return this.dnsEndpointType;
+ }
+
+ /**
+ * Set the dnsEndpointType property: Allows you to specify the type of endpoint. Set this to AzureDNSZone to create
+ * a large number of accounts in a single subscription, which creates accounts in an Azure DNS Zone and the endpoint
+ * URL will have an alphanumeric DNS Zone identifier.
+ *
+ * @param dnsEndpointType the dnsEndpointType value to set.
+ * @return the StorageAccountPropertiesUpdateParameters object itself.
+ */
+ public StorageAccountPropertiesUpdateParameters withDnsEndpointType(DnsEndpointType dnsEndpointType) {
+ this.dnsEndpointType = dnsEndpointType;
+ return this;
+ }
+
+ /**
+ * Validates the instance.
+ *
+ * @throws IllegalArgumentException thrown if the instance is not valid.
+ */
+ public void validate() {
+ if (customDomain() != null) {
+ customDomain().validate();
+ }
+ if (encryption() != null) {
+ encryption().validate();
+ }
+ if (sasPolicy() != null) {
+ sasPolicy().validate();
+ }
+ if (keyPolicy() != null) {
+ keyPolicy().validate();
+ }
+ if (azureFilesIdentityBasedAuthentication() != null) {
+ azureFilesIdentityBasedAuthentication().validate();
+ }
+ if (networkRuleSet() != null) {
+ networkRuleSet().validate();
+ }
+ if (routingPreference() != null) {
+ routingPreference().validate();
+ }
+ if (immutableStorageWithVersioning() != null) {
+ immutableStorageWithVersioning().validate();
+ }
+ }
+}
diff --git a/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/StorageQueueInner.java b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/StorageQueueInner.java
new file mode 100644
index 0000000000000..333b45c48d134
--- /dev/null
+++ b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/StorageQueueInner.java
@@ -0,0 +1,73 @@
+// 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.fasterxml.jackson.annotation.JsonProperty;
+import java.util.Map;
+
+/** The StorageQueue model. */
+@Fluent
+public final class StorageQueueInner extends ProxyResource {
+ /*
+ * Queue resource properties.
+ */
+ @JsonProperty(value = "properties")
+ private QueueProperties innerQueueProperties;
+
+ /**
+ * Get the innerQueueProperties property: Queue resource properties.
+ *
+ * @return the innerQueueProperties value.
+ */
+ private QueueProperties innerQueueProperties() {
+ return this.innerQueueProperties;
+ }
+
+ /**
+ * 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 StorageQueueInner object itself.
+ */
+ public StorageQueueInner withMetadata(Map metadata) {
+ if (this.innerQueueProperties() == null) {
+ this.innerQueueProperties = new QueueProperties();
+ }
+ this.innerQueueProperties().withMetadata(metadata);
+ return this;
+ }
+
+ /**
+ * Get the approximateMessageCount property: Integer indicating an approximate number of messages in the queue. This
+ * number is not lower than the actual number of messages in the queue, but could be higher.
+ *
+ * @return the approximateMessageCount value.
+ */
+ public Integer approximateMessageCount() {
+ return this.innerQueueProperties() == null ? null : this.innerQueueProperties().approximateMessageCount();
+ }
+
+ /**
+ * Validates the instance.
+ *
+ * @throws IllegalArgumentException thrown if the instance is not valid.
+ */
+ public void validate() {
+ if (innerQueueProperties() != null) {
+ innerQueueProperties().validate();
+ }
+ }
+}
diff --git a/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/TableInner.java b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/TableInner.java
new file mode 100644
index 0000000000000..66cd593db5bd8
--- /dev/null
+++ b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/TableInner.java
@@ -0,0 +1,73 @@
+// 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.resourcemanager.storage.generated.models.TableSignedIdentifier;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import java.util.List;
+
+/** Properties of the table, including Id, resource name, resource type. */
+@Fluent
+public final class TableInner extends ProxyResource {
+ /*
+ * Table resource properties.
+ */
+ @JsonProperty(value = "properties")
+ private TableProperties innerTableProperties;
+
+ /**
+ * Get the innerTableProperties property: Table resource properties.
+ *
+ * @return the innerTableProperties value.
+ */
+ private TableProperties innerTableProperties() {
+ return this.innerTableProperties;
+ }
+
+ /**
+ * Get the tableName property: Table name under the specified account.
+ *
+ * @return the tableName value.
+ */
+ public String tableName() {
+ return this.innerTableProperties() == null ? null : this.innerTableProperties().tableName();
+ }
+
+ /**
+ * Get the signedIdentifiers property: List of stored access policies specified on the table.
+ *
+ * @return the signedIdentifiers value.
+ */
+ public List signedIdentifiers() {
+ return this.innerTableProperties() == null ? null : this.innerTableProperties().signedIdentifiers();
+ }
+
+ /**
+ * Set the signedIdentifiers property: List of stored access policies specified on the table.
+ *
+ * @param signedIdentifiers the signedIdentifiers value to set.
+ * @return the TableInner object itself.
+ */
+ public TableInner withSignedIdentifiers(List signedIdentifiers) {
+ if (this.innerTableProperties() == null) {
+ this.innerTableProperties = new TableProperties();
+ }
+ this.innerTableProperties().withSignedIdentifiers(signedIdentifiers);
+ return this;
+ }
+
+ /**
+ * Validates the instance.
+ *
+ * @throws IllegalArgumentException thrown if the instance is not valid.
+ */
+ public void validate() {
+ if (innerTableProperties() != null) {
+ innerTableProperties().validate();
+ }
+ }
+}
diff --git a/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/TableProperties.java b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/TableProperties.java
new file mode 100644
index 0000000000000..3b881b91c9bc4
--- /dev/null
+++ b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/TableProperties.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.models;
+
+import com.azure.core.annotation.Fluent;
+import com.azure.resourcemanager.storage.generated.models.TableSignedIdentifier;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import java.util.List;
+
+/** The TableProperties model. */
+@Fluent
+public final class TableProperties {
+ /*
+ * Table name under the specified account
+ */
+ @JsonProperty(value = "tableName", access = JsonProperty.Access.WRITE_ONLY)
+ private String tableName;
+
+ /*
+ * List of stored access policies specified on the table.
+ */
+ @JsonProperty(value = "signedIdentifiers")
+ private List signedIdentifiers;
+
+ /**
+ * Get the tableName property: Table name under the specified account.
+ *
+ * @return the tableName value.
+ */
+ public String tableName() {
+ return this.tableName;
+ }
+
+ /**
+ * Get the signedIdentifiers property: List of stored access policies specified on the table.
+ *
+ * @return the signedIdentifiers value.
+ */
+ public List signedIdentifiers() {
+ return this.signedIdentifiers;
+ }
+
+ /**
+ * Set the signedIdentifiers property: List of stored access policies specified on the table.
+ *
+ * @param signedIdentifiers the signedIdentifiers value to set.
+ * @return the TableProperties object itself.
+ */
+ public TableProperties withSignedIdentifiers(List signedIdentifiers) {
+ this.signedIdentifiers = signedIdentifiers;
+ 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());
+ }
+ }
+}
diff --git a/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/TableServicePropertiesInner.java b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/TableServicePropertiesInner.java
new file mode 100644
index 0000000000000..07d73bb753b5b
--- /dev/null
+++ b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/TableServicePropertiesInner.java
@@ -0,0 +1,67 @@
+// 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.resourcemanager.storage.generated.models.CorsRules;
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/** The properties of a storage account’s Table service. */
+@Fluent
+public final class TableServicePropertiesInner extends ProxyResource {
+ /*
+ * The properties of a storage account’s Table service.
+ */
+ @JsonProperty(value = "properties")
+ private TableServicePropertiesProperties innerTableServiceProperties;
+
+ /**
+ * Get the innerTableServiceProperties property: The properties of a storage account’s Table service.
+ *
+ * @return the innerTableServiceProperties value.
+ */
+ private TableServicePropertiesProperties innerTableServiceProperties() {
+ return this.innerTableServiceProperties;
+ }
+
+ /**
+ * Get the cors property: Specifies CORS rules for the Table 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 Table service.
+ *
+ * @return the cors value.
+ */
+ public CorsRules cors() {
+ return this.innerTableServiceProperties() == null ? null : this.innerTableServiceProperties().cors();
+ }
+
+ /**
+ * Set the cors property: Specifies CORS rules for the Table 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 Table service.
+ *
+ * @param cors the cors value to set.
+ * @return the TableServicePropertiesInner object itself.
+ */
+ public TableServicePropertiesInner withCors(CorsRules cors) {
+ if (this.innerTableServiceProperties() == null) {
+ this.innerTableServiceProperties = new TableServicePropertiesProperties();
+ }
+ this.innerTableServiceProperties().withCors(cors);
+ return this;
+ }
+
+ /**
+ * Validates the instance.
+ *
+ * @throws IllegalArgumentException thrown if the instance is not valid.
+ */
+ public void validate() {
+ if (innerTableServiceProperties() != null) {
+ innerTableServiceProperties().validate();
+ }
+ }
+}
diff --git a/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/TableServicePropertiesProperties.java b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/TableServicePropertiesProperties.java
new file mode 100644
index 0000000000000..cefd545ec8c0f
--- /dev/null
+++ b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/TableServicePropertiesProperties.java
@@ -0,0 +1,56 @@
+// 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.resourcemanager.storage.generated.models.CorsRules;
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/** The properties of a storage account’s Table service. */
+@Fluent
+public final class TableServicePropertiesProperties {
+ /*
+ * Specifies CORS rules for the Table 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 Table service.
+ */
+ @JsonProperty(value = "cors")
+ private CorsRules cors;
+
+ /**
+ * Get the cors property: Specifies CORS rules for the Table 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 Table service.
+ *
+ * @return the cors value.
+ */
+ public CorsRules cors() {
+ return this.cors;
+ }
+
+ /**
+ * Set the cors property: Specifies CORS rules for the Table 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 Table service.
+ *
+ * @param cors the cors value to set.
+ * @return the TableServicePropertiesProperties object itself.
+ */
+ public TableServicePropertiesProperties withCors(CorsRules cors) {
+ this.cors = cors;
+ return this;
+ }
+
+ /**
+ * Validates the instance.
+ *
+ * @throws IllegalArgumentException thrown if the instance is not valid.
+ */
+ public void validate() {
+ if (cors() != null) {
+ cors().validate();
+ }
+ }
+}
diff --git a/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/UsageInner.java b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/UsageInner.java
new file mode 100644
index 0000000000000..20959ab6b3814
--- /dev/null
+++ b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/UsageInner.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.resourcemanager.storage.generated.models.UsageName;
+import com.azure.resourcemanager.storage.generated.models.UsageUnit;
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/** Describes Storage Resource Usage. */
+@Immutable
+public final class UsageInner {
+ /*
+ * Gets the unit of measurement.
+ */
+ @JsonProperty(value = "unit", access = JsonProperty.Access.WRITE_ONLY)
+ private UsageUnit unit;
+
+ /*
+ * Gets the current count of the allocated resources in the subscription.
+ */
+ @JsonProperty(value = "currentValue", access = JsonProperty.Access.WRITE_ONLY)
+ private Integer currentValue;
+
+ /*
+ * Gets the maximum count of the resources that can be allocated in the subscription.
+ */
+ @JsonProperty(value = "limit", access = JsonProperty.Access.WRITE_ONLY)
+ private Integer limit;
+
+ /*
+ * Gets the name of the type of usage.
+ */
+ @JsonProperty(value = "name", access = JsonProperty.Access.WRITE_ONLY)
+ private UsageName name;
+
+ /**
+ * Get the unit property: Gets the unit of measurement.
+ *
+ * @return the unit value.
+ */
+ public UsageUnit unit() {
+ return this.unit;
+ }
+
+ /**
+ * Get the currentValue property: Gets the current count of the allocated resources in the subscription.
+ *
+ * @return the currentValue value.
+ */
+ public Integer currentValue() {
+ return this.currentValue;
+ }
+
+ /**
+ * Get the limit property: Gets the maximum count of the resources that can be allocated in the subscription.
+ *
+ * @return the limit value.
+ */
+ public Integer limit() {
+ return this.limit;
+ }
+
+ /**
+ * Get the name property: Gets the name of the type of usage.
+ *
+ * @return the name value.
+ */
+ public UsageName name() {
+ return this.name;
+ }
+
+ /**
+ * Validates the instance.
+ *
+ * @throws IllegalArgumentException thrown if the instance is not valid.
+ */
+ public void validate() {
+ if (name() != null) {
+ name().validate();
+ }
+ }
+}
diff --git a/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/package-info.java b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/package-info.java
new file mode 100644
index 0000000000000..dec7a10810ff7
--- /dev/null
+++ b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/package-info.java
@@ -0,0 +1,6 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+/** Package containing the inner data models for StorageManagementClient. The Azure Storage Management API. */
+package com.azure.resourcemanager.storage.generated.fluent.models;
diff --git a/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/package-info.java b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/package-info.java
new file mode 100644
index 0000000000000..e75af1291733e
--- /dev/null
+++ b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/package-info.java
@@ -0,0 +1,6 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+/** Package containing the service clients for StorageManagementClient. The Azure Storage Management API. */
+package com.azure.resourcemanager.storage.generated.fluent;
diff --git a/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/implementation/BlobContainerImpl.java b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/implementation/BlobContainerImpl.java
new file mode 100644
index 0000000000000..f9be7643a93b4
--- /dev/null
+++ b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/implementation/BlobContainerImpl.java
@@ -0,0 +1,304 @@
+// 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.implementation;
+
+import com.azure.core.http.rest.Response;
+import com.azure.core.util.Context;
+import com.azure.resourcemanager.storage.generated.fluent.models.BlobContainerInner;
+import com.azure.resourcemanager.storage.generated.fluent.models.LegalHoldInner;
+import com.azure.resourcemanager.storage.generated.models.BlobContainer;
+import com.azure.resourcemanager.storage.generated.models.ImmutabilityPolicyProperties;
+import com.azure.resourcemanager.storage.generated.models.ImmutableStorageWithVersioning;
+import com.azure.resourcemanager.storage.generated.models.LeaseContainerRequest;
+import com.azure.resourcemanager.storage.generated.models.LeaseContainerResponse;
+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.LegalHold;
+import com.azure.resourcemanager.storage.generated.models.LegalHoldProperties;
+import com.azure.resourcemanager.storage.generated.models.PublicAccess;
+import java.time.OffsetDateTime;
+import java.util.Collections;
+import java.util.Map;
+
+public final class BlobContainerImpl implements BlobContainer, BlobContainer.Definition, BlobContainer.Update {
+ private BlobContainerInner innerObject;
+
+ private final com.azure.resourcemanager.storage.generated.StorageManager serviceManager;
+
+ public String id() {
+ return this.innerModel().id();
+ }
+
+ public String name() {
+ return this.innerModel().name();
+ }
+
+ public String type() {
+ return this.innerModel().type();
+ }
+
+ public String etag() {
+ return this.innerModel().etag();
+ }
+
+ public String version() {
+ return this.innerModel().version();
+ }
+
+ public Boolean deleted() {
+ return this.innerModel().deleted();
+ }
+
+ public OffsetDateTime deletedTime() {
+ return this.innerModel().deletedTime();
+ }
+
+ public Integer remainingRetentionDays() {
+ return this.innerModel().remainingRetentionDays();
+ }
+
+ public String defaultEncryptionScope() {
+ return this.innerModel().defaultEncryptionScope();
+ }
+
+ public Boolean denyEncryptionScopeOverride() {
+ return this.innerModel().denyEncryptionScopeOverride();
+ }
+
+ public PublicAccess publicAccess() {
+ return this.innerModel().publicAccess();
+ }
+
+ public OffsetDateTime lastModifiedTime() {
+ return this.innerModel().lastModifiedTime();
+ }
+
+ public LeaseStatus leaseStatus() {
+ return this.innerModel().leaseStatus();
+ }
+
+ public LeaseState leaseState() {
+ return this.innerModel().leaseState();
+ }
+
+ public LeaseDuration leaseDuration() {
+ return this.innerModel().leaseDuration();
+ }
+
+ public Map metadata() {
+ Map inner = this.innerModel().metadata();
+ if (inner != null) {
+ return Collections.unmodifiableMap(inner);
+ } else {
+ return Collections.emptyMap();
+ }
+ }
+
+ public ImmutabilityPolicyProperties immutabilityPolicy() {
+ return this.innerModel().immutabilityPolicy();
+ }
+
+ public LegalHoldProperties legalHold() {
+ return this.innerModel().legalHold();
+ }
+
+ public Boolean hasLegalHold() {
+ return this.innerModel().hasLegalHold();
+ }
+
+ public Boolean hasImmutabilityPolicy() {
+ return this.innerModel().hasImmutabilityPolicy();
+ }
+
+ public ImmutableStorageWithVersioning immutableStorageWithVersioning() {
+ return this.innerModel().immutableStorageWithVersioning();
+ }
+
+ public Boolean enableNfsV3RootSquash() {
+ return this.innerModel().enableNfsV3RootSquash();
+ }
+
+ public Boolean enableNfsV3AllSquash() {
+ return this.innerModel().enableNfsV3AllSquash();
+ }
+
+ public String resourceGroupName() {
+ return resourceGroupName;
+ }
+
+ public BlobContainerInner innerModel() {
+ return this.innerObject;
+ }
+
+ private com.azure.resourcemanager.storage.generated.StorageManager manager() {
+ return this.serviceManager;
+ }
+
+ private String resourceGroupName;
+
+ private String accountName;
+
+ private String containerName;
+
+ public BlobContainerImpl withExistingStorageAccount(String resourceGroupName, String accountName) {
+ this.resourceGroupName = resourceGroupName;
+ this.accountName = accountName;
+ return this;
+ }
+
+ public BlobContainer create() {
+ this.innerObject =
+ serviceManager
+ .serviceClient()
+ .getBlobContainers()
+ .createWithResponse(resourceGroupName, accountName, containerName, this.innerModel(), Context.NONE)
+ .getValue();
+ return this;
+ }
+
+ public BlobContainer create(Context context) {
+ this.innerObject =
+ serviceManager
+ .serviceClient()
+ .getBlobContainers()
+ .createWithResponse(resourceGroupName, accountName, containerName, this.innerModel(), context)
+ .getValue();
+ return this;
+ }
+
+ BlobContainerImpl(String name, com.azure.resourcemanager.storage.generated.StorageManager serviceManager) {
+ this.innerObject = new BlobContainerInner();
+ this.serviceManager = serviceManager;
+ this.containerName = name;
+ }
+
+ public BlobContainerImpl update() {
+ return this;
+ }
+
+ public BlobContainer apply() {
+ this.innerObject =
+ serviceManager
+ .serviceClient()
+ .getBlobContainers()
+ .updateWithResponse(resourceGroupName, accountName, containerName, this.innerModel(), Context.NONE)
+ .getValue();
+ return this;
+ }
+
+ public BlobContainer apply(Context context) {
+ this.innerObject =
+ serviceManager
+ .serviceClient()
+ .getBlobContainers()
+ .updateWithResponse(resourceGroupName, accountName, containerName, this.innerModel(), context)
+ .getValue();
+ return this;
+ }
+
+ BlobContainerImpl(
+ BlobContainerInner innerObject, com.azure.resourcemanager.storage.generated.StorageManager serviceManager) {
+ this.innerObject = innerObject;
+ this.serviceManager = serviceManager;
+ this.resourceGroupName = Utils.getValueFromIdByName(innerObject.id(), "resourceGroups");
+ this.accountName = Utils.getValueFromIdByName(innerObject.id(), "storageAccounts");
+ this.containerName = Utils.getValueFromIdByName(innerObject.id(), "containers");
+ }
+
+ public BlobContainer refresh() {
+ this.innerObject =
+ serviceManager
+ .serviceClient()
+ .getBlobContainers()
+ .getWithResponse(resourceGroupName, accountName, containerName, Context.NONE)
+ .getValue();
+ return this;
+ }
+
+ public BlobContainer refresh(Context context) {
+ this.innerObject =
+ serviceManager
+ .serviceClient()
+ .getBlobContainers()
+ .getWithResponse(resourceGroupName, accountName, containerName, context)
+ .getValue();
+ return this;
+ }
+
+ public LegalHold setLegalHold(LegalHoldInner legalHold) {
+ return serviceManager.blobContainers().setLegalHold(resourceGroupName, accountName, containerName, legalHold);
+ }
+
+ public Response setLegalHoldWithResponse(LegalHoldInner legalHold, Context context) {
+ return serviceManager
+ .blobContainers()
+ .setLegalHoldWithResponse(resourceGroupName, accountName, containerName, legalHold, context);
+ }
+
+ public LegalHold clearLegalHold(LegalHoldInner legalHold) {
+ return serviceManager.blobContainers().clearLegalHold(resourceGroupName, accountName, containerName, legalHold);
+ }
+
+ public Response clearLegalHoldWithResponse(LegalHoldInner legalHold, Context context) {
+ return serviceManager
+ .blobContainers()
+ .clearLegalHoldWithResponse(resourceGroupName, accountName, containerName, legalHold, context);
+ }
+
+ public LeaseContainerResponse lease() {
+ return serviceManager.blobContainers().lease(resourceGroupName, accountName, containerName);
+ }
+
+ public Response leaseWithResponse(LeaseContainerRequest parameters, Context context) {
+ return serviceManager
+ .blobContainers()
+ .leaseWithResponse(resourceGroupName, accountName, containerName, parameters, context);
+ }
+
+ public void objectLevelWorm() {
+ serviceManager.blobContainers().objectLevelWorm(resourceGroupName, accountName, containerName);
+ }
+
+ public void objectLevelWorm(Context context) {
+ serviceManager.blobContainers().objectLevelWorm(resourceGroupName, accountName, containerName, context);
+ }
+
+ public BlobContainerImpl withDefaultEncryptionScope(String defaultEncryptionScope) {
+ this.innerModel().withDefaultEncryptionScope(defaultEncryptionScope);
+ return this;
+ }
+
+ public BlobContainerImpl withDenyEncryptionScopeOverride(Boolean denyEncryptionScopeOverride) {
+ this.innerModel().withDenyEncryptionScopeOverride(denyEncryptionScopeOverride);
+ return this;
+ }
+
+ public BlobContainerImpl withPublicAccess(PublicAccess publicAccess) {
+ this.innerModel().withPublicAccess(publicAccess);
+ return this;
+ }
+
+ public BlobContainerImpl withMetadata(Map metadata) {
+ this.innerModel().withMetadata(metadata);
+ return this;
+ }
+
+ public BlobContainerImpl withImmutableStorageWithVersioning(
+ ImmutableStorageWithVersioning immutableStorageWithVersioning) {
+ this.innerModel().withImmutableStorageWithVersioning(immutableStorageWithVersioning);
+ return this;
+ }
+
+ public BlobContainerImpl withEnableNfsV3RootSquash(Boolean enableNfsV3RootSquash) {
+ this.innerModel().withEnableNfsV3RootSquash(enableNfsV3RootSquash);
+ return this;
+ }
+
+ public BlobContainerImpl withEnableNfsV3AllSquash(Boolean enableNfsV3AllSquash) {
+ this.innerModel().withEnableNfsV3AllSquash(enableNfsV3AllSquash);
+ return this;
+ }
+}
diff --git a/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/implementation/BlobContainersClientImpl.java b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/implementation/BlobContainersClientImpl.java
new file mode 100644
index 0000000000000..8875c4473391e
--- /dev/null
+++ b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/implementation/BlobContainersClientImpl.java
@@ -0,0 +1,3575 @@
+// 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.implementation;
+
+import com.azure.core.annotation.BodyParam;
+import com.azure.core.annotation.Delete;
+import com.azure.core.annotation.ExpectedResponses;
+import com.azure.core.annotation.Get;
+import com.azure.core.annotation.HeaderParam;
+import com.azure.core.annotation.Headers;
+import com.azure.core.annotation.Host;
+import com.azure.core.annotation.HostParam;
+import com.azure.core.annotation.Patch;
+import com.azure.core.annotation.PathParam;
+import com.azure.core.annotation.Post;
+import com.azure.core.annotation.Put;
+import com.azure.core.annotation.QueryParam;
+import com.azure.core.annotation.ReturnType;
+import com.azure.core.annotation.ServiceInterface;
+import com.azure.core.annotation.ServiceMethod;
+import com.azure.core.annotation.UnexpectedResponseExceptionType;
+import com.azure.core.http.rest.PagedFlux;
+import com.azure.core.http.rest.PagedIterable;
+import com.azure.core.http.rest.PagedResponse;
+import com.azure.core.http.rest.PagedResponseBase;
+import com.azure.core.http.rest.Response;
+import com.azure.core.http.rest.RestProxy;
+import com.azure.core.management.exception.ManagementException;
+import com.azure.core.management.polling.PollResult;
+import com.azure.core.util.Context;
+import com.azure.core.util.FluxUtil;
+import com.azure.core.util.polling.PollerFlux;
+import com.azure.core.util.polling.SyncPoller;
+import com.azure.resourcemanager.storage.generated.fluent.BlobContainersClient;
+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.ListContainerItems;
+import com.azure.resourcemanager.storage.generated.models.ListContainersInclude;
+import java.nio.ByteBuffer;
+import reactor.core.publisher.Flux;
+import reactor.core.publisher.Mono;
+
+/** An instance of this class provides access to all the operations defined in BlobContainersClient. */
+public final class BlobContainersClientImpl implements BlobContainersClient {
+ /** The proxy service used to perform REST calls. */
+ private final BlobContainersService service;
+
+ /** The service client containing this operation class. */
+ private final StorageManagementClientImpl client;
+
+ /**
+ * Initializes an instance of BlobContainersClientImpl.
+ *
+ * @param client the instance of the service client containing this operation class.
+ */
+ BlobContainersClientImpl(StorageManagementClientImpl client) {
+ this.service =
+ RestProxy.create(BlobContainersService.class, client.getHttpPipeline(), client.getSerializerAdapter());
+ this.client = client;
+ }
+
+ /**
+ * The interface defining all the services for StorageManagementClientBlobContainers to be used by the proxy service
+ * to perform REST calls.
+ */
+ @Host("{$host}")
+ @ServiceInterface(name = "StorageManagementCli")
+ private interface BlobContainersService {
+ @Headers({"Content-Type: application/json"})
+ @Get(
+ "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Storage"
+ + "/storageAccounts/{accountName}/blobServices/default/containers")
+ @ExpectedResponses({200})
+ @UnexpectedResponseExceptionType(ManagementException.class)
+ Mono> list(
+ @HostParam("$host") String endpoint,
+ @PathParam("resourceGroupName") String resourceGroupName,
+ @PathParam("accountName") String accountName,
+ @QueryParam("api-version") String apiVersion,
+ @PathParam("subscriptionId") String subscriptionId,
+ @QueryParam("$maxpagesize") String maxpagesize,
+ @QueryParam("$filter") String filter,
+ @QueryParam("$include") ListContainersInclude include,
+ @HeaderParam("Accept") String accept,
+ Context context);
+
+ @Headers({"Content-Type: application/json"})
+ @Put(
+ "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Storage"
+ + "/storageAccounts/{accountName}/blobServices/default/containers/{containerName}")
+ @ExpectedResponses({200, 201})
+ @UnexpectedResponseExceptionType(ManagementException.class)
+ Mono> create(
+ @HostParam("$host") String endpoint,
+ @PathParam("resourceGroupName") String resourceGroupName,
+ @PathParam("accountName") String accountName,
+ @PathParam("containerName") String containerName,
+ @QueryParam("api-version") String apiVersion,
+ @PathParam("subscriptionId") String subscriptionId,
+ @BodyParam("application/json") BlobContainerInner blobContainer,
+ @HeaderParam("Accept") String accept,
+ Context context);
+
+ @Headers({"Content-Type: application/json"})
+ @Patch(
+ "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Storage"
+ + "/storageAccounts/{accountName}/blobServices/default/containers/{containerName}")
+ @ExpectedResponses({200})
+ @UnexpectedResponseExceptionType(ManagementException.class)
+ Mono> update(
+ @HostParam("$host") String endpoint,
+ @PathParam("resourceGroupName") String resourceGroupName,
+ @PathParam("accountName") String accountName,
+ @PathParam("containerName") String containerName,
+ @QueryParam("api-version") String apiVersion,
+ @PathParam("subscriptionId") String subscriptionId,
+ @BodyParam("application/json") BlobContainerInner blobContainer,
+ @HeaderParam("Accept") String accept,
+ Context context);
+
+ @Headers({"Content-Type: application/json"})
+ @Get(
+ "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Storage"
+ + "/storageAccounts/{accountName}/blobServices/default/containers/{containerName}")
+ @ExpectedResponses({200})
+ @UnexpectedResponseExceptionType(ManagementException.class)
+ Mono> get(
+ @HostParam("$host") String endpoint,
+ @PathParam("resourceGroupName") String resourceGroupName,
+ @PathParam("accountName") String accountName,
+ @PathParam("containerName") String containerName,
+ @QueryParam("api-version") String apiVersion,
+ @PathParam("subscriptionId") String subscriptionId,
+ @HeaderParam("Accept") String accept,
+ Context context);
+
+ @Headers({"Accept: application/json;q=0.9", "Content-Type: application/json"})
+ @Delete(
+ "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Storage"
+ + "/storageAccounts/{accountName}/blobServices/default/containers/{containerName}")
+ @ExpectedResponses({200, 204})
+ @UnexpectedResponseExceptionType(ManagementException.class)
+ Mono> delete(
+ @HostParam("$host") String endpoint,
+ @PathParam("resourceGroupName") String resourceGroupName,
+ @PathParam("accountName") String accountName,
+ @PathParam("containerName") String containerName,
+ @QueryParam("api-version") String apiVersion,
+ @PathParam("subscriptionId") String subscriptionId,
+ Context context);
+
+ @Headers({"Content-Type: application/json"})
+ @Post(
+ "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Storage"
+ + "/storageAccounts/{accountName}/blobServices/default/containers/{containerName}/setLegalHold")
+ @ExpectedResponses({200})
+ @UnexpectedResponseExceptionType(ManagementException.class)
+ Mono> setLegalHold(
+ @HostParam("$host") String endpoint,
+ @PathParam("resourceGroupName") String resourceGroupName,
+ @PathParam("accountName") String accountName,
+ @PathParam("containerName") String containerName,
+ @QueryParam("api-version") String apiVersion,
+ @PathParam("subscriptionId") String subscriptionId,
+ @BodyParam("application/json") LegalHoldInner legalHold,
+ @HeaderParam("Accept") String accept,
+ Context context);
+
+ @Headers({"Content-Type: application/json"})
+ @Post(
+ "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Storage"
+ + "/storageAccounts/{accountName}/blobServices/default/containers/{containerName}/clearLegalHold")
+ @ExpectedResponses({200})
+ @UnexpectedResponseExceptionType(ManagementException.class)
+ Mono> clearLegalHold(
+ @HostParam("$host") String endpoint,
+ @PathParam("resourceGroupName") String resourceGroupName,
+ @PathParam("accountName") String accountName,
+ @PathParam("containerName") String containerName,
+ @QueryParam("api-version") String apiVersion,
+ @PathParam("subscriptionId") String subscriptionId,
+ @BodyParam("application/json") LegalHoldInner legalHold,
+ @HeaderParam("Accept") String accept,
+ Context context);
+
+ @Headers({"Content-Type: application/json"})
+ @Put(
+ "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Storage"
+ + "/storageAccounts/{accountName}/blobServices/default/containers/{containerName}/immutabilityPolicies"
+ + "/{immutabilityPolicyName}")
+ @ExpectedResponses({200})
+ @UnexpectedResponseExceptionType(ManagementException.class)
+ Mono createOrUpdateImmutabilityPolicy(
+ @HostParam("$host") String endpoint,
+ @PathParam("resourceGroupName") String resourceGroupName,
+ @PathParam("accountName") String accountName,
+ @PathParam("containerName") String containerName,
+ @PathParam("immutabilityPolicyName") String immutabilityPolicyName,
+ @QueryParam("api-version") String apiVersion,
+ @PathParam("subscriptionId") String subscriptionId,
+ @HeaderParam("If-Match") String ifMatch,
+ @BodyParam("application/json") ImmutabilityPolicyInner parameters,
+ @HeaderParam("Accept") String accept,
+ Context context);
+
+ @Headers({"Content-Type: application/json"})
+ @Get(
+ "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Storage"
+ + "/storageAccounts/{accountName}/blobServices/default/containers/{containerName}/immutabilityPolicies"
+ + "/{immutabilityPolicyName}")
+ @ExpectedResponses({200})
+ @UnexpectedResponseExceptionType(ManagementException.class)
+ Mono getImmutabilityPolicy(
+ @HostParam("$host") String endpoint,
+ @PathParam("resourceGroupName") String resourceGroupName,
+ @PathParam("accountName") String accountName,
+ @PathParam("containerName") String containerName,
+ @PathParam("immutabilityPolicyName") String immutabilityPolicyName,
+ @QueryParam("api-version") String apiVersion,
+ @PathParam("subscriptionId") String subscriptionId,
+ @HeaderParam("If-Match") String ifMatch,
+ @HeaderParam("Accept") String accept,
+ Context context);
+
+ @Headers({"Content-Type: application/json"})
+ @Delete(
+ "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Storage"
+ + "/storageAccounts/{accountName}/blobServices/default/containers/{containerName}/immutabilityPolicies"
+ + "/{immutabilityPolicyName}")
+ @ExpectedResponses({200})
+ @UnexpectedResponseExceptionType(ManagementException.class)
+ Mono deleteImmutabilityPolicy(
+ @HostParam("$host") String endpoint,
+ @PathParam("resourceGroupName") String resourceGroupName,
+ @PathParam("accountName") String accountName,
+ @PathParam("containerName") String containerName,
+ @PathParam("immutabilityPolicyName") String immutabilityPolicyName,
+ @QueryParam("api-version") String apiVersion,
+ @PathParam("subscriptionId") String subscriptionId,
+ @HeaderParam("If-Match") String ifMatch,
+ @HeaderParam("Accept") String accept,
+ Context context);
+
+ @Headers({"Content-Type: application/json"})
+ @Post(
+ "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Storage"
+ + "/storageAccounts/{accountName}/blobServices/default/containers/{containerName}/immutabilityPolicies"
+ + "/default/lock")
+ @ExpectedResponses({200})
+ @UnexpectedResponseExceptionType(ManagementException.class)
+ Mono lockImmutabilityPolicy(
+ @HostParam("$host") String endpoint,
+ @PathParam("resourceGroupName") String resourceGroupName,
+ @PathParam("accountName") String accountName,
+ @PathParam("containerName") String containerName,
+ @QueryParam("api-version") String apiVersion,
+ @PathParam("subscriptionId") String subscriptionId,
+ @HeaderParam("If-Match") String ifMatch,
+ @HeaderParam("Accept") String accept,
+ Context context);
+
+ @Headers({"Content-Type: application/json"})
+ @Post(
+ "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Storage"
+ + "/storageAccounts/{accountName}/blobServices/default/containers/{containerName}/immutabilityPolicies"
+ + "/default/extend")
+ @ExpectedResponses({200})
+ @UnexpectedResponseExceptionType(ManagementException.class)
+ Mono extendImmutabilityPolicy(
+ @HostParam("$host") String endpoint,
+ @PathParam("resourceGroupName") String resourceGroupName,
+ @PathParam("accountName") String accountName,
+ @PathParam("containerName") String containerName,
+ @QueryParam("api-version") String apiVersion,
+ @PathParam("subscriptionId") String subscriptionId,
+ @HeaderParam("If-Match") String ifMatch,
+ @BodyParam("application/json") ImmutabilityPolicyInner parameters,
+ @HeaderParam("Accept") String accept,
+ Context context);
+
+ @Headers({"Content-Type: application/json"})
+ @Post(
+ "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Storage"
+ + "/storageAccounts/{accountName}/blobServices/default/containers/{containerName}/lease")
+ @ExpectedResponses({200})
+ @UnexpectedResponseExceptionType(ManagementException.class)
+ Mono> lease(
+ @HostParam("$host") String endpoint,
+ @PathParam("resourceGroupName") String resourceGroupName,
+ @PathParam("accountName") String accountName,
+ @PathParam("containerName") String containerName,
+ @QueryParam("api-version") String apiVersion,
+ @PathParam("subscriptionId") String subscriptionId,
+ @BodyParam("application/json") LeaseContainerRequest parameters,
+ @HeaderParam("Accept") String accept,
+ Context context);
+
+ @Headers({"Content-Type: application/json"})
+ @Post(
+ "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Storage"
+ + "/storageAccounts/{accountName}/blobServices/default/containers/{containerName}/migrate")
+ @ExpectedResponses({200, 202})
+ @UnexpectedResponseExceptionType(ManagementException.class)
+ Mono>> objectLevelWorm(
+ @HostParam("$host") String endpoint,
+ @PathParam("resourceGroupName") String resourceGroupName,
+ @PathParam("accountName") String accountName,
+ @PathParam("containerName") String containerName,
+ @QueryParam("api-version") String apiVersion,
+ @PathParam("subscriptionId") String subscriptionId,
+ @HeaderParam("Accept") String accept,
+ Context context);
+
+ @Headers({"Content-Type: application/json"})
+ @Get("{nextLink}")
+ @ExpectedResponses({200})
+ @UnexpectedResponseExceptionType(ManagementException.class)
+ Mono> listNext(
+ @PathParam(value = "nextLink", encoded = true) String nextLink,
+ @HostParam("$host") String endpoint,
+ @HeaderParam("Accept") String accept,
+ Context context);
+ }
+
+ /**
+ * 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.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return response schema along with {@link PagedResponse} on successful completion of {@link Mono}.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ private Mono> listSinglePageAsync(
+ String resourceGroupName,
+ String accountName,
+ String maxpagesize,
+ String filter,
+ ListContainersInclude include) {
+ if (this.client.getEndpoint() == null) {
+ return Mono
+ .error(
+ new IllegalArgumentException(
+ "Parameter this.client.getEndpoint() is required and cannot be null."));
+ }
+ if (resourceGroupName == null) {
+ return Mono
+ .error(new IllegalArgumentException("Parameter resourceGroupName is required and cannot be null."));
+ }
+ if (accountName == null) {
+ return Mono.error(new IllegalArgumentException("Parameter accountName is required and cannot be null."));
+ }
+ if (this.client.getSubscriptionId() == null) {
+ return Mono
+ .error(
+ new IllegalArgumentException(
+ "Parameter this.client.getSubscriptionId() is required and cannot be null."));
+ }
+ final String accept = "application/json";
+ return FluxUtil
+ .withContext(
+ context ->
+ service
+ .list(
+ this.client.getEndpoint(),
+ resourceGroupName,
+ accountName,
+ this.client.getApiVersion(),
+ this.client.getSubscriptionId(),
+ maxpagesize,
+ filter,
+ include,
+ accept,
+ context))
+ .>map(
+ res ->
+ new PagedResponseBase<>(
+ res.getRequest(),
+ res.getStatusCode(),
+ res.getHeaders(),
+ res.getValue().value(),
+ res.getValue().nextLink(),
+ null))
+ .contextWrite(context -> context.putAll(FluxUtil.toReactorContext(this.client.getContext()).readOnly()));
+ }
+
+ /**
+ * 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 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 along with {@link PagedResponse} on successful completion of {@link Mono}.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ private Mono> listSinglePageAsync(
+ String resourceGroupName,
+ String accountName,
+ String maxpagesize,
+ String filter,
+ ListContainersInclude include,
+ Context context) {
+ if (this.client.getEndpoint() == null) {
+ return Mono
+ .error(
+ new IllegalArgumentException(
+ "Parameter this.client.getEndpoint() is required and cannot be null."));
+ }
+ if (resourceGroupName == null) {
+ return Mono
+ .error(new IllegalArgumentException("Parameter resourceGroupName is required and cannot be null."));
+ }
+ if (accountName == null) {
+ return Mono.error(new IllegalArgumentException("Parameter accountName is required and cannot be null."));
+ }
+ if (this.client.getSubscriptionId() == null) {
+ return Mono
+ .error(
+ new IllegalArgumentException(
+ "Parameter this.client.getSubscriptionId() is required and cannot be null."));
+ }
+ final String accept = "application/json";
+ context = this.client.mergeContext(context);
+ return service
+ .list(
+ this.client.getEndpoint(),
+ resourceGroupName,
+ accountName,
+ this.client.getApiVersion(),
+ this.client.getSubscriptionId(),
+ maxpagesize,
+ filter,
+ include,
+ accept,
+ context)
+ .map(
+ res ->
+ new PagedResponseBase<>(
+ res.getRequest(),
+ res.getStatusCode(),
+ res.getHeaders(),
+ res.getValue().value(),
+ res.getValue().nextLink(),
+ null));
+ }
+
+ /**
+ * 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.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return response schema as paginated response with {@link PagedFlux}.
+ */
+ @ServiceMethod(returns = ReturnType.COLLECTION)
+ private PagedFlux listAsync(
+ String resourceGroupName,
+ String accountName,
+ String maxpagesize,
+ String filter,
+ ListContainersInclude include) {
+ return new PagedFlux<>(
+ () -> listSinglePageAsync(resourceGroupName, accountName, maxpagesize, filter, include),
+ nextLink -> listNextSinglePageAsync(nextLink));
+ }
+
+ /**
+ * 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 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 PagedFlux}.
+ */
+ @ServiceMethod(returns = ReturnType.COLLECTION)
+ private PagedFlux listAsync(String resourceGroupName, String accountName) {
+ final String maxpagesize = null;
+ final String filter = null;
+ final ListContainersInclude include = null;
+ return new PagedFlux<>(
+ () -> listSinglePageAsync(resourceGroupName, accountName, maxpagesize, filter, include),
+ nextLink -> listNextSinglePageAsync(nextLink));
+ }
+
+ /**
+ * 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 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 PagedFlux}.
+ */
+ @ServiceMethod(returns = ReturnType.COLLECTION)
+ private PagedFlux listAsync(
+ String resourceGroupName,
+ String accountName,
+ String maxpagesize,
+ String filter,
+ ListContainersInclude include,
+ Context context) {
+ return new PagedFlux<>(
+ () -> listSinglePageAsync(resourceGroupName, accountName, maxpagesize, filter, include, context),
+ nextLink -> listNextSinglePageAsync(nextLink, context));
+ }
+
+ /**
+ * 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 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)
+ public PagedIterable list(String resourceGroupName, String accountName) {
+ final String maxpagesize = null;
+ final String filter = null;
+ final ListContainersInclude include = null;
+ return new PagedIterable<>(listAsync(resourceGroupName, accountName, maxpagesize, filter, include));
+ }
+
+ /**
+ * 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 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)
+ public PagedIterable list(
+ String resourceGroupName,
+ String accountName,
+ String maxpagesize,
+ String filter,
+ ListContainersInclude include,
+ Context context) {
+ return new PagedIterable<>(listAsync(resourceGroupName, accountName, maxpagesize, filter, include, 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 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} on successful completion of {@link Mono}.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ private Mono> createWithResponseAsync(
+ String resourceGroupName, String accountName, String containerName, BlobContainerInner blobContainer) {
+ if (this.client.getEndpoint() == null) {
+ return Mono
+ .error(
+ new IllegalArgumentException(
+ "Parameter this.client.getEndpoint() is required and cannot be null."));
+ }
+ if (resourceGroupName == null) {
+ return Mono
+ .error(new IllegalArgumentException("Parameter resourceGroupName is required and cannot be null."));
+ }
+ if (accountName == null) {
+ return Mono.error(new IllegalArgumentException("Parameter accountName is required and cannot be null."));
+ }
+ if (containerName == null) {
+ return Mono.error(new IllegalArgumentException("Parameter containerName is required and cannot be null."));
+ }
+ if (this.client.getSubscriptionId() == null) {
+ return Mono
+ .error(
+ new IllegalArgumentException(
+ "Parameter this.client.getSubscriptionId() is required and cannot be null."));
+ }
+ if (blobContainer == null) {
+ return Mono.error(new IllegalArgumentException("Parameter blobContainer is required and cannot be null."));
+ } else {
+ blobContainer.validate();
+ }
+ final String accept = "application/json";
+ return FluxUtil
+ .withContext(
+ context ->
+ service
+ .create(
+ this.client.getEndpoint(),
+ resourceGroupName,
+ accountName,
+ containerName,
+ this.client.getApiVersion(),
+ this.client.getSubscriptionId(),
+ blobContainer,
+ accept,
+ context))
+ .contextWrite(context -> context.putAll(FluxUtil.toReactorContext(this.client.getContext()).readOnly()));
+ }
+
+ /**
+ * 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 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} on successful completion of {@link Mono}.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ private Mono> createWithResponseAsync(
+ String resourceGroupName,
+ String accountName,
+ String containerName,
+ BlobContainerInner blobContainer,
+ Context context) {
+ if (this.client.getEndpoint() == null) {
+ return Mono
+ .error(
+ new IllegalArgumentException(
+ "Parameter this.client.getEndpoint() is required and cannot be null."));
+ }
+ if (resourceGroupName == null) {
+ return Mono
+ .error(new IllegalArgumentException("Parameter resourceGroupName is required and cannot be null."));
+ }
+ if (accountName == null) {
+ return Mono.error(new IllegalArgumentException("Parameter accountName is required and cannot be null."));
+ }
+ if (containerName == null) {
+ return Mono.error(new IllegalArgumentException("Parameter containerName is required and cannot be null."));
+ }
+ if (this.client.getSubscriptionId() == null) {
+ return Mono
+ .error(
+ new IllegalArgumentException(
+ "Parameter this.client.getSubscriptionId() is required and cannot be null."));
+ }
+ if (blobContainer == null) {
+ return Mono.error(new IllegalArgumentException("Parameter blobContainer is required and cannot be null."));
+ } else {
+ blobContainer.validate();
+ }
+ final String accept = "application/json";
+ context = this.client.mergeContext(context);
+ return service
+ .create(
+ this.client.getEndpoint(),
+ resourceGroupName,
+ accountName,
+ containerName,
+ this.client.getApiVersion(),
+ this.client.getSubscriptionId(),
+ blobContainer,
+ accept,
+ 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 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 on successful
+ * completion of {@link Mono}.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ private Mono createAsync(
+ String resourceGroupName, String accountName, String containerName, BlobContainerInner blobContainer) {
+ return createWithResponseAsync(resourceGroupName, accountName, containerName, blobContainer)
+ .flatMap(res -> Mono.justOrEmpty(res.getValue()));
+ }
+
+ /**
+ * 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 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)
+ public BlobContainerInner create(
+ String resourceGroupName, String accountName, String containerName, BlobContainerInner blobContainer) {
+ return createAsync(resourceGroupName, accountName, containerName, blobContainer).block();
+ }
+
+ /**
+ * 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 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)
+ public Response createWithResponse(
+ String resourceGroupName,
+ String accountName,
+ String containerName,
+ BlobContainerInner blobContainer,
+ Context context) {
+ return createWithResponseAsync(resourceGroupName, accountName, containerName, blobContainer, context).block();
+ }
+
+ /**
+ * 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 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} on successful completion of {@link Mono}.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ private Mono> updateWithResponseAsync(
+ String resourceGroupName, String accountName, String containerName, BlobContainerInner blobContainer) {
+ if (this.client.getEndpoint() == null) {
+ return Mono
+ .error(
+ new IllegalArgumentException(
+ "Parameter this.client.getEndpoint() is required and cannot be null."));
+ }
+ if (resourceGroupName == null) {
+ return Mono
+ .error(new IllegalArgumentException("Parameter resourceGroupName is required and cannot be null."));
+ }
+ if (accountName == null) {
+ return Mono.error(new IllegalArgumentException("Parameter accountName is required and cannot be null."));
+ }
+ if (containerName == null) {
+ return Mono.error(new IllegalArgumentException("Parameter containerName is required and cannot be null."));
+ }
+ if (this.client.getSubscriptionId() == null) {
+ return Mono
+ .error(
+ new IllegalArgumentException(
+ "Parameter this.client.getSubscriptionId() is required and cannot be null."));
+ }
+ if (blobContainer == null) {
+ return Mono.error(new IllegalArgumentException("Parameter blobContainer is required and cannot be null."));
+ } else {
+ blobContainer.validate();
+ }
+ final String accept = "application/json";
+ return FluxUtil
+ .withContext(
+ context ->
+ service
+ .update(
+ this.client.getEndpoint(),
+ resourceGroupName,
+ accountName,
+ containerName,
+ this.client.getApiVersion(),
+ this.client.getSubscriptionId(),
+ blobContainer,
+ accept,
+ context))
+ .contextWrite(context -> context.putAll(FluxUtil.toReactorContext(this.client.getContext()).readOnly()));
+ }
+
+ /**
+ * 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 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} on successful completion of {@link Mono}.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ private Mono> updateWithResponseAsync(
+ String resourceGroupName,
+ String accountName,
+ String containerName,
+ BlobContainerInner blobContainer,
+ Context context) {
+ if (this.client.getEndpoint() == null) {
+ return Mono
+ .error(
+ new IllegalArgumentException(
+ "Parameter this.client.getEndpoint() is required and cannot be null."));
+ }
+ if (resourceGroupName == null) {
+ return Mono
+ .error(new IllegalArgumentException("Parameter resourceGroupName is required and cannot be null."));
+ }
+ if (accountName == null) {
+ return Mono.error(new IllegalArgumentException("Parameter accountName is required and cannot be null."));
+ }
+ if (containerName == null) {
+ return Mono.error(new IllegalArgumentException("Parameter containerName is required and cannot be null."));
+ }
+ if (this.client.getSubscriptionId() == null) {
+ return Mono
+ .error(
+ new IllegalArgumentException(
+ "Parameter this.client.getSubscriptionId() is required and cannot be null."));
+ }
+ if (blobContainer == null) {
+ return Mono.error(new IllegalArgumentException("Parameter blobContainer is required and cannot be null."));
+ } else {
+ blobContainer.validate();
+ }
+ final String accept = "application/json";
+ context = this.client.mergeContext(context);
+ return service
+ .update(
+ this.client.getEndpoint(),
+ resourceGroupName,
+ accountName,
+ containerName,
+ this.client.getApiVersion(),
+ this.client.getSubscriptionId(),
+ blobContainer,
+ accept,
+ 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 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 on successful
+ * completion of {@link Mono}.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ private Mono updateAsync(
+ String resourceGroupName, String accountName, String containerName, BlobContainerInner blobContainer) {
+ return updateWithResponseAsync(resourceGroupName, accountName, containerName, blobContainer)
+ .flatMap(res -> Mono.justOrEmpty(res.getValue()));
+ }
+
+ /**
+ * 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 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)
+ public BlobContainerInner update(
+ String resourceGroupName, String accountName, String containerName, BlobContainerInner blobContainer) {
+ return updateAsync(resourceGroupName, accountName, containerName, blobContainer).block();
+ }
+
+ /**
+ * 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 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)
+ public Response updateWithResponse(
+ String resourceGroupName,
+ String accountName,
+ String containerName,
+ BlobContainerInner blobContainer,
+ Context context) {
+ return updateWithResponseAsync(resourceGroupName, accountName, containerName, blobContainer, context).block();
+ }
+
+ /**
+ * 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 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} on successful completion of {@link Mono}.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ private Mono> getWithResponseAsync(
+ String resourceGroupName, String accountName, String containerName) {
+ if (this.client.getEndpoint() == null) {
+ return Mono
+ .error(
+ new IllegalArgumentException(
+ "Parameter this.client.getEndpoint() is required and cannot be null."));
+ }
+ if (resourceGroupName == null) {
+ return Mono
+ .error(new IllegalArgumentException("Parameter resourceGroupName is required and cannot be null."));
+ }
+ if (accountName == null) {
+ return Mono.error(new IllegalArgumentException("Parameter accountName is required and cannot be null."));
+ }
+ if (containerName == null) {
+ return Mono.error(new IllegalArgumentException("Parameter containerName is required and cannot be null."));
+ }
+ if (this.client.getSubscriptionId() == null) {
+ return Mono
+ .error(
+ new IllegalArgumentException(
+ "Parameter this.client.getSubscriptionId() is required and cannot be null."));
+ }
+ final String accept = "application/json";
+ return FluxUtil
+ .withContext(
+ context ->
+ service
+ .get(
+ this.client.getEndpoint(),
+ resourceGroupName,
+ accountName,
+ containerName,
+ this.client.getApiVersion(),
+ this.client.getSubscriptionId(),
+ accept,
+ context))
+ .contextWrite(context -> context.putAll(FluxUtil.toReactorContext(this.client.getContext()).readOnly()));
+ }
+
+ /**
+ * 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 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} on successful completion of {@link Mono}.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ private Mono> getWithResponseAsync(
+ String resourceGroupName, String accountName, String containerName, Context context) {
+ if (this.client.getEndpoint() == null) {
+ return Mono
+ .error(
+ new IllegalArgumentException(
+ "Parameter this.client.getEndpoint() is required and cannot be null."));
+ }
+ if (resourceGroupName == null) {
+ return Mono
+ .error(new IllegalArgumentException("Parameter resourceGroupName is required and cannot be null."));
+ }
+ if (accountName == null) {
+ return Mono.error(new IllegalArgumentException("Parameter accountName is required and cannot be null."));
+ }
+ if (containerName == null) {
+ return Mono.error(new IllegalArgumentException("Parameter containerName is required and cannot be null."));
+ }
+ if (this.client.getSubscriptionId() == null) {
+ return Mono
+ .error(
+ new IllegalArgumentException(
+ "Parameter this.client.getSubscriptionId() is required and cannot be null."));
+ }
+ final String accept = "application/json";
+ context = this.client.mergeContext(context);
+ return service
+ .get(
+ this.client.getEndpoint(),
+ resourceGroupName,
+ accountName,
+ containerName,
+ this.client.getApiVersion(),
+ this.client.getSubscriptionId(),
+ accept,
+ 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 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 on successful completion of {@link Mono}.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ private Mono getAsync(String resourceGroupName, String accountName, String containerName) {
+ return getWithResponseAsync(resourceGroupName, accountName, containerName)
+ .flatMap(res -> Mono.justOrEmpty(res.getValue()));
+ }
+
+ /**
+ * 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 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)
+ public BlobContainerInner get(String resourceGroupName, String accountName, String containerName) {
+ return getAsync(resourceGroupName, accountName, containerName).block();
+ }
+
+ /**
+ * 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 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)
+ public Response getWithResponse(
+ String resourceGroupName, String accountName, String containerName, Context context) {
+ return getWithResponseAsync(resourceGroupName, accountName, containerName, context).block();
+ }
+
+ /**
+ * 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 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} on successful completion of {@link Mono}.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ private Mono> deleteWithResponseAsync(
+ String resourceGroupName, String accountName, String containerName) {
+ if (this.client.getEndpoint() == null) {
+ return Mono
+ .error(
+ new IllegalArgumentException(
+ "Parameter this.client.getEndpoint() is required and cannot be null."));
+ }
+ if (resourceGroupName == null) {
+ return Mono
+ .error(new IllegalArgumentException("Parameter resourceGroupName is required and cannot be null."));
+ }
+ if (accountName == null) {
+ return Mono.error(new IllegalArgumentException("Parameter accountName is required and cannot be null."));
+ }
+ if (containerName == null) {
+ return Mono.error(new IllegalArgumentException("Parameter containerName is required and cannot be null."));
+ }
+ if (this.client.getSubscriptionId() == null) {
+ return Mono
+ .error(
+ new IllegalArgumentException(
+ "Parameter this.client.getSubscriptionId() is required and cannot be null."));
+ }
+ return FluxUtil
+ .withContext(
+ context ->
+ service
+ .delete(
+ this.client.getEndpoint(),
+ resourceGroupName,
+ accountName,
+ containerName,
+ this.client.getApiVersion(),
+ this.client.getSubscriptionId(),
+ context))
+ .contextWrite(context -> context.putAll(FluxUtil.toReactorContext(this.client.getContext()).readOnly()));
+ }
+
+ /**
+ * 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 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} on successful completion of {@link Mono}.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ private Mono> deleteWithResponseAsync(
+ String resourceGroupName, String accountName, String containerName, Context context) {
+ if (this.client.getEndpoint() == null) {
+ return Mono
+ .error(
+ new IllegalArgumentException(
+ "Parameter this.client.getEndpoint() is required and cannot be null."));
+ }
+ if (resourceGroupName == null) {
+ return Mono
+ .error(new IllegalArgumentException("Parameter resourceGroupName is required and cannot be null."));
+ }
+ if (accountName == null) {
+ return Mono.error(new IllegalArgumentException("Parameter accountName is required and cannot be null."));
+ }
+ if (containerName == null) {
+ return Mono.error(new IllegalArgumentException("Parameter containerName is required and cannot be null."));
+ }
+ if (this.client.getSubscriptionId() == null) {
+ return Mono
+ .error(
+ new IllegalArgumentException(
+ "Parameter this.client.getSubscriptionId() is required and cannot be null."));
+ }
+ context = this.client.mergeContext(context);
+ return service
+ .delete(
+ this.client.getEndpoint(),
+ resourceGroupName,
+ accountName,
+ containerName,
+ this.client.getApiVersion(),
+ this.client.getSubscriptionId(),
+ 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 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 {@link Mono} that completes when a successful response is received.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ private Mono deleteAsync(String resourceGroupName, String accountName, String containerName) {
+ return deleteWithResponseAsync(resourceGroupName, accountName, containerName).flatMap(ignored -> Mono.empty());
+ }
+
+ /**
+ * 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 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)
+ public void delete(String resourceGroupName, String accountName, String containerName) {
+ deleteAsync(resourceGroupName, accountName, containerName).block();
+ }
+
+ /**
+ * 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 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)
+ public Response deleteWithResponse(
+ String resourceGroupName, String accountName, String containerName, Context context) {
+ return deleteWithResponseAsync(resourceGroupName, accountName, containerName, context).block();
+ }
+
+ /**
+ * 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 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} on successful completion of {@link
+ * Mono}.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ private Mono