diff --git a/storage/resource-manager/v2019_04_01/pom.xml b/storage/resource-manager/v2019_04_01/pom.xml
new file mode 100644
index 000000000000..a9c1ce125116
--- /dev/null
+++ b/storage/resource-manager/v2019_04_01/pom.xml
@@ -0,0 +1,133 @@
+
+
+ 4.0.0
+ com.microsoft.azure.storage.v2019_04_01
+
+ com.microsoft.azure
+ azure-arm-parent
+ 0.0.3-beta
+ ../../../pom.xml
+
+ azure-mgmt-storage
+ 1.0.0-beta
+ jar
+ Microsoft Azure SDK for Storage Management
+ This package contains Microsoft Storage Management SDK.
+ https://github.com/Azure/azure-sdk-for-java
+
+
+ The MIT License (MIT)
+ http://opensource.org/licenses/MIT
+ repo
+
+
+
+ scm:git:https://github.com/Azure/azure-sdk-for-java
+ scm:git:git@github.com:Azure/azure-sdk-for-java.git
+ HEAD
+
+
+ UTF-8
+
+
+
+
+ microsoft
+ Microsoft
+
+
+
+
+ com.microsoft.azure
+ azure-client-runtime
+
+
+ com.microsoft.azure
+ azure-arm-client-runtime
+
+
+ junit
+ junit
+ test
+
+
+ com.microsoft.azure
+ azure-client-authentication
+ test
+
+
+ com.microsoft.azure
+ azure-mgmt-resources
+ test
+
+
+ com.microsoft.azure
+ azure-arm-client-runtime
+ test-jar
+ test
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-jar-plugin
+
+
+
+ true
+ true
+
+
+
+
+
+ org.codehaus.mojo
+ build-helper-maven-plugin
+
+
+ org.apache.maven.plugins
+ maven-compiler-plugin
+ 3.1
+
+ 1.7
+ 1.7
+
+
+ com.microsoft.azure.management.apigeneration.LangDefinitionProcessor
+
+
+ true
+ true
+
+ true
+ true
+
+
+
+
+ org.apache.maven.plugins
+ maven-javadoc-plugin
+ 2.8
+
+ *.implementation.*;*.utils.*;com.microsoft.schemas._2003._10.serialization;*.blob.core.search
+
+
+ /**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ */
+ ]]>
+
+
+
+
+
+
diff --git a/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/AccessTier.java b/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/AccessTier.java
new file mode 100644
index 000000000000..6bb2e43473ae
--- /dev/null
+++ b/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/AccessTier.java
@@ -0,0 +1,53 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.storage.v2019_04_01;
+
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonValue;
+
+/**
+ * Defines values for AccessTier.
+ */
+public enum AccessTier {
+ /** Enum value Hot. */
+ HOT("Hot"),
+
+ /** Enum value Cool. */
+ COOL("Cool");
+
+ /** The actual serialized value for a AccessTier instance. */
+ private String value;
+
+ AccessTier(String value) {
+ this.value = value;
+ }
+
+ /**
+ * Parses a serialized value to a AccessTier instance.
+ *
+ * @param value the serialized value to parse.
+ * @return the parsed AccessTier object, or null if unable to parse.
+ */
+ @JsonCreator
+ public static AccessTier fromString(String value) {
+ AccessTier[] items = AccessTier.values();
+ for (AccessTier item : items) {
+ if (item.toString().equalsIgnoreCase(value)) {
+ return item;
+ }
+ }
+ return null;
+ }
+
+ @JsonValue
+ @Override
+ public String toString() {
+ return this.value;
+ }
+}
diff --git a/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/AccountSasParameters.java b/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/AccountSasParameters.java
new file mode 100644
index 000000000000..ea5d217065d1
--- /dev/null
+++ b/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/AccountSasParameters.java
@@ -0,0 +1,236 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.storage.v2019_04_01;
+
+import org.joda.time.DateTime;
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/**
+ * The parameters to list SAS credentials of a storage account.
+ */
+public class AccountSasParameters {
+ /**
+ * The signed services accessible with the account SAS. Possible values
+ * include: Blob (b), Queue (q), Table (t), File (f). Possible values
+ * include: 'b', 'q', 't', 'f'.
+ */
+ @JsonProperty(value = "signedServices", required = true)
+ private Services services;
+
+ /**
+ * The signed resource types that are accessible with the account SAS.
+ * Service (s): Access to service-level APIs; Container (c): Access to
+ * container-level APIs; Object (o): Access to object-level APIs for blobs,
+ * queue messages, table entities, and files. Possible values include: 's',
+ * 'c', 'o'.
+ */
+ @JsonProperty(value = "signedResourceTypes", required = true)
+ private SignedResourceTypes resourceTypes;
+
+ /**
+ * The signed permissions for the account SAS. Possible values include:
+ * Read (r), Write (w), Delete (d), List (l), Add (a), Create (c), Update
+ * (u) and Process (p). Possible values include: 'r', 'd', 'w', 'l', 'a',
+ * 'c', 'u', 'p'.
+ */
+ @JsonProperty(value = "signedPermission", required = true)
+ private Permissions permissions;
+
+ /**
+ * An IP address or a range of IP addresses from which to accept requests.
+ */
+ @JsonProperty(value = "signedIp")
+ private String iPAddressOrRange;
+
+ /**
+ * The protocol permitted for a request made with the account SAS. Possible
+ * values include: 'https,http', 'https'.
+ */
+ @JsonProperty(value = "signedProtocol")
+ private HttpProtocol protocols;
+
+ /**
+ * The time at which the SAS becomes valid.
+ */
+ @JsonProperty(value = "signedStart")
+ private DateTime sharedAccessStartTime;
+
+ /**
+ * The time at which the shared access signature becomes invalid.
+ */
+ @JsonProperty(value = "signedExpiry", required = true)
+ private DateTime sharedAccessExpiryTime;
+
+ /**
+ * The key to sign the account SAS token with.
+ */
+ @JsonProperty(value = "keyToSign")
+ private String keyToSign;
+
+ /**
+ * Get the signed services accessible with the account SAS. Possible values include: Blob (b), Queue (q), Table (t), File (f). Possible values include: 'b', 'q', 't', 'f'.
+ *
+ * @return the services value
+ */
+ public Services services() {
+ return this.services;
+ }
+
+ /**
+ * Set the signed services accessible with the account SAS. Possible values include: Blob (b), Queue (q), Table (t), File (f). Possible values include: 'b', 'q', 't', 'f'.
+ *
+ * @param services the services value to set
+ * @return the AccountSasParameters object itself.
+ */
+ public AccountSasParameters withServices(Services services) {
+ this.services = services;
+ return this;
+ }
+
+ /**
+ * Get the signed resource types that are accessible with the account SAS. Service (s): Access to service-level APIs; Container (c): Access to container-level APIs; Object (o): Access to object-level APIs for blobs, queue messages, table entities, and files. Possible values include: 's', 'c', 'o'.
+ *
+ * @return the resourceTypes value
+ */
+ public SignedResourceTypes resourceTypes() {
+ return this.resourceTypes;
+ }
+
+ /**
+ * Set the signed resource types that are accessible with the account SAS. Service (s): Access to service-level APIs; Container (c): Access to container-level APIs; Object (o): Access to object-level APIs for blobs, queue messages, table entities, and files. Possible values include: 's', 'c', 'o'.
+ *
+ * @param resourceTypes the resourceTypes value to set
+ * @return the AccountSasParameters object itself.
+ */
+ public AccountSasParameters withResourceTypes(SignedResourceTypes resourceTypes) {
+ this.resourceTypes = resourceTypes;
+ return this;
+ }
+
+ /**
+ * Get the signed permissions for the account SAS. Possible values include: Read (r), Write (w), Delete (d), List (l), Add (a), Create (c), Update (u) and Process (p). Possible values include: 'r', 'd', 'w', 'l', 'a', 'c', 'u', 'p'.
+ *
+ * @return the permissions value
+ */
+ public Permissions permissions() {
+ return this.permissions;
+ }
+
+ /**
+ * Set the signed permissions for the account SAS. Possible values include: Read (r), Write (w), Delete (d), List (l), Add (a), Create (c), Update (u) and Process (p). Possible values include: 'r', 'd', 'w', 'l', 'a', 'c', 'u', 'p'.
+ *
+ * @param permissions the permissions value to set
+ * @return the AccountSasParameters object itself.
+ */
+ public AccountSasParameters withPermissions(Permissions permissions) {
+ this.permissions = permissions;
+ return this;
+ }
+
+ /**
+ * Get an IP address or a range of IP addresses from which to accept requests.
+ *
+ * @return the iPAddressOrRange value
+ */
+ public String iPAddressOrRange() {
+ return this.iPAddressOrRange;
+ }
+
+ /**
+ * Set an IP address or a range of IP addresses from which to accept requests.
+ *
+ * @param iPAddressOrRange the iPAddressOrRange value to set
+ * @return the AccountSasParameters object itself.
+ */
+ public AccountSasParameters withIPAddressOrRange(String iPAddressOrRange) {
+ this.iPAddressOrRange = iPAddressOrRange;
+ return this;
+ }
+
+ /**
+ * Get the protocol permitted for a request made with the account SAS. Possible values include: 'https,http', 'https'.
+ *
+ * @return the protocols value
+ */
+ public HttpProtocol protocols() {
+ return this.protocols;
+ }
+
+ /**
+ * Set the protocol permitted for a request made with the account SAS. Possible values include: 'https,http', 'https'.
+ *
+ * @param protocols the protocols value to set
+ * @return the AccountSasParameters object itself.
+ */
+ public AccountSasParameters withProtocols(HttpProtocol protocols) {
+ this.protocols = protocols;
+ return this;
+ }
+
+ /**
+ * Get the time at which the SAS becomes valid.
+ *
+ * @return the sharedAccessStartTime value
+ */
+ public DateTime sharedAccessStartTime() {
+ return this.sharedAccessStartTime;
+ }
+
+ /**
+ * Set the time at which the SAS becomes valid.
+ *
+ * @param sharedAccessStartTime the sharedAccessStartTime value to set
+ * @return the AccountSasParameters object itself.
+ */
+ public AccountSasParameters withSharedAccessStartTime(DateTime sharedAccessStartTime) {
+ this.sharedAccessStartTime = sharedAccessStartTime;
+ return this;
+ }
+
+ /**
+ * Get the time at which the shared access signature becomes invalid.
+ *
+ * @return the sharedAccessExpiryTime value
+ */
+ public DateTime sharedAccessExpiryTime() {
+ return this.sharedAccessExpiryTime;
+ }
+
+ /**
+ * Set the time at which the shared access signature becomes invalid.
+ *
+ * @param sharedAccessExpiryTime the sharedAccessExpiryTime value to set
+ * @return the AccountSasParameters object itself.
+ */
+ public AccountSasParameters withSharedAccessExpiryTime(DateTime sharedAccessExpiryTime) {
+ this.sharedAccessExpiryTime = sharedAccessExpiryTime;
+ return this;
+ }
+
+ /**
+ * Get the key to sign the account SAS token with.
+ *
+ * @return the keyToSign value
+ */
+ public String keyToSign() {
+ return this.keyToSign;
+ }
+
+ /**
+ * Set the key to sign the account SAS token with.
+ *
+ * @param keyToSign the keyToSign value to set
+ * @return the AccountSasParameters object itself.
+ */
+ public AccountSasParameters withKeyToSign(String keyToSign) {
+ this.keyToSign = keyToSign;
+ return this;
+ }
+
+}
diff --git a/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/AccountStatus.java b/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/AccountStatus.java
new file mode 100644
index 000000000000..3572ded314a8
--- /dev/null
+++ b/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/AccountStatus.java
@@ -0,0 +1,53 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.storage.v2019_04_01;
+
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonValue;
+
+/**
+ * Defines values for AccountStatus.
+ */
+public enum AccountStatus {
+ /** Enum value available. */
+ AVAILABLE("available"),
+
+ /** Enum value unavailable. */
+ UNAVAILABLE("unavailable");
+
+ /** The actual serialized value for a AccountStatus instance. */
+ private String value;
+
+ AccountStatus(String value) {
+ this.value = value;
+ }
+
+ /**
+ * Parses a serialized value to a AccountStatus instance.
+ *
+ * @param value the serialized value to parse.
+ * @return the parsed AccountStatus object, or null if unable to parse.
+ */
+ @JsonCreator
+ public static AccountStatus fromString(String value) {
+ AccountStatus[] items = AccountStatus.values();
+ for (AccountStatus item : items) {
+ if (item.toString().equalsIgnoreCase(value)) {
+ return item;
+ }
+ }
+ return null;
+ }
+
+ @JsonValue
+ @Override
+ public String toString() {
+ return this.value;
+ }
+}
diff --git a/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/Action.java b/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/Action.java
new file mode 100644
index 000000000000..e1f90b5ce97c
--- /dev/null
+++ b/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/Action.java
@@ -0,0 +1,50 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.storage.v2019_04_01;
+
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonValue;
+
+/**
+ * Defines values for Action.
+ */
+public enum Action {
+ /** Enum value Allow. */
+ ALLOW("Allow");
+
+ /** The actual serialized value for a Action instance. */
+ private String value;
+
+ Action(String value) {
+ this.value = value;
+ }
+
+ /**
+ * Parses a serialized value to a Action instance.
+ *
+ * @param value the serialized value to parse.
+ * @return the parsed Action object, or null if unable to parse.
+ */
+ @JsonCreator
+ public static Action fromString(String value) {
+ Action[] items = Action.values();
+ for (Action item : items) {
+ if (item.toString().equalsIgnoreCase(value)) {
+ return item;
+ }
+ }
+ return null;
+ }
+
+ @JsonValue
+ @Override
+ public String toString() {
+ return this.value;
+ }
+}
diff --git a/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/AzureEntityResource.java b/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/AzureEntityResource.java
new file mode 100644
index 000000000000..37b859de4a79
--- /dev/null
+++ b/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/AzureEntityResource.java
@@ -0,0 +1,34 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.storage.v2019_04_01;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.microsoft.azure.ProxyResource;
+
+/**
+ * The resource model definition for a Azure Resource Manager resource with an
+ * etag.
+ */
+public class AzureEntityResource extends ProxyResource {
+ /**
+ * Resource Etag.
+ */
+ @JsonProperty(value = "etag", access = JsonProperty.Access.WRITE_ONLY)
+ private String etag;
+
+ /**
+ * Get resource Etag.
+ *
+ * @return the etag value
+ */
+ public String etag() {
+ return this.etag;
+ }
+
+}
diff --git a/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/BlobContainer.java b/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/BlobContainer.java
new file mode 100644
index 000000000000..ab159c61a94a
--- /dev/null
+++ b/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/BlobContainer.java
@@ -0,0 +1,192 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.storage.v2019_04_01;
+
+import com.microsoft.azure.arm.model.HasInner;
+import com.microsoft.azure.management.storage.v2019_04_01.implementation.BlobContainerInner;
+import com.microsoft.azure.arm.model.Indexable;
+import com.microsoft.azure.arm.model.Updatable;
+import com.microsoft.azure.arm.model.Appliable;
+import com.microsoft.azure.arm.model.Creatable;
+import com.microsoft.azure.arm.resources.models.HasManager;
+import com.microsoft.azure.management.storage.v2019_04_01.implementation.StorageManager;
+import java.util.Map;
+import org.joda.time.DateTime;
+
+/**
+ * Type representing BlobContainer.
+ */
+public interface BlobContainer extends HasInner, Indexable, Updatable, HasManager {
+ /**
+ * @return the etag value.
+ */
+ String etag();
+
+ /**
+ * @return the hasImmutabilityPolicy value.
+ */
+ Boolean hasImmutabilityPolicy();
+
+ /**
+ * @return the hasLegalHold value.
+ */
+ Boolean hasLegalHold();
+
+ /**
+ * @return the id value.
+ */
+ String id();
+
+ /**
+ * @return the immutabilityPolicy value.
+ */
+ ImmutabilityPolicyProperties immutabilityPolicy();
+
+ /**
+ * @return the lastModifiedTime value.
+ */
+ DateTime lastModifiedTime();
+
+ /**
+ * @return the leaseDuration value.
+ */
+ LeaseDuration leaseDuration();
+
+ /**
+ * @return the leaseState value.
+ */
+ LeaseState leaseState();
+
+ /**
+ * @return the leaseStatus value.
+ */
+ LeaseStatus leaseStatus();
+
+ /**
+ * @return the legalHold value.
+ */
+ LegalHoldProperties legalHold();
+
+ /**
+ * @return the metadata value.
+ */
+ Map metadata();
+
+ /**
+ * @return the name value.
+ */
+ String name();
+
+ /**
+ * @return the publicAccess value.
+ */
+ PublicAccess publicAccess();
+
+ /**
+ * @return the type value.
+ */
+ String type();
+
+ /**
+ * The entirety of the BlobContainer definition.
+ */
+ interface Definition extends DefinitionStages.Blank, DefinitionStages.WithBlobService, DefinitionStages.WithPublicAccess, DefinitionStages.WithMetadata, DefinitionStages.WithCreate {
+ }
+
+ /**
+ * Grouping of BlobContainer definition stages.
+ */
+ interface DefinitionStages {
+ /**
+ * The first stage of a BlobContainer definition.
+ */
+ interface Blank extends WithBlobService {
+ }
+
+ /**
+ * The stage of the blobcontainer definition allowing to specify BlobService.
+ */
+ interface WithBlobService {
+ /**
+ * Specifies resourceGroupName, accountName.
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case insensitive
+ * @param accountName The name of the storage account within the specified resource group. Storage account names must be between 3 and 24 characters in length and use numbers and lower-case letters only
+ * @return the next definition stage
+ */
+ WithPublicAccess withExistingBlobService(String resourceGroupName, String accountName);
+ }
+
+ /**
+ * The stage of the blobcontainer definition allowing to specify PublicAccess.
+ */
+ interface WithPublicAccess {
+ /**
+ * Specifies publicAccess.
+ * @param publicAccess Specifies whether data in the container may be accessed publicly and the level of access. Possible values include: 'Container', 'Blob', 'None'
+ * @return the next definition stage
+ */
+ WithMetadata withPublicAccess(PublicAccess publicAccess);
+ }
+
+ /**
+ * The stage of the blobcontainer definition allowing to specify Metadata.
+ */
+ interface WithMetadata {
+ /**
+ * Specifies metadata.
+ * @param metadata A name-value pair to associate with the container as metadata
+ * @return the next definition stage
+ */
+ WithCreate withMetadata(Map metadata);
+ }
+
+ /**
+ * The stage of the definition which contains all the minimum required inputs for
+ * the resource to be created (via {@link WithCreate#create()}), but also allows
+ * for any other optional settings to be specified.
+ */
+ interface WithCreate extends Creatable {
+ }
+ }
+ /**
+ * The template for a BlobContainer update operation, containing all the settings that can be modified.
+ */
+ interface Update extends Appliable, UpdateStages.WithPublicAccess, UpdateStages.WithMetadata {
+ }
+
+ /**
+ * Grouping of BlobContainer update stages.
+ */
+ interface UpdateStages {
+ /**
+ * The stage of the blobcontainer update allowing to specify PublicAccess.
+ */
+ interface WithPublicAccess {
+ /**
+ * Specifies publicAccess.
+ * @param publicAccess Specifies whether data in the container may be accessed publicly and the level of access. Possible values include: 'Container', 'Blob', 'None'
+ * @return the next update stage
+ */
+ Update withPublicAccess(PublicAccess publicAccess);
+ }
+
+ /**
+ * The stage of the blobcontainer update allowing to specify Metadata.
+ */
+ interface WithMetadata {
+ /**
+ * Specifies metadata.
+ * @param metadata A name-value pair to associate with the container as metadata
+ * @return the next update stage
+ */
+ Update withMetadata(Map metadata);
+ }
+
+ }
+}
diff --git a/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/BlobContainers.java b/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/BlobContainers.java
new file mode 100644
index 000000000000..f49ba49464ba
--- /dev/null
+++ b/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/BlobContainers.java
@@ -0,0 +1,148 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.storage.v2019_04_01;
+
+import rx.Completable;
+import rx.Observable;
+import java.util.List;
+
+/**
+ * Type representing BlobContainers.
+ */
+public interface BlobContainers {
+ /**
+ * Begins definition for a new Container resource.
+ * @param name resource name.
+ * @return the first stage of the new Container definition.
+ */
+ BlobContainer.DefinitionStages.Blank defineContainer(String name);
+
+ /**
+ * Begins definition for a new ImmutabilityPolicy resource.
+ * @param name resource name.
+ * @return the first stage of the new ImmutabilityPolicy definition.
+ */
+ ImmutabilityPolicy.DefinitionStages.Blank defineImmutabilityPolicy(String name);
+
+ /**
+ * 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
+ * @return the observable for the request
+ */
+ Observable listAsync(String resourceGroupName, String accountName);
+
+ /**
+ * 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
+ * @return the observable for the request
+ */
+ Observable getAsync(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.
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @return the observable for the request
+ */
+ Completable deleteAsync(String resourceGroupName, String accountName, String containerName);
+
+ /**
+ * Sets legal hold tags. Setting the same tag results in an idempotent operation. SetLegalHold follows an append pattern and does not clear out the existing tags that are not specified in the request.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param containerName The name of the blob container within the specified storage account. Blob container names must be between 3 and 63 characters in length and use numbers, lower-case letters and dash (-) only. Every dash (-) character must be immediately preceded and followed by a letter or number.
+ * @param tags Each tag should be 3 to 23 alphanumeric characters and is normalized to lower case at SRP.
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @return the observable for the request
+ */
+ Observable setLegalHoldAsync(String resourceGroupName, String accountName, String containerName, List tags);
+
+ /**
+ * 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 tags Each tag should be 3 to 23 alphanumeric characters and is normalized to lower case at SRP.
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @return the observable for the request
+ */
+ Observable clearLegalHoldAsync(String resourceGroupName, String accountName, String containerName, List tags);
+
+ /**
+ * 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
+ * @return the observable for the request
+ */
+ Observable leaseAsync(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.
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @return the observable for the request
+ */
+ Observable getImmutabilityPolicyAsync(String resourceGroupName, String accountName, String containerName);
+
+ /**
+ * Aborts an unlocked immutability policy. The response of delete has immutabilityPeriodSinceCreationInDays set to 0. ETag in If-Match is required for this operation. Deleting a locked immutability policy is not allowed, only way is to delete the container after deleting all blobs inside 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 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
+ * @return the observable for the request
+ */
+ Completable deleteImmutabilityPolicyAsync(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.
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @return the observable for the request
+ */
+ Observable lockImmutabilityPolicyAsync(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 immutabilityPeriodSinceCreationInDays The immutability period for the blobs in the container since the policy creation, in days.
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @return the observable for the request
+ */
+ Observable extendImmutabilityPolicyAsync(String resourceGroupName, String accountName, String containerName, String ifMatch, int immutabilityPeriodSinceCreationInDays);
+
+}
diff --git a/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/BlobContainersCreateOrUpdateImmutabilityPolicyHeaders.java b/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/BlobContainersCreateOrUpdateImmutabilityPolicyHeaders.java
new file mode 100644
index 000000000000..33f340cbe971
--- /dev/null
+++ b/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/BlobContainersCreateOrUpdateImmutabilityPolicyHeaders.java
@@ -0,0 +1,46 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.storage.v2019_04_01;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/**
+ * Defines headers for CreateOrUpdateImmutabilityPolicy operation.
+ */
+public class BlobContainersCreateOrUpdateImmutabilityPolicyHeaders {
+ /**
+ * The ETag HTTP response header. This is an opaque string. You can use it
+ * to detect whether the resource has changed between requests. In
+ * particular, you can pass the ETag to one of the If-Match or
+ * If-None-Match headers.
+ */
+ @JsonProperty(value = "ETag")
+ private String eTag;
+
+ /**
+ * Get the ETag HTTP response header. This is an opaque string. You can use it to detect whether the resource has changed between requests. In particular, you can pass the ETag to one of the If-Match or If-None-Match headers.
+ *
+ * @return the eTag value
+ */
+ public String eTag() {
+ return this.eTag;
+ }
+
+ /**
+ * Set the ETag HTTP response header. This is an opaque string. You can use it to detect whether the resource has changed between requests. In particular, you can pass the ETag to one of the If-Match or If-None-Match headers.
+ *
+ * @param eTag the eTag value to set
+ * @return the BlobContainersCreateOrUpdateImmutabilityPolicyHeaders object itself.
+ */
+ public BlobContainersCreateOrUpdateImmutabilityPolicyHeaders withETag(String eTag) {
+ this.eTag = eTag;
+ return this;
+ }
+
+}
diff --git a/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/BlobContainersDeleteImmutabilityPolicyHeaders.java b/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/BlobContainersDeleteImmutabilityPolicyHeaders.java
new file mode 100644
index 000000000000..e27f6f7b835f
--- /dev/null
+++ b/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/BlobContainersDeleteImmutabilityPolicyHeaders.java
@@ -0,0 +1,46 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.storage.v2019_04_01;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/**
+ * Defines headers for DeleteImmutabilityPolicy operation.
+ */
+public class BlobContainersDeleteImmutabilityPolicyHeaders {
+ /**
+ * The ETag HTTP response header. This is an opaque string. You can use it
+ * to detect whether the resource has changed between requests. In
+ * particular, you can pass the ETag to one of the If-Match or
+ * If-None-Match headers.
+ */
+ @JsonProperty(value = "ETag")
+ private String eTag;
+
+ /**
+ * Get the ETag HTTP response header. This is an opaque string. You can use it to detect whether the resource has changed between requests. In particular, you can pass the ETag to one of the If-Match or If-None-Match headers.
+ *
+ * @return the eTag value
+ */
+ public String eTag() {
+ return this.eTag;
+ }
+
+ /**
+ * Set the ETag HTTP response header. This is an opaque string. You can use it to detect whether the resource has changed between requests. In particular, you can pass the ETag to one of the If-Match or If-None-Match headers.
+ *
+ * @param eTag the eTag value to set
+ * @return the BlobContainersDeleteImmutabilityPolicyHeaders object itself.
+ */
+ public BlobContainersDeleteImmutabilityPolicyHeaders withETag(String eTag) {
+ this.eTag = eTag;
+ return this;
+ }
+
+}
diff --git a/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/BlobContainersExtendImmutabilityPolicyHeaders.java b/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/BlobContainersExtendImmutabilityPolicyHeaders.java
new file mode 100644
index 000000000000..ab5c7cb751bd
--- /dev/null
+++ b/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/BlobContainersExtendImmutabilityPolicyHeaders.java
@@ -0,0 +1,46 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.storage.v2019_04_01;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/**
+ * Defines headers for ExtendImmutabilityPolicy operation.
+ */
+public class BlobContainersExtendImmutabilityPolicyHeaders {
+ /**
+ * The ETag HTTP response header. This is an opaque string. You can use it
+ * to detect whether the resource has changed between requests. In
+ * particular, you can pass the ETag to one of the If-Match or
+ * If-None-Match headers.
+ */
+ @JsonProperty(value = "ETag")
+ private String eTag;
+
+ /**
+ * Get the ETag HTTP response header. This is an opaque string. You can use it to detect whether the resource has changed between requests. In particular, you can pass the ETag to one of the If-Match or If-None-Match headers.
+ *
+ * @return the eTag value
+ */
+ public String eTag() {
+ return this.eTag;
+ }
+
+ /**
+ * Set the ETag HTTP response header. This is an opaque string. You can use it to detect whether the resource has changed between requests. In particular, you can pass the ETag to one of the If-Match or If-None-Match headers.
+ *
+ * @param eTag the eTag value to set
+ * @return the BlobContainersExtendImmutabilityPolicyHeaders object itself.
+ */
+ public BlobContainersExtendImmutabilityPolicyHeaders withETag(String eTag) {
+ this.eTag = eTag;
+ return this;
+ }
+
+}
diff --git a/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/BlobContainersGetImmutabilityPolicyHeaders.java b/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/BlobContainersGetImmutabilityPolicyHeaders.java
new file mode 100644
index 000000000000..7fe8867ca9b4
--- /dev/null
+++ b/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/BlobContainersGetImmutabilityPolicyHeaders.java
@@ -0,0 +1,46 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.storage.v2019_04_01;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/**
+ * Defines headers for GetImmutabilityPolicy operation.
+ */
+public class BlobContainersGetImmutabilityPolicyHeaders {
+ /**
+ * The ETag HTTP response header. This is an opaque string. You can use it
+ * to detect whether the resource has changed between requests. In
+ * particular, you can pass the ETag to one of the If-Match or
+ * If-None-Match headers.
+ */
+ @JsonProperty(value = "ETag")
+ private String eTag;
+
+ /**
+ * Get the ETag HTTP response header. This is an opaque string. You can use it to detect whether the resource has changed between requests. In particular, you can pass the ETag to one of the If-Match or If-None-Match headers.
+ *
+ * @return the eTag value
+ */
+ public String eTag() {
+ return this.eTag;
+ }
+
+ /**
+ * Set the ETag HTTP response header. This is an opaque string. You can use it to detect whether the resource has changed between requests. In particular, you can pass the ETag to one of the If-Match or If-None-Match headers.
+ *
+ * @param eTag the eTag value to set
+ * @return the BlobContainersGetImmutabilityPolicyHeaders object itself.
+ */
+ public BlobContainersGetImmutabilityPolicyHeaders withETag(String eTag) {
+ this.eTag = eTag;
+ return this;
+ }
+
+}
diff --git a/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/BlobContainersLockImmutabilityPolicyHeaders.java b/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/BlobContainersLockImmutabilityPolicyHeaders.java
new file mode 100644
index 000000000000..bf101ab06427
--- /dev/null
+++ b/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/BlobContainersLockImmutabilityPolicyHeaders.java
@@ -0,0 +1,46 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.storage.v2019_04_01;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/**
+ * Defines headers for LockImmutabilityPolicy operation.
+ */
+public class BlobContainersLockImmutabilityPolicyHeaders {
+ /**
+ * The ETag HTTP response header. This is an opaque string. You can use it
+ * to detect whether the resource has changed between requests. In
+ * particular, you can pass the ETag to one of the If-Match or
+ * If-None-Match headers.
+ */
+ @JsonProperty(value = "ETag")
+ private String eTag;
+
+ /**
+ * Get the ETag HTTP response header. This is an opaque string. You can use it to detect whether the resource has changed between requests. In particular, you can pass the ETag to one of the If-Match or If-None-Match headers.
+ *
+ * @return the eTag value
+ */
+ public String eTag() {
+ return this.eTag;
+ }
+
+ /**
+ * Set the ETag HTTP response header. This is an opaque string. You can use it to detect whether the resource has changed between requests. In particular, you can pass the ETag to one of the If-Match or If-None-Match headers.
+ *
+ * @param eTag the eTag value to set
+ * @return the BlobContainersLockImmutabilityPolicyHeaders object itself.
+ */
+ public BlobContainersLockImmutabilityPolicyHeaders withETag(String eTag) {
+ this.eTag = eTag;
+ return this;
+ }
+
+}
diff --git a/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/BlobServiceProperties.java b/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/BlobServiceProperties.java
new file mode 100644
index 000000000000..fc6ae024781a
--- /dev/null
+++ b/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/BlobServiceProperties.java
@@ -0,0 +1,204 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.storage.v2019_04_01;
+
+import com.microsoft.azure.arm.model.HasInner;
+import com.microsoft.azure.management.storage.v2019_04_01.implementation.BlobServicePropertiesInner;
+import com.microsoft.azure.arm.model.Indexable;
+import com.microsoft.azure.arm.model.Refreshable;
+import com.microsoft.azure.arm.model.Updatable;
+import com.microsoft.azure.arm.model.Appliable;
+import com.microsoft.azure.arm.model.Creatable;
+import com.microsoft.azure.arm.resources.models.HasManager;
+import com.microsoft.azure.management.storage.v2019_04_01.implementation.StorageManager;
+
+/**
+ * Type representing BlobServiceProperties.
+ */
+public interface BlobServiceProperties extends HasInner, Indexable, Refreshable, Updatable, HasManager {
+ /**
+ * @return the automaticSnapshotPolicyEnabled value.
+ */
+ Boolean automaticSnapshotPolicyEnabled();
+
+ /**
+ * @return the cors value.
+ */
+ CorsRules cors();
+
+ /**
+ * @return the defaultServiceVersion value.
+ */
+ String defaultServiceVersion();
+
+ /**
+ * @return the deleteRetentionPolicy value.
+ */
+ DeleteRetentionPolicy deleteRetentionPolicy();
+
+ /**
+ * @return the id value.
+ */
+ String id();
+
+ /**
+ * @return the name value.
+ */
+ String name();
+
+ /**
+ * @return the type value.
+ */
+ String type();
+
+ /**
+ * The entirety of the BlobServiceProperties definition.
+ */
+ interface Definition extends DefinitionStages.Blank, DefinitionStages.WithStorageAccount, DefinitionStages.WithCreate {
+ }
+
+ /**
+ * Grouping of BlobServiceProperties definition stages.
+ */
+ interface DefinitionStages {
+ /**
+ * The first stage of a BlobServiceProperties definition.
+ */
+ interface Blank extends WithStorageAccount {
+ }
+
+ /**
+ * The stage of the blobserviceproperties definition allowing to specify StorageAccount.
+ */
+ interface WithStorageAccount {
+ /**
+ * Specifies resourceGroupName, accountName.
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case insensitive
+ * @param accountName The name of the storage account within the specified resource group. Storage account names must be between 3 and 24 characters in length and use numbers and lower-case letters only
+ * @return the next definition stage
+ */
+ WithCreate withExistingStorageAccount(String resourceGroupName, String accountName);
+ }
+
+ /**
+ * The stage of the blobserviceproperties definition allowing to specify AutomaticSnapshotPolicyEnabled.
+ */
+ interface WithAutomaticSnapshotPolicyEnabled {
+ /**
+ * Specifies automaticSnapshotPolicyEnabled.
+ * @param automaticSnapshotPolicyEnabled Automatic Snapshot is enabled if set to true
+ * @return the next definition stage
+ */
+ WithCreate withAutomaticSnapshotPolicyEnabled(Boolean automaticSnapshotPolicyEnabled);
+ }
+
+ /**
+ * The stage of the blobserviceproperties definition allowing to specify Cors.
+ */
+ interface WithCors {
+ /**
+ * Specifies cors.
+ * @param cors 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 next definition stage
+ */
+ WithCreate withCors(CorsRules cors);
+ }
+
+ /**
+ * The stage of the blobserviceproperties definition allowing to specify DefaultServiceVersion.
+ */
+ interface WithDefaultServiceVersion {
+ /**
+ * Specifies defaultServiceVersion.
+ * @param defaultServiceVersion 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 next definition stage
+ */
+ WithCreate withDefaultServiceVersion(String defaultServiceVersion);
+ }
+
+ /**
+ * The stage of the blobserviceproperties definition allowing to specify DeleteRetentionPolicy.
+ */
+ interface WithDeleteRetentionPolicy {
+ /**
+ * Specifies deleteRetentionPolicy.
+ * @param deleteRetentionPolicy The blob service properties for soft delete
+ * @return the next definition stage
+ */
+ WithCreate withDeleteRetentionPolicy(DeleteRetentionPolicy deleteRetentionPolicy);
+ }
+
+ /**
+ * The stage of the definition which contains all the minimum required inputs for
+ * the resource to be created (via {@link WithCreate#create()}), but also allows
+ * for any other optional settings to be specified.
+ */
+ interface WithCreate extends Creatable, DefinitionStages.WithAutomaticSnapshotPolicyEnabled, DefinitionStages.WithCors, DefinitionStages.WithDefaultServiceVersion, DefinitionStages.WithDeleteRetentionPolicy {
+ }
+ }
+ /**
+ * The template for a BlobServiceProperties update operation, containing all the settings that can be modified.
+ */
+ interface Update extends Appliable, UpdateStages.WithAutomaticSnapshotPolicyEnabled, UpdateStages.WithCors, UpdateStages.WithDefaultServiceVersion, UpdateStages.WithDeleteRetentionPolicy {
+ }
+
+ /**
+ * Grouping of BlobServiceProperties update stages.
+ */
+ interface UpdateStages {
+ /**
+ * The stage of the blobserviceproperties update allowing to specify AutomaticSnapshotPolicyEnabled.
+ */
+ interface WithAutomaticSnapshotPolicyEnabled {
+ /**
+ * Specifies automaticSnapshotPolicyEnabled.
+ * @param automaticSnapshotPolicyEnabled Automatic Snapshot is enabled if set to true
+ * @return the next update stage
+ */
+ Update withAutomaticSnapshotPolicyEnabled(Boolean automaticSnapshotPolicyEnabled);
+ }
+
+ /**
+ * The stage of the blobserviceproperties update allowing to specify Cors.
+ */
+ interface WithCors {
+ /**
+ * Specifies cors.
+ * @param cors 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 next update stage
+ */
+ Update withCors(CorsRules cors);
+ }
+
+ /**
+ * The stage of the blobserviceproperties update allowing to specify DefaultServiceVersion.
+ */
+ interface WithDefaultServiceVersion {
+ /**
+ * Specifies defaultServiceVersion.
+ * @param defaultServiceVersion 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 next update stage
+ */
+ Update withDefaultServiceVersion(String defaultServiceVersion);
+ }
+
+ /**
+ * The stage of the blobserviceproperties update allowing to specify DeleteRetentionPolicy.
+ */
+ interface WithDeleteRetentionPolicy {
+ /**
+ * Specifies deleteRetentionPolicy.
+ * @param deleteRetentionPolicy The blob service properties for soft delete
+ * @return the next update stage
+ */
+ Update withDeleteRetentionPolicy(DeleteRetentionPolicy deleteRetentionPolicy);
+ }
+
+ }
+}
diff --git a/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/BlobServices.java b/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/BlobServices.java
new file mode 100644
index 000000000000..5dab5537401e
--- /dev/null
+++ b/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/BlobServices.java
@@ -0,0 +1,30 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.storage.v2019_04_01;
+
+import com.microsoft.azure.arm.collection.SupportsCreating;
+import rx.Observable;
+import com.microsoft.azure.management.storage.v2019_04_01.implementation.BlobServicesInner;
+import com.microsoft.azure.arm.model.HasInner;
+
+/**
+ * Type representing BlobServices.
+ */
+public interface BlobServices extends SupportsCreating, HasInner {
+ /**
+ * 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
+ * @return the observable for the request
+ */
+ Observable getServicePropertiesAsync(String resourceGroupName, String accountName);
+
+}
diff --git a/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/Bypass.java b/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/Bypass.java
new file mode 100644
index 000000000000..549109aa7575
--- /dev/null
+++ b/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/Bypass.java
@@ -0,0 +1,47 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.storage.v2019_04_01;
+
+import java.util.Collection;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.microsoft.rest.ExpandableStringEnum;
+
+/**
+ * Defines values for Bypass.
+ */
+public final class Bypass extends ExpandableStringEnum {
+ /** Static value None for Bypass. */
+ public static final Bypass NONE = fromString("None");
+
+ /** Static value Logging for Bypass. */
+ public static final Bypass LOGGING = fromString("Logging");
+
+ /** Static value Metrics for Bypass. */
+ public static final Bypass METRICS = fromString("Metrics");
+
+ /** Static value AzureServices for Bypass. */
+ public static final Bypass AZURE_SERVICES = fromString("AzureServices");
+
+ /**
+ * Creates or finds a Bypass from its string representation.
+ * @param name a name to look for
+ * @return the corresponding Bypass
+ */
+ @JsonCreator
+ public static Bypass fromString(String name) {
+ return fromString(name, Bypass.class);
+ }
+
+ /**
+ * @return known Bypass values
+ */
+ public static Collection values() {
+ return values(Bypass.class);
+ }
+}
diff --git a/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/CheckNameAvailabilityResult.java b/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/CheckNameAvailabilityResult.java
new file mode 100644
index 000000000000..63f9418ab936
--- /dev/null
+++ b/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/CheckNameAvailabilityResult.java
@@ -0,0 +1,35 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.storage.v2019_04_01;
+
+import com.microsoft.azure.arm.model.HasInner;
+import com.microsoft.azure.arm.resources.models.HasManager;
+import com.microsoft.azure.management.storage.v2019_04_01.implementation.StorageManager;
+import com.microsoft.azure.management.storage.v2019_04_01.implementation.CheckNameAvailabilityResultInner;
+
+/**
+ * Type representing CheckNameAvailabilityResult.
+ */
+public interface CheckNameAvailabilityResult extends HasInner, HasManager {
+ /**
+ * @return the message value.
+ */
+ String message();
+
+ /**
+ * @return the nameAvailable value.
+ */
+ Boolean nameAvailable();
+
+ /**
+ * @return the reason value.
+ */
+ Reason reason();
+
+}
diff --git a/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/CorsRule.java b/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/CorsRule.java
new file mode 100644
index 000000000000..88cd2d331498
--- /dev/null
+++ b/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/CorsRule.java
@@ -0,0 +1,153 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.storage.v2019_04_01;
+
+import java.util.List;
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/**
+ * Specifies a CORS rule for the Blob service.
+ */
+public class CorsRule {
+ /**
+ * Required if CorsRule element is present. A list of origin domains that
+ * will be allowed via CORS, or "*" to allow all domains.
+ */
+ @JsonProperty(value = "allowedOrigins", required = true)
+ private List allowedOrigins;
+
+ /**
+ * Required if CorsRule element is present. A list of HTTP methods that are
+ * allowed to be executed by the origin.
+ */
+ @JsonProperty(value = "allowedMethods", required = true)
+ private List allowedMethods;
+
+ /**
+ * Required if CorsRule element is present. The number of seconds that the
+ * client/browser should cache a preflight response.
+ */
+ @JsonProperty(value = "maxAgeInSeconds", required = true)
+ private int maxAgeInSeconds;
+
+ /**
+ * Required if CorsRule element is present. A list of response headers to
+ * expose to CORS clients.
+ */
+ @JsonProperty(value = "exposedHeaders", required = true)
+ private List exposedHeaders;
+
+ /**
+ * Required if CorsRule element is present. A list of headers allowed to be
+ * part of the cross-origin request.
+ */
+ @JsonProperty(value = "allowedHeaders", required = true)
+ private List allowedHeaders;
+
+ /**
+ * Get required if CorsRule element is present. A list of origin domains that will be allowed via CORS, or "*" to allow all domains.
+ *
+ * @return the allowedOrigins value
+ */
+ public List allowedOrigins() {
+ return this.allowedOrigins;
+ }
+
+ /**
+ * Set required if CorsRule element is present. A list of origin domains that will be allowed via CORS, or "*" to allow all domains.
+ *
+ * @param allowedOrigins the allowedOrigins value to set
+ * @return the CorsRule object itself.
+ */
+ public CorsRule withAllowedOrigins(List allowedOrigins) {
+ this.allowedOrigins = allowedOrigins;
+ return this;
+ }
+
+ /**
+ * Get required if CorsRule element is present. A list of HTTP methods that are allowed to be executed by the origin.
+ *
+ * @return the allowedMethods value
+ */
+ public List allowedMethods() {
+ return this.allowedMethods;
+ }
+
+ /**
+ * Set required if CorsRule element is present. A list of HTTP methods that are allowed to be executed by the origin.
+ *
+ * @param allowedMethods the allowedMethods value to set
+ * @return the CorsRule object itself.
+ */
+ public CorsRule withAllowedMethods(List allowedMethods) {
+ this.allowedMethods = allowedMethods;
+ return this;
+ }
+
+ /**
+ * Get required if CorsRule element is present. The number of seconds that the client/browser should cache a preflight response.
+ *
+ * @return the maxAgeInSeconds value
+ */
+ public int maxAgeInSeconds() {
+ return this.maxAgeInSeconds;
+ }
+
+ /**
+ * Set required if CorsRule element is present. The number of seconds that the client/browser should cache a preflight response.
+ *
+ * @param maxAgeInSeconds the maxAgeInSeconds value to set
+ * @return the CorsRule object itself.
+ */
+ public CorsRule withMaxAgeInSeconds(int maxAgeInSeconds) {
+ this.maxAgeInSeconds = maxAgeInSeconds;
+ return this;
+ }
+
+ /**
+ * Get required if CorsRule element is present. A list of response headers to expose to CORS clients.
+ *
+ * @return the exposedHeaders value
+ */
+ public List exposedHeaders() {
+ return this.exposedHeaders;
+ }
+
+ /**
+ * Set required if CorsRule element is present. A list of response headers to expose to CORS clients.
+ *
+ * @param exposedHeaders the exposedHeaders value to set
+ * @return the CorsRule object itself.
+ */
+ public CorsRule withExposedHeaders(List exposedHeaders) {
+ this.exposedHeaders = exposedHeaders;
+ return this;
+ }
+
+ /**
+ * Get required if CorsRule element is present. A list of headers allowed to be part of the cross-origin request.
+ *
+ * @return the allowedHeaders value
+ */
+ public List allowedHeaders() {
+ return this.allowedHeaders;
+ }
+
+ /**
+ * Set required if CorsRule element is present. A list of headers allowed to be part of the cross-origin request.
+ *
+ * @param allowedHeaders the allowedHeaders value to set
+ * @return the CorsRule object itself.
+ */
+ public CorsRule withAllowedHeaders(List allowedHeaders) {
+ this.allowedHeaders = allowedHeaders;
+ return this;
+ }
+
+}
diff --git a/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/CorsRules.java b/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/CorsRules.java
new file mode 100644
index 000000000000..0ddaed2c8cee
--- /dev/null
+++ b/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/CorsRules.java
@@ -0,0 +1,46 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.storage.v2019_04_01;
+
+import java.util.List;
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/**
+ * Sets the CORS rules. You can include up to five CorsRule elements in the
+ * request.
+ */
+public class CorsRules {
+ /**
+ * The List of CORS rules. You can include up to five CorsRule elements in
+ * the request.
+ */
+ @JsonProperty(value = "corsRules")
+ private List corsRules;
+
+ /**
+ * Get the List of CORS rules. You can include up to five CorsRule elements in the request.
+ *
+ * @return the corsRules value
+ */
+ public List corsRules() {
+ return this.corsRules;
+ }
+
+ /**
+ * Set the List of CORS rules. You can include up to five CorsRule elements in the request.
+ *
+ * @param corsRules the corsRules value to set
+ * @return the CorsRules object itself.
+ */
+ public CorsRules withCorsRules(List corsRules) {
+ this.corsRules = corsRules;
+ return this;
+ }
+
+}
diff --git a/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/CustomDomain.java b/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/CustomDomain.java
new file mode 100644
index 000000000000..ee4ecf78159c
--- /dev/null
+++ b/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/CustomDomain.java
@@ -0,0 +1,72 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.storage.v2019_04_01;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/**
+ * The custom domain assigned to this storage account. This can be set via
+ * Update.
+ */
+public class CustomDomain {
+ /**
+ * Gets or sets the custom domain name assigned to the storage account.
+ * Name is the CNAME source.
+ */
+ @JsonProperty(value = "name", required = true)
+ private String name;
+
+ /**
+ * Indicates whether indirect CName validation is enabled. Default value is
+ * false. This should only be set on updates.
+ */
+ @JsonProperty(value = "useSubDomainName")
+ private Boolean useSubDomainName;
+
+ /**
+ * Get gets or sets the custom domain name assigned to the storage account. Name is the CNAME source.
+ *
+ * @return the name value
+ */
+ public String name() {
+ return this.name;
+ }
+
+ /**
+ * Set gets or sets the custom domain name assigned to the storage account. Name is the CNAME source.
+ *
+ * @param name the name value to set
+ * @return the CustomDomain object itself.
+ */
+ public CustomDomain withName(String name) {
+ this.name = name;
+ return this;
+ }
+
+ /**
+ * Get indicates whether indirect CName validation is enabled. Default value is false. This should only be set on updates.
+ *
+ * @return the useSubDomainName value
+ */
+ public Boolean useSubDomainName() {
+ return this.useSubDomainName;
+ }
+
+ /**
+ * Set indicates whether indirect CName validation is enabled. Default value is false. This should only be set on updates.
+ *
+ * @param useSubDomainName the useSubDomainName value to set
+ * @return the CustomDomain object itself.
+ */
+ public CustomDomain withUseSubDomainName(Boolean useSubDomainName) {
+ this.useSubDomainName = useSubDomainName;
+ return this;
+ }
+
+}
diff --git a/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/DateAfterCreation.java b/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/DateAfterCreation.java
new file mode 100644
index 000000000000..156d5037b59b
--- /dev/null
+++ b/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/DateAfterCreation.java
@@ -0,0 +1,43 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.storage.v2019_04_01;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/**
+ * Object to define the number of days after creation.
+ */
+public class DateAfterCreation {
+ /**
+ * Integer value indicating the age in days after creation.
+ */
+ @JsonProperty(value = "daysAfterCreationGreaterThan", required = true)
+ private int daysAfterCreationGreaterThan;
+
+ /**
+ * Get integer value indicating the age in days after creation.
+ *
+ * @return the daysAfterCreationGreaterThan value
+ */
+ public int daysAfterCreationGreaterThan() {
+ return this.daysAfterCreationGreaterThan;
+ }
+
+ /**
+ * Set integer value indicating the age in days after creation.
+ *
+ * @param daysAfterCreationGreaterThan the daysAfterCreationGreaterThan value to set
+ * @return the DateAfterCreation object itself.
+ */
+ public DateAfterCreation withDaysAfterCreationGreaterThan(int daysAfterCreationGreaterThan) {
+ this.daysAfterCreationGreaterThan = daysAfterCreationGreaterThan;
+ return this;
+ }
+
+}
diff --git a/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/DateAfterModification.java b/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/DateAfterModification.java
new file mode 100644
index 000000000000..31c15e504e82
--- /dev/null
+++ b/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/DateAfterModification.java
@@ -0,0 +1,43 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.storage.v2019_04_01;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/**
+ * Object to define the number of days after last modification.
+ */
+public class DateAfterModification {
+ /**
+ * Integer value indicating the age in days after last modification.
+ */
+ @JsonProperty(value = "daysAfterModificationGreaterThan", required = true)
+ private int daysAfterModificationGreaterThan;
+
+ /**
+ * Get integer value indicating the age in days after last modification.
+ *
+ * @return the daysAfterModificationGreaterThan value
+ */
+ public int daysAfterModificationGreaterThan() {
+ return this.daysAfterModificationGreaterThan;
+ }
+
+ /**
+ * Set integer value indicating the age in days after last modification.
+ *
+ * @param daysAfterModificationGreaterThan the daysAfterModificationGreaterThan value to set
+ * @return the DateAfterModification object itself.
+ */
+ public DateAfterModification withDaysAfterModificationGreaterThan(int daysAfterModificationGreaterThan) {
+ this.daysAfterModificationGreaterThan = daysAfterModificationGreaterThan;
+ return this;
+ }
+
+}
diff --git a/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/DefaultAction.java b/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/DefaultAction.java
new file mode 100644
index 000000000000..5f52d855d198
--- /dev/null
+++ b/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/DefaultAction.java
@@ -0,0 +1,53 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.storage.v2019_04_01;
+
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonValue;
+
+/**
+ * Defines values for DefaultAction.
+ */
+public enum DefaultAction {
+ /** Enum value Allow. */
+ ALLOW("Allow"),
+
+ /** Enum value Deny. */
+ DENY("Deny");
+
+ /** The actual serialized value for a DefaultAction instance. */
+ private String value;
+
+ DefaultAction(String value) {
+ this.value = value;
+ }
+
+ /**
+ * Parses a serialized value to a DefaultAction instance.
+ *
+ * @param value the serialized value to parse.
+ * @return the parsed DefaultAction object, or null if unable to parse.
+ */
+ @JsonCreator
+ public static DefaultAction fromString(String value) {
+ DefaultAction[] items = DefaultAction.values();
+ for (DefaultAction item : items) {
+ if (item.toString().equalsIgnoreCase(value)) {
+ return item;
+ }
+ }
+ return null;
+ }
+
+ @JsonValue
+ @Override
+ public String toString() {
+ return this.value;
+ }
+}
diff --git a/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/DeleteRetentionPolicy.java b/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/DeleteRetentionPolicy.java
new file mode 100644
index 000000000000..9c42d9b71c0d
--- /dev/null
+++ b/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/DeleteRetentionPolicy.java
@@ -0,0 +1,70 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.storage.v2019_04_01;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/**
+ * The blob service properties for soft delete.
+ */
+public class DeleteRetentionPolicy {
+ /**
+ * Indicates whether DeleteRetentionPolicy is enabled for the Blob service.
+ */
+ @JsonProperty(value = "enabled")
+ private Boolean enabled;
+
+ /**
+ * Indicates the number of days that the deleted blob should be retained.
+ * The minimum specified value can be 1 and the maximum value can be 365.
+ */
+ @JsonProperty(value = "days")
+ private Integer days;
+
+ /**
+ * Get indicates whether DeleteRetentionPolicy is enabled for the Blob service.
+ *
+ * @return the enabled value
+ */
+ public Boolean enabled() {
+ return this.enabled;
+ }
+
+ /**
+ * Set indicates whether DeleteRetentionPolicy is enabled for the Blob service.
+ *
+ * @param enabled the enabled value to set
+ * @return the DeleteRetentionPolicy object itself.
+ */
+ public DeleteRetentionPolicy withEnabled(Boolean enabled) {
+ this.enabled = enabled;
+ return this;
+ }
+
+ /**
+ * Get indicates the number of days that the deleted blob should be retained. The minimum specified value can be 1 and the maximum value can be 365.
+ *
+ * @return the days value
+ */
+ public Integer days() {
+ return this.days;
+ }
+
+ /**
+ * Set indicates the number of days that the deleted blob should be retained. The minimum specified value can be 1 and the maximum value can be 365.
+ *
+ * @param days the days value to set
+ * @return the DeleteRetentionPolicy object itself.
+ */
+ public DeleteRetentionPolicy withDays(Integer days) {
+ this.days = days;
+ return this;
+ }
+
+}
diff --git a/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/Dimension.java b/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/Dimension.java
new file mode 100644
index 000000000000..914aced5d33e
--- /dev/null
+++ b/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/Dimension.java
@@ -0,0 +1,69 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.storage.v2019_04_01;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/**
+ * Dimension of blobs, possibly be blob type or access tier.
+ */
+public class Dimension {
+ /**
+ * Display name of dimension.
+ */
+ @JsonProperty(value = "name")
+ private String name;
+
+ /**
+ * Display name of dimension.
+ */
+ @JsonProperty(value = "displayName")
+ private String displayName;
+
+ /**
+ * Get display name of dimension.
+ *
+ * @return the name value
+ */
+ public String name() {
+ return this.name;
+ }
+
+ /**
+ * Set display name of dimension.
+ *
+ * @param name the name value to set
+ * @return the Dimension object itself.
+ */
+ public Dimension withName(String name) {
+ this.name = name;
+ return this;
+ }
+
+ /**
+ * Get display name of dimension.
+ *
+ * @return the displayName value
+ */
+ public String displayName() {
+ return this.displayName;
+ }
+
+ /**
+ * Set display name of dimension.
+ *
+ * @param displayName the displayName value to set
+ * @return the Dimension object itself.
+ */
+ public Dimension withDisplayName(String displayName) {
+ this.displayName = displayName;
+ return this;
+ }
+
+}
diff --git a/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/Encryption.java b/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/Encryption.java
new file mode 100644
index 000000000000..fa71e2ee00ad
--- /dev/null
+++ b/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/Encryption.java
@@ -0,0 +1,97 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.storage.v2019_04_01;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/**
+ * The encryption settings on the storage account.
+ */
+public class Encryption {
+ /**
+ * List of services which support encryption.
+ */
+ @JsonProperty(value = "services")
+ private EncryptionServices services;
+
+ /**
+ * The encryption keySource (provider). Possible values (case-insensitive):
+ * Microsoft.Storage, Microsoft.Keyvault. Possible values include:
+ * 'Microsoft.Storage', 'Microsoft.Keyvault'.
+ */
+ @JsonProperty(value = "keySource", required = true)
+ private KeySource keySource;
+
+ /**
+ * Properties provided by key vault.
+ */
+ @JsonProperty(value = "keyvaultproperties")
+ private KeyVaultProperties keyVaultProperties;
+
+ /**
+ * Get list of services which support encryption.
+ *
+ * @return the services value
+ */
+ public EncryptionServices services() {
+ return this.services;
+ }
+
+ /**
+ * Set list of services which support encryption.
+ *
+ * @param services the services value to set
+ * @return the Encryption object itself.
+ */
+ public Encryption withServices(EncryptionServices services) {
+ this.services = services;
+ return this;
+ }
+
+ /**
+ * Get the encryption keySource (provider). Possible values (case-insensitive): Microsoft.Storage, Microsoft.Keyvault. Possible values include: 'Microsoft.Storage', 'Microsoft.Keyvault'.
+ *
+ * @return the keySource value
+ */
+ public KeySource keySource() {
+ return this.keySource;
+ }
+
+ /**
+ * Set the encryption keySource (provider). Possible values (case-insensitive): Microsoft.Storage, Microsoft.Keyvault. Possible values include: 'Microsoft.Storage', 'Microsoft.Keyvault'.
+ *
+ * @param keySource the keySource value to set
+ * @return the Encryption object itself.
+ */
+ public Encryption withKeySource(KeySource keySource) {
+ this.keySource = keySource;
+ return this;
+ }
+
+ /**
+ * Get properties provided by key vault.
+ *
+ * @return the keyVaultProperties value
+ */
+ public KeyVaultProperties keyVaultProperties() {
+ return this.keyVaultProperties;
+ }
+
+ /**
+ * Set properties provided by key vault.
+ *
+ * @param keyVaultProperties the keyVaultProperties value to set
+ * @return the Encryption object itself.
+ */
+ public Encryption withKeyVaultProperties(KeyVaultProperties keyVaultProperties) {
+ this.keyVaultProperties = keyVaultProperties;
+ return this;
+ }
+
+}
diff --git a/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/EncryptionService.java b/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/EncryptionService.java
new file mode 100644
index 000000000000..ce02274b952e
--- /dev/null
+++ b/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/EncryptionService.java
@@ -0,0 +1,63 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.storage.v2019_04_01;
+
+import org.joda.time.DateTime;
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/**
+ * A service that allows server-side encryption to be used.
+ */
+public class EncryptionService {
+ /**
+ * A boolean indicating whether or not the service encrypts the data as it
+ * is stored.
+ */
+ @JsonProperty(value = "enabled")
+ private Boolean enabled;
+
+ /**
+ * Gets a rough estimate of the date/time when the encryption was last
+ * enabled by the user. Only returned when encryption is enabled. There
+ * might be some unencrypted blobs which were written after this time, as
+ * it is just a rough estimate.
+ */
+ @JsonProperty(value = "lastEnabledTime", access = JsonProperty.Access.WRITE_ONLY)
+ private DateTime lastEnabledTime;
+
+ /**
+ * Get a boolean indicating whether or not the service encrypts the data as it is stored.
+ *
+ * @return the enabled value
+ */
+ public Boolean enabled() {
+ return this.enabled;
+ }
+
+ /**
+ * Set a boolean indicating whether or not the service encrypts the data as it is stored.
+ *
+ * @param enabled the enabled value to set
+ * @return the EncryptionService object itself.
+ */
+ public EncryptionService withEnabled(Boolean enabled) {
+ this.enabled = enabled;
+ return this;
+ }
+
+ /**
+ * Get gets a rough estimate of the date/time when the encryption was last enabled by the user. Only returned when encryption is enabled. There might be some unencrypted blobs which were written after this time, as it is just a rough estimate.
+ *
+ * @return the lastEnabledTime value
+ */
+ public DateTime lastEnabledTime() {
+ return this.lastEnabledTime;
+ }
+
+}
diff --git a/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/EncryptionServices.java b/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/EncryptionServices.java
new file mode 100644
index 000000000000..0e3e0c49218b
--- /dev/null
+++ b/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/EncryptionServices.java
@@ -0,0 +1,99 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.storage.v2019_04_01;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/**
+ * A list of services that support encryption.
+ */
+public class EncryptionServices {
+ /**
+ * The encryption function of the blob storage service.
+ */
+ @JsonProperty(value = "blob")
+ private EncryptionService blob;
+
+ /**
+ * The encryption function of the file storage service.
+ */
+ @JsonProperty(value = "file")
+ private EncryptionService file;
+
+ /**
+ * The encryption function of the table storage service.
+ */
+ @JsonProperty(value = "table", access = JsonProperty.Access.WRITE_ONLY)
+ private EncryptionService table;
+
+ /**
+ * The encryption function of the queue storage service.
+ */
+ @JsonProperty(value = "queue", access = JsonProperty.Access.WRITE_ONLY)
+ private EncryptionService queue;
+
+ /**
+ * Get the encryption function of the blob storage service.
+ *
+ * @return the blob value
+ */
+ public EncryptionService blob() {
+ return this.blob;
+ }
+
+ /**
+ * Set the encryption function of the blob storage service.
+ *
+ * @param blob the blob value to set
+ * @return the EncryptionServices object itself.
+ */
+ public EncryptionServices withBlob(EncryptionService blob) {
+ this.blob = blob;
+ return this;
+ }
+
+ /**
+ * Get the encryption function of the file storage service.
+ *
+ * @return the file value
+ */
+ public EncryptionService file() {
+ return this.file;
+ }
+
+ /**
+ * Set the encryption function of the file storage service.
+ *
+ * @param file the file value to set
+ * @return the EncryptionServices object itself.
+ */
+ public EncryptionServices withFile(EncryptionService file) {
+ this.file = file;
+ return this;
+ }
+
+ /**
+ * Get the encryption function of the table storage service.
+ *
+ * @return the table value
+ */
+ public EncryptionService table() {
+ return this.table;
+ }
+
+ /**
+ * Get the encryption function of the queue storage service.
+ *
+ * @return the queue value
+ */
+ public EncryptionService queue() {
+ return this.queue;
+ }
+
+}
diff --git a/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/Endpoints.java b/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/Endpoints.java
new file mode 100644
index 000000000000..2421a6344197
--- /dev/null
+++ b/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/Endpoints.java
@@ -0,0 +1,108 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.storage.v2019_04_01;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/**
+ * The URIs that are used to perform a retrieval of a public blob, queue,
+ * table, web or dfs object.
+ */
+public class Endpoints {
+ /**
+ * Gets the blob endpoint.
+ */
+ @JsonProperty(value = "blob", access = JsonProperty.Access.WRITE_ONLY)
+ private String blob;
+
+ /**
+ * Gets the queue endpoint.
+ */
+ @JsonProperty(value = "queue", access = JsonProperty.Access.WRITE_ONLY)
+ private String queue;
+
+ /**
+ * Gets the table endpoint.
+ */
+ @JsonProperty(value = "table", access = JsonProperty.Access.WRITE_ONLY)
+ private String table;
+
+ /**
+ * Gets the file endpoint.
+ */
+ @JsonProperty(value = "file", access = JsonProperty.Access.WRITE_ONLY)
+ private String file;
+
+ /**
+ * Gets the web endpoint.
+ */
+ @JsonProperty(value = "web", access = JsonProperty.Access.WRITE_ONLY)
+ private String web;
+
+ /**
+ * Gets the dfs endpoint.
+ */
+ @JsonProperty(value = "dfs", access = JsonProperty.Access.WRITE_ONLY)
+ private String dfs;
+
+ /**
+ * Get gets the blob endpoint.
+ *
+ * @return the blob value
+ */
+ public String blob() {
+ return this.blob;
+ }
+
+ /**
+ * Get gets the queue endpoint.
+ *
+ * @return the queue value
+ */
+ public String queue() {
+ return this.queue;
+ }
+
+ /**
+ * Get gets the table endpoint.
+ *
+ * @return the table value
+ */
+ public String table() {
+ return this.table;
+ }
+
+ /**
+ * Get gets the file endpoint.
+ *
+ * @return the file value
+ */
+ public String file() {
+ return this.file;
+ }
+
+ /**
+ * Get gets the web endpoint.
+ *
+ * @return the web value
+ */
+ public String web() {
+ return this.web;
+ }
+
+ /**
+ * Get gets the dfs endpoint.
+ *
+ * @return the dfs value
+ */
+ public String dfs() {
+ return this.dfs;
+ }
+
+}
diff --git a/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/GeoReplicationStats.java b/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/GeoReplicationStats.java
new file mode 100644
index 000000000000..0ee40435fa0d
--- /dev/null
+++ b/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/GeoReplicationStats.java
@@ -0,0 +1,76 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.storage.v2019_04_01;
+
+import org.joda.time.DateTime;
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/**
+ * Statistics related to replication for storage account's Blob, Table, Queue
+ * and File services. It is only available when geo-redundant replication is
+ * enabled for the storage account.
+ */
+public class GeoReplicationStats {
+ /**
+ * The status of the secondary location. Possible values are: - Live:
+ * Indicates that the secondary location is active and operational. -
+ * Bootstrap: Indicates initial synchronization from the primary location
+ * to the secondary location is in progress.This typically occurs when
+ * replication is first enabled. - Unavailable: Indicates that the
+ * secondary location is temporarily unavailable. Possible values include:
+ * 'Live', 'Bootstrap', 'Unavailable'.
+ */
+ @JsonProperty(value = "status", access = JsonProperty.Access.WRITE_ONLY)
+ private GeoReplicationStatus status;
+
+ /**
+ * All primary writes preceding this UTC date/time value are guaranteed to
+ * be available for read operations. Primary writes following this point in
+ * time may or may not be available for reads. Element may be default value
+ * if value of LastSyncTime is not available, this can happen if secondary
+ * is offline or we are in bootstrap.
+ */
+ @JsonProperty(value = "lastSyncTime", access = JsonProperty.Access.WRITE_ONLY)
+ private DateTime lastSyncTime;
+
+ /**
+ * A boolean flag which indicates whether or not account failover is
+ * supported for the account.
+ */
+ @JsonProperty(value = "canFailover", access = JsonProperty.Access.WRITE_ONLY)
+ private Boolean canFailover;
+
+ /**
+ * Get the status of the secondary location. Possible values are: - Live: Indicates that the secondary location is active and operational. - Bootstrap: Indicates initial synchronization from the primary location to the secondary location is in progress.This typically occurs when replication is first enabled. - Unavailable: Indicates that the secondary location is temporarily unavailable. Possible values include: 'Live', 'Bootstrap', 'Unavailable'.
+ *
+ * @return the status value
+ */
+ public GeoReplicationStatus status() {
+ return this.status;
+ }
+
+ /**
+ * Get all primary writes preceding this UTC date/time value are guaranteed to be available for read operations. Primary writes following this point in time may or may not be available for reads. Element may be default value if value of LastSyncTime is not available, this can happen if secondary is offline or we are in bootstrap.
+ *
+ * @return the lastSyncTime value
+ */
+ public DateTime lastSyncTime() {
+ return this.lastSyncTime;
+ }
+
+ /**
+ * Get a boolean flag which indicates whether or not account failover is supported for the account.
+ *
+ * @return the canFailover value
+ */
+ public Boolean canFailover() {
+ return this.canFailover;
+ }
+
+}
diff --git a/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/GeoReplicationStatus.java b/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/GeoReplicationStatus.java
new file mode 100644
index 000000000000..743665a4297c
--- /dev/null
+++ b/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/GeoReplicationStatus.java
@@ -0,0 +1,44 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.storage.v2019_04_01;
+
+import java.util.Collection;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.microsoft.rest.ExpandableStringEnum;
+
+/**
+ * Defines values for GeoReplicationStatus.
+ */
+public final class GeoReplicationStatus extends ExpandableStringEnum {
+ /** Static value Live for GeoReplicationStatus. */
+ public static final GeoReplicationStatus LIVE = fromString("Live");
+
+ /** Static value Bootstrap for GeoReplicationStatus. */
+ public static final GeoReplicationStatus BOOTSTRAP = fromString("Bootstrap");
+
+ /** Static value Unavailable for GeoReplicationStatus. */
+ public static final GeoReplicationStatus UNAVAILABLE = fromString("Unavailable");
+
+ /**
+ * Creates or finds a GeoReplicationStatus from its string representation.
+ * @param name a name to look for
+ * @return the corresponding GeoReplicationStatus
+ */
+ @JsonCreator
+ public static GeoReplicationStatus fromString(String name) {
+ return fromString(name, GeoReplicationStatus.class);
+ }
+
+ /**
+ * @return known GeoReplicationStatus values
+ */
+ public static Collection values() {
+ return values(GeoReplicationStatus.class);
+ }
+}
diff --git a/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/HttpProtocol.java b/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/HttpProtocol.java
new file mode 100644
index 000000000000..6ba8de2b8e4b
--- /dev/null
+++ b/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/HttpProtocol.java
@@ -0,0 +1,53 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.storage.v2019_04_01;
+
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonValue;
+
+/**
+ * Defines values for HttpProtocol.
+ */
+public enum HttpProtocol {
+ /** Enum value https,http. */
+ HTTPSHTTP("https,http"),
+
+ /** Enum value https. */
+ HTTPS("https");
+
+ /** The actual serialized value for a HttpProtocol instance. */
+ private String value;
+
+ HttpProtocol(String value) {
+ this.value = value;
+ }
+
+ /**
+ * Parses a serialized value to a HttpProtocol instance.
+ *
+ * @param value the serialized value to parse.
+ * @return the parsed HttpProtocol object, or null if unable to parse.
+ */
+ @JsonCreator
+ public static HttpProtocol fromString(String value) {
+ HttpProtocol[] items = HttpProtocol.values();
+ for (HttpProtocol item : items) {
+ if (item.toString().equalsIgnoreCase(value)) {
+ return item;
+ }
+ }
+ return null;
+ }
+
+ @JsonValue
+ @Override
+ public String toString() {
+ return this.value;
+ }
+}
diff --git a/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/IPRule.java b/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/IPRule.java
new file mode 100644
index 000000000000..283e70474698
--- /dev/null
+++ b/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/IPRule.java
@@ -0,0 +1,70 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.storage.v2019_04_01;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/**
+ * IP rule with specific IP or IP range in CIDR format.
+ */
+public class IPRule {
+ /**
+ * Specifies the IP or IP range in CIDR format. Only IPV4 address is
+ * allowed.
+ */
+ @JsonProperty(value = "value", required = true)
+ private String iPAddressOrRange;
+
+ /**
+ * The action of IP ACL rule. Possible values include: 'Allow'.
+ */
+ @JsonProperty(value = "action")
+ private Action action;
+
+ /**
+ * Get specifies the IP or IP range in CIDR format. Only IPV4 address is allowed.
+ *
+ * @return the iPAddressOrRange value
+ */
+ public String iPAddressOrRange() {
+ return this.iPAddressOrRange;
+ }
+
+ /**
+ * Set specifies the IP or IP range in CIDR format. Only IPV4 address is allowed.
+ *
+ * @param iPAddressOrRange the iPAddressOrRange value to set
+ * @return the IPRule object itself.
+ */
+ public IPRule withIPAddressOrRange(String iPAddressOrRange) {
+ this.iPAddressOrRange = iPAddressOrRange;
+ return this;
+ }
+
+ /**
+ * Get the action of IP ACL rule. Possible values include: 'Allow'.
+ *
+ * @return the action value
+ */
+ public Action action() {
+ return this.action;
+ }
+
+ /**
+ * Set the action of IP ACL rule. Possible values include: 'Allow'.
+ *
+ * @param action the action value to set
+ * @return the IPRule object itself.
+ */
+ public IPRule withAction(Action action) {
+ this.action = action;
+ return this;
+ }
+
+}
diff --git a/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/Identity.java b/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/Identity.java
new file mode 100644
index 000000000000..13e1d0fede3b
--- /dev/null
+++ b/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/Identity.java
@@ -0,0 +1,80 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.storage.v2019_04_01;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/**
+ * Identity for the resource.
+ */
+public class Identity {
+ /**
+ * The principal ID of resource identity.
+ */
+ @JsonProperty(value = "principalId", access = JsonProperty.Access.WRITE_ONLY)
+ private String principalId;
+
+ /**
+ * The tenant ID of resource.
+ */
+ @JsonProperty(value = "tenantId", access = JsonProperty.Access.WRITE_ONLY)
+ private String tenantId;
+
+ /**
+ * The identity type.
+ */
+ @JsonProperty(value = "type", required = true)
+ private String type;
+
+ /**
+ * Creates an instance of Identity class.
+ */
+ public Identity() {
+ type = "SystemAssigned";
+ }
+
+ /**
+ * Get the principal ID of resource identity.
+ *
+ * @return the principalId value
+ */
+ public String principalId() {
+ return this.principalId;
+ }
+
+ /**
+ * Get the tenant ID of resource.
+ *
+ * @return the tenantId value
+ */
+ public String tenantId() {
+ return this.tenantId;
+ }
+
+ /**
+ * Get the identity type.
+ *
+ * @return the type value
+ */
+ public String type() {
+ return this.type;
+ }
+
+ /**
+ * Set the identity type.
+ *
+ * @param type the type value to set
+ * @return the Identity object itself.
+ */
+ public Identity withType(String type) {
+ this.type = type;
+ return this;
+ }
+
+}
diff --git a/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/ImmutabilityPolicy.java b/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/ImmutabilityPolicy.java
new file mode 100644
index 000000000000..34b9c0b855d2
--- /dev/null
+++ b/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/ImmutabilityPolicy.java
@@ -0,0 +1,152 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.storage.v2019_04_01;
+
+import com.microsoft.azure.arm.model.HasInner;
+import com.microsoft.azure.management.storage.v2019_04_01.implementation.ImmutabilityPolicyInner;
+import com.microsoft.azure.arm.model.Indexable;
+import com.microsoft.azure.arm.model.Refreshable;
+import com.microsoft.azure.arm.model.Updatable;
+import com.microsoft.azure.arm.model.Appliable;
+import com.microsoft.azure.arm.model.Creatable;
+import com.microsoft.azure.arm.resources.models.HasManager;
+import com.microsoft.azure.management.storage.v2019_04_01.implementation.StorageManager;
+
+/**
+ * Type representing ImmutabilityPolicy.
+ */
+public interface ImmutabilityPolicy extends HasInner, Indexable, Refreshable, Updatable, HasManager {
+ /**
+ * @return the etag value.
+ */
+ String etag();
+
+ /**
+ * @return the id value.
+ */
+ String id();
+
+ /**
+ * @return the immutabilityPeriodSinceCreationInDays value.
+ */
+ int immutabilityPeriodSinceCreationInDays();
+
+ /**
+ * @return the name value.
+ */
+ String name();
+
+ /**
+ * @return the state value.
+ */
+ ImmutabilityPolicyState state();
+
+ /**
+ * @return the type value.
+ */
+ String type();
+
+ /**
+ * The entirety of the ImmutabilityPolicy definition.
+ */
+ interface Definition extends DefinitionStages.Blank, DefinitionStages.WithContainer, DefinitionStages.WithIfMatch, DefinitionStages.WithImmutabilityPeriodSinceCreationInDays, DefinitionStages.WithCreate {
+ }
+
+ /**
+ * Grouping of ImmutabilityPolicy definition stages.
+ */
+ interface DefinitionStages {
+ /**
+ * The first stage of a ImmutabilityPolicy definition.
+ */
+ interface Blank extends WithContainer {
+ }
+
+ /**
+ * The stage of the immutabilitypolicy definition allowing to specify Container.
+ */
+ interface WithContainer {
+ /**
+ * Specifies resourceGroupName, accountName, containerName.
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case insensitive
+ * @param accountName The name of the storage account within the 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
+ * @return the next definition stage
+ */
+ WithIfMatch withExistingContainer(String resourceGroupName, String accountName, String containerName);
+ }
+
+ /**
+ * The stage of the immutabilitypolicy definition allowing to specify IfMatch.
+ */
+ interface WithIfMatch {
+ /**
+ * Specifies ifMatch.
+ * @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
+ * @return the next definition stage
+ */
+ WithImmutabilityPeriodSinceCreationInDays withIfMatch(String ifMatch);
+ }
+
+ /**
+ * The stage of the immutabilitypolicy definition allowing to specify ImmutabilityPeriodSinceCreationInDays.
+ */
+ interface WithImmutabilityPeriodSinceCreationInDays {
+ /**
+ * Specifies immutabilityPeriodSinceCreationInDays.
+ * @param immutabilityPeriodSinceCreationInDays The immutability period for the blobs in the container since the policy creation, in days
+ * @return the next definition stage
+ */
+ WithCreate withImmutabilityPeriodSinceCreationInDays(int immutabilityPeriodSinceCreationInDays);
+ }
+
+ /**
+ * The stage of the definition which contains all the minimum required inputs for
+ * the resource to be created (via {@link WithCreate#create()}), but also allows
+ * for any other optional settings to be specified.
+ */
+ interface WithCreate extends Creatable {
+ }
+ }
+ /**
+ * The template for a ImmutabilityPolicy update operation, containing all the settings that can be modified.
+ */
+ interface Update extends Appliable, UpdateStages.WithIfMatch, UpdateStages.WithImmutabilityPeriodSinceCreationInDays {
+ }
+
+ /**
+ * Grouping of ImmutabilityPolicy update stages.
+ */
+ interface UpdateStages {
+ /**
+ * The stage of the immutabilitypolicy update allowing to specify IfMatch.
+ */
+ interface WithIfMatch {
+ /**
+ * Specifies ifMatch.
+ * @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
+ * @return the next update stage
+ */
+ Update withIfMatch(String ifMatch);
+ }
+
+ /**
+ * The stage of the immutabilitypolicy update allowing to specify ImmutabilityPeriodSinceCreationInDays.
+ */
+ interface WithImmutabilityPeriodSinceCreationInDays {
+ /**
+ * Specifies immutabilityPeriodSinceCreationInDays.
+ * @param immutabilityPeriodSinceCreationInDays The immutability period for the blobs in the container since the policy creation, in days
+ * @return the next update stage
+ */
+ Update withImmutabilityPeriodSinceCreationInDays(int immutabilityPeriodSinceCreationInDays);
+ }
+
+ }
+}
diff --git a/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/ImmutabilityPolicyProperties.java b/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/ImmutabilityPolicyProperties.java
new file mode 100644
index 000000000000..e280dcf5f486
--- /dev/null
+++ b/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/ImmutabilityPolicyProperties.java
@@ -0,0 +1,94 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.storage.v2019_04_01;
+
+import java.util.List;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.microsoft.rest.serializer.JsonFlatten;
+
+/**
+ * The properties of an ImmutabilityPolicy of a blob container.
+ */
+@JsonFlatten
+public class ImmutabilityPolicyProperties {
+ /**
+ * The immutability period for the blobs in the container since the policy
+ * creation, in days.
+ */
+ @JsonProperty(value = "properties.immutabilityPeriodSinceCreationInDays", required = true)
+ private int immutabilityPeriodSinceCreationInDays;
+
+ /**
+ * The ImmutabilityPolicy state of a blob container, possible values
+ * include: Locked and Unlocked. Possible values include: 'Locked',
+ * 'Unlocked'.
+ */
+ @JsonProperty(value = "properties.state", access = JsonProperty.Access.WRITE_ONLY)
+ private ImmutabilityPolicyState state;
+
+ /**
+ * ImmutabilityPolicy Etag.
+ */
+ @JsonProperty(value = "etag", access = JsonProperty.Access.WRITE_ONLY)
+ private String etag;
+
+ /**
+ * The ImmutabilityPolicy update history of the blob container.
+ */
+ @JsonProperty(value = "updateHistory", access = JsonProperty.Access.WRITE_ONLY)
+ private List updateHistory;
+
+ /**
+ * Get the immutability period for the blobs in the container since the policy creation, in days.
+ *
+ * @return the immutabilityPeriodSinceCreationInDays value
+ */
+ public int immutabilityPeriodSinceCreationInDays() {
+ return this.immutabilityPeriodSinceCreationInDays;
+ }
+
+ /**
+ * Set the immutability period for the blobs in the container since the policy creation, in days.
+ *
+ * @param immutabilityPeriodSinceCreationInDays the immutabilityPeriodSinceCreationInDays value to set
+ * @return the ImmutabilityPolicyProperties object itself.
+ */
+ public ImmutabilityPolicyProperties withImmutabilityPeriodSinceCreationInDays(int immutabilityPeriodSinceCreationInDays) {
+ this.immutabilityPeriodSinceCreationInDays = immutabilityPeriodSinceCreationInDays;
+ return this;
+ }
+
+ /**
+ * Get the ImmutabilityPolicy state of a blob container, possible values include: Locked and Unlocked. Possible values include: 'Locked', 'Unlocked'.
+ *
+ * @return the state value
+ */
+ public ImmutabilityPolicyState state() {
+ return this.state;
+ }
+
+ /**
+ * Get immutabilityPolicy Etag.
+ *
+ * @return the etag value
+ */
+ public String etag() {
+ return this.etag;
+ }
+
+ /**
+ * Get the ImmutabilityPolicy update history of the blob container.
+ *
+ * @return the updateHistory value
+ */
+ public List updateHistory() {
+ return this.updateHistory;
+ }
+
+}
diff --git a/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/ImmutabilityPolicyState.java b/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/ImmutabilityPolicyState.java
new file mode 100644
index 000000000000..94aeefbb5924
--- /dev/null
+++ b/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/ImmutabilityPolicyState.java
@@ -0,0 +1,41 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.storage.v2019_04_01;
+
+import java.util.Collection;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.microsoft.rest.ExpandableStringEnum;
+
+/**
+ * Defines values for ImmutabilityPolicyState.
+ */
+public final class ImmutabilityPolicyState extends ExpandableStringEnum {
+ /** Static value Locked for ImmutabilityPolicyState. */
+ public static final ImmutabilityPolicyState LOCKED = fromString("Locked");
+
+ /** Static value Unlocked for ImmutabilityPolicyState. */
+ public static final ImmutabilityPolicyState UNLOCKED = fromString("Unlocked");
+
+ /**
+ * Creates or finds a ImmutabilityPolicyState from its string representation.
+ * @param name a name to look for
+ * @return the corresponding ImmutabilityPolicyState
+ */
+ @JsonCreator
+ public static ImmutabilityPolicyState fromString(String name) {
+ return fromString(name, ImmutabilityPolicyState.class);
+ }
+
+ /**
+ * @return known ImmutabilityPolicyState values
+ */
+ public static Collection values() {
+ return values(ImmutabilityPolicyState.class);
+ }
+}
diff --git a/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/ImmutabilityPolicyUpdateType.java b/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/ImmutabilityPolicyUpdateType.java
new file mode 100644
index 000000000000..85672f6526a0
--- /dev/null
+++ b/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/ImmutabilityPolicyUpdateType.java
@@ -0,0 +1,44 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.storage.v2019_04_01;
+
+import java.util.Collection;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.microsoft.rest.ExpandableStringEnum;
+
+/**
+ * Defines values for ImmutabilityPolicyUpdateType.
+ */
+public final class ImmutabilityPolicyUpdateType extends ExpandableStringEnum {
+ /** Static value put for ImmutabilityPolicyUpdateType. */
+ public static final ImmutabilityPolicyUpdateType PUT = fromString("put");
+
+ /** Static value lock for ImmutabilityPolicyUpdateType. */
+ public static final ImmutabilityPolicyUpdateType LOCK = fromString("lock");
+
+ /** Static value extend for ImmutabilityPolicyUpdateType. */
+ public static final ImmutabilityPolicyUpdateType EXTEND = fromString("extend");
+
+ /**
+ * Creates or finds a ImmutabilityPolicyUpdateType from its string representation.
+ * @param name a name to look for
+ * @return the corresponding ImmutabilityPolicyUpdateType
+ */
+ @JsonCreator
+ public static ImmutabilityPolicyUpdateType fromString(String name) {
+ return fromString(name, ImmutabilityPolicyUpdateType.class);
+ }
+
+ /**
+ * @return known ImmutabilityPolicyUpdateType values
+ */
+ public static Collection values() {
+ return values(ImmutabilityPolicyUpdateType.class);
+ }
+}
diff --git a/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/KeyPermission.java b/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/KeyPermission.java
new file mode 100644
index 000000000000..f08bf76a01f3
--- /dev/null
+++ b/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/KeyPermission.java
@@ -0,0 +1,53 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.storage.v2019_04_01;
+
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonValue;
+
+/**
+ * Defines values for KeyPermission.
+ */
+public enum KeyPermission {
+ /** Enum value Read. */
+ READ("Read"),
+
+ /** Enum value Full. */
+ FULL("Full");
+
+ /** The actual serialized value for a KeyPermission instance. */
+ private String value;
+
+ KeyPermission(String value) {
+ this.value = value;
+ }
+
+ /**
+ * Parses a serialized value to a KeyPermission instance.
+ *
+ * @param value the serialized value to parse.
+ * @return the parsed KeyPermission object, or null if unable to parse.
+ */
+ @JsonCreator
+ public static KeyPermission fromString(String value) {
+ KeyPermission[] items = KeyPermission.values();
+ for (KeyPermission item : items) {
+ if (item.toString().equalsIgnoreCase(value)) {
+ return item;
+ }
+ }
+ return null;
+ }
+
+ @JsonValue
+ @Override
+ public String toString() {
+ return this.value;
+ }
+}
diff --git a/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/KeySource.java b/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/KeySource.java
new file mode 100644
index 000000000000..b696c700cbd2
--- /dev/null
+++ b/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/KeySource.java
@@ -0,0 +1,41 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.storage.v2019_04_01;
+
+import java.util.Collection;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.microsoft.rest.ExpandableStringEnum;
+
+/**
+ * Defines values for KeySource.
+ */
+public final class KeySource extends ExpandableStringEnum {
+ /** Static value Microsoft.Storage for KeySource. */
+ public static final KeySource MICROSOFT_STORAGE = fromString("Microsoft.Storage");
+
+ /** Static value Microsoft.Keyvault for KeySource. */
+ public static final KeySource MICROSOFT_KEYVAULT = fromString("Microsoft.Keyvault");
+
+ /**
+ * Creates or finds a KeySource from its string representation.
+ * @param name a name to look for
+ * @return the corresponding KeySource
+ */
+ @JsonCreator
+ public static KeySource fromString(String name) {
+ return fromString(name, KeySource.class);
+ }
+
+ /**
+ * @return known KeySource values
+ */
+ public static Collection values() {
+ return values(KeySource.class);
+ }
+}
diff --git a/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/KeyVaultProperties.java b/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/KeyVaultProperties.java
new file mode 100644
index 000000000000..3a3ef3fd5f66
--- /dev/null
+++ b/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/KeyVaultProperties.java
@@ -0,0 +1,95 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.storage.v2019_04_01;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/**
+ * Properties of key vault.
+ */
+public class KeyVaultProperties {
+ /**
+ * The name of KeyVault key.
+ */
+ @JsonProperty(value = "keyname")
+ private String keyName;
+
+ /**
+ * The version of KeyVault key.
+ */
+ @JsonProperty(value = "keyversion")
+ private String keyVersion;
+
+ /**
+ * The Uri of KeyVault.
+ */
+ @JsonProperty(value = "keyvaulturi")
+ private String keyVaultUri;
+
+ /**
+ * Get the name of KeyVault key.
+ *
+ * @return the keyName value
+ */
+ public String keyName() {
+ return this.keyName;
+ }
+
+ /**
+ * Set the name of KeyVault key.
+ *
+ * @param keyName the keyName value to set
+ * @return the KeyVaultProperties object itself.
+ */
+ public KeyVaultProperties withKeyName(String keyName) {
+ this.keyName = keyName;
+ return this;
+ }
+
+ /**
+ * Get the version of KeyVault key.
+ *
+ * @return the keyVersion value
+ */
+ public String keyVersion() {
+ return this.keyVersion;
+ }
+
+ /**
+ * Set the version of KeyVault key.
+ *
+ * @param keyVersion the keyVersion value to set
+ * @return the KeyVaultProperties object itself.
+ */
+ public KeyVaultProperties withKeyVersion(String keyVersion) {
+ this.keyVersion = keyVersion;
+ return this;
+ }
+
+ /**
+ * Get the Uri of KeyVault.
+ *
+ * @return the keyVaultUri value
+ */
+ public String keyVaultUri() {
+ return this.keyVaultUri;
+ }
+
+ /**
+ * Set the Uri of KeyVault.
+ *
+ * @param keyVaultUri the keyVaultUri value to set
+ * @return the KeyVaultProperties object itself.
+ */
+ public KeyVaultProperties withKeyVaultUri(String keyVaultUri) {
+ this.keyVaultUri = keyVaultUri;
+ return this;
+ }
+
+}
diff --git a/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/Kind.java b/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/Kind.java
new file mode 100644
index 000000000000..b0d31ccaba49
--- /dev/null
+++ b/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/Kind.java
@@ -0,0 +1,50 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.storage.v2019_04_01;
+
+import java.util.Collection;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.microsoft.rest.ExpandableStringEnum;
+
+/**
+ * Defines values for Kind.
+ */
+public final class Kind extends ExpandableStringEnum {
+ /** Static value Storage for Kind. */
+ public static final Kind STORAGE = fromString("Storage");
+
+ /** Static value StorageV2 for Kind. */
+ public static final Kind STORAGE_V2 = fromString("StorageV2");
+
+ /** Static value BlobStorage for Kind. */
+ public static final Kind BLOB_STORAGE = fromString("BlobStorage");
+
+ /** Static value FileStorage for Kind. */
+ public static final Kind FILE_STORAGE = fromString("FileStorage");
+
+ /** Static value BlockBlobStorage for Kind. */
+ public static final Kind BLOCK_BLOB_STORAGE = fromString("BlockBlobStorage");
+
+ /**
+ * Creates or finds a Kind from its string representation.
+ * @param name a name to look for
+ * @return the corresponding Kind
+ */
+ @JsonCreator
+ public static Kind fromString(String name) {
+ return fromString(name, Kind.class);
+ }
+
+ /**
+ * @return known Kind values
+ */
+ public static Collection values() {
+ return values(Kind.class);
+ }
+}
diff --git a/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/LeaseContainerRequest.java b/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/LeaseContainerRequest.java
new file mode 100644
index 000000000000..846d84929b3d
--- /dev/null
+++ b/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/LeaseContainerRequest.java
@@ -0,0 +1,152 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.storage.v2019_04_01;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/**
+ * Lease Container request schema.
+ */
+public class LeaseContainerRequest {
+ /**
+ * Specifies the lease action. Can be one of the available actions.
+ * Possible values include: 'Acquire', 'Renew', 'Change', 'Release',
+ * 'Break'.
+ */
+ @JsonProperty(value = "action", required = true)
+ private String action;
+
+ /**
+ * Identifies the lease. Can be specified in any valid GUID string format.
+ */
+ @JsonProperty(value = "leaseId")
+ private String leaseId;
+
+ /**
+ * Optional. For a break action, proposed duration the lease should
+ * continue before it is broken, in seconds, between 0 and 60.
+ */
+ @JsonProperty(value = "breakPeriod")
+ private Integer breakPeriod;
+
+ /**
+ * Required for acquire. Specifies the duration of the lease, in seconds,
+ * or negative one (-1) for a lease that never expires.
+ */
+ @JsonProperty(value = "leaseDuration")
+ private Integer leaseDuration;
+
+ /**
+ * Optional for acquire, required for change. Proposed lease ID, in a GUID
+ * string format.
+ */
+ @JsonProperty(value = "proposedLeaseId")
+ private String proposedLeaseId;
+
+ /**
+ * Get specifies the lease action. Can be one of the available actions. Possible values include: 'Acquire', 'Renew', 'Change', 'Release', 'Break'.
+ *
+ * @return the action value
+ */
+ public String action() {
+ return this.action;
+ }
+
+ /**
+ * Set specifies the lease action. Can be one of the available actions. Possible values include: 'Acquire', 'Renew', 'Change', 'Release', 'Break'.
+ *
+ * @param action the action value to set
+ * @return the LeaseContainerRequest object itself.
+ */
+ public LeaseContainerRequest withAction(String action) {
+ this.action = action;
+ return this;
+ }
+
+ /**
+ * Get identifies the lease. Can be specified in any valid GUID string format.
+ *
+ * @return the leaseId value
+ */
+ public String leaseId() {
+ return this.leaseId;
+ }
+
+ /**
+ * Set identifies the lease. Can be specified in any valid GUID string format.
+ *
+ * @param leaseId the leaseId value to set
+ * @return the LeaseContainerRequest object itself.
+ */
+ public LeaseContainerRequest withLeaseId(String leaseId) {
+ this.leaseId = leaseId;
+ return this;
+ }
+
+ /**
+ * Get optional. For a break action, proposed duration the lease should continue before it is broken, in seconds, between 0 and 60.
+ *
+ * @return the breakPeriod value
+ */
+ public Integer breakPeriod() {
+ return this.breakPeriod;
+ }
+
+ /**
+ * Set optional. For a break action, proposed duration the lease should continue before it is broken, in seconds, between 0 and 60.
+ *
+ * @param breakPeriod the breakPeriod value to set
+ * @return the LeaseContainerRequest object itself.
+ */
+ public LeaseContainerRequest withBreakPeriod(Integer breakPeriod) {
+ this.breakPeriod = breakPeriod;
+ return this;
+ }
+
+ /**
+ * Get required for acquire. Specifies the duration of the lease, in seconds, or negative one (-1) for a lease that never expires.
+ *
+ * @return the leaseDuration value
+ */
+ public Integer leaseDuration() {
+ return this.leaseDuration;
+ }
+
+ /**
+ * Set required for acquire. Specifies the duration of the lease, in seconds, or negative one (-1) for a lease that never expires.
+ *
+ * @param leaseDuration the leaseDuration value to set
+ * @return the LeaseContainerRequest object itself.
+ */
+ public LeaseContainerRequest withLeaseDuration(Integer leaseDuration) {
+ this.leaseDuration = leaseDuration;
+ return this;
+ }
+
+ /**
+ * Get optional for acquire, required for change. Proposed lease ID, in a GUID string format.
+ *
+ * @return the proposedLeaseId value
+ */
+ public String proposedLeaseId() {
+ return this.proposedLeaseId;
+ }
+
+ /**
+ * Set optional for acquire, required for change. Proposed lease ID, in a GUID string format.
+ *
+ * @param proposedLeaseId the proposedLeaseId value to set
+ * @return the LeaseContainerRequest object itself.
+ */
+ public LeaseContainerRequest withProposedLeaseId(String proposedLeaseId) {
+ this.proposedLeaseId = proposedLeaseId;
+ return this;
+ }
+
+}
diff --git a/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/LeaseContainerResponse.java b/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/LeaseContainerResponse.java
new file mode 100644
index 000000000000..8b53e31da835
--- /dev/null
+++ b/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/LeaseContainerResponse.java
@@ -0,0 +1,30 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.storage.v2019_04_01;
+
+import com.microsoft.azure.arm.model.HasInner;
+import com.microsoft.azure.arm.resources.models.HasManager;
+import com.microsoft.azure.management.storage.v2019_04_01.implementation.StorageManager;
+import com.microsoft.azure.management.storage.v2019_04_01.implementation.LeaseContainerResponseInner;
+
+/**
+ * Type representing LeaseContainerResponse.
+ */
+public interface LeaseContainerResponse extends HasInner, HasManager {
+ /**
+ * @return the leaseId value.
+ */
+ String leaseId();
+
+ /**
+ * @return the leaseTimeSeconds value.
+ */
+ String leaseTimeSeconds();
+
+}
diff --git a/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/LeaseDuration.java b/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/LeaseDuration.java
new file mode 100644
index 000000000000..326df3ec8633
--- /dev/null
+++ b/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/LeaseDuration.java
@@ -0,0 +1,41 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.storage.v2019_04_01;
+
+import java.util.Collection;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.microsoft.rest.ExpandableStringEnum;
+
+/**
+ * Defines values for LeaseDuration.
+ */
+public final class LeaseDuration extends ExpandableStringEnum {
+ /** Static value Infinite for LeaseDuration. */
+ public static final LeaseDuration INFINITE = fromString("Infinite");
+
+ /** Static value Fixed for LeaseDuration. */
+ public static final LeaseDuration FIXED = fromString("Fixed");
+
+ /**
+ * Creates or finds a LeaseDuration from its string representation.
+ * @param name a name to look for
+ * @return the corresponding LeaseDuration
+ */
+ @JsonCreator
+ public static LeaseDuration fromString(String name) {
+ return fromString(name, LeaseDuration.class);
+ }
+
+ /**
+ * @return known LeaseDuration values
+ */
+ public static Collection values() {
+ return values(LeaseDuration.class);
+ }
+}
diff --git a/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/LeaseState.java b/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/LeaseState.java
new file mode 100644
index 000000000000..9988dc39aef4
--- /dev/null
+++ b/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/LeaseState.java
@@ -0,0 +1,50 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.storage.v2019_04_01;
+
+import java.util.Collection;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.microsoft.rest.ExpandableStringEnum;
+
+/**
+ * Defines values for LeaseState.
+ */
+public final class LeaseState extends ExpandableStringEnum {
+ /** Static value Available for LeaseState. */
+ public static final LeaseState AVAILABLE = fromString("Available");
+
+ /** Static value Leased for LeaseState. */
+ public static final LeaseState LEASED = fromString("Leased");
+
+ /** Static value Expired for LeaseState. */
+ public static final LeaseState EXPIRED = fromString("Expired");
+
+ /** Static value Breaking for LeaseState. */
+ public static final LeaseState BREAKING = fromString("Breaking");
+
+ /** Static value Broken for LeaseState. */
+ public static final LeaseState BROKEN = fromString("Broken");
+
+ /**
+ * Creates or finds a LeaseState from its string representation.
+ * @param name a name to look for
+ * @return the corresponding LeaseState
+ */
+ @JsonCreator
+ public static LeaseState fromString(String name) {
+ return fromString(name, LeaseState.class);
+ }
+
+ /**
+ * @return known LeaseState values
+ */
+ public static Collection values() {
+ return values(LeaseState.class);
+ }
+}
diff --git a/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/LeaseStatus.java b/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/LeaseStatus.java
new file mode 100644
index 000000000000..582f4b5aec7d
--- /dev/null
+++ b/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/LeaseStatus.java
@@ -0,0 +1,41 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.storage.v2019_04_01;
+
+import java.util.Collection;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.microsoft.rest.ExpandableStringEnum;
+
+/**
+ * Defines values for LeaseStatus.
+ */
+public final class LeaseStatus extends ExpandableStringEnum {
+ /** Static value Locked for LeaseStatus. */
+ public static final LeaseStatus LOCKED = fromString("Locked");
+
+ /** Static value Unlocked for LeaseStatus. */
+ public static final LeaseStatus UNLOCKED = fromString("Unlocked");
+
+ /**
+ * Creates or finds a LeaseStatus from its string representation.
+ * @param name a name to look for
+ * @return the corresponding LeaseStatus
+ */
+ @JsonCreator
+ public static LeaseStatus fromString(String name) {
+ return fromString(name, LeaseStatus.class);
+ }
+
+ /**
+ * @return known LeaseStatus values
+ */
+ public static Collection values() {
+ return values(LeaseStatus.class);
+ }
+}
diff --git a/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/LegalHold.java b/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/LegalHold.java
new file mode 100644
index 000000000000..fbfed281c300
--- /dev/null
+++ b/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/LegalHold.java
@@ -0,0 +1,31 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.storage.v2019_04_01;
+
+import com.microsoft.azure.arm.model.HasInner;
+import com.microsoft.azure.arm.resources.models.HasManager;
+import com.microsoft.azure.management.storage.v2019_04_01.implementation.StorageManager;
+import com.microsoft.azure.management.storage.v2019_04_01.implementation.LegalHoldInner;
+import java.util.List;
+
+/**
+ * Type representing LegalHold.
+ */
+public interface LegalHold extends HasInner, HasManager {
+ /**
+ * @return the hasLegalHold value.
+ */
+ Boolean hasLegalHold();
+
+ /**
+ * @return the tags value.
+ */
+ List tags();
+
+}
diff --git a/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/LegalHoldProperties.java b/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/LegalHoldProperties.java
new file mode 100644
index 000000000000..48fb29bb46a3
--- /dev/null
+++ b/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/LegalHoldProperties.java
@@ -0,0 +1,63 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.storage.v2019_04_01;
+
+import java.util.List;
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/**
+ * The LegalHold property of a blob container.
+ */
+public class LegalHoldProperties {
+ /**
+ * 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 list of LegalHold tags of a blob container.
+ */
+ @JsonProperty(value = "tags")
+ private List tags;
+
+ /**
+ * Get 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 list of LegalHold tags of a blob container.
+ *
+ * @return the tags value
+ */
+ public List tags() {
+ return this.tags;
+ }
+
+ /**
+ * Set the list of LegalHold tags of a blob container.
+ *
+ * @param tags the tags value to set
+ * @return the LegalHoldProperties object itself.
+ */
+ public LegalHoldProperties withTags(List tags) {
+ this.tags = tags;
+ return this;
+ }
+
+}
diff --git a/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/ListAccountSasResponse.java b/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/ListAccountSasResponse.java
new file mode 100644
index 000000000000..8e9fa0a7f32d
--- /dev/null
+++ b/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/ListAccountSasResponse.java
@@ -0,0 +1,25 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.storage.v2019_04_01;
+
+import com.microsoft.azure.arm.model.HasInner;
+import com.microsoft.azure.arm.resources.models.HasManager;
+import com.microsoft.azure.management.storage.v2019_04_01.implementation.StorageManager;
+import com.microsoft.azure.management.storage.v2019_04_01.implementation.ListAccountSasResponseInner;
+
+/**
+ * Type representing ListAccountSasResponse.
+ */
+public interface ListAccountSasResponse extends HasInner, HasManager {
+ /**
+ * @return the accountSasToken value.
+ */
+ String accountSasToken();
+
+}
diff --git a/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/ListContainerItem.java b/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/ListContainerItem.java
new file mode 100644
index 000000000000..8a9c6ba84489
--- /dev/null
+++ b/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/ListContainerItem.java
@@ -0,0 +1,205 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.storage.v2019_04_01;
+
+import org.joda.time.DateTime;
+import java.util.Map;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.microsoft.rest.serializer.JsonFlatten;
+
+/**
+ * The blob container properties be listed out.
+ */
+@JsonFlatten
+public class ListContainerItem extends AzureEntityResource {
+ /**
+ * Specifies whether data in the container may be accessed publicly and the
+ * level of access. Possible values include: 'Container', 'Blob', 'None'.
+ */
+ @JsonProperty(value = "properties.publicAccess")
+ private PublicAccess publicAccess;
+
+ /**
+ * Returns the date and time the container was last modified.
+ */
+ @JsonProperty(value = "properties.lastModifiedTime", access = JsonProperty.Access.WRITE_ONLY)
+ private DateTime lastModifiedTime;
+
+ /**
+ * The lease status of the container. Possible values include: 'Locked',
+ * 'Unlocked'.
+ */
+ @JsonProperty(value = "properties.leaseStatus", access = JsonProperty.Access.WRITE_ONLY)
+ private LeaseStatus leaseStatus;
+
+ /**
+ * Lease state of the container. Possible values include: 'Available',
+ * 'Leased', 'Expired', 'Breaking', 'Broken'.
+ */
+ @JsonProperty(value = "properties.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. Possible values include:
+ * 'Infinite', 'Fixed'.
+ */
+ @JsonProperty(value = "properties.leaseDuration", access = JsonProperty.Access.WRITE_ONLY)
+ private LeaseDuration leaseDuration;
+
+ /**
+ * A name-value pair to associate with the container as metadata.
+ */
+ @JsonProperty(value = "properties.metadata")
+ private Map metadata;
+
+ /**
+ * The ImmutabilityPolicy property of the container.
+ */
+ @JsonProperty(value = "properties.immutabilityPolicy", access = JsonProperty.Access.WRITE_ONLY)
+ private ImmutabilityPolicyProperties immutabilityPolicy;
+
+ /**
+ * The LegalHold property of the container.
+ */
+ @JsonProperty(value = "properties.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 = "properties.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 = "properties.hasImmutabilityPolicy", access = JsonProperty.Access.WRITE_ONLY)
+ private Boolean hasImmutabilityPolicy;
+
+ /**
+ * Get specifies whether data in the container may be accessed publicly and the level of access. Possible values include: 'Container', 'Blob', 'None'.
+ *
+ * @return the publicAccess value
+ */
+ public PublicAccess publicAccess() {
+ return this.publicAccess;
+ }
+
+ /**
+ * Set specifies whether data in the container may be accessed publicly and the level of access. Possible values include: 'Container', 'Blob', 'None'.
+ *
+ * @param publicAccess the publicAccess value to set
+ * @return the ListContainerItem object itself.
+ */
+ public ListContainerItem withPublicAccess(PublicAccess publicAccess) {
+ this.publicAccess = publicAccess;
+ return this;
+ }
+
+ /**
+ * Get returns the date and time the container was last modified.
+ *
+ * @return the lastModifiedTime value
+ */
+ public DateTime lastModifiedTime() {
+ return this.lastModifiedTime;
+ }
+
+ /**
+ * Get the lease status of the container. Possible values include: 'Locked', 'Unlocked'.
+ *
+ * @return the leaseStatus value
+ */
+ public LeaseStatus leaseStatus() {
+ return this.leaseStatus;
+ }
+
+ /**
+ * Get lease state of the container. Possible values include: 'Available', 'Leased', 'Expired', 'Breaking', 'Broken'.
+ *
+ * @return the leaseState value
+ */
+ public LeaseState leaseState() {
+ return this.leaseState;
+ }
+
+ /**
+ * Get specifies whether the lease on a container is of infinite or fixed duration, only when the container is leased. Possible values include: 'Infinite', 'Fixed'.
+ *
+ * @return the leaseDuration value
+ */
+ public LeaseDuration leaseDuration() {
+ return this.leaseDuration;
+ }
+
+ /**
+ * Get a name-value pair to associate with the container as metadata.
+ *
+ * @return the metadata value
+ */
+ public Map metadata() {
+ return this.metadata;
+ }
+
+ /**
+ * Set a name-value pair to associate with the container as metadata.
+ *
+ * @param metadata the metadata value to set
+ * @return the ListContainerItem object itself.
+ */
+ public ListContainerItem withMetadata(Map metadata) {
+ this.metadata = metadata;
+ return this;
+ }
+
+ /**
+ * Get the ImmutabilityPolicy property of the container.
+ *
+ * @return the immutabilityPolicy value
+ */
+ public ImmutabilityPolicyProperties immutabilityPolicy() {
+ return this.immutabilityPolicy;
+ }
+
+ /**
+ * Get the LegalHold property of the container.
+ *
+ * @return the legalHold value
+ */
+ public LegalHoldProperties legalHold() {
+ return this.legalHold;
+ }
+
+ /**
+ * Get 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 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;
+ }
+
+}
diff --git a/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/ListContainerItems.java b/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/ListContainerItems.java
new file mode 100644
index 000000000000..6bb5f62706ff
--- /dev/null
+++ b/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/ListContainerItems.java
@@ -0,0 +1,26 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.storage.v2019_04_01;
+
+import com.microsoft.azure.arm.model.HasInner;
+import com.microsoft.azure.arm.resources.models.HasManager;
+import com.microsoft.azure.management.storage.v2019_04_01.implementation.StorageManager;
+import com.microsoft.azure.management.storage.v2019_04_01.implementation.ListContainerItemsInner;
+import java.util.List;
+
+/**
+ * Type representing ListContainerItems.
+ */
+public interface ListContainerItems extends HasInner, HasManager {
+ /**
+ * @return the value value.
+ */
+ List value();
+
+}
diff --git a/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/ListServiceSasResponse.java b/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/ListServiceSasResponse.java
new file mode 100644
index 000000000000..ac0ab1186665
--- /dev/null
+++ b/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/ListServiceSasResponse.java
@@ -0,0 +1,25 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.storage.v2019_04_01;
+
+import com.microsoft.azure.arm.model.HasInner;
+import com.microsoft.azure.arm.resources.models.HasManager;
+import com.microsoft.azure.management.storage.v2019_04_01.implementation.StorageManager;
+import com.microsoft.azure.management.storage.v2019_04_01.implementation.ListServiceSasResponseInner;
+
+/**
+ * Type representing ListServiceSasResponse.
+ */
+public interface ListServiceSasResponse extends HasInner, HasManager {
+ /**
+ * @return the serviceSasToken value.
+ */
+ String serviceSasToken();
+
+}
diff --git a/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/ManagementPolicies.java b/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/ManagementPolicies.java
new file mode 100644
index 000000000000..e8c5457e9e00
--- /dev/null
+++ b/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/ManagementPolicies.java
@@ -0,0 +1,41 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.storage.v2019_04_01;
+
+import com.microsoft.azure.arm.collection.SupportsCreating;
+import rx.Completable;
+import rx.Observable;
+import com.microsoft.azure.management.storage.v2019_04_01.implementation.ManagementPoliciesInner;
+import com.microsoft.azure.arm.model.HasInner;
+
+/**
+ * Type representing ManagementPolicies.
+ */
+public interface ManagementPolicies extends SupportsCreating, HasInner {
+ /**
+ * 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.
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @return the observable for the request
+ */
+ Observable getAsync(String resourceGroupName, String accountName);
+
+ /**
+ * 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.
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @return the observable for the request
+ */
+ Completable deleteAsync(String resourceGroupName, String accountName);
+
+}
diff --git a/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/ManagementPolicy.java b/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/ManagementPolicy.java
new file mode 100644
index 000000000000..26774bd362e9
--- /dev/null
+++ b/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/ManagementPolicy.java
@@ -0,0 +1,124 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.storage.v2019_04_01;
+
+import com.microsoft.azure.arm.model.HasInner;
+import com.microsoft.azure.management.storage.v2019_04_01.implementation.ManagementPolicyInner;
+import com.microsoft.azure.arm.model.Indexable;
+import com.microsoft.azure.arm.model.Refreshable;
+import com.microsoft.azure.arm.model.Updatable;
+import com.microsoft.azure.arm.model.Appliable;
+import com.microsoft.azure.arm.model.Creatable;
+import com.microsoft.azure.arm.resources.models.HasManager;
+import com.microsoft.azure.management.storage.v2019_04_01.implementation.StorageManager;
+import java.util.List;
+import org.joda.time.DateTime;
+
+/**
+ * Type representing ManagementPolicy.
+ */
+public interface ManagementPolicy extends HasInner, Indexable, Refreshable, Updatable, HasManager {
+ /**
+ * @return the id value.
+ */
+ String id();
+
+ /**
+ * @return the lastModifiedTime value.
+ */
+ DateTime lastModifiedTime();
+
+ /**
+ * @return the name value.
+ */
+ String name();
+
+ /**
+ * @return the policy value.
+ */
+ ManagementPolicySchema policy();
+
+ /**
+ * @return the type value.
+ */
+ String type();
+
+ /**
+ * The entirety of the ManagementPolicy definition.
+ */
+ interface Definition extends DefinitionStages.Blank, DefinitionStages.WithStorageAccount, DefinitionStages.WithPolicy, DefinitionStages.WithCreate {
+ }
+
+ /**
+ * Grouping of ManagementPolicy definition stages.
+ */
+ interface DefinitionStages {
+ /**
+ * The first stage of a ManagementPolicy definition.
+ */
+ interface Blank extends WithStorageAccount {
+ }
+
+ /**
+ * The stage of the managementpolicy definition allowing to specify StorageAccount.
+ */
+ interface WithStorageAccount {
+ /**
+ * Specifies resourceGroupName, accountName.
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case insensitive
+ * @param accountName The name of the storage account within the specified resource group. Storage account names must be between 3 and 24 characters in length and use numbers and lower-case letters only
+ * @return the next definition stage
+ */
+ WithPolicy withExistingStorageAccount(String resourceGroupName, String accountName);
+ }
+
+ /**
+ * The stage of the managementpolicy definition allowing to specify Policy.
+ */
+ interface WithPolicy {
+ /**
+ * Specifies policy.
+ * @param policy 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 next definition stage
+ */
+ WithCreate withPolicy(ManagementPolicySchema policy);
+ }
+
+ /**
+ * The stage of the definition which contains all the minimum required inputs for
+ * the resource to be created (via {@link WithCreate#create()}), but also allows
+ * for any other optional settings to be specified.
+ */
+ interface WithCreate extends Creatable {
+ }
+ }
+ /**
+ * The template for a ManagementPolicy update operation, containing all the settings that can be modified.
+ */
+ interface Update extends Appliable, UpdateStages.WithPolicy {
+ }
+
+ /**
+ * Grouping of ManagementPolicy update stages.
+ */
+ interface UpdateStages {
+ /**
+ * The stage of the managementpolicy update allowing to specify Policy.
+ */
+ interface WithPolicy {
+ /**
+ * Specifies policy.
+ * @param policy 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 next update stage
+ */
+ Update withPolicy(ManagementPolicySchema policy);
+ }
+
+ }
+}
diff --git a/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/ManagementPolicyAction.java b/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/ManagementPolicyAction.java
new file mode 100644
index 000000000000..333177215c78
--- /dev/null
+++ b/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/ManagementPolicyAction.java
@@ -0,0 +1,70 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.storage.v2019_04_01;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/**
+ * Actions are applied to the filtered blobs when the execution condition is
+ * met.
+ */
+public class ManagementPolicyAction {
+ /**
+ * The management policy action for base blob.
+ */
+ @JsonProperty(value = "baseBlob")
+ private ManagementPolicyBaseBlob baseBlob;
+
+ /**
+ * The management policy action for snapshot.
+ */
+ @JsonProperty(value = "snapshot")
+ private ManagementPolicySnapShot snapshot;
+
+ /**
+ * Get the management policy action for base blob.
+ *
+ * @return the baseBlob value
+ */
+ public ManagementPolicyBaseBlob baseBlob() {
+ return this.baseBlob;
+ }
+
+ /**
+ * Set the management policy action for base blob.
+ *
+ * @param baseBlob the baseBlob value to set
+ * @return the ManagementPolicyAction object itself.
+ */
+ public ManagementPolicyAction withBaseBlob(ManagementPolicyBaseBlob baseBlob) {
+ this.baseBlob = baseBlob;
+ return this;
+ }
+
+ /**
+ * Get the management policy action for snapshot.
+ *
+ * @return the snapshot value
+ */
+ public ManagementPolicySnapShot snapshot() {
+ return this.snapshot;
+ }
+
+ /**
+ * Set the management policy action for snapshot.
+ *
+ * @param snapshot the snapshot value to set
+ * @return the ManagementPolicyAction object itself.
+ */
+ public ManagementPolicyAction withSnapshot(ManagementPolicySnapShot snapshot) {
+ this.snapshot = snapshot;
+ return this;
+ }
+
+}
diff --git a/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/ManagementPolicyBaseBlob.java b/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/ManagementPolicyBaseBlob.java
new file mode 100644
index 000000000000..336a5f2174d3
--- /dev/null
+++ b/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/ManagementPolicyBaseBlob.java
@@ -0,0 +1,97 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.storage.v2019_04_01;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/**
+ * Management policy action for base blob.
+ */
+public class ManagementPolicyBaseBlob {
+ /**
+ * The function to tier blobs to cool storage. Support blobs currently at
+ * Hot tier.
+ */
+ @JsonProperty(value = "tierToCool")
+ private DateAfterModification tierToCool;
+
+ /**
+ * The function to tier blobs to archive storage. Support blobs currently
+ * at Hot or Cool tier.
+ */
+ @JsonProperty(value = "tierToArchive")
+ private DateAfterModification tierToArchive;
+
+ /**
+ * The function to delete the blob.
+ */
+ @JsonProperty(value = "delete")
+ private DateAfterModification delete;
+
+ /**
+ * Get the function to tier blobs to cool storage. Support blobs currently at Hot tier.
+ *
+ * @return the tierToCool value
+ */
+ public DateAfterModification tierToCool() {
+ return this.tierToCool;
+ }
+
+ /**
+ * Set the function to tier blobs to cool storage. Support blobs currently at Hot tier.
+ *
+ * @param tierToCool the tierToCool value to set
+ * @return the ManagementPolicyBaseBlob object itself.
+ */
+ public ManagementPolicyBaseBlob withTierToCool(DateAfterModification tierToCool) {
+ this.tierToCool = tierToCool;
+ return this;
+ }
+
+ /**
+ * Get the function to tier blobs to archive storage. Support blobs currently at Hot or Cool tier.
+ *
+ * @return the tierToArchive value
+ */
+ public DateAfterModification tierToArchive() {
+ return this.tierToArchive;
+ }
+
+ /**
+ * Set the function to tier blobs to archive storage. Support blobs currently at Hot or Cool tier.
+ *
+ * @param tierToArchive the tierToArchive value to set
+ * @return the ManagementPolicyBaseBlob object itself.
+ */
+ public ManagementPolicyBaseBlob withTierToArchive(DateAfterModification tierToArchive) {
+ this.tierToArchive = tierToArchive;
+ return this;
+ }
+
+ /**
+ * Get the function to delete the blob.
+ *
+ * @return the delete value
+ */
+ public DateAfterModification delete() {
+ return this.delete;
+ }
+
+ /**
+ * Set the function to delete the blob.
+ *
+ * @param delete the delete value to set
+ * @return the ManagementPolicyBaseBlob object itself.
+ */
+ public ManagementPolicyBaseBlob withDelete(DateAfterModification delete) {
+ this.delete = delete;
+ return this;
+ }
+
+}
diff --git a/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/ManagementPolicyDefinition.java b/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/ManagementPolicyDefinition.java
new file mode 100644
index 000000000000..5df8c6adf5f2
--- /dev/null
+++ b/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/ManagementPolicyDefinition.java
@@ -0,0 +1,70 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.storage.v2019_04_01;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/**
+ * An object that defines the Lifecycle rule. Each definition is made up with a
+ * filters set and an actions set.
+ */
+public class ManagementPolicyDefinition {
+ /**
+ * An object that defines the action set.
+ */
+ @JsonProperty(value = "actions", required = true)
+ private ManagementPolicyAction actions;
+
+ /**
+ * An object that defines the filter set.
+ */
+ @JsonProperty(value = "filters")
+ private ManagementPolicyFilter filters;
+
+ /**
+ * Get an object that defines the action set.
+ *
+ * @return the actions value
+ */
+ public ManagementPolicyAction actions() {
+ return this.actions;
+ }
+
+ /**
+ * Set an object that defines the action set.
+ *
+ * @param actions the actions value to set
+ * @return the ManagementPolicyDefinition object itself.
+ */
+ public ManagementPolicyDefinition withActions(ManagementPolicyAction actions) {
+ this.actions = actions;
+ return this;
+ }
+
+ /**
+ * Get an object that defines the filter set.
+ *
+ * @return the filters value
+ */
+ public ManagementPolicyFilter filters() {
+ return this.filters;
+ }
+
+ /**
+ * Set an object that defines the filter set.
+ *
+ * @param filters the filters value to set
+ * @return the ManagementPolicyDefinition object itself.
+ */
+ public ManagementPolicyDefinition withFilters(ManagementPolicyFilter filters) {
+ this.filters = filters;
+ return this;
+ }
+
+}
diff --git a/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/ManagementPolicyFilter.java b/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/ManagementPolicyFilter.java
new file mode 100644
index 000000000000..fa579adbea6f
--- /dev/null
+++ b/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/ManagementPolicyFilter.java
@@ -0,0 +1,71 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.storage.v2019_04_01;
+
+import java.util.List;
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/**
+ * Filters limit rule actions to a subset of blobs within the storage account.
+ * If multiple filters are defined, a logical AND is performed on all filters.
+ */
+public class ManagementPolicyFilter {
+ /**
+ * An array of strings for prefixes to be match.
+ */
+ @JsonProperty(value = "prefixMatch")
+ private List prefixMatch;
+
+ /**
+ * An array of predefined enum values. Only blockBlob is supported.
+ */
+ @JsonProperty(value = "blobTypes", required = true)
+ private List blobTypes;
+
+ /**
+ * Get an array of strings for prefixes to be match.
+ *
+ * @return the prefixMatch value
+ */
+ public List prefixMatch() {
+ return this.prefixMatch;
+ }
+
+ /**
+ * Set an array of strings for prefixes to be match.
+ *
+ * @param prefixMatch the prefixMatch value to set
+ * @return the ManagementPolicyFilter object itself.
+ */
+ public ManagementPolicyFilter withPrefixMatch(List prefixMatch) {
+ this.prefixMatch = prefixMatch;
+ return this;
+ }
+
+ /**
+ * Get an array of predefined enum values. Only blockBlob is supported.
+ *
+ * @return the blobTypes value
+ */
+ public List blobTypes() {
+ return this.blobTypes;
+ }
+
+ /**
+ * Set an array of predefined enum values. Only blockBlob is supported.
+ *
+ * @param blobTypes the blobTypes value to set
+ * @return the ManagementPolicyFilter object itself.
+ */
+ public ManagementPolicyFilter withBlobTypes(List blobTypes) {
+ this.blobTypes = blobTypes;
+ return this;
+ }
+
+}
diff --git a/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/ManagementPolicyRule.java b/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/ManagementPolicyRule.java
new file mode 100644
index 000000000000..7e4085a8d600
--- /dev/null
+++ b/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/ManagementPolicyRule.java
@@ -0,0 +1,132 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.storage.v2019_04_01;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/**
+ * An object that wraps the Lifecycle rule. Each rule is uniquely defined by
+ * name.
+ */
+public class ManagementPolicyRule {
+ /**
+ * Rule is enabled if set to true.
+ */
+ @JsonProperty(value = "enabled")
+ private Boolean enabled;
+
+ /**
+ * A rule name can contain any combination of alpha numeric characters.
+ * Rule name is case-sensitive. It must be unique within a policy.
+ */
+ @JsonProperty(value = "name", required = true)
+ private String name;
+
+ /**
+ * The valid value is Lifecycle.
+ */
+ @JsonProperty(value = "type", required = true)
+ private String type;
+
+ /**
+ * An object that defines the Lifecycle rule.
+ */
+ @JsonProperty(value = "definition", required = true)
+ private ManagementPolicyDefinition definition;
+
+ /**
+ * Creates an instance of ManagementPolicyRule class.
+ * @param name a rule name can contain any combination of alpha numeric characters. Rule name is case-sensitive. It must be unique within a policy.
+ * @param definition an object that defines the Lifecycle rule.
+ */
+ public ManagementPolicyRule() {
+ type = "Lifecycle";
+ }
+
+ /**
+ * Get rule is enabled if set to true.
+ *
+ * @return the enabled value
+ */
+ public Boolean enabled() {
+ return this.enabled;
+ }
+
+ /**
+ * Set rule is enabled if set to true.
+ *
+ * @param enabled the enabled value to set
+ * @return the ManagementPolicyRule object itself.
+ */
+ public ManagementPolicyRule withEnabled(Boolean enabled) {
+ this.enabled = enabled;
+ return this;
+ }
+
+ /**
+ * Get a rule name can contain any combination of alpha numeric characters. Rule name is case-sensitive. It must be unique within a policy.
+ *
+ * @return the name value
+ */
+ public String name() {
+ return this.name;
+ }
+
+ /**
+ * Set a rule name can contain any combination of alpha numeric characters. Rule name is case-sensitive. It must be unique within a policy.
+ *
+ * @param name the name value to set
+ * @return the ManagementPolicyRule object itself.
+ */
+ public ManagementPolicyRule withName(String name) {
+ this.name = name;
+ return this;
+ }
+
+ /**
+ * Get the valid value is Lifecycle.
+ *
+ * @return the type value
+ */
+ public String type() {
+ return this.type;
+ }
+
+ /**
+ * Set the valid value is Lifecycle.
+ *
+ * @param type the type value to set
+ * @return the ManagementPolicyRule object itself.
+ */
+ public ManagementPolicyRule withType(String type) {
+ this.type = type;
+ return this;
+ }
+
+ /**
+ * Get an object that defines the Lifecycle rule.
+ *
+ * @return the definition value
+ */
+ public ManagementPolicyDefinition definition() {
+ return this.definition;
+ }
+
+ /**
+ * Set an object that defines the Lifecycle rule.
+ *
+ * @param definition the definition value to set
+ * @return the ManagementPolicyRule object itself.
+ */
+ public ManagementPolicyRule withDefinition(ManagementPolicyDefinition definition) {
+ this.definition = definition;
+ return this;
+ }
+
+}
diff --git a/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/ManagementPolicySchema.java b/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/ManagementPolicySchema.java
new file mode 100644
index 000000000000..52af0fa001b2
--- /dev/null
+++ b/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/ManagementPolicySchema.java
@@ -0,0 +1,46 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.storage.v2019_04_01;
+
+import java.util.List;
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/**
+ * The Storage Account ManagementPolicies Rules. See more details in:
+ * https://docs.microsoft.com/en-us/azure/storage/common/storage-lifecycle-managment-concepts.
+ */
+public class ManagementPolicySchema {
+ /**
+ * The Storage Account ManagementPolicies Rules. See more details in:
+ * https://docs.microsoft.com/en-us/azure/storage/common/storage-lifecycle-managment-concepts.
+ */
+ @JsonProperty(value = "rules", required = true)
+ private List rules;
+
+ /**
+ * Get the Storage Account ManagementPolicies Rules. See more details in: https://docs.microsoft.com/en-us/azure/storage/common/storage-lifecycle-managment-concepts.
+ *
+ * @return the rules value
+ */
+ public List rules() {
+ return this.rules;
+ }
+
+ /**
+ * Set the Storage Account ManagementPolicies Rules. See more details in: https://docs.microsoft.com/en-us/azure/storage/common/storage-lifecycle-managment-concepts.
+ *
+ * @param rules the rules value to set
+ * @return the ManagementPolicySchema object itself.
+ */
+ public ManagementPolicySchema withRules(List rules) {
+ this.rules = rules;
+ return this;
+ }
+
+}
diff --git a/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/ManagementPolicySnapShot.java b/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/ManagementPolicySnapShot.java
new file mode 100644
index 000000000000..fbbd78755d56
--- /dev/null
+++ b/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/ManagementPolicySnapShot.java
@@ -0,0 +1,43 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.storage.v2019_04_01;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/**
+ * Management policy action for snapshot.
+ */
+public class ManagementPolicySnapShot {
+ /**
+ * The function to delete the blob snapshot.
+ */
+ @JsonProperty(value = "delete")
+ private DateAfterCreation delete;
+
+ /**
+ * Get the function to delete the blob snapshot.
+ *
+ * @return the delete value
+ */
+ public DateAfterCreation delete() {
+ return this.delete;
+ }
+
+ /**
+ * Set the function to delete the blob snapshot.
+ *
+ * @param delete the delete value to set
+ * @return the ManagementPolicySnapShot object itself.
+ */
+ public ManagementPolicySnapShot withDelete(DateAfterCreation delete) {
+ this.delete = delete;
+ return this;
+ }
+
+}
diff --git a/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/MetricSpecification.java b/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/MetricSpecification.java
new file mode 100644
index 000000000000..01bce689beb3
--- /dev/null
+++ b/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/MetricSpecification.java
@@ -0,0 +1,252 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.storage.v2019_04_01;
+
+import java.util.List;
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/**
+ * Metric specification of operation.
+ */
+public class MetricSpecification {
+ /**
+ * Name of metric specification.
+ */
+ @JsonProperty(value = "name")
+ private String name;
+
+ /**
+ * Display name of metric specification.
+ */
+ @JsonProperty(value = "displayName")
+ private String displayName;
+
+ /**
+ * Display description of metric specification.
+ */
+ @JsonProperty(value = "displayDescription")
+ private String displayDescription;
+
+ /**
+ * Unit could be Bytes or Count.
+ */
+ @JsonProperty(value = "unit")
+ private String unit;
+
+ /**
+ * Dimensions of blobs, including blob type and access tier.
+ */
+ @JsonProperty(value = "dimensions")
+ private List dimensions;
+
+ /**
+ * Aggregation type could be Average.
+ */
+ @JsonProperty(value = "aggregationType")
+ private String aggregationType;
+
+ /**
+ * The property to decide fill gap with zero or not.
+ */
+ @JsonProperty(value = "fillGapWithZero")
+ private Boolean fillGapWithZero;
+
+ /**
+ * The category this metric specification belong to, could be Capacity.
+ */
+ @JsonProperty(value = "category")
+ private String category;
+
+ /**
+ * Account Resource Id.
+ */
+ @JsonProperty(value = "resourceIdDimensionNameOverride")
+ private String resourceIdDimensionNameOverride;
+
+ /**
+ * Get name of metric specification.
+ *
+ * @return the name value
+ */
+ public String name() {
+ return this.name;
+ }
+
+ /**
+ * Set name of metric specification.
+ *
+ * @param name the name value to set
+ * @return the MetricSpecification object itself.
+ */
+ public MetricSpecification withName(String name) {
+ this.name = name;
+ return this;
+ }
+
+ /**
+ * Get display name of metric specification.
+ *
+ * @return the displayName value
+ */
+ public String displayName() {
+ return this.displayName;
+ }
+
+ /**
+ * Set display name of metric specification.
+ *
+ * @param displayName the displayName value to set
+ * @return the MetricSpecification object itself.
+ */
+ public MetricSpecification withDisplayName(String displayName) {
+ this.displayName = displayName;
+ return this;
+ }
+
+ /**
+ * Get display description of metric specification.
+ *
+ * @return the displayDescription value
+ */
+ public String displayDescription() {
+ return this.displayDescription;
+ }
+
+ /**
+ * Set display description of metric specification.
+ *
+ * @param displayDescription the displayDescription value to set
+ * @return the MetricSpecification object itself.
+ */
+ public MetricSpecification withDisplayDescription(String displayDescription) {
+ this.displayDescription = displayDescription;
+ return this;
+ }
+
+ /**
+ * Get unit could be Bytes or Count.
+ *
+ * @return the unit value
+ */
+ public String unit() {
+ return this.unit;
+ }
+
+ /**
+ * Set unit could be Bytes or Count.
+ *
+ * @param unit the unit value to set
+ * @return the MetricSpecification object itself.
+ */
+ public MetricSpecification withUnit(String unit) {
+ this.unit = unit;
+ return this;
+ }
+
+ /**
+ * Get dimensions of blobs, including blob type and access tier.
+ *
+ * @return the dimensions value
+ */
+ public List dimensions() {
+ return this.dimensions;
+ }
+
+ /**
+ * Set dimensions of blobs, including blob type and access tier.
+ *
+ * @param dimensions the dimensions value to set
+ * @return the MetricSpecification object itself.
+ */
+ public MetricSpecification withDimensions(List dimensions) {
+ this.dimensions = dimensions;
+ return this;
+ }
+
+ /**
+ * Get aggregation type could be Average.
+ *
+ * @return the aggregationType value
+ */
+ public String aggregationType() {
+ return this.aggregationType;
+ }
+
+ /**
+ * Set aggregation type could be Average.
+ *
+ * @param aggregationType the aggregationType value to set
+ * @return the MetricSpecification object itself.
+ */
+ public MetricSpecification withAggregationType(String aggregationType) {
+ this.aggregationType = aggregationType;
+ return this;
+ }
+
+ /**
+ * Get the property to decide fill gap with zero or not.
+ *
+ * @return the fillGapWithZero value
+ */
+ public Boolean fillGapWithZero() {
+ return this.fillGapWithZero;
+ }
+
+ /**
+ * Set the property to decide fill gap with zero or not.
+ *
+ * @param fillGapWithZero the fillGapWithZero value to set
+ * @return the MetricSpecification object itself.
+ */
+ public MetricSpecification withFillGapWithZero(Boolean fillGapWithZero) {
+ this.fillGapWithZero = fillGapWithZero;
+ return this;
+ }
+
+ /**
+ * Get the category this metric specification belong to, could be Capacity.
+ *
+ * @return the category value
+ */
+ public String category() {
+ return this.category;
+ }
+
+ /**
+ * Set the category this metric specification belong to, could be Capacity.
+ *
+ * @param category the category value to set
+ * @return the MetricSpecification object itself.
+ */
+ public MetricSpecification withCategory(String category) {
+ this.category = category;
+ return this;
+ }
+
+ /**
+ * Get account Resource Id.
+ *
+ * @return the resourceIdDimensionNameOverride value
+ */
+ public String resourceIdDimensionNameOverride() {
+ return this.resourceIdDimensionNameOverride;
+ }
+
+ /**
+ * Set account Resource Id.
+ *
+ * @param resourceIdDimensionNameOverride the resourceIdDimensionNameOverride value to set
+ * @return the MetricSpecification object itself.
+ */
+ public MetricSpecification withResourceIdDimensionNameOverride(String resourceIdDimensionNameOverride) {
+ this.resourceIdDimensionNameOverride = resourceIdDimensionNameOverride;
+ return this;
+ }
+
+}
diff --git a/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/NetworkRuleSet.java b/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/NetworkRuleSet.java
new file mode 100644
index 000000000000..0f1f757b2a8d
--- /dev/null
+++ b/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/NetworkRuleSet.java
@@ -0,0 +1,127 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.storage.v2019_04_01;
+
+import java.util.List;
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/**
+ * Network rule set.
+ */
+public class NetworkRuleSet {
+ /**
+ * Specifies whether traffic is bypassed for Logging/Metrics/AzureServices.
+ * Possible values are any combination of Logging|Metrics|AzureServices
+ * (For example, "Logging, Metrics"), or None to bypass none of those
+ * traffics. Possible values include: 'None', 'Logging', 'Metrics',
+ * 'AzureServices'.
+ */
+ @JsonProperty(value = "bypass")
+ private Bypass bypass;
+
+ /**
+ * Sets the virtual network rules.
+ */
+ @JsonProperty(value = "virtualNetworkRules")
+ private List virtualNetworkRules;
+
+ /**
+ * Sets the IP ACL rules.
+ */
+ @JsonProperty(value = "ipRules")
+ private List ipRules;
+
+ /**
+ * Specifies the default action of allow or deny when no other rules match.
+ * Possible values include: 'Allow', 'Deny'.
+ */
+ @JsonProperty(value = "defaultAction", required = true)
+ private DefaultAction defaultAction;
+
+ /**
+ * Get specifies whether traffic is bypassed for Logging/Metrics/AzureServices. Possible values are any combination of Logging|Metrics|AzureServices (For example, "Logging, Metrics"), or None to bypass none of those traffics. Possible values include: 'None', 'Logging', 'Metrics', 'AzureServices'.
+ *
+ * @return the bypass value
+ */
+ public Bypass bypass() {
+ return this.bypass;
+ }
+
+ /**
+ * Set specifies whether traffic is bypassed for Logging/Metrics/AzureServices. Possible values are any combination of Logging|Metrics|AzureServices (For example, "Logging, Metrics"), or None to bypass none of those traffics. Possible values include: 'None', 'Logging', 'Metrics', 'AzureServices'.
+ *
+ * @param bypass the bypass value to set
+ * @return the NetworkRuleSet object itself.
+ */
+ public NetworkRuleSet withBypass(Bypass bypass) {
+ this.bypass = bypass;
+ return this;
+ }
+
+ /**
+ * Get sets the virtual network rules.
+ *
+ * @return the virtualNetworkRules value
+ */
+ public List virtualNetworkRules() {
+ return this.virtualNetworkRules;
+ }
+
+ /**
+ * Set sets the virtual network rules.
+ *
+ * @param virtualNetworkRules the virtualNetworkRules value to set
+ * @return the NetworkRuleSet object itself.
+ */
+ public NetworkRuleSet withVirtualNetworkRules(List virtualNetworkRules) {
+ this.virtualNetworkRules = virtualNetworkRules;
+ return this;
+ }
+
+ /**
+ * Get sets the IP ACL rules.
+ *
+ * @return the ipRules value
+ */
+ public List ipRules() {
+ return this.ipRules;
+ }
+
+ /**
+ * Set sets the IP ACL rules.
+ *
+ * @param ipRules the ipRules value to set
+ * @return the NetworkRuleSet object itself.
+ */
+ public NetworkRuleSet withIpRules(List ipRules) {
+ this.ipRules = ipRules;
+ return this;
+ }
+
+ /**
+ * Get specifies the default action of allow or deny when no other rules match. Possible values include: 'Allow', 'Deny'.
+ *
+ * @return the defaultAction value
+ */
+ public DefaultAction defaultAction() {
+ return this.defaultAction;
+ }
+
+ /**
+ * Set specifies the default action of allow or deny when no other rules match. Possible values include: 'Allow', 'Deny'.
+ *
+ * @param defaultAction the defaultAction value to set
+ * @return the NetworkRuleSet object itself.
+ */
+ public NetworkRuleSet withDefaultAction(DefaultAction defaultAction) {
+ this.defaultAction = defaultAction;
+ return this;
+ }
+
+}
diff --git a/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/Operation.java b/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/Operation.java
new file mode 100644
index 000000000000..f04e58cc6c23
--- /dev/null
+++ b/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/Operation.java
@@ -0,0 +1,40 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.storage.v2019_04_01;
+
+import com.microsoft.azure.arm.model.HasInner;
+import com.microsoft.azure.arm.resources.models.HasManager;
+import com.microsoft.azure.management.storage.v2019_04_01.implementation.StorageManager;
+import com.microsoft.azure.management.storage.v2019_04_01.implementation.OperationInner;
+
+/**
+ * Type representing Operation.
+ */
+public interface Operation extends HasInner, HasManager {
+ /**
+ * @return the display value.
+ */
+ OperationDisplay display();
+
+ /**
+ * @return the name value.
+ */
+ String name();
+
+ /**
+ * @return the origin value.
+ */
+ String origin();
+
+ /**
+ * @return the serviceSpecification value.
+ */
+ ServiceSpecification serviceSpecification();
+
+}
diff --git a/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/OperationDisplay.java b/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/OperationDisplay.java
new file mode 100644
index 000000000000..a006232eab67
--- /dev/null
+++ b/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/OperationDisplay.java
@@ -0,0 +1,121 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.storage.v2019_04_01;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/**
+ * Display metadata associated with the operation.
+ */
+public class OperationDisplay {
+ /**
+ * Service provider: Microsoft Storage.
+ */
+ @JsonProperty(value = "provider")
+ private String provider;
+
+ /**
+ * Resource on which the operation is performed etc.
+ */
+ @JsonProperty(value = "resource")
+ private String resource;
+
+ /**
+ * Type of operation: get, read, delete, etc.
+ */
+ @JsonProperty(value = "operation")
+ private String operation;
+
+ /**
+ * Description of the operation.
+ */
+ @JsonProperty(value = "description")
+ private String description;
+
+ /**
+ * Get service provider: Microsoft Storage.
+ *
+ * @return the provider value
+ */
+ public String provider() {
+ return this.provider;
+ }
+
+ /**
+ * Set service provider: Microsoft Storage.
+ *
+ * @param provider the provider value to set
+ * @return the OperationDisplay object itself.
+ */
+ public OperationDisplay withProvider(String provider) {
+ this.provider = provider;
+ return this;
+ }
+
+ /**
+ * Get resource on which the operation is performed etc.
+ *
+ * @return the resource value
+ */
+ public String resource() {
+ return this.resource;
+ }
+
+ /**
+ * Set resource on which the operation is performed etc.
+ *
+ * @param resource the resource value to set
+ * @return the OperationDisplay object itself.
+ */
+ public OperationDisplay withResource(String resource) {
+ this.resource = resource;
+ return this;
+ }
+
+ /**
+ * Get type of operation: get, read, delete, etc.
+ *
+ * @return the operation value
+ */
+ public String operation() {
+ return this.operation;
+ }
+
+ /**
+ * Set type of operation: get, read, delete, etc.
+ *
+ * @param operation the operation value to set
+ * @return the OperationDisplay object itself.
+ */
+ public OperationDisplay withOperation(String operation) {
+ this.operation = operation;
+ return this;
+ }
+
+ /**
+ * Get description of the operation.
+ *
+ * @return the description value
+ */
+ public String description() {
+ return this.description;
+ }
+
+ /**
+ * Set description of the operation.
+ *
+ * @param description the description value to set
+ * @return the OperationDisplay object itself.
+ */
+ public OperationDisplay withDescription(String description) {
+ this.description = description;
+ return this;
+ }
+
+}
diff --git a/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/Operations.java b/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/Operations.java
new file mode 100644
index 000000000000..75bd00644178
--- /dev/null
+++ b/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/Operations.java
@@ -0,0 +1,27 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.storage.v2019_04_01;
+
+import rx.Observable;
+import com.microsoft.azure.management.storage.v2019_04_01.implementation.OperationsInner;
+import com.microsoft.azure.arm.model.HasInner;
+
+/**
+ * Type representing Operations.
+ */
+public interface Operations extends HasInner {
+ /**
+ * Lists all of the available Storage Rest API operations.
+ *
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @return the observable for the request
+ */
+ Observable listAsync();
+
+}
diff --git a/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/Permissions.java b/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/Permissions.java
new file mode 100644
index 000000000000..37fa777f4660
--- /dev/null
+++ b/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/Permissions.java
@@ -0,0 +1,59 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.storage.v2019_04_01;
+
+import java.util.Collection;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.microsoft.rest.ExpandableStringEnum;
+
+/**
+ * Defines values for Permissions.
+ */
+public final class Permissions extends ExpandableStringEnum {
+ /** Static value r for Permissions. */
+ public static final Permissions R = fromString("r");
+
+ /** Static value d for Permissions. */
+ public static final Permissions D = fromString("d");
+
+ /** Static value w for Permissions. */
+ public static final Permissions W = fromString("w");
+
+ /** Static value l for Permissions. */
+ public static final Permissions L = fromString("l");
+
+ /** Static value a for Permissions. */
+ public static final Permissions A = fromString("a");
+
+ /** Static value c for Permissions. */
+ public static final Permissions C = fromString("c");
+
+ /** Static value u for Permissions. */
+ public static final Permissions U = fromString("u");
+
+ /** Static value p for Permissions. */
+ public static final Permissions P = fromString("p");
+
+ /**
+ * Creates or finds a Permissions from its string representation.
+ * @param name a name to look for
+ * @return the corresponding Permissions
+ */
+ @JsonCreator
+ public static Permissions fromString(String name) {
+ return fromString(name, Permissions.class);
+ }
+
+ /**
+ * @return known Permissions values
+ */
+ public static Collection values() {
+ return values(Permissions.class);
+ }
+}
diff --git a/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/ProvisioningState.java b/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/ProvisioningState.java
new file mode 100644
index 000000000000..256e8930c533
--- /dev/null
+++ b/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/ProvisioningState.java
@@ -0,0 +1,56 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.storage.v2019_04_01;
+
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonValue;
+
+/**
+ * Defines values for ProvisioningState.
+ */
+public enum ProvisioningState {
+ /** Enum value Creating. */
+ CREATING("Creating"),
+
+ /** Enum value ResolvingDNS. */
+ RESOLVING_DNS("ResolvingDNS"),
+
+ /** Enum value Succeeded. */
+ SUCCEEDED("Succeeded");
+
+ /** The actual serialized value for a ProvisioningState instance. */
+ private String value;
+
+ ProvisioningState(String value) {
+ this.value = value;
+ }
+
+ /**
+ * Parses a serialized value to a ProvisioningState instance.
+ *
+ * @param value the serialized value to parse.
+ * @return the parsed ProvisioningState object, or null if unable to parse.
+ */
+ @JsonCreator
+ public static ProvisioningState fromString(String value) {
+ ProvisioningState[] items = ProvisioningState.values();
+ for (ProvisioningState item : items) {
+ if (item.toString().equalsIgnoreCase(value)) {
+ return item;
+ }
+ }
+ return null;
+ }
+
+ @JsonValue
+ @Override
+ public String toString() {
+ return this.value;
+ }
+}
diff --git a/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/PublicAccess.java b/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/PublicAccess.java
new file mode 100644
index 000000000000..9c8e837adb9c
--- /dev/null
+++ b/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/PublicAccess.java
@@ -0,0 +1,56 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.storage.v2019_04_01;
+
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonValue;
+
+/**
+ * Defines values for PublicAccess.
+ */
+public enum PublicAccess {
+ /** Enum value Container. */
+ CONTAINER("Container"),
+
+ /** Enum value Blob. */
+ BLOB("Blob"),
+
+ /** Enum value None. */
+ NONE("None");
+
+ /** The actual serialized value for a PublicAccess instance. */
+ private String value;
+
+ PublicAccess(String value) {
+ this.value = value;
+ }
+
+ /**
+ * Parses a serialized value to a PublicAccess instance.
+ *
+ * @param value the serialized value to parse.
+ * @return the parsed PublicAccess object, or null if unable to parse.
+ */
+ @JsonCreator
+ public static PublicAccess fromString(String value) {
+ PublicAccess[] items = PublicAccess.values();
+ for (PublicAccess item : items) {
+ if (item.toString().equalsIgnoreCase(value)) {
+ return item;
+ }
+ }
+ return null;
+ }
+
+ @JsonValue
+ @Override
+ public String toString() {
+ return this.value;
+ }
+}
diff --git a/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/Reason.java b/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/Reason.java
new file mode 100644
index 000000000000..26a3ad063855
--- /dev/null
+++ b/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/Reason.java
@@ -0,0 +1,53 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.storage.v2019_04_01;
+
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonValue;
+
+/**
+ * Defines values for Reason.
+ */
+public enum Reason {
+ /** Enum value AccountNameInvalid. */
+ ACCOUNT_NAME_INVALID("AccountNameInvalid"),
+
+ /** Enum value AlreadyExists. */
+ ALREADY_EXISTS("AlreadyExists");
+
+ /** The actual serialized value for a Reason instance. */
+ private String value;
+
+ Reason(String value) {
+ this.value = value;
+ }
+
+ /**
+ * Parses a serialized value to a Reason instance.
+ *
+ * @param value the serialized value to parse.
+ * @return the parsed Reason object, or null if unable to parse.
+ */
+ @JsonCreator
+ public static Reason fromString(String value) {
+ Reason[] items = Reason.values();
+ for (Reason item : items) {
+ if (item.toString().equalsIgnoreCase(value)) {
+ return item;
+ }
+ }
+ return null;
+ }
+
+ @JsonValue
+ @Override
+ public String toString() {
+ return this.value;
+ }
+}
diff --git a/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/ReasonCode.java b/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/ReasonCode.java
new file mode 100644
index 000000000000..542b014393f8
--- /dev/null
+++ b/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/ReasonCode.java
@@ -0,0 +1,41 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.storage.v2019_04_01;
+
+import java.util.Collection;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.microsoft.rest.ExpandableStringEnum;
+
+/**
+ * Defines values for ReasonCode.
+ */
+public final class ReasonCode extends ExpandableStringEnum {
+ /** Static value QuotaId for ReasonCode. */
+ public static final ReasonCode QUOTA_ID = fromString("QuotaId");
+
+ /** Static value NotAvailableForSubscription for ReasonCode. */
+ public static final ReasonCode NOT_AVAILABLE_FOR_SUBSCRIPTION = fromString("NotAvailableForSubscription");
+
+ /**
+ * Creates or finds a ReasonCode from its string representation.
+ * @param name a name to look for
+ * @return the corresponding ReasonCode
+ */
+ @JsonCreator
+ public static ReasonCode fromString(String name) {
+ return fromString(name, ReasonCode.class);
+ }
+
+ /**
+ * @return known ReasonCode values
+ */
+ public static Collection values() {
+ return values(ReasonCode.class);
+ }
+}
diff --git a/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/Restriction.java b/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/Restriction.java
new file mode 100644
index 000000000000..e3577f8fdf53
--- /dev/null
+++ b/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/Restriction.java
@@ -0,0 +1,80 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.storage.v2019_04_01;
+
+import java.util.List;
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/**
+ * The restriction because of which SKU cannot be used.
+ */
+public class Restriction {
+ /**
+ * The type of restrictions. As of now only possible value for this is
+ * location.
+ */
+ @JsonProperty(value = "type", access = JsonProperty.Access.WRITE_ONLY)
+ private String type;
+
+ /**
+ * The value of restrictions. If the restriction type is set to location.
+ * This would be different locations where the SKU is restricted.
+ */
+ @JsonProperty(value = "values", access = JsonProperty.Access.WRITE_ONLY)
+ private List values;
+
+ /**
+ * The reason for the restriction. As of now this can be "QuotaId" or
+ * "NotAvailableForSubscription". Quota Id is set when the SKU has
+ * requiredQuotas parameter as the subscription does not belong to that
+ * quota. The "NotAvailableForSubscription" is related to capacity at DC.
+ * Possible values include: 'QuotaId', 'NotAvailableForSubscription'.
+ */
+ @JsonProperty(value = "reasonCode")
+ private ReasonCode reasonCode;
+
+ /**
+ * Get the type of restrictions. As of now only possible value for this is location.
+ *
+ * @return the type value
+ */
+ public String type() {
+ return this.type;
+ }
+
+ /**
+ * Get the value of restrictions. If the restriction type is set to location. This would be different locations where the SKU is restricted.
+ *
+ * @return the values value
+ */
+ public List values() {
+ return this.values;
+ }
+
+ /**
+ * Get the reason for the restriction. As of now this can be "QuotaId" or "NotAvailableForSubscription". Quota Id is set when the SKU has requiredQuotas parameter as the subscription does not belong to that quota. The "NotAvailableForSubscription" is related to capacity at DC. Possible values include: 'QuotaId', 'NotAvailableForSubscription'.
+ *
+ * @return the reasonCode value
+ */
+ public ReasonCode reasonCode() {
+ return this.reasonCode;
+ }
+
+ /**
+ * Set the reason for the restriction. As of now this can be "QuotaId" or "NotAvailableForSubscription". Quota Id is set when the SKU has requiredQuotas parameter as the subscription does not belong to that quota. The "NotAvailableForSubscription" is related to capacity at DC. Possible values include: 'QuotaId', 'NotAvailableForSubscription'.
+ *
+ * @param reasonCode the reasonCode value to set
+ * @return the Restriction object itself.
+ */
+ public Restriction withReasonCode(ReasonCode reasonCode) {
+ this.reasonCode = reasonCode;
+ return this;
+ }
+
+}
diff --git a/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/SKUCapability.java b/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/SKUCapability.java
new file mode 100644
index 000000000000..0ab5476b0536
--- /dev/null
+++ b/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/SKUCapability.java
@@ -0,0 +1,50 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.storage.v2019_04_01;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/**
+ * The capability information in the specified SKU, including file encryption,
+ * network ACLs, change notification, etc.
+ */
+public class SKUCapability {
+ /**
+ * The name of capability, The capability information in the specified SKU,
+ * including file encryption, network ACLs, change notification, etc.
+ */
+ @JsonProperty(value = "name", access = JsonProperty.Access.WRITE_ONLY)
+ private String name;
+
+ /**
+ * A string value to indicate states of given capability. Possibly 'true'
+ * or 'false'.
+ */
+ @JsonProperty(value = "value", access = JsonProperty.Access.WRITE_ONLY)
+ private String value;
+
+ /**
+ * Get the name of capability, The capability information in the specified SKU, including file encryption, network ACLs, change notification, etc.
+ *
+ * @return the name value
+ */
+ public String name() {
+ return this.name;
+ }
+
+ /**
+ * Get a string value to indicate states of given capability. Possibly 'true' or 'false'.
+ *
+ * @return the value value
+ */
+ public String value() {
+ return this.value;
+ }
+
+}
diff --git a/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/ServiceSasParameters.java b/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/ServiceSasParameters.java
new file mode 100644
index 000000000000..ff54d3c2fde3
--- /dev/null
+++ b/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/ServiceSasParameters.java
@@ -0,0 +1,493 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.storage.v2019_04_01;
+
+import org.joda.time.DateTime;
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/**
+ * The parameters to list service SAS credentials of a specific resource.
+ */
+public class ServiceSasParameters {
+ /**
+ * The canonical path to the signed resource.
+ */
+ @JsonProperty(value = "canonicalizedResource", required = true)
+ private String canonicalizedResource;
+
+ /**
+ * The signed services accessible with the service SAS. Possible values
+ * include: Blob (b), Container (c), File (f), Share (s). Possible values
+ * include: 'b', 'c', 'f', 's'.
+ */
+ @JsonProperty(value = "signedResource")
+ private SignedResource resource;
+
+ /**
+ * The signed permissions for the service SAS. Possible values include:
+ * Read (r), Write (w), Delete (d), List (l), Add (a), Create (c), Update
+ * (u) and Process (p). Possible values include: 'r', 'd', 'w', 'l', 'a',
+ * 'c', 'u', 'p'.
+ */
+ @JsonProperty(value = "signedPermission")
+ private Permissions permissions;
+
+ /**
+ * An IP address or a range of IP addresses from which to accept requests.
+ */
+ @JsonProperty(value = "signedIp")
+ private String iPAddressOrRange;
+
+ /**
+ * The protocol permitted for a request made with the account SAS. Possible
+ * values include: 'https,http', 'https'.
+ */
+ @JsonProperty(value = "signedProtocol")
+ private HttpProtocol protocols;
+
+ /**
+ * The time at which the SAS becomes valid.
+ */
+ @JsonProperty(value = "signedStart")
+ private DateTime sharedAccessStartTime;
+
+ /**
+ * The time at which the shared access signature becomes invalid.
+ */
+ @JsonProperty(value = "signedExpiry")
+ private DateTime sharedAccessExpiryTime;
+
+ /**
+ * A unique value up to 64 characters in length that correlates to an
+ * access policy specified for the container, queue, or table.
+ */
+ @JsonProperty(value = "signedIdentifier")
+ private String identifier;
+
+ /**
+ * The start of partition key.
+ */
+ @JsonProperty(value = "startPk")
+ private String partitionKeyStart;
+
+ /**
+ * The end of partition key.
+ */
+ @JsonProperty(value = "endPk")
+ private String partitionKeyEnd;
+
+ /**
+ * The start of row key.
+ */
+ @JsonProperty(value = "startRk")
+ private String rowKeyStart;
+
+ /**
+ * The end of row key.
+ */
+ @JsonProperty(value = "endRk")
+ private String rowKeyEnd;
+
+ /**
+ * The key to sign the account SAS token with.
+ */
+ @JsonProperty(value = "keyToSign")
+ private String keyToSign;
+
+ /**
+ * The response header override for cache control.
+ */
+ @JsonProperty(value = "rscc")
+ private String cacheControl;
+
+ /**
+ * The response header override for content disposition.
+ */
+ @JsonProperty(value = "rscd")
+ private String contentDisposition;
+
+ /**
+ * The response header override for content encoding.
+ */
+ @JsonProperty(value = "rsce")
+ private String contentEncoding;
+
+ /**
+ * The response header override for content language.
+ */
+ @JsonProperty(value = "rscl")
+ private String contentLanguage;
+
+ /**
+ * The response header override for content type.
+ */
+ @JsonProperty(value = "rsct")
+ private String contentType;
+
+ /**
+ * Get the canonical path to the signed resource.
+ *
+ * @return the canonicalizedResource value
+ */
+ public String canonicalizedResource() {
+ return this.canonicalizedResource;
+ }
+
+ /**
+ * Set the canonical path to the signed resource.
+ *
+ * @param canonicalizedResource the canonicalizedResource value to set
+ * @return the ServiceSasParameters object itself.
+ */
+ public ServiceSasParameters withCanonicalizedResource(String canonicalizedResource) {
+ this.canonicalizedResource = canonicalizedResource;
+ return this;
+ }
+
+ /**
+ * Get the signed services accessible with the service SAS. Possible values include: Blob (b), Container (c), File (f), Share (s). Possible values include: 'b', 'c', 'f', 's'.
+ *
+ * @return the resource value
+ */
+ public SignedResource resource() {
+ return this.resource;
+ }
+
+ /**
+ * Set the signed services accessible with the service SAS. Possible values include: Blob (b), Container (c), File (f), Share (s). Possible values include: 'b', 'c', 'f', 's'.
+ *
+ * @param resource the resource value to set
+ * @return the ServiceSasParameters object itself.
+ */
+ public ServiceSasParameters withResource(SignedResource resource) {
+ this.resource = resource;
+ return this;
+ }
+
+ /**
+ * Get the signed permissions for the service SAS. Possible values include: Read (r), Write (w), Delete (d), List (l), Add (a), Create (c), Update (u) and Process (p). Possible values include: 'r', 'd', 'w', 'l', 'a', 'c', 'u', 'p'.
+ *
+ * @return the permissions value
+ */
+ public Permissions permissions() {
+ return this.permissions;
+ }
+
+ /**
+ * Set the signed permissions for the service SAS. Possible values include: Read (r), Write (w), Delete (d), List (l), Add (a), Create (c), Update (u) and Process (p). Possible values include: 'r', 'd', 'w', 'l', 'a', 'c', 'u', 'p'.
+ *
+ * @param permissions the permissions value to set
+ * @return the ServiceSasParameters object itself.
+ */
+ public ServiceSasParameters withPermissions(Permissions permissions) {
+ this.permissions = permissions;
+ return this;
+ }
+
+ /**
+ * Get an IP address or a range of IP addresses from which to accept requests.
+ *
+ * @return the iPAddressOrRange value
+ */
+ public String iPAddressOrRange() {
+ return this.iPAddressOrRange;
+ }
+
+ /**
+ * Set an IP address or a range of IP addresses from which to accept requests.
+ *
+ * @param iPAddressOrRange the iPAddressOrRange value to set
+ * @return the ServiceSasParameters object itself.
+ */
+ public ServiceSasParameters withIPAddressOrRange(String iPAddressOrRange) {
+ this.iPAddressOrRange = iPAddressOrRange;
+ return this;
+ }
+
+ /**
+ * Get the protocol permitted for a request made with the account SAS. Possible values include: 'https,http', 'https'.
+ *
+ * @return the protocols value
+ */
+ public HttpProtocol protocols() {
+ return this.protocols;
+ }
+
+ /**
+ * Set the protocol permitted for a request made with the account SAS. Possible values include: 'https,http', 'https'.
+ *
+ * @param protocols the protocols value to set
+ * @return the ServiceSasParameters object itself.
+ */
+ public ServiceSasParameters withProtocols(HttpProtocol protocols) {
+ this.protocols = protocols;
+ return this;
+ }
+
+ /**
+ * Get the time at which the SAS becomes valid.
+ *
+ * @return the sharedAccessStartTime value
+ */
+ public DateTime sharedAccessStartTime() {
+ return this.sharedAccessStartTime;
+ }
+
+ /**
+ * Set the time at which the SAS becomes valid.
+ *
+ * @param sharedAccessStartTime the sharedAccessStartTime value to set
+ * @return the ServiceSasParameters object itself.
+ */
+ public ServiceSasParameters withSharedAccessStartTime(DateTime sharedAccessStartTime) {
+ this.sharedAccessStartTime = sharedAccessStartTime;
+ return this;
+ }
+
+ /**
+ * Get the time at which the shared access signature becomes invalid.
+ *
+ * @return the sharedAccessExpiryTime value
+ */
+ public DateTime sharedAccessExpiryTime() {
+ return this.sharedAccessExpiryTime;
+ }
+
+ /**
+ * Set the time at which the shared access signature becomes invalid.
+ *
+ * @param sharedAccessExpiryTime the sharedAccessExpiryTime value to set
+ * @return the ServiceSasParameters object itself.
+ */
+ public ServiceSasParameters withSharedAccessExpiryTime(DateTime sharedAccessExpiryTime) {
+ this.sharedAccessExpiryTime = sharedAccessExpiryTime;
+ return this;
+ }
+
+ /**
+ * Get a unique value up to 64 characters in length that correlates to an access policy specified for the container, queue, or table.
+ *
+ * @return the identifier value
+ */
+ public String identifier() {
+ return this.identifier;
+ }
+
+ /**
+ * Set a unique value up to 64 characters in length that correlates to an access policy specified for the container, queue, or table.
+ *
+ * @param identifier the identifier value to set
+ * @return the ServiceSasParameters object itself.
+ */
+ public ServiceSasParameters withIdentifier(String identifier) {
+ this.identifier = identifier;
+ return this;
+ }
+
+ /**
+ * Get the start of partition key.
+ *
+ * @return the partitionKeyStart value
+ */
+ public String partitionKeyStart() {
+ return this.partitionKeyStart;
+ }
+
+ /**
+ * Set the start of partition key.
+ *
+ * @param partitionKeyStart the partitionKeyStart value to set
+ * @return the ServiceSasParameters object itself.
+ */
+ public ServiceSasParameters withPartitionKeyStart(String partitionKeyStart) {
+ this.partitionKeyStart = partitionKeyStart;
+ return this;
+ }
+
+ /**
+ * Get the end of partition key.
+ *
+ * @return the partitionKeyEnd value
+ */
+ public String partitionKeyEnd() {
+ return this.partitionKeyEnd;
+ }
+
+ /**
+ * Set the end of partition key.
+ *
+ * @param partitionKeyEnd the partitionKeyEnd value to set
+ * @return the ServiceSasParameters object itself.
+ */
+ public ServiceSasParameters withPartitionKeyEnd(String partitionKeyEnd) {
+ this.partitionKeyEnd = partitionKeyEnd;
+ return this;
+ }
+
+ /**
+ * Get the start of row key.
+ *
+ * @return the rowKeyStart value
+ */
+ public String rowKeyStart() {
+ return this.rowKeyStart;
+ }
+
+ /**
+ * Set the start of row key.
+ *
+ * @param rowKeyStart the rowKeyStart value to set
+ * @return the ServiceSasParameters object itself.
+ */
+ public ServiceSasParameters withRowKeyStart(String rowKeyStart) {
+ this.rowKeyStart = rowKeyStart;
+ return this;
+ }
+
+ /**
+ * Get the end of row key.
+ *
+ * @return the rowKeyEnd value
+ */
+ public String rowKeyEnd() {
+ return this.rowKeyEnd;
+ }
+
+ /**
+ * Set the end of row key.
+ *
+ * @param rowKeyEnd the rowKeyEnd value to set
+ * @return the ServiceSasParameters object itself.
+ */
+ public ServiceSasParameters withRowKeyEnd(String rowKeyEnd) {
+ this.rowKeyEnd = rowKeyEnd;
+ return this;
+ }
+
+ /**
+ * Get the key to sign the account SAS token with.
+ *
+ * @return the keyToSign value
+ */
+ public String keyToSign() {
+ return this.keyToSign;
+ }
+
+ /**
+ * Set the key to sign the account SAS token with.
+ *
+ * @param keyToSign the keyToSign value to set
+ * @return the ServiceSasParameters object itself.
+ */
+ public ServiceSasParameters withKeyToSign(String keyToSign) {
+ this.keyToSign = keyToSign;
+ return this;
+ }
+
+ /**
+ * Get the response header override for cache control.
+ *
+ * @return the cacheControl value
+ */
+ public String cacheControl() {
+ return this.cacheControl;
+ }
+
+ /**
+ * Set the response header override for cache control.
+ *
+ * @param cacheControl the cacheControl value to set
+ * @return the ServiceSasParameters object itself.
+ */
+ public ServiceSasParameters withCacheControl(String cacheControl) {
+ this.cacheControl = cacheControl;
+ return this;
+ }
+
+ /**
+ * Get the response header override for content disposition.
+ *
+ * @return the contentDisposition value
+ */
+ public String contentDisposition() {
+ return this.contentDisposition;
+ }
+
+ /**
+ * Set the response header override for content disposition.
+ *
+ * @param contentDisposition the contentDisposition value to set
+ * @return the ServiceSasParameters object itself.
+ */
+ public ServiceSasParameters withContentDisposition(String contentDisposition) {
+ this.contentDisposition = contentDisposition;
+ return this;
+ }
+
+ /**
+ * Get the response header override for content encoding.
+ *
+ * @return the contentEncoding value
+ */
+ public String contentEncoding() {
+ return this.contentEncoding;
+ }
+
+ /**
+ * Set the response header override for content encoding.
+ *
+ * @param contentEncoding the contentEncoding value to set
+ * @return the ServiceSasParameters object itself.
+ */
+ public ServiceSasParameters withContentEncoding(String contentEncoding) {
+ this.contentEncoding = contentEncoding;
+ return this;
+ }
+
+ /**
+ * Get the response header override for content language.
+ *
+ * @return the contentLanguage value
+ */
+ public String contentLanguage() {
+ return this.contentLanguage;
+ }
+
+ /**
+ * Set the response header override for content language.
+ *
+ * @param contentLanguage the contentLanguage value to set
+ * @return the ServiceSasParameters object itself.
+ */
+ public ServiceSasParameters withContentLanguage(String contentLanguage) {
+ this.contentLanguage = contentLanguage;
+ return this;
+ }
+
+ /**
+ * Get the response header override for content type.
+ *
+ * @return the contentType value
+ */
+ public String contentType() {
+ return this.contentType;
+ }
+
+ /**
+ * Set the response header override for content type.
+ *
+ * @param contentType the contentType value to set
+ * @return the ServiceSasParameters object itself.
+ */
+ public ServiceSasParameters withContentType(String contentType) {
+ this.contentType = contentType;
+ return this;
+ }
+
+}
diff --git a/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/ServiceSpecification.java b/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/ServiceSpecification.java
new file mode 100644
index 000000000000..dff308992681
--- /dev/null
+++ b/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/ServiceSpecification.java
@@ -0,0 +1,44 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.storage.v2019_04_01;
+
+import java.util.List;
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/**
+ * One property of operation, include metric specifications.
+ */
+public class ServiceSpecification {
+ /**
+ * Metric specifications of operation.
+ */
+ @JsonProperty(value = "metricSpecifications")
+ private List metricSpecifications;
+
+ /**
+ * Get metric specifications of operation.
+ *
+ * @return the metricSpecifications value
+ */
+ public List metricSpecifications() {
+ return this.metricSpecifications;
+ }
+
+ /**
+ * Set metric specifications of operation.
+ *
+ * @param metricSpecifications the metricSpecifications value to set
+ * @return the ServiceSpecification object itself.
+ */
+ public ServiceSpecification withMetricSpecifications(List metricSpecifications) {
+ this.metricSpecifications = metricSpecifications;
+ return this;
+ }
+
+}
diff --git a/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/Services.java b/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/Services.java
new file mode 100644
index 000000000000..245f204876a5
--- /dev/null
+++ b/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/Services.java
@@ -0,0 +1,47 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.storage.v2019_04_01;
+
+import java.util.Collection;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.microsoft.rest.ExpandableStringEnum;
+
+/**
+ * Defines values for Services.
+ */
+public final class Services extends ExpandableStringEnum {
+ /** Static value b for Services. */
+ public static final Services B = fromString("b");
+
+ /** Static value q for Services. */
+ public static final Services Q = fromString("q");
+
+ /** Static value t for Services. */
+ public static final Services T = fromString("t");
+
+ /** Static value f for Services. */
+ public static final Services F = fromString("f");
+
+ /**
+ * Creates or finds a Services from its string representation.
+ * @param name a name to look for
+ * @return the corresponding Services
+ */
+ @JsonCreator
+ public static Services fromString(String name) {
+ return fromString(name, Services.class);
+ }
+
+ /**
+ * @return known Services values
+ */
+ public static Collection values() {
+ return values(Services.class);
+ }
+}
diff --git a/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/SignedResource.java b/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/SignedResource.java
new file mode 100644
index 000000000000..81c2d41fdde3
--- /dev/null
+++ b/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/SignedResource.java
@@ -0,0 +1,47 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.storage.v2019_04_01;
+
+import java.util.Collection;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.microsoft.rest.ExpandableStringEnum;
+
+/**
+ * Defines values for SignedResource.
+ */
+public final class SignedResource extends ExpandableStringEnum {
+ /** Static value b for SignedResource. */
+ public static final SignedResource B = fromString("b");
+
+ /** Static value c for SignedResource. */
+ public static final SignedResource C = fromString("c");
+
+ /** Static value f for SignedResource. */
+ public static final SignedResource F = fromString("f");
+
+ /** Static value s for SignedResource. */
+ public static final SignedResource S = fromString("s");
+
+ /**
+ * Creates or finds a SignedResource from its string representation.
+ * @param name a name to look for
+ * @return the corresponding SignedResource
+ */
+ @JsonCreator
+ public static SignedResource fromString(String name) {
+ return fromString(name, SignedResource.class);
+ }
+
+ /**
+ * @return known SignedResource values
+ */
+ public static Collection values() {
+ return values(SignedResource.class);
+ }
+}
diff --git a/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/SignedResourceTypes.java b/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/SignedResourceTypes.java
new file mode 100644
index 000000000000..ad336f0390a5
--- /dev/null
+++ b/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/SignedResourceTypes.java
@@ -0,0 +1,44 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.storage.v2019_04_01;
+
+import java.util.Collection;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.microsoft.rest.ExpandableStringEnum;
+
+/**
+ * Defines values for SignedResourceTypes.
+ */
+public final class SignedResourceTypes extends ExpandableStringEnum {
+ /** Static value s for SignedResourceTypes. */
+ public static final SignedResourceTypes S = fromString("s");
+
+ /** Static value c for SignedResourceTypes. */
+ public static final SignedResourceTypes C = fromString("c");
+
+ /** Static value o for SignedResourceTypes. */
+ public static final SignedResourceTypes O = fromString("o");
+
+ /**
+ * Creates or finds a SignedResourceTypes from its string representation.
+ * @param name a name to look for
+ * @return the corresponding SignedResourceTypes
+ */
+ @JsonCreator
+ public static SignedResourceTypes fromString(String name) {
+ return fromString(name, SignedResourceTypes.class);
+ }
+
+ /**
+ * @return known SignedResourceTypes values
+ */
+ public static Collection values() {
+ return values(SignedResourceTypes.class);
+ }
+}
diff --git a/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/Sku.java b/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/Sku.java
new file mode 100644
index 000000000000..f84cb612bf3a
--- /dev/null
+++ b/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/Sku.java
@@ -0,0 +1,56 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.storage.v2019_04_01;
+
+import com.microsoft.azure.arm.model.HasInner;
+import com.microsoft.azure.management.storage.v2019_04_01.implementation.SkuInner;
+import com.microsoft.azure.arm.resources.models.HasManager;
+import com.microsoft.azure.management.storage.v2019_04_01.implementation.StorageManager;
+import java.util.List;
+
+/**
+ * Type representing Sku.
+ */
+public interface Sku extends HasInner, HasManager {
+ /**
+ * @return the capabilities value.
+ */
+ List capabilities();
+
+ /**
+ * @return the kind value.
+ */
+ Kind kind();
+
+ /**
+ * @return the locations value.
+ */
+ List locations();
+
+ /**
+ * @return the name value.
+ */
+ SkuName name();
+
+ /**
+ * @return the resourceType value.
+ */
+ String resourceType();
+
+ /**
+ * @return the restrictions value.
+ */
+ List restrictions();
+
+ /**
+ * @return the tier value.
+ */
+ SkuTier tier();
+
+}
diff --git a/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/SkuName.java b/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/SkuName.java
new file mode 100644
index 000000000000..6e64adb6dfe9
--- /dev/null
+++ b/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/SkuName.java
@@ -0,0 +1,59 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.storage.v2019_04_01;
+
+import java.util.Collection;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.microsoft.rest.ExpandableStringEnum;
+
+/**
+ * Defines values for SkuName.
+ */
+public final class SkuName extends ExpandableStringEnum {
+ /** Static value Standard_LRS for SkuName. */
+ public static final SkuName STANDARD_LRS = fromString("Standard_LRS");
+
+ /** Static value Standard_GRS for SkuName. */
+ public static final SkuName STANDARD_GRS = fromString("Standard_GRS");
+
+ /** Static value Standard_RAGRS for SkuName. */
+ public static final SkuName STANDARD_RAGRS = fromString("Standard_RAGRS");
+
+ /** Static value Standard_ZRS for SkuName. */
+ public static final SkuName STANDARD_ZRS = fromString("Standard_ZRS");
+
+ /** Static value Premium_LRS for SkuName. */
+ public static final SkuName PREMIUM_LRS = fromString("Premium_LRS");
+
+ /** Static value Premium_ZRS for SkuName. */
+ public static final SkuName PREMIUM_ZRS = fromString("Premium_ZRS");
+
+ /** Static value Standard_GZRS for SkuName. */
+ public static final SkuName STANDARD_GZRS = fromString("Standard_GZRS");
+
+ /** Static value Standard_RAGZRS for SkuName. */
+ public static final SkuName STANDARD_RAGZRS = fromString("Standard_RAGZRS");
+
+ /**
+ * Creates or finds a SkuName from its string representation.
+ * @param name a name to look for
+ * @return the corresponding SkuName
+ */
+ @JsonCreator
+ public static SkuName fromString(String name) {
+ return fromString(name, SkuName.class);
+ }
+
+ /**
+ * @return known SkuName values
+ */
+ public static Collection values() {
+ return values(SkuName.class);
+ }
+}
diff --git a/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/SkuTier.java b/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/SkuTier.java
new file mode 100644
index 000000000000..92395e5712b0
--- /dev/null
+++ b/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/SkuTier.java
@@ -0,0 +1,53 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.storage.v2019_04_01;
+
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonValue;
+
+/**
+ * Defines values for SkuTier.
+ */
+public enum SkuTier {
+ /** Enum value Standard. */
+ STANDARD("Standard"),
+
+ /** Enum value Premium. */
+ PREMIUM("Premium");
+
+ /** The actual serialized value for a SkuTier instance. */
+ private String value;
+
+ SkuTier(String value) {
+ this.value = value;
+ }
+
+ /**
+ * Parses a serialized value to a SkuTier instance.
+ *
+ * @param value the serialized value to parse.
+ * @return the parsed SkuTier object, or null if unable to parse.
+ */
+ @JsonCreator
+ public static SkuTier fromString(String value) {
+ SkuTier[] items = SkuTier.values();
+ for (SkuTier item : items) {
+ if (item.toString().equalsIgnoreCase(value)) {
+ return item;
+ }
+ }
+ return null;
+ }
+
+ @JsonValue
+ @Override
+ public String toString() {
+ return this.value;
+ }
+}
diff --git a/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/Skus.java b/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/Skus.java
new file mode 100644
index 000000000000..160c9c3e124c
--- /dev/null
+++ b/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/Skus.java
@@ -0,0 +1,19 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.storage.v2019_04_01;
+
+import com.microsoft.azure.arm.collection.SupportsListing;
+import com.microsoft.azure.management.storage.v2019_04_01.implementation.SkusInner;
+import com.microsoft.azure.arm.model.HasInner;
+
+/**
+ * Type representing Skus.
+ */
+public interface Skus extends SupportsListing, HasInner {
+}
diff --git a/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/State.java b/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/State.java
new file mode 100644
index 000000000000..21f0f87ba3e5
--- /dev/null
+++ b/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/State.java
@@ -0,0 +1,62 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.storage.v2019_04_01;
+
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonValue;
+
+/**
+ * Defines values for State.
+ */
+public enum State {
+ /** Enum value provisioning. */
+ PROVISIONING("provisioning"),
+
+ /** Enum value deprovisioning. */
+ DEPROVISIONING("deprovisioning"),
+
+ /** Enum value succeeded. */
+ SUCCEEDED("succeeded"),
+
+ /** Enum value failed. */
+ FAILED("failed"),
+
+ /** Enum value networkSourceDeleted. */
+ NETWORK_SOURCE_DELETED("networkSourceDeleted");
+
+ /** The actual serialized value for a State instance. */
+ private String value;
+
+ State(String value) {
+ this.value = value;
+ }
+
+ /**
+ * Parses a serialized value to a State instance.
+ *
+ * @param value the serialized value to parse.
+ * @return the parsed State object, or null if unable to parse.
+ */
+ @JsonCreator
+ public static State fromString(String value) {
+ State[] items = State.values();
+ for (State item : items) {
+ if (item.toString().equalsIgnoreCase(value)) {
+ return item;
+ }
+ }
+ return null;
+ }
+
+ @JsonValue
+ @Override
+ public String toString() {
+ return this.value;
+ }
+}
diff --git a/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/StorageAccount.java b/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/StorageAccount.java
new file mode 100644
index 000000000000..9ef3b5f7cce6
--- /dev/null
+++ b/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/StorageAccount.java
@@ -0,0 +1,403 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.storage.v2019_04_01;
+
+import com.microsoft.azure.arm.model.HasInner;
+import com.microsoft.azure.arm.resources.models.Resource;
+import com.microsoft.azure.arm.resources.models.GroupableResourceCore;
+import com.microsoft.azure.arm.resources.models.HasResourceGroup;
+import com.microsoft.azure.arm.model.Refreshable;
+import com.microsoft.azure.arm.model.Updatable;
+import com.microsoft.azure.arm.model.Appliable;
+import com.microsoft.azure.arm.model.Creatable;
+import com.microsoft.azure.arm.resources.models.HasManager;
+import com.microsoft.azure.management.storage.v2019_04_01.implementation.StorageManager;
+import com.microsoft.azure.management.storage.v2019_04_01.implementation.SkuInner;
+import org.joda.time.DateTime;
+import com.microsoft.azure.management.storage.v2019_04_01.implementation.StorageAccountInner;
+
+/**
+ * Type representing StorageAccount.
+ */
+public interface StorageAccount extends HasInner, Resource, GroupableResourceCore, HasResourceGroup, Refreshable, Updatable, HasManager {
+ /**
+ * @return the accessTier value.
+ */
+ AccessTier accessTier();
+
+ /**
+ * @return the creationTime value.
+ */
+ DateTime creationTime();
+
+ /**
+ * @return the customDomain value.
+ */
+ CustomDomain customDomain();
+
+ /**
+ * @return the enableAzureFilesAadIntegration value.
+ */
+ Boolean enableAzureFilesAadIntegration();
+
+ /**
+ * @return the enableHttpsTrafficOnly value.
+ */
+ Boolean enableHttpsTrafficOnly();
+
+ /**
+ * @return the encryption value.
+ */
+ Encryption encryption();
+
+ /**
+ * @return the failoverInProgress value.
+ */
+ Boolean failoverInProgress();
+
+ /**
+ * @return the geoReplicationStats value.
+ */
+ GeoReplicationStats geoReplicationStats();
+
+ /**
+ * @return the identity value.
+ */
+ Identity identity();
+
+ /**
+ * @return the isHnsEnabled value.
+ */
+ Boolean isHnsEnabled();
+
+ /**
+ * @return the kind value.
+ */
+ Kind kind();
+
+ /**
+ * @return the lastGeoFailoverTime value.
+ */
+ DateTime lastGeoFailoverTime();
+
+ /**
+ * @return the networkRuleSet value.
+ */
+ NetworkRuleSet networkRuleSet();
+
+ /**
+ * @return the primaryEndpoints value.
+ */
+ Endpoints primaryEndpoints();
+
+ /**
+ * @return the primaryLocation value.
+ */
+ String primaryLocation();
+
+ /**
+ * @return the provisioningState value.
+ */
+ ProvisioningState provisioningState();
+
+ /**
+ * @return the secondaryEndpoints value.
+ */
+ Endpoints secondaryEndpoints();
+
+ /**
+ * @return the secondaryLocation value.
+ */
+ String secondaryLocation();
+
+ /**
+ * @return the sku value.
+ */
+ Sku sku();
+
+ /**
+ * @return the statusOfPrimary value.
+ */
+ AccountStatus statusOfPrimary();
+
+ /**
+ * @return the statusOfSecondary value.
+ */
+ AccountStatus statusOfSecondary();
+
+ /**
+ * The entirety of the StorageAccount definition.
+ */
+ interface Definition extends DefinitionStages.Blank, DefinitionStages.WithGroup, DefinitionStages.WithKind, DefinitionStages.WithSku, DefinitionStages.WithCreate {
+ }
+
+ /**
+ * Grouping of StorageAccount definition stages.
+ */
+ interface DefinitionStages {
+ /**
+ * The first stage of a StorageAccount definition.
+ */
+ interface Blank extends GroupableResourceCore.DefinitionWithRegion {
+ }
+
+ /**
+ * The stage of the StorageAccount definition allowing to specify the resource group.
+ */
+ interface WithGroup extends GroupableResourceCore.DefinitionStages.WithGroup {
+ }
+
+ /**
+ * The stage of the storageaccount definition allowing to specify Kind.
+ */
+ interface WithKind {
+ /**
+ * Specifies kind.
+ * @param kind Required. Indicates the type of storage account. Possible values include: 'Storage', 'StorageV2', 'BlobStorage', 'FileStorage', 'BlockBlobStorage'
+ * @return the next definition stage
+*/
+ WithSku withKind(Kind kind);
+ }
+
+ /**
+ * The stage of the storageaccount definition allowing to specify Sku.
+ */
+ interface WithSku {
+ /**
+ * Specifies sku.
+ * @param sku Required. Gets or sets the SKU name
+ * @return the next definition stage
+*/
+ WithCreate withSku(SkuInner sku);
+ }
+
+ /**
+ * The stage of the storageaccount definition allowing to specify AccessTier.
+ */
+ interface WithAccessTier {
+ /**
+ * Specifies accessTier.
+ * @param accessTier Required for storage accounts where kind = BlobStorage. The access tier used for billing. Possible values include: 'Hot', 'Cool'
+ * @return the next definition stage
+ */
+ WithCreate withAccessTier(AccessTier accessTier);
+ }
+
+ /**
+ * The stage of the storageaccount definition allowing to specify CustomDomain.
+ */
+ interface WithCustomDomain {
+ /**
+ * Specifies customDomain.
+ * @param customDomain 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 next definition stage
+ */
+ WithCreate withCustomDomain(CustomDomain customDomain);
+ }
+
+ /**
+ * The stage of the storageaccount definition allowing to specify EnableAzureFilesAadIntegration.
+ */
+ interface WithEnableAzureFilesAadIntegration {
+ /**
+ * Specifies enableAzureFilesAadIntegration.
+ * @param enableAzureFilesAadIntegration Enables Azure Files AAD Integration for SMB if sets to true
+ * @return the next definition stage
+ */
+ WithCreate withEnableAzureFilesAadIntegration(Boolean enableAzureFilesAadIntegration);
+ }
+
+ /**
+ * The stage of the storageaccount definition allowing to specify EnableHttpsTrafficOnly.
+ */
+ interface WithEnableHttpsTrafficOnly {
+ /**
+ * Specifies enableHttpsTrafficOnly.
+ * @param enableHttpsTrafficOnly Allows https traffic only to storage service if sets to true
+ * @return the next definition stage
+ */
+ WithCreate withEnableHttpsTrafficOnly(Boolean enableHttpsTrafficOnly);
+ }
+
+ /**
+ * The stage of the storageaccount definition allowing to specify Encryption.
+ */
+ interface WithEncryption {
+ /**
+ * Specifies encryption.
+ * @param encryption Provides the encryption settings on the account. If left unspecified the account encryption settings will remain the same. The default setting is unencrypted
+ * @return the next definition stage
+ */
+ WithCreate withEncryption(Encryption encryption);
+ }
+
+ /**
+ * The stage of the storageaccount definition allowing to specify Identity.
+ */
+ interface WithIdentity {
+ /**
+ * Specifies identity.
+ * @param identity The identity of the resource
+ * @return the next definition stage
+ */
+ WithCreate withIdentity(Identity identity);
+ }
+
+ /**
+ * The stage of the storageaccount definition allowing to specify IsHnsEnabled.
+ */
+ interface WithIsHnsEnabled {
+ /**
+ * Specifies isHnsEnabled.
+ * @param isHnsEnabled Account HierarchicalNamespace enabled if sets to true
+ * @return the next definition stage
+ */
+ WithCreate withIsHnsEnabled(Boolean isHnsEnabled);
+ }
+
+ /**
+ * The stage of the storageaccount definition allowing to specify NetworkRuleSet.
+ */
+ interface WithNetworkRuleSet {
+ /**
+ * Specifies networkRuleSet.
+ * @param networkRuleSet Network rule set
+ * @return the next definition stage
+ */
+ WithCreate withNetworkRuleSet(NetworkRuleSet networkRuleSet);
+ }
+
+ /**
+ * The stage of the definition which contains all the minimum required inputs for
+ * the resource to be created (via {@link WithCreate#create()}), but also allows
+ * for any other optional settings to be specified.
+ */
+ interface WithCreate extends Creatable, Resource.DefinitionWithTags, DefinitionStages.WithAccessTier, DefinitionStages.WithCustomDomain, DefinitionStages.WithEnableAzureFilesAadIntegration, DefinitionStages.WithEnableHttpsTrafficOnly, DefinitionStages.WithEncryption, DefinitionStages.WithIdentity, DefinitionStages.WithIsHnsEnabled, DefinitionStages.WithNetworkRuleSet {
+ }
+ }
+ /**
+ * The template for a StorageAccount update operation, containing all the settings that can be modified.
+ */
+ interface Update extends Appliable, Resource.UpdateWithTags, UpdateStages.WithAccessTier, UpdateStages.WithCustomDomain, UpdateStages.WithEnableAzureFilesAadIntegration, UpdateStages.WithEnableHttpsTrafficOnly, UpdateStages.WithEncryption, UpdateStages.WithIdentity, UpdateStages.WithKind, UpdateStages.WithNetworkRuleSet, UpdateStages.WithSku {
+ }
+
+ /**
+ * Grouping of StorageAccount update stages.
+ */
+ interface UpdateStages {
+ /**
+ * The stage of the storageaccount update allowing to specify AccessTier.
+ */
+ interface WithAccessTier {
+ /**
+ * Specifies accessTier.
+ * @param accessTier Required for storage accounts where kind = BlobStorage. The access tier used for billing. Possible values include: 'Hot', 'Cool'
+ * @return the next update stage
+ */
+ Update withAccessTier(AccessTier accessTier);
+ }
+
+ /**
+ * The stage of the storageaccount update allowing to specify CustomDomain.
+ */
+ interface WithCustomDomain {
+ /**
+ * Specifies customDomain.
+ * @param customDomain 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 next update stage
+ */
+ Update withCustomDomain(CustomDomain customDomain);
+ }
+
+ /**
+ * The stage of the storageaccount update allowing to specify EnableAzureFilesAadIntegration.
+ */
+ interface WithEnableAzureFilesAadIntegration {
+ /**
+ * Specifies enableAzureFilesAadIntegration.
+ * @param enableAzureFilesAadIntegration Enables Azure Files AAD Integration for SMB if sets to true
+ * @return the next update stage
+ */
+ Update withEnableAzureFilesAadIntegration(Boolean enableAzureFilesAadIntegration);
+ }
+
+ /**
+ * The stage of the storageaccount update allowing to specify EnableHttpsTrafficOnly.
+ */
+ interface WithEnableHttpsTrafficOnly {
+ /**
+ * Specifies enableHttpsTrafficOnly.
+ * @param enableHttpsTrafficOnly Allows https traffic only to storage service if sets to true
+ * @return the next update stage
+ */
+ Update withEnableHttpsTrafficOnly(Boolean enableHttpsTrafficOnly);
+ }
+
+ /**
+ * The stage of the storageaccount update allowing to specify Encryption.
+ */
+ interface WithEncryption {
+ /**
+ * Specifies encryption.
+ * @param encryption Provides the encryption settings on the account. The default setting is unencrypted
+ * @return the next update stage
+ */
+ Update withEncryption(Encryption encryption);
+ }
+
+ /**
+ * The stage of the storageaccount update allowing to specify Identity.
+ */
+ interface WithIdentity {
+ /**
+ * Specifies identity.
+ * @param identity The identity of the resource
+ * @return the next update stage
+ */
+ Update withIdentity(Identity identity);
+ }
+
+ /**
+ * The stage of the storageaccount update allowing to specify Kind.
+ */
+ interface WithKind {
+ /**
+ * Specifies kind.
+ * @param kind Optional. Indicates the type of storage account. Currently only StorageV2 value supported by server. Possible values include: 'Storage', 'StorageV2', 'BlobStorage', 'FileStorage', 'BlockBlobStorage'
+ * @return the next update stage
+ */
+ Update withKind(Kind kind);
+ }
+
+ /**
+ * The stage of the storageaccount update allowing to specify NetworkRuleSet.
+ */
+ interface WithNetworkRuleSet {
+ /**
+ * Specifies networkRuleSet.
+ * @param networkRuleSet Network rule set
+ * @return the next update stage
+ */
+ Update withNetworkRuleSet(NetworkRuleSet networkRuleSet);
+ }
+
+ /**
+ * The stage of the storageaccount update allowing to specify Sku.
+ */
+ interface WithSku {
+ /**
+ * Specifies sku.
+ * @param sku Gets or sets the SKU name. Note that the SKU name cannot be updated to Standard_ZRS, Premium_LRS or Premium_ZRS, nor can accounts of those SKU names be updated to any other value
+ * @return the next update stage
+ */
+ Update withSku(SkuInner sku);
+ }
+
+ }
+}
diff --git a/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/StorageAccountCheckNameAvailabilityParameters.java b/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/StorageAccountCheckNameAvailabilityParameters.java
new file mode 100644
index 000000000000..2b2af66e6ecd
--- /dev/null
+++ b/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/StorageAccountCheckNameAvailabilityParameters.java
@@ -0,0 +1,77 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.storage.v2019_04_01;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/**
+ * The parameters used to check the availability of the storage account name.
+ */
+public class StorageAccountCheckNameAvailabilityParameters {
+ /**
+ * The storage account name.
+ */
+ @JsonProperty(value = "name", required = true)
+ private String name;
+
+ /**
+ * The type of resource, Microsoft.Storage/storageAccounts.
+ */
+ @JsonProperty(value = "type", required = true)
+ private String type;
+
+ /**
+ * Creates an instance of StorageAccountCheckNameAvailabilityParameters class.
+ * @param name the storage account name.
+ */
+ public StorageAccountCheckNameAvailabilityParameters() {
+ type = "Microsoft.Storage/storageAccounts";
+ }
+
+ /**
+ * Get the storage account name.
+ *
+ * @return the name value
+ */
+ public String name() {
+ return this.name;
+ }
+
+ /**
+ * Set the storage account name.
+ *
+ * @param name the name value to set
+ * @return the StorageAccountCheckNameAvailabilityParameters object itself.
+ */
+ public StorageAccountCheckNameAvailabilityParameters withName(String name) {
+ this.name = name;
+ return this;
+ }
+
+ /**
+ * Get the type of resource, Microsoft.Storage/storageAccounts.
+ *
+ * @return the type value
+ */
+ public String type() {
+ return this.type;
+ }
+
+ /**
+ * Set the type of resource, Microsoft.Storage/storageAccounts.
+ *
+ * @param type the type value to set
+ * @return the StorageAccountCheckNameAvailabilityParameters object itself.
+ */
+ public StorageAccountCheckNameAvailabilityParameters withType(String type) {
+ this.type = type;
+ return this;
+ }
+
+}
diff --git a/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/StorageAccountCreateParameters.java b/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/StorageAccountCreateParameters.java
new file mode 100644
index 000000000000..a273d1dd9988
--- /dev/null
+++ b/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/StorageAccountCreateParameters.java
@@ -0,0 +1,349 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.storage.v2019_04_01;
+
+import com.microsoft.azure.management.storage.v2019_04_01.implementation.SkuInner;
+import java.util.Map;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.microsoft.rest.serializer.JsonFlatten;
+
+/**
+ * The parameters used when creating a storage account.
+ */
+@JsonFlatten
+public class StorageAccountCreateParameters {
+ /**
+ * Required. Gets or sets the SKU name.
+ */
+ @JsonProperty(value = "sku", required = true)
+ private SkuInner sku;
+
+ /**
+ * Required. Indicates the type of storage account. Possible values
+ * include: 'Storage', 'StorageV2', 'BlobStorage', 'FileStorage',
+ * 'BlockBlobStorage'.
+ */
+ @JsonProperty(value = "kind", required = true)
+ private Kind kind;
+
+ /**
+ * Required. Gets or sets the location of the resource. This will be one of
+ * the supported and registered Azure Geo Regions (e.g. West US, East US,
+ * Southeast Asia, etc.). The geo region of a resource cannot be changed
+ * once it is created, but if an identical geo region is specified on
+ * update, the request will succeed.
+ */
+ @JsonProperty(value = "location", required = true)
+ private String location;
+
+ /**
+ * Gets or sets a list of key value pairs that describe the resource. These
+ * tags can be used for viewing and grouping this resource (across resource
+ * groups). A maximum of 15 tags can be provided for a resource. Each tag
+ * must have a key with a length no greater than 128 characters and a value
+ * with a length no greater than 256 characters.
+ */
+ @JsonProperty(value = "tags")
+ private Map tags;
+
+ /**
+ * The identity of the resource.
+ */
+ @JsonProperty(value = "identity")
+ private Identity identity;
+
+ /**
+ * 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 = "properties.customDomain")
+ private CustomDomain customDomain;
+
+ /**
+ * Provides the encryption settings on the account. If left unspecified the
+ * account encryption settings will remain the same. The default setting is
+ * unencrypted.
+ */
+ @JsonProperty(value = "properties.encryption")
+ private Encryption encryption;
+
+ /**
+ * Network rule set.
+ */
+ @JsonProperty(value = "properties.networkAcls")
+ private NetworkRuleSet networkRuleSet;
+
+ /**
+ * Required for storage accounts where kind = BlobStorage. The access tier
+ * used for billing. Possible values include: 'Hot', 'Cool'.
+ */
+ @JsonProperty(value = "properties.accessTier")
+ private AccessTier accessTier;
+
+ /**
+ * Enables Azure Files AAD Integration for SMB if sets to true.
+ */
+ @JsonProperty(value = "properties.azureFilesAadIntegration")
+ private Boolean enableAzureFilesAadIntegration;
+
+ /**
+ * Allows https traffic only to storage service if sets to true.
+ */
+ @JsonProperty(value = "properties.supportsHttpsTrafficOnly")
+ private Boolean enableHttpsTrafficOnly;
+
+ /**
+ * Account HierarchicalNamespace enabled if sets to true.
+ */
+ @JsonProperty(value = "properties.isHnsEnabled")
+ private Boolean isHnsEnabled;
+
+ /**
+ * Get required. Gets or sets the SKU name.
+ *
+ * @return the sku value
+ */
+ public SkuInner sku() {
+ return this.sku;
+ }
+
+ /**
+ * Set required. Gets or sets the SKU name.
+ *
+ * @param sku the sku value to set
+ * @return the StorageAccountCreateParameters object itself.
+ */
+ public StorageAccountCreateParameters withSku(SkuInner sku) {
+ this.sku = sku;
+ return this;
+ }
+
+ /**
+ * Get required. Indicates the type of storage account. Possible values include: 'Storage', 'StorageV2', 'BlobStorage', 'FileStorage', 'BlockBlobStorage'.
+ *
+ * @return the kind value
+ */
+ public Kind kind() {
+ return this.kind;
+ }
+
+ /**
+ * Set required. Indicates the type of storage account. Possible values include: 'Storage', 'StorageV2', 'BlobStorage', 'FileStorage', 'BlockBlobStorage'.
+ *
+ * @param kind the kind value to set
+ * @return the StorageAccountCreateParameters object itself.
+ */
+ public StorageAccountCreateParameters withKind(Kind kind) {
+ this.kind = kind;
+ return this;
+ }
+
+ /**
+ * Get required. Gets or sets the location of the resource. This will be one of the supported and registered Azure Geo Regions (e.g. West US, East US, Southeast Asia, etc.). The geo region of a resource cannot be changed once it is created, but if an identical geo region is specified on update, the request will succeed.
+ *
+ * @return the location value
+ */
+ public String location() {
+ return this.location;
+ }
+
+ /**
+ * Set required. Gets or sets the location of the resource. This will be one of the supported and registered Azure Geo Regions (e.g. West US, East US, Southeast Asia, etc.). The geo region of a resource cannot be changed once it is created, but if an identical geo region is specified on update, the request will succeed.
+ *
+ * @param location the location value to set
+ * @return the StorageAccountCreateParameters object itself.
+ */
+ public StorageAccountCreateParameters withLocation(String location) {
+ this.location = location;
+ return this;
+ }
+
+ /**
+ * Get gets or sets a list of key value pairs that describe the resource. These tags can be used for viewing and grouping this resource (across resource groups). A maximum of 15 tags can be provided for a resource. Each tag must have a key with a length no greater than 128 characters and a value with a length no greater than 256 characters.
+ *
+ * @return the tags value
+ */
+ public Map tags() {
+ return this.tags;
+ }
+
+ /**
+ * Set gets or sets a list of key value pairs that describe the resource. These tags can be used for viewing and grouping this resource (across resource groups). A maximum of 15 tags can be provided for a resource. Each tag must have a key with a length no greater than 128 characters and a value with a length no greater than 256 characters.
+ *
+ * @param tags the tags value to set
+ * @return the StorageAccountCreateParameters object itself.
+ */
+ public StorageAccountCreateParameters withTags(Map tags) {
+ this.tags = tags;
+ return this;
+ }
+
+ /**
+ * Get the identity of the resource.
+ *
+ * @return the identity value
+ */
+ public Identity identity() {
+ return this.identity;
+ }
+
+ /**
+ * Set the identity of the resource.
+ *
+ * @param identity the identity value to set
+ * @return the StorageAccountCreateParameters object itself.
+ */
+ public StorageAccountCreateParameters withIdentity(Identity identity) {
+ this.identity = identity;
+ return this;
+ }
+
+ /**
+ * Get 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 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 StorageAccountCreateParameters object itself.
+ */
+ public StorageAccountCreateParameters withCustomDomain(CustomDomain customDomain) {
+ this.customDomain = customDomain;
+ return this;
+ }
+
+ /**
+ * Get provides the encryption settings on the account. If left unspecified the account encryption settings will remain the same. The default setting is unencrypted.
+ *
+ * @return the encryption value
+ */
+ public Encryption encryption() {
+ return this.encryption;
+ }
+
+ /**
+ * Set provides the encryption settings on the account. If left unspecified the account encryption settings will remain the same. The default setting is unencrypted.
+ *
+ * @param encryption the encryption value to set
+ * @return the StorageAccountCreateParameters object itself.
+ */
+ public StorageAccountCreateParameters withEncryption(Encryption encryption) {
+ this.encryption = encryption;
+ return this;
+ }
+
+ /**
+ * Get network rule set.
+ *
+ * @return the networkRuleSet value
+ */
+ public NetworkRuleSet networkRuleSet() {
+ return this.networkRuleSet;
+ }
+
+ /**
+ * Set network rule set.
+ *
+ * @param networkRuleSet the networkRuleSet value to set
+ * @return the StorageAccountCreateParameters object itself.
+ */
+ public StorageAccountCreateParameters withNetworkRuleSet(NetworkRuleSet networkRuleSet) {
+ this.networkRuleSet = networkRuleSet;
+ return this;
+ }
+
+ /**
+ * Get required for storage accounts where kind = BlobStorage. The access tier used for billing. Possible values include: 'Hot', 'Cool'.
+ *
+ * @return the accessTier value
+ */
+ public AccessTier accessTier() {
+ return this.accessTier;
+ }
+
+ /**
+ * Set required for storage accounts where kind = BlobStorage. The access tier used for billing. Possible values include: 'Hot', 'Cool'.
+ *
+ * @param accessTier the accessTier value to set
+ * @return the StorageAccountCreateParameters object itself.
+ */
+ public StorageAccountCreateParameters withAccessTier(AccessTier accessTier) {
+ this.accessTier = accessTier;
+ return this;
+ }
+
+ /**
+ * Get enables Azure Files AAD Integration for SMB if sets to true.
+ *
+ * @return the enableAzureFilesAadIntegration value
+ */
+ public Boolean enableAzureFilesAadIntegration() {
+ return this.enableAzureFilesAadIntegration;
+ }
+
+ /**
+ * Set enables Azure Files AAD Integration for SMB if sets to true.
+ *
+ * @param enableAzureFilesAadIntegration the enableAzureFilesAadIntegration value to set
+ * @return the StorageAccountCreateParameters object itself.
+ */
+ public StorageAccountCreateParameters withEnableAzureFilesAadIntegration(Boolean enableAzureFilesAadIntegration) {
+ this.enableAzureFilesAadIntegration = enableAzureFilesAadIntegration;
+ return this;
+ }
+
+ /**
+ * Get allows https traffic only to storage service if sets to true.
+ *
+ * @return the enableHttpsTrafficOnly value
+ */
+ public Boolean enableHttpsTrafficOnly() {
+ return this.enableHttpsTrafficOnly;
+ }
+
+ /**
+ * Set allows https traffic only to storage service if sets to true.
+ *
+ * @param enableHttpsTrafficOnly the enableHttpsTrafficOnly value to set
+ * @return the StorageAccountCreateParameters object itself.
+ */
+ public StorageAccountCreateParameters withEnableHttpsTrafficOnly(Boolean enableHttpsTrafficOnly) {
+ this.enableHttpsTrafficOnly = enableHttpsTrafficOnly;
+ return this;
+ }
+
+ /**
+ * Get account HierarchicalNamespace enabled if sets to true.
+ *
+ * @return the isHnsEnabled value
+ */
+ public Boolean isHnsEnabled() {
+ return this.isHnsEnabled;
+ }
+
+ /**
+ * Set account HierarchicalNamespace enabled if sets to true.
+ *
+ * @param isHnsEnabled the isHnsEnabled value to set
+ * @return the StorageAccountCreateParameters object itself.
+ */
+ public StorageAccountCreateParameters withIsHnsEnabled(Boolean isHnsEnabled) {
+ this.isHnsEnabled = isHnsEnabled;
+ return this;
+ }
+
+}
diff --git a/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/StorageAccountExpand.java b/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/StorageAccountExpand.java
new file mode 100644
index 000000000000..c6ff2ba3bffd
--- /dev/null
+++ b/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/StorageAccountExpand.java
@@ -0,0 +1,50 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.storage.v2019_04_01;
+
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonValue;
+
+/**
+ * Defines values for StorageAccountExpand.
+ */
+public enum StorageAccountExpand {
+ /** Enum value geoReplicationStats. */
+ GEO_REPLICATION_STATS("geoReplicationStats");
+
+ /** The actual serialized value for a StorageAccountExpand instance. */
+ private String value;
+
+ StorageAccountExpand(String value) {
+ this.value = value;
+ }
+
+ /**
+ * Parses a serialized value to a StorageAccountExpand instance.
+ *
+ * @param value the serialized value to parse.
+ * @return the parsed StorageAccountExpand object, or null if unable to parse.
+ */
+ @JsonCreator
+ public static StorageAccountExpand fromString(String value) {
+ StorageAccountExpand[] items = StorageAccountExpand.values();
+ for (StorageAccountExpand item : items) {
+ if (item.toString().equalsIgnoreCase(value)) {
+ return item;
+ }
+ }
+ return null;
+ }
+
+ @JsonValue
+ @Override
+ public String toString() {
+ return this.value;
+ }
+}
diff --git a/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/StorageAccountKey.java b/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/StorageAccountKey.java
new file mode 100644
index 000000000000..4607794e9b85
--- /dev/null
+++ b/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/StorageAccountKey.java
@@ -0,0 +1,63 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.storage.v2019_04_01;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/**
+ * An access key for the storage account.
+ */
+public class StorageAccountKey {
+ /**
+ * Name of the key.
+ */
+ @JsonProperty(value = "keyName", access = JsonProperty.Access.WRITE_ONLY)
+ private String keyName;
+
+ /**
+ * Base 64-encoded value of the key.
+ */
+ @JsonProperty(value = "value", access = JsonProperty.Access.WRITE_ONLY)
+ private String value;
+
+ /**
+ * Permissions for the key -- read-only or full permissions. Possible
+ * values include: 'Read', 'Full'.
+ */
+ @JsonProperty(value = "permissions", access = JsonProperty.Access.WRITE_ONLY)
+ private KeyPermission permissions;
+
+ /**
+ * Get name of the key.
+ *
+ * @return the keyName value
+ */
+ public String keyName() {
+ return this.keyName;
+ }
+
+ /**
+ * Get base 64-encoded value of the key.
+ *
+ * @return the value value
+ */
+ public String value() {
+ return this.value;
+ }
+
+ /**
+ * Get permissions for the key -- read-only or full permissions. Possible values include: 'Read', 'Full'.
+ *
+ * @return the permissions value
+ */
+ public KeyPermission permissions() {
+ return this.permissions;
+ }
+
+}
diff --git a/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/StorageAccountListKeysResult.java b/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/StorageAccountListKeysResult.java
new file mode 100644
index 000000000000..c8ed93da6c61
--- /dev/null
+++ b/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/StorageAccountListKeysResult.java
@@ -0,0 +1,26 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.storage.v2019_04_01;
+
+import com.microsoft.azure.arm.model.HasInner;
+import com.microsoft.azure.arm.resources.models.HasManager;
+import com.microsoft.azure.management.storage.v2019_04_01.implementation.StorageManager;
+import com.microsoft.azure.management.storage.v2019_04_01.implementation.StorageAccountListKeysResultInner;
+import java.util.List;
+
+/**
+ * Type representing StorageAccountListKeysResult.
+ */
+public interface StorageAccountListKeysResult extends HasInner, HasManager {
+ /**
+ * @return the keys value.
+ */
+ List keys();
+
+}
diff --git a/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/StorageAccountRegenerateKeyParameters.java b/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/StorageAccountRegenerateKeyParameters.java
new file mode 100644
index 000000000000..502d03a48816
--- /dev/null
+++ b/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/StorageAccountRegenerateKeyParameters.java
@@ -0,0 +1,44 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.storage.v2019_04_01;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/**
+ * The parameters used to regenerate the storage account key.
+ */
+public class StorageAccountRegenerateKeyParameters {
+ /**
+ * The name of storage keys that want to be regenerated, possible values
+ * are key1, key2.
+ */
+ @JsonProperty(value = "keyName", required = true)
+ private String keyName;
+
+ /**
+ * Get the name of storage keys that want to be regenerated, possible values are key1, key2.
+ *
+ * @return the keyName value
+ */
+ public String keyName() {
+ return this.keyName;
+ }
+
+ /**
+ * Set the name of storage keys that want to be regenerated, possible values are key1, key2.
+ *
+ * @param keyName the keyName value to set
+ * @return the StorageAccountRegenerateKeyParameters object itself.
+ */
+ public StorageAccountRegenerateKeyParameters withKeyName(String keyName) {
+ this.keyName = keyName;
+ return this;
+ }
+
+}
diff --git a/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/StorageAccountUpdateParameters.java b/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/StorageAccountUpdateParameters.java
new file mode 100644
index 000000000000..b5a811336a71
--- /dev/null
+++ b/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/StorageAccountUpdateParameters.java
@@ -0,0 +1,295 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.storage.v2019_04_01;
+
+import com.microsoft.azure.management.storage.v2019_04_01.implementation.SkuInner;
+import java.util.Map;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.microsoft.rest.serializer.JsonFlatten;
+
+/**
+ * The parameters that can be provided when updating the storage account
+ * properties.
+ */
+@JsonFlatten
+public class StorageAccountUpdateParameters {
+ /**
+ * Gets or sets the SKU name. Note that the SKU name cannot be updated to
+ * Standard_ZRS, Premium_LRS or Premium_ZRS, nor can accounts of those SKU
+ * names be updated to any other value.
+ */
+ @JsonProperty(value = "sku")
+ private SkuInner sku;
+
+ /**
+ * Gets or sets a list of key value pairs that describe the resource. These
+ * tags can be used in viewing and grouping this resource (across resource
+ * groups). A maximum of 15 tags can be provided for a resource. Each tag
+ * must have a key no greater in length than 128 characters and a value no
+ * greater in length than 256 characters.
+ */
+ @JsonProperty(value = "tags")
+ private Map tags;
+
+ /**
+ * The identity of the resource.
+ */
+ @JsonProperty(value = "identity")
+ private Identity identity;
+
+ /**
+ * 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 = "properties.customDomain")
+ private CustomDomain customDomain;
+
+ /**
+ * Provides the encryption settings on the account. The default setting is
+ * unencrypted.
+ */
+ @JsonProperty(value = "properties.encryption")
+ private Encryption encryption;
+
+ /**
+ * Required for storage accounts where kind = BlobStorage. The access tier
+ * used for billing. Possible values include: 'Hot', 'Cool'.
+ */
+ @JsonProperty(value = "properties.accessTier")
+ private AccessTier accessTier;
+
+ /**
+ * Enables Azure Files AAD Integration for SMB if sets to true.
+ */
+ @JsonProperty(value = "properties.azureFilesAadIntegration")
+ private Boolean enableAzureFilesAadIntegration;
+
+ /**
+ * Allows https traffic only to storage service if sets to true.
+ */
+ @JsonProperty(value = "properties.supportsHttpsTrafficOnly")
+ private Boolean enableHttpsTrafficOnly;
+
+ /**
+ * Network rule set.
+ */
+ @JsonProperty(value = "properties.networkAcls")
+ private NetworkRuleSet networkRuleSet;
+
+ /**
+ * Optional. Indicates the type of storage account. Currently only
+ * StorageV2 value supported by server. Possible values include: 'Storage',
+ * 'StorageV2', 'BlobStorage', 'FileStorage', 'BlockBlobStorage'.
+ */
+ @JsonProperty(value = "kind")
+ private Kind kind;
+
+ /**
+ * Get gets or sets the SKU name. Note that the SKU name cannot be updated to Standard_ZRS, Premium_LRS or Premium_ZRS, nor can accounts of those SKU names be updated to any other value.
+ *
+ * @return the sku value
+ */
+ public SkuInner sku() {
+ return this.sku;
+ }
+
+ /**
+ * Set gets or sets the SKU name. Note that the SKU name cannot be updated to Standard_ZRS, Premium_LRS or Premium_ZRS, nor can accounts of those SKU names be updated to any other value.
+ *
+ * @param sku the sku value to set
+ * @return the StorageAccountUpdateParameters object itself.
+ */
+ public StorageAccountUpdateParameters withSku(SkuInner sku) {
+ this.sku = sku;
+ return this;
+ }
+
+ /**
+ * Get gets or sets a list of key value pairs that describe the resource. These tags can be used in viewing and grouping this resource (across resource groups). A maximum of 15 tags can be provided for a resource. Each tag must have a key no greater in length than 128 characters and a value no greater in length than 256 characters.
+ *
+ * @return the tags value
+ */
+ public Map tags() {
+ return this.tags;
+ }
+
+ /**
+ * Set gets or sets a list of key value pairs that describe the resource. These tags can be used in viewing and grouping this resource (across resource groups). A maximum of 15 tags can be provided for a resource. Each tag must have a key no greater in length than 128 characters and a value no greater in length than 256 characters.
+ *
+ * @param tags the tags value to set
+ * @return the StorageAccountUpdateParameters object itself.
+ */
+ public StorageAccountUpdateParameters withTags(Map tags) {
+ this.tags = tags;
+ return this;
+ }
+
+ /**
+ * Get the identity of the resource.
+ *
+ * @return the identity value
+ */
+ public Identity identity() {
+ return this.identity;
+ }
+
+ /**
+ * Set the identity of the resource.
+ *
+ * @param identity the identity value to set
+ * @return the StorageAccountUpdateParameters object itself.
+ */
+ public StorageAccountUpdateParameters withIdentity(Identity identity) {
+ this.identity = identity;
+ return this;
+ }
+
+ /**
+ * Get 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 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 StorageAccountUpdateParameters object itself.
+ */
+ public StorageAccountUpdateParameters withCustomDomain(CustomDomain customDomain) {
+ this.customDomain = customDomain;
+ return this;
+ }
+
+ /**
+ * Get provides the encryption settings on the account. The default setting is unencrypted.
+ *
+ * @return the encryption value
+ */
+ public Encryption encryption() {
+ return this.encryption;
+ }
+
+ /**
+ * Set provides the encryption settings on the account. The default setting is unencrypted.
+ *
+ * @param encryption the encryption value to set
+ * @return the StorageAccountUpdateParameters object itself.
+ */
+ public StorageAccountUpdateParameters withEncryption(Encryption encryption) {
+ this.encryption = encryption;
+ return this;
+ }
+
+ /**
+ * Get required for storage accounts where kind = BlobStorage. The access tier used for billing. Possible values include: 'Hot', 'Cool'.
+ *
+ * @return the accessTier value
+ */
+ public AccessTier accessTier() {
+ return this.accessTier;
+ }
+
+ /**
+ * Set required for storage accounts where kind = BlobStorage. The access tier used for billing. Possible values include: 'Hot', 'Cool'.
+ *
+ * @param accessTier the accessTier value to set
+ * @return the StorageAccountUpdateParameters object itself.
+ */
+ public StorageAccountUpdateParameters withAccessTier(AccessTier accessTier) {
+ this.accessTier = accessTier;
+ return this;
+ }
+
+ /**
+ * Get enables Azure Files AAD Integration for SMB if sets to true.
+ *
+ * @return the enableAzureFilesAadIntegration value
+ */
+ public Boolean enableAzureFilesAadIntegration() {
+ return this.enableAzureFilesAadIntegration;
+ }
+
+ /**
+ * Set enables Azure Files AAD Integration for SMB if sets to true.
+ *
+ * @param enableAzureFilesAadIntegration the enableAzureFilesAadIntegration value to set
+ * @return the StorageAccountUpdateParameters object itself.
+ */
+ public StorageAccountUpdateParameters withEnableAzureFilesAadIntegration(Boolean enableAzureFilesAadIntegration) {
+ this.enableAzureFilesAadIntegration = enableAzureFilesAadIntegration;
+ return this;
+ }
+
+ /**
+ * Get allows https traffic only to storage service if sets to true.
+ *
+ * @return the enableHttpsTrafficOnly value
+ */
+ public Boolean enableHttpsTrafficOnly() {
+ return this.enableHttpsTrafficOnly;
+ }
+
+ /**
+ * Set allows https traffic only to storage service if sets to true.
+ *
+ * @param enableHttpsTrafficOnly the enableHttpsTrafficOnly value to set
+ * @return the StorageAccountUpdateParameters object itself.
+ */
+ public StorageAccountUpdateParameters withEnableHttpsTrafficOnly(Boolean enableHttpsTrafficOnly) {
+ this.enableHttpsTrafficOnly = enableHttpsTrafficOnly;
+ return this;
+ }
+
+ /**
+ * Get network rule set.
+ *
+ * @return the networkRuleSet value
+ */
+ public NetworkRuleSet networkRuleSet() {
+ return this.networkRuleSet;
+ }
+
+ /**
+ * Set network rule set.
+ *
+ * @param networkRuleSet the networkRuleSet value to set
+ * @return the StorageAccountUpdateParameters object itself.
+ */
+ public StorageAccountUpdateParameters withNetworkRuleSet(NetworkRuleSet networkRuleSet) {
+ this.networkRuleSet = networkRuleSet;
+ return this;
+ }
+
+ /**
+ * Get optional. Indicates the type of storage account. Currently only StorageV2 value supported by server. Possible values include: 'Storage', 'StorageV2', 'BlobStorage', 'FileStorage', 'BlockBlobStorage'.
+ *
+ * @return the kind value
+ */
+ public Kind kind() {
+ return this.kind;
+ }
+
+ /**
+ * Set optional. Indicates the type of storage account. Currently only StorageV2 value supported by server. Possible values include: 'Storage', 'StorageV2', 'BlobStorage', 'FileStorage', 'BlockBlobStorage'.
+ *
+ * @param kind the kind value to set
+ * @return the StorageAccountUpdateParameters object itself.
+ */
+ public StorageAccountUpdateParameters withKind(Kind kind) {
+ this.kind = kind;
+ return this;
+ }
+
+}
diff --git a/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/StorageAccounts.java b/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/StorageAccounts.java
new file mode 100644
index 000000000000..a460ead84461
--- /dev/null
+++ b/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/StorageAccounts.java
@@ -0,0 +1,98 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.storage.v2019_04_01;
+
+import com.microsoft.azure.arm.collection.SupportsCreating;
+import com.microsoft.azure.arm.resources.collection.SupportsDeletingByResourceGroup;
+import com.microsoft.azure.arm.resources.collection.SupportsBatchDeletion;
+import com.microsoft.azure.arm.resources.collection.SupportsGettingByResourceGroup;
+import rx.Observable;
+import com.microsoft.azure.arm.resources.collection.SupportsListingByResourceGroup;
+import com.microsoft.azure.arm.collection.SupportsListing;
+import rx.Completable;
+import com.microsoft.azure.management.storage.v2019_04_01.implementation.StorageAccountsInner;
+import com.microsoft.azure.arm.model.HasInner;
+
+/**
+ * Type representing StorageAccounts.
+ */
+public interface StorageAccounts extends SupportsCreating, SupportsDeletingByResourceGroup, SupportsBatchDeletion, SupportsGettingByResourceGroup, SupportsListingByResourceGroup, SupportsListing, HasInner {
+ /**
+ * Lists the access 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.
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @return the observable for the request
+ */
+ Observable listKeysAsync(String resourceGroupName, String accountName);
+
+ /**
+ * Regenerates one of the access 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 keyName The name of storage keys that want to be regenerated, possible values are key1, key2.
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @return the observable for the request
+ */
+ Observable regenerateKeyAsync(String resourceGroupName, String accountName, String keyName);
+
+ /**
+ * 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
+ * @return the observable for the request
+ */
+ Observable listAccountSASAsync(String resourceGroupName, String accountName, AccountSasParameters parameters);
+
+ /**
+ * List service SAS credentials of a specific resource.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param parameters The parameters to provide to list service SAS credentials.
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @return the observable for the request
+ */
+ Observable listServiceSASAsync(String resourceGroupName, String accountName, ServiceSasParameters parameters);
+
+ /**
+ * 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
+ * @return the observable for the request
+ */
+ Completable failoverAsync(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.
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @return the observable for the request
+ */
+ Completable revokeUserDelegationKeysAsync(String resourceGroupName, String accountName);
+
+ /**
+ * Checks that the storage account name is valid and is not already in use.
+ *
+ * @param name The storage account name.
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @return the observable for the request
+ */
+ Observable checkNameAvailabilityAsync(String name);
+
+}
diff --git a/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/TagProperty.java b/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/TagProperty.java
new file mode 100644
index 000000000000..5542ad6a255e
--- /dev/null
+++ b/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/TagProperty.java
@@ -0,0 +1,94 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.storage.v2019_04_01;
+
+import org.joda.time.DateTime;
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/**
+ * A tag of the LegalHold of a blob container.
+ */
+public class TagProperty {
+ /**
+ * The tag value.
+ */
+ @JsonProperty(value = "tag", access = JsonProperty.Access.WRITE_ONLY)
+ private String tag;
+
+ /**
+ * Returns the date and time the tag was added.
+ */
+ @JsonProperty(value = "timestamp", access = JsonProperty.Access.WRITE_ONLY)
+ private DateTime timestamp;
+
+ /**
+ * Returns the Object ID of the user who added the tag.
+ */
+ @JsonProperty(value = "objectIdentifier", access = JsonProperty.Access.WRITE_ONLY)
+ private String objectIdentifier;
+
+ /**
+ * Returns the Tenant ID that issued the token for the user who added the
+ * tag.
+ */
+ @JsonProperty(value = "tenantId", access = JsonProperty.Access.WRITE_ONLY)
+ private String tenantId;
+
+ /**
+ * Returns the User Principal Name of the user who added the tag.
+ */
+ @JsonProperty(value = "upn", access = JsonProperty.Access.WRITE_ONLY)
+ private String upn;
+
+ /**
+ * Get the tag value.
+ *
+ * @return the tag value
+ */
+ public String tag() {
+ return this.tag;
+ }
+
+ /**
+ * Get returns the date and time the tag was added.
+ *
+ * @return the timestamp value
+ */
+ public DateTime timestamp() {
+ return this.timestamp;
+ }
+
+ /**
+ * Get returns the Object ID of the user who added the tag.
+ *
+ * @return the objectIdentifier value
+ */
+ public String objectIdentifier() {
+ return this.objectIdentifier;
+ }
+
+ /**
+ * Get returns the Tenant ID that issued the token for the user who added the tag.
+ *
+ * @return the tenantId value
+ */
+ public String tenantId() {
+ return this.tenantId;
+ }
+
+ /**
+ * Get returns the User Principal Name of the user who added the tag.
+ *
+ * @return the upn value
+ */
+ public String upn() {
+ return this.upn;
+ }
+
+}
diff --git a/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/UpdateHistoryProperty.java b/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/UpdateHistoryProperty.java
new file mode 100644
index 000000000000..eb6006c3952d
--- /dev/null
+++ b/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/UpdateHistoryProperty.java
@@ -0,0 +1,113 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.storage.v2019_04_01;
+
+import org.joda.time.DateTime;
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/**
+ * An update history of the ImmutabilityPolicy of a blob container.
+ */
+public class UpdateHistoryProperty {
+ /**
+ * The ImmutabilityPolicy update type of a blob container, possible values
+ * include: put, lock and extend. Possible values include: 'put', 'lock',
+ * 'extend'.
+ */
+ @JsonProperty(value = "update", access = JsonProperty.Access.WRITE_ONLY)
+ private ImmutabilityPolicyUpdateType update;
+
+ /**
+ * The immutability period for the blobs in the container since the policy
+ * creation, in days.
+ */
+ @JsonProperty(value = "immutabilityPeriodSinceCreationInDays", access = JsonProperty.Access.WRITE_ONLY)
+ private Integer immutabilityPeriodSinceCreationInDays;
+
+ /**
+ * Returns the date and time the ImmutabilityPolicy was updated.
+ */
+ @JsonProperty(value = "timestamp", access = JsonProperty.Access.WRITE_ONLY)
+ private DateTime timestamp;
+
+ /**
+ * Returns the Object ID of the user who updated the ImmutabilityPolicy.
+ */
+ @JsonProperty(value = "objectIdentifier", access = JsonProperty.Access.WRITE_ONLY)
+ private String objectIdentifier;
+
+ /**
+ * Returns the Tenant ID that issued the token for the user who updated the
+ * ImmutabilityPolicy.
+ */
+ @JsonProperty(value = "tenantId", access = JsonProperty.Access.WRITE_ONLY)
+ private String tenantId;
+
+ /**
+ * Returns the User Principal Name of the user who updated the
+ * ImmutabilityPolicy.
+ */
+ @JsonProperty(value = "upn", access = JsonProperty.Access.WRITE_ONLY)
+ private String upn;
+
+ /**
+ * Get the ImmutabilityPolicy update type of a blob container, possible values include: put, lock and extend. Possible values include: 'put', 'lock', 'extend'.
+ *
+ * @return the update value
+ */
+ public ImmutabilityPolicyUpdateType update() {
+ return this.update;
+ }
+
+ /**
+ * Get 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;
+ }
+
+ /**
+ * Get returns the date and time the ImmutabilityPolicy was updated.
+ *
+ * @return the timestamp value
+ */
+ public DateTime timestamp() {
+ return this.timestamp;
+ }
+
+ /**
+ * Get returns the Object ID of the user who updated the ImmutabilityPolicy.
+ *
+ * @return the objectIdentifier value
+ */
+ public String objectIdentifier() {
+ return this.objectIdentifier;
+ }
+
+ /**
+ * Get returns the Tenant ID that issued the token for the user who updated the ImmutabilityPolicy.
+ *
+ * @return the tenantId value
+ */
+ public String tenantId() {
+ return this.tenantId;
+ }
+
+ /**
+ * Get returns the User Principal Name of the user who updated the ImmutabilityPolicy.
+ *
+ * @return the upn value
+ */
+ public String upn() {
+ return this.upn;
+ }
+
+}
diff --git a/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/Usage.java b/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/Usage.java
new file mode 100644
index 000000000000..b2230a0ace1a
--- /dev/null
+++ b/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/Usage.java
@@ -0,0 +1,40 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.storage.v2019_04_01;
+
+import com.microsoft.azure.arm.model.HasInner;
+import com.microsoft.azure.management.storage.v2019_04_01.implementation.UsageInner;
+import com.microsoft.azure.arm.resources.models.HasManager;
+import com.microsoft.azure.management.storage.v2019_04_01.implementation.StorageManager;
+
+/**
+ * Type representing Usage.
+ */
+public interface Usage extends HasInner, HasManager {
+ /**
+ * @return the currentValue value.
+ */
+ Integer currentValue();
+
+ /**
+ * @return the limit value.
+ */
+ Integer limit();
+
+ /**
+ * @return the name value.
+ */
+ UsageName name();
+
+ /**
+ * @return the unit value.
+ */
+ UsageUnit unit();
+
+}
diff --git a/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/UsageName.java b/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/UsageName.java
new file mode 100644
index 000000000000..c27cfae92b04
--- /dev/null
+++ b/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/UsageName.java
@@ -0,0 +1,47 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.storage.v2019_04_01;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/**
+ * The usage names that can be used; currently limited to StorageAccount.
+ */
+public class UsageName {
+ /**
+ * Gets a string describing the resource name.
+ */
+ @JsonProperty(value = "value", access = JsonProperty.Access.WRITE_ONLY)
+ private String value;
+
+ /**
+ * Gets a localized string describing the resource name.
+ */
+ @JsonProperty(value = "localizedValue", access = JsonProperty.Access.WRITE_ONLY)
+ private String localizedValue;
+
+ /**
+ * Get gets a string describing the resource name.
+ *
+ * @return the value value
+ */
+ public String value() {
+ return this.value;
+ }
+
+ /**
+ * Get gets a localized string describing the resource name.
+ *
+ * @return the localizedValue value
+ */
+ public String localizedValue() {
+ return this.localizedValue;
+ }
+
+}
diff --git a/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/UsageUnit.java b/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/UsageUnit.java
new file mode 100644
index 000000000000..f582a2360a2e
--- /dev/null
+++ b/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/UsageUnit.java
@@ -0,0 +1,65 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.storage.v2019_04_01;
+
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonValue;
+
+/**
+ * Defines values for UsageUnit.
+ */
+public enum UsageUnit {
+ /** Enum value Count. */
+ COUNT("Count"),
+
+ /** Enum value Bytes. */
+ BYTES("Bytes"),
+
+ /** Enum value Seconds. */
+ SECONDS("Seconds"),
+
+ /** Enum value Percent. */
+ PERCENT("Percent"),
+
+ /** Enum value CountsPerSecond. */
+ COUNTS_PER_SECOND("CountsPerSecond"),
+
+ /** Enum value BytesPerSecond. */
+ BYTES_PER_SECOND("BytesPerSecond");
+
+ /** The actual serialized value for a UsageUnit instance. */
+ private String value;
+
+ UsageUnit(String value) {
+ this.value = value;
+ }
+
+ /**
+ * Parses a serialized value to a UsageUnit instance.
+ *
+ * @param value the serialized value to parse.
+ * @return the parsed UsageUnit object, or null if unable to parse.
+ */
+ @JsonCreator
+ public static UsageUnit fromString(String value) {
+ UsageUnit[] items = UsageUnit.values();
+ for (UsageUnit item : items) {
+ if (item.toString().equalsIgnoreCase(value)) {
+ return item;
+ }
+ }
+ return null;
+ }
+
+ @JsonValue
+ @Override
+ public String toString() {
+ return this.value;
+ }
+}
diff --git a/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/Usages.java b/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/Usages.java
new file mode 100644
index 000000000000..2e183af192cb
--- /dev/null
+++ b/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/Usages.java
@@ -0,0 +1,28 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.storage.v2019_04_01;
+
+import rx.Observable;
+import com.microsoft.azure.management.storage.v2019_04_01.implementation.UsagesInner;
+import com.microsoft.azure.arm.model.HasInner;
+
+/**
+ * Type representing Usages.
+ */
+public interface Usages extends HasInner {
+ /**
+ * 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
+ * @return the observable for the request
+ */
+ Observable listByLocationAsync(String location);
+
+}
diff --git a/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/VirtualNetworkRule.java b/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/VirtualNetworkRule.java
new file mode 100644
index 000000000000..1e0221cd9980
--- /dev/null
+++ b/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/VirtualNetworkRule.java
@@ -0,0 +1,98 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.storage.v2019_04_01;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/**
+ * Virtual Network rule.
+ */
+public class VirtualNetworkRule {
+ /**
+ * Resource ID of a subnet, for example:
+ * /subscriptions/{subscriptionId}/resourceGroups/{groupName}/providers/Microsoft.Network/virtualNetworks/{vnetName}/subnets/{subnetName}.
+ */
+ @JsonProperty(value = "id", required = true)
+ private String virtualNetworkResourceId;
+
+ /**
+ * The action of virtual network rule. Possible values include: 'Allow'.
+ */
+ @JsonProperty(value = "action")
+ private Action action;
+
+ /**
+ * Gets the state of virtual network rule. Possible values include:
+ * 'provisioning', 'deprovisioning', 'succeeded', 'failed',
+ * 'networkSourceDeleted'.
+ */
+ @JsonProperty(value = "state")
+ private State state;
+
+ /**
+ * Get resource ID of a subnet, for example: /subscriptions/{subscriptionId}/resourceGroups/{groupName}/providers/Microsoft.Network/virtualNetworks/{vnetName}/subnets/{subnetName}.
+ *
+ * @return the virtualNetworkResourceId value
+ */
+ public String virtualNetworkResourceId() {
+ return this.virtualNetworkResourceId;
+ }
+
+ /**
+ * Set resource ID of a subnet, for example: /subscriptions/{subscriptionId}/resourceGroups/{groupName}/providers/Microsoft.Network/virtualNetworks/{vnetName}/subnets/{subnetName}.
+ *
+ * @param virtualNetworkResourceId the virtualNetworkResourceId value to set
+ * @return the VirtualNetworkRule object itself.
+ */
+ public VirtualNetworkRule withVirtualNetworkResourceId(String virtualNetworkResourceId) {
+ this.virtualNetworkResourceId = virtualNetworkResourceId;
+ return this;
+ }
+
+ /**
+ * Get the action of virtual network rule. Possible values include: 'Allow'.
+ *
+ * @return the action value
+ */
+ public Action action() {
+ return this.action;
+ }
+
+ /**
+ * Set the action of virtual network rule. Possible values include: 'Allow'.
+ *
+ * @param action the action value to set
+ * @return the VirtualNetworkRule object itself.
+ */
+ public VirtualNetworkRule withAction(Action action) {
+ this.action = action;
+ return this;
+ }
+
+ /**
+ * Get gets the state of virtual network rule. Possible values include: 'provisioning', 'deprovisioning', 'succeeded', 'failed', 'networkSourceDeleted'.
+ *
+ * @return the state value
+ */
+ public State state() {
+ return this.state;
+ }
+
+ /**
+ * Set gets the state of virtual network rule. Possible values include: 'provisioning', 'deprovisioning', 'succeeded', 'failed', 'networkSourceDeleted'.
+ *
+ * @param state the state value to set
+ * @return the VirtualNetworkRule object itself.
+ */
+ public VirtualNetworkRule withState(State state) {
+ this.state = state;
+ return this;
+ }
+
+}
diff --git a/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/implementation/BlobContainerImpl.java b/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/implementation/BlobContainerImpl.java
new file mode 100644
index 000000000000..fe925cd2e7e5
--- /dev/null
+++ b/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/implementation/BlobContainerImpl.java
@@ -0,0 +1,181 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.storage.v2019_04_01.implementation;
+
+import com.microsoft.azure.management.storage.v2019_04_01.BlobContainer;
+import com.microsoft.azure.arm.model.implementation.CreatableUpdatableImpl;
+import rx.Observable;
+import com.microsoft.azure.management.storage.v2019_04_01.PublicAccess;
+import java.util.Map;
+import com.microsoft.azure.management.storage.v2019_04_01.ImmutabilityPolicyProperties;
+import org.joda.time.DateTime;
+import com.microsoft.azure.management.storage.v2019_04_01.LeaseDuration;
+import com.microsoft.azure.management.storage.v2019_04_01.LeaseState;
+import com.microsoft.azure.management.storage.v2019_04_01.LeaseStatus;
+import com.microsoft.azure.management.storage.v2019_04_01.LegalHoldProperties;
+
+class BlobContainerImpl extends CreatableUpdatableImpl implements BlobContainer, BlobContainer.Definition, BlobContainer.Update {
+ private final StorageManager manager;
+ private String resourceGroupName;
+ private String accountName;
+ private String containerName;
+ private PublicAccess cpublicAccess;
+ private Map cmetadata;
+ private PublicAccess upublicAccess;
+ private Map umetadata;
+
+ BlobContainerImpl(String name, StorageManager manager) {
+ super(name, new BlobContainerInner());
+ this.manager = manager;
+ // Set resource name
+ this.containerName = name;
+ //
+ }
+
+ BlobContainerImpl(BlobContainerInner inner, StorageManager manager) {
+ super(inner.name(), inner);
+ this.manager = manager;
+ // Set resource name
+ this.containerName = inner.name();
+ // set resource ancestor and positional variables
+ this.resourceGroupName = IdParsingUtils.getValueFromIdByName(inner.id(), "resourceGroups");
+ this.accountName = IdParsingUtils.getValueFromIdByName(inner.id(), "storageAccounts");
+ this.containerName = IdParsingUtils.getValueFromIdByName(inner.id(), "containers");
+ //
+ }
+
+ @Override
+ public StorageManager manager() {
+ return this.manager;
+ }
+
+ @Override
+ public Observable createResourceAsync() {
+ BlobContainersInner client = this.manager().inner().blobContainers();
+ return client.createAsync(this.resourceGroupName, this.accountName, this.containerName, this.cpublicAccess, this.cmetadata)
+ .map(innerToFluentMap(this));
+ }
+
+ @Override
+ public Observable updateResourceAsync() {
+ BlobContainersInner client = this.manager().inner().blobContainers();
+ return client.updateAsync(this.resourceGroupName, this.accountName, this.containerName, this.upublicAccess, this.umetadata)
+ .map(innerToFluentMap(this));
+ }
+
+ @Override
+ protected Observable getInnerAsync() {
+ BlobContainersInner client = this.manager().inner().blobContainers();
+ return null; // NOP getInnerAsync implementation as get is not supported
+ }
+
+ @Override
+ public boolean isInCreateMode() {
+ return this.inner().id() == null;
+ }
+
+
+ @Override
+ public String etag() {
+ return this.inner().etag();
+ }
+
+ @Override
+ public Boolean hasImmutabilityPolicy() {
+ return this.inner().hasImmutabilityPolicy();
+ }
+
+ @Override
+ public Boolean hasLegalHold() {
+ return this.inner().hasLegalHold();
+ }
+
+ @Override
+ public String id() {
+ return this.inner().id();
+ }
+
+ @Override
+ public ImmutabilityPolicyProperties immutabilityPolicy() {
+ return this.inner().immutabilityPolicy();
+ }
+
+ @Override
+ public DateTime lastModifiedTime() {
+ return this.inner().lastModifiedTime();
+ }
+
+ @Override
+ public LeaseDuration leaseDuration() {
+ return this.inner().leaseDuration();
+ }
+
+ @Override
+ public LeaseState leaseState() {
+ return this.inner().leaseState();
+ }
+
+ @Override
+ public LeaseStatus leaseStatus() {
+ return this.inner().leaseStatus();
+ }
+
+ @Override
+ public LegalHoldProperties legalHold() {
+ return this.inner().legalHold();
+ }
+
+ @Override
+ public Map metadata() {
+ return this.inner().metadata();
+ }
+
+ @Override
+ public String name() {
+ return this.inner().name();
+ }
+
+ @Override
+ public PublicAccess publicAccess() {
+ return this.inner().publicAccess();
+ }
+
+ @Override
+ public String type() {
+ return this.inner().type();
+ }
+
+ @Override
+ public BlobContainerImpl withExistingBlobService(String resourceGroupName, String accountName) {
+ this.resourceGroupName = resourceGroupName;
+ this.accountName = accountName;
+ return this;
+ }
+
+ @Override
+ public BlobContainerImpl withPublicAccess(PublicAccess publicAccess) {
+ if (isInCreateMode()) {
+ this.cpublicAccess = publicAccess;
+ } else {
+ this.upublicAccess = publicAccess;
+ }
+ return this;
+ }
+
+ @Override
+ public BlobContainerImpl withMetadata(Map metadata) {
+ if (isInCreateMode()) {
+ this.cmetadata = metadata;
+ } else {
+ this.umetadata = metadata;
+ }
+ return this;
+ }
+
+}
diff --git a/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/implementation/BlobContainerInner.java b/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/implementation/BlobContainerInner.java
new file mode 100644
index 000000000000..12b31264ee8d
--- /dev/null
+++ b/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/implementation/BlobContainerInner.java
@@ -0,0 +1,213 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.storage.v2019_04_01.implementation;
+
+import com.microsoft.azure.management.storage.v2019_04_01.PublicAccess;
+import org.joda.time.DateTime;
+import com.microsoft.azure.management.storage.v2019_04_01.LeaseStatus;
+import com.microsoft.azure.management.storage.v2019_04_01.LeaseState;
+import com.microsoft.azure.management.storage.v2019_04_01.LeaseDuration;
+import java.util.Map;
+import com.microsoft.azure.management.storage.v2019_04_01.ImmutabilityPolicyProperties;
+import com.microsoft.azure.management.storage.v2019_04_01.LegalHoldProperties;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.microsoft.rest.serializer.JsonFlatten;
+import com.microsoft.azure.management.storage.v2019_04_01.AzureEntityResource;
+
+/**
+ * Properties of the blob container, including Id, resource name, resource
+ * type, Etag.
+ */
+@JsonFlatten
+public class BlobContainerInner extends AzureEntityResource {
+ /**
+ * Specifies whether data in the container may be accessed publicly and the
+ * level of access. Possible values include: 'Container', 'Blob', 'None'.
+ */
+ @JsonProperty(value = "properties.publicAccess")
+ private PublicAccess publicAccess;
+
+ /**
+ * Returns the date and time the container was last modified.
+ */
+ @JsonProperty(value = "properties.lastModifiedTime", access = JsonProperty.Access.WRITE_ONLY)
+ private DateTime lastModifiedTime;
+
+ /**
+ * The lease status of the container. Possible values include: 'Locked',
+ * 'Unlocked'.
+ */
+ @JsonProperty(value = "properties.leaseStatus", access = JsonProperty.Access.WRITE_ONLY)
+ private LeaseStatus leaseStatus;
+
+ /**
+ * Lease state of the container. Possible values include: 'Available',
+ * 'Leased', 'Expired', 'Breaking', 'Broken'.
+ */
+ @JsonProperty(value = "properties.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. Possible values include:
+ * 'Infinite', 'Fixed'.
+ */
+ @JsonProperty(value = "properties.leaseDuration", access = JsonProperty.Access.WRITE_ONLY)
+ private LeaseDuration leaseDuration;
+
+ /**
+ * A name-value pair to associate with the container as metadata.
+ */
+ @JsonProperty(value = "properties.metadata")
+ private Map metadata;
+
+ /**
+ * The ImmutabilityPolicy property of the container.
+ */
+ @JsonProperty(value = "properties.immutabilityPolicy", access = JsonProperty.Access.WRITE_ONLY)
+ private ImmutabilityPolicyProperties immutabilityPolicy;
+
+ /**
+ * The LegalHold property of the container.
+ */
+ @JsonProperty(value = "properties.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 = "properties.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 = "properties.hasImmutabilityPolicy", access = JsonProperty.Access.WRITE_ONLY)
+ private Boolean hasImmutabilityPolicy;
+
+ /**
+ * Get specifies whether data in the container may be accessed publicly and the level of access. Possible values include: 'Container', 'Blob', 'None'.
+ *
+ * @return the publicAccess value
+ */
+ public PublicAccess publicAccess() {
+ return this.publicAccess;
+ }
+
+ /**
+ * Set specifies whether data in the container may be accessed publicly and the level of access. Possible values include: 'Container', 'Blob', 'None'.
+ *
+ * @param publicAccess the publicAccess value to set
+ * @return the BlobContainerInner object itself.
+ */
+ public BlobContainerInner withPublicAccess(PublicAccess publicAccess) {
+ this.publicAccess = publicAccess;
+ return this;
+ }
+
+ /**
+ * Get returns the date and time the container was last modified.
+ *
+ * @return the lastModifiedTime value
+ */
+ public DateTime lastModifiedTime() {
+ return this.lastModifiedTime;
+ }
+
+ /**
+ * Get the lease status of the container. Possible values include: 'Locked', 'Unlocked'.
+ *
+ * @return the leaseStatus value
+ */
+ public LeaseStatus leaseStatus() {
+ return this.leaseStatus;
+ }
+
+ /**
+ * Get lease state of the container. Possible values include: 'Available', 'Leased', 'Expired', 'Breaking', 'Broken'.
+ *
+ * @return the leaseState value
+ */
+ public LeaseState leaseState() {
+ return this.leaseState;
+ }
+
+ /**
+ * Get specifies whether the lease on a container is of infinite or fixed duration, only when the container is leased. Possible values include: 'Infinite', 'Fixed'.
+ *
+ * @return the leaseDuration value
+ */
+ public LeaseDuration leaseDuration() {
+ return this.leaseDuration;
+ }
+
+ /**
+ * Get a name-value pair to associate with the container as metadata.
+ *
+ * @return the metadata value
+ */
+ public Map metadata() {
+ return this.metadata;
+ }
+
+ /**
+ * Set 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) {
+ this.metadata = metadata;
+ return this;
+ }
+
+ /**
+ * Get the ImmutabilityPolicy property of the container.
+ *
+ * @return the immutabilityPolicy value
+ */
+ public ImmutabilityPolicyProperties immutabilityPolicy() {
+ return this.immutabilityPolicy;
+ }
+
+ /**
+ * Get the LegalHold property of the container.
+ *
+ * @return the legalHold value
+ */
+ public LegalHoldProperties legalHold() {
+ return this.legalHold;
+ }
+
+ /**
+ * Get 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 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;
+ }
+
+}
diff --git a/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/implementation/BlobContainersImpl.java b/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/implementation/BlobContainersImpl.java
new file mode 100644
index 000000000000..6f4185dae341
--- /dev/null
+++ b/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/implementation/BlobContainersImpl.java
@@ -0,0 +1,178 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ * abc
+ */
+
+package com.microsoft.azure.management.storage.v2019_04_01.implementation;
+
+import com.microsoft.azure.arm.model.implementation.WrapperImpl;
+import com.microsoft.azure.management.storage.v2019_04_01.BlobContainers;
+import rx.Completable;
+import rx.functions.Func1;
+import rx.Observable;
+import com.microsoft.azure.management.storage.v2019_04_01.ListContainerItems;
+import com.microsoft.azure.management.storage.v2019_04_01.BlobContainer;
+import com.microsoft.azure.management.storage.v2019_04_01.LegalHold;
+import com.microsoft.azure.management.storage.v2019_04_01.LeaseContainerResponse;
+import java.util.List;
+import com.microsoft.azure.management.storage.v2019_04_01.ImmutabilityPolicy;
+
+class BlobContainersImpl extends WrapperImpl implements BlobContainers {
+ private final StorageManager manager;
+
+ BlobContainersImpl(StorageManager manager) {
+ super(manager.inner().blobContainers());
+ this.manager = manager;
+ }
+
+ public StorageManager manager() {
+ return this.manager;
+ }
+
+ @Override
+ public BlobContainerImpl defineContainer(String name) {
+ return wrapContainerModel(name);
+ }
+
+ @Override
+ public ImmutabilityPolicyImpl defineImmutabilityPolicy(String name) {
+ return wrapImmutabilityPolicyModel(name);
+ }
+
+ private BlobContainerImpl wrapContainerModel(String name) {
+ return new BlobContainerImpl(name, this.manager());
+ }
+
+ private ImmutabilityPolicyImpl wrapImmutabilityPolicyModel(String name) {
+ return new ImmutabilityPolicyImpl(name, this.manager());
+ }
+
+ private BlobContainerImpl wrapBlobContainerModel(BlobContainerInner inner) {
+ return new BlobContainerImpl(inner, manager());
+ }
+
+ private ImmutabilityPolicyImpl wrapImmutabilityPolicyModel(ImmutabilityPolicyInner inner) {
+ return new ImmutabilityPolicyImpl(inner, manager());
+ }
+
+ private Observable getImmutabilityPolicyInnerUsingBlobContainersInnerAsync(String id) {
+ String resourceGroupName = IdParsingUtils.getValueFromIdByName(id, "resourceGroups");
+ String accountName = IdParsingUtils.getValueFromIdByName(id, "storageAccounts");
+ String containerName = IdParsingUtils.getValueFromIdByName(id, "containers");
+ BlobContainersInner client = this.inner();
+ return client.getImmutabilityPolicyAsync(resourceGroupName, accountName, containerName);
+ }
+
+ @Override
+ public Observable listAsync(String resourceGroupName, String accountName) {
+ BlobContainersInner client = this.inner();
+ return client.listAsync(resourceGroupName, accountName)
+ .map(new Func1() {
+ @Override
+ public ListContainerItems call(ListContainerItemsInner inner) {
+ return new ListContainerItemsImpl(inner, manager());
+ }
+ });
+ }
+
+ @Override
+ public Observable getAsync(String resourceGroupName, String accountName, String containerName) {
+ BlobContainersInner client = this.inner();
+ return client.getAsync(resourceGroupName, accountName, containerName)
+ .map(new Func1() {
+ @Override
+ public BlobContainer call(BlobContainerInner inner) {
+ return new BlobContainerImpl(inner, manager());
+ }
+ });
+ }
+
+ @Override
+ public Completable deleteAsync(String resourceGroupName, String accountName, String containerName) {
+ BlobContainersInner client = this.inner();
+ return client.deleteAsync(resourceGroupName, accountName, containerName).toCompletable();
+ }
+
+ @Override
+ public Observable setLegalHoldAsync(String resourceGroupName, String accountName, String containerName, List tags) {
+ BlobContainersInner client = this.inner();
+ return client.setLegalHoldAsync(resourceGroupName, accountName, containerName, tags)
+ .map(new Func1() {
+ @Override
+ public LegalHold call(LegalHoldInner inner) {
+ return new LegalHoldImpl(inner, manager());
+ }
+ });
+ }
+
+ @Override
+ public Observable clearLegalHoldAsync(String resourceGroupName, String accountName, String containerName, List tags) {
+ BlobContainersInner client = this.inner();
+ return client.clearLegalHoldAsync(resourceGroupName, accountName, containerName, tags)
+ .map(new Func1() {
+ @Override
+ public LegalHold call(LegalHoldInner inner) {
+ return new LegalHoldImpl(inner, manager());
+ }
+ });
+ }
+
+ @Override
+ public Observable leaseAsync(String resourceGroupName, String accountName, String containerName) {
+ BlobContainersInner client = this.inner();
+ return client.leaseAsync(resourceGroupName, accountName, containerName)
+ .map(new Func1() {
+ @Override
+ public LeaseContainerResponse call(LeaseContainerResponseInner inner) {
+ return new LeaseContainerResponseImpl(inner, manager());
+ }
+ });
+ }
+
+ @Override
+ public Observable getImmutabilityPolicyAsync(String resourceGroupName, String accountName, String containerName) {
+ BlobContainersInner client = this.inner();
+ return client.getImmutabilityPolicyAsync(resourceGroupName, accountName, containerName)
+ .map(new Func1() {
+ @Override
+ public ImmutabilityPolicy call(ImmutabilityPolicyInner inner) {
+ return wrapImmutabilityPolicyModel(inner);
+ }
+ });
+ }
+
+ @Override
+ public Completable deleteImmutabilityPolicyAsync(String resourceGroupName, String accountName, String containerName, String ifMatch) {
+ BlobContainersInner client = this.inner();
+ return client.deleteImmutabilityPolicyAsync(resourceGroupName, accountName, containerName, ifMatch).toCompletable();
+ }
+
+ @Override
+ public Observable lockImmutabilityPolicyAsync(String resourceGroupName, String accountName, String containerName, String ifMatch) {
+ BlobContainersInner client = this.inner();
+ return client.lockImmutabilityPolicyAsync(resourceGroupName, accountName, containerName, ifMatch)
+ .map(new Func1() {
+ @Override
+ public ImmutabilityPolicy call(ImmutabilityPolicyInner inner) {
+ return new ImmutabilityPolicyImpl(inner, manager());
+ }
+ });
+ }
+
+ @Override
+ public Observable extendImmutabilityPolicyAsync(String resourceGroupName, String accountName, String containerName, String ifMatch, int immutabilityPeriodSinceCreationInDays) {
+ BlobContainersInner client = this.inner();
+ return client.extendImmutabilityPolicyAsync(resourceGroupName, accountName, containerName, ifMatch, immutabilityPeriodSinceCreationInDays)
+ .map(new Func1() {
+ @Override
+ public ImmutabilityPolicy call(ImmutabilityPolicyInner inner) {
+ return new ImmutabilityPolicyImpl(inner, manager());
+ }
+ });
+ }
+
+}
diff --git a/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/implementation/BlobContainersInner.java b/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/implementation/BlobContainersInner.java
new file mode 100644
index 000000000000..5a908ecba24a
--- /dev/null
+++ b/storage/resource-manager/v2019_04_01/src/main/java/com/microsoft/azure/management/storage/v2019_04_01/implementation/BlobContainersInner.java
@@ -0,0 +1,1871 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.storage.v2019_04_01.implementation;
+
+import retrofit2.Retrofit;
+import com.google.common.reflect.TypeToken;
+import com.microsoft.azure.CloudException;
+import com.microsoft.azure.management.storage.v2019_04_01.BlobContainersCreateOrUpdateImmutabilityPolicyHeaders;
+import com.microsoft.azure.management.storage.v2019_04_01.BlobContainersDeleteImmutabilityPolicyHeaders;
+import com.microsoft.azure.management.storage.v2019_04_01.BlobContainersExtendImmutabilityPolicyHeaders;
+import com.microsoft.azure.management.storage.v2019_04_01.BlobContainersGetImmutabilityPolicyHeaders;
+import com.microsoft.azure.management.storage.v2019_04_01.BlobContainersLockImmutabilityPolicyHeaders;
+import com.microsoft.azure.management.storage.v2019_04_01.LeaseContainerRequest;
+import com.microsoft.azure.management.storage.v2019_04_01.PublicAccess;
+import com.microsoft.rest.ServiceCallback;
+import com.microsoft.rest.ServiceFuture;
+import com.microsoft.rest.ServiceResponse;
+import com.microsoft.rest.ServiceResponseWithHeaders;
+import com.microsoft.rest.Validator;
+import java.io.IOException;
+import java.util.List;
+import java.util.Map;
+import okhttp3.ResponseBody;
+import retrofit2.http.Body;
+import retrofit2.http.GET;
+import retrofit2.http.Header;
+import retrofit2.http.Headers;
+import retrofit2.http.HTTP;
+import retrofit2.http.PATCH;
+import retrofit2.http.Path;
+import retrofit2.http.POST;
+import retrofit2.http.PUT;
+import retrofit2.http.Query;
+import retrofit2.Response;
+import rx.functions.Func1;
+import rx.Observable;
+
+/**
+ * An instance of this class provides access to all the operations defined
+ * in BlobContainers.
+ */
+public class BlobContainersInner {
+ /** The Retrofit service to perform REST calls. */
+ private BlobContainersService service;
+ /** The service client containing this operation class. */
+ private StorageManagementClientImpl client;
+
+ /**
+ * Initializes an instance of BlobContainersInner.
+ *
+ * @param retrofit the Retrofit instance built from a Retrofit Builder.
+ * @param client the instance of the service client containing this operation class.
+ */
+ public BlobContainersInner(Retrofit retrofit, StorageManagementClientImpl client) {
+ this.service = retrofit.create(BlobContainersService.class);
+ this.client = client;
+ }
+
+ /**
+ * The interface defining all the services for BlobContainers to be
+ * used by Retrofit to perform actually REST calls.
+ */
+ interface BlobContainersService {
+ @Headers({ "Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.management.storage.v2019_04_01.BlobContainers list" })
+ @GET("subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Storage/storageAccounts/{accountName}/blobServices/default/containers")
+ Observable> list(@Path("resourceGroupName") String resourceGroupName, @Path("accountName") String accountName, @Path("subscriptionId") String subscriptionId, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Header("User-Agent") String userAgent);
+
+ @Headers({ "Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.management.storage.v2019_04_01.BlobContainers create" })
+ @PUT("subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Storage/storageAccounts/{accountName}/blobServices/default/containers/{containerName}")
+ Observable> create(@Path("resourceGroupName") String resourceGroupName, @Path("accountName") String accountName, @Path("containerName") String containerName, @Path("subscriptionId") String subscriptionId, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Body BlobContainerInner blobContainer, @Header("User-Agent") String userAgent);
+
+ @Headers({ "Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.management.storage.v2019_04_01.BlobContainers update" })
+ @PATCH("subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Storage/storageAccounts/{accountName}/blobServices/default/containers/{containerName}")
+ Observable> update(@Path("resourceGroupName") String resourceGroupName, @Path("accountName") String accountName, @Path("containerName") String containerName, @Path("subscriptionId") String subscriptionId, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Body BlobContainerInner blobContainer, @Header("User-Agent") String userAgent);
+
+ @Headers({ "Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.management.storage.v2019_04_01.BlobContainers get" })
+ @GET("subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Storage/storageAccounts/{accountName}/blobServices/default/containers/{containerName}")
+ Observable> get(@Path("resourceGroupName") String resourceGroupName, @Path("accountName") String accountName, @Path("containerName") String containerName, @Path("subscriptionId") String subscriptionId, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Header("User-Agent") String userAgent);
+
+ @Headers({ "Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.management.storage.v2019_04_01.BlobContainers delete" })
+ @HTTP(path = "subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Storage/storageAccounts/{accountName}/blobServices/default/containers/{containerName}", method = "DELETE", hasBody = true)
+ Observable> delete(@Path("resourceGroupName") String resourceGroupName, @Path("accountName") String accountName, @Path("containerName") String containerName, @Path("subscriptionId") String subscriptionId, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Header("User-Agent") String userAgent);
+
+ @Headers({ "Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.management.storage.v2019_04_01.BlobContainers setLegalHold" })
+ @POST("subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Storage/storageAccounts/{accountName}/blobServices/default/containers/{containerName}/setLegalHold")
+ Observable> setLegalHold(@Path("resourceGroupName") String resourceGroupName, @Path("accountName") String accountName, @Path("containerName") String containerName, @Path("subscriptionId") String subscriptionId, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Body LegalHoldInner legalHold, @Header("User-Agent") String userAgent);
+
+ @Headers({ "Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.management.storage.v2019_04_01.BlobContainers clearLegalHold" })
+ @POST("subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Storage/storageAccounts/{accountName}/blobServices/default/containers/{containerName}/clearLegalHold")
+ Observable> clearLegalHold(@Path("resourceGroupName") String resourceGroupName, @Path("accountName") String accountName, @Path("containerName") String containerName, @Path("subscriptionId") String subscriptionId, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Body LegalHoldInner legalHold, @Header("User-Agent") String userAgent);
+
+ @Headers({ "Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.management.storage.v2019_04_01.BlobContainers createOrUpdateImmutabilityPolicy" })
+ @PUT("subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Storage/storageAccounts/{accountName}/blobServices/default/containers/{containerName}/immutabilityPolicies/{immutabilityPolicyName}")
+ Observable> createOrUpdateImmutabilityPolicy(@Path("resourceGroupName") String resourceGroupName, @Path("accountName") String accountName, @Path("containerName") String containerName, @Path("immutabilityPolicyName") String immutabilityPolicyName, @Path("subscriptionId") String subscriptionId, @Query("api-version") String apiVersion, @Header("If-Match") String ifMatch, @Header("accept-language") String acceptLanguage, @Body ImmutabilityPolicyInner parameters, @Header("User-Agent") String userAgent);
+
+ @Headers({ "Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.management.storage.v2019_04_01.BlobContainers getImmutabilityPolicy" })
+ @GET("subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Storage/storageAccounts/{accountName}/blobServices/default/containers/{containerName}/immutabilityPolicies/{immutabilityPolicyName}")
+ Observable> getImmutabilityPolicy(@Path("resourceGroupName") String resourceGroupName, @Path("accountName") String accountName, @Path("containerName") String containerName, @Path("immutabilityPolicyName") String immutabilityPolicyName, @Path("subscriptionId") String subscriptionId, @Query("api-version") String apiVersion, @Header("If-Match") String ifMatch, @Header("accept-language") String acceptLanguage, @Header("User-Agent") String userAgent);
+
+ @Headers({ "Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.management.storage.v2019_04_01.BlobContainers deleteImmutabilityPolicy" })
+ @HTTP(path = "subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Storage/storageAccounts/{accountName}/blobServices/default/containers/{containerName}/immutabilityPolicies/{immutabilityPolicyName}", method = "DELETE", hasBody = true)
+ Observable> deleteImmutabilityPolicy(@Path("resourceGroupName") String resourceGroupName, @Path("accountName") String accountName, @Path("containerName") String containerName, @Path("immutabilityPolicyName") String immutabilityPolicyName, @Path("subscriptionId") String subscriptionId, @Query("api-version") String apiVersion, @Header("If-Match") String ifMatch, @Header("accept-language") String acceptLanguage, @Header("User-Agent") String userAgent);
+
+ @Headers({ "Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.management.storage.v2019_04_01.BlobContainers lockImmutabilityPolicy" })
+ @POST("subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Storage/storageAccounts/{accountName}/blobServices/default/containers/{containerName}/immutabilityPolicies/default/lock")
+ Observable> lockImmutabilityPolicy(@Path("resourceGroupName") String resourceGroupName, @Path("accountName") String accountName, @Path("containerName") String containerName, @Path("subscriptionId") String subscriptionId, @Query("api-version") String apiVersion, @Header("If-Match") String ifMatch, @Header("accept-language") String acceptLanguage, @Header("User-Agent") String userAgent);
+
+ @Headers({ "Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.management.storage.v2019_04_01.BlobContainers extendImmutabilityPolicy" })
+ @POST("subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Storage/storageAccounts/{accountName}/blobServices/default/containers/{containerName}/immutabilityPolicies/default/extend")
+ Observable> extendImmutabilityPolicy(@Path("resourceGroupName") String resourceGroupName, @Path("accountName") String accountName, @Path("containerName") String containerName, @Path("subscriptionId") String subscriptionId, @Query("api-version") String apiVersion, @Header("If-Match") String ifMatch, @Header("accept-language") String acceptLanguage, @Body ImmutabilityPolicyInner parameters, @Header("User-Agent") String userAgent);
+
+ @Headers({ "Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.management.storage.v2019_04_01.BlobContainers lease" })
+ @POST("subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Storage/storageAccounts/{accountName}/blobServices/default/containers/{containerName}/lease")
+ Observable> lease(@Path("resourceGroupName") String resourceGroupName, @Path("accountName") String accountName, @Path("containerName") String containerName, @Path("subscriptionId") String subscriptionId, @Query("api-version") String apiVersion, @Body LeaseContainerRequest parameters, @Header("accept-language") String acceptLanguage, @Header("User-Agent") String userAgent);
+
+ }
+
+ /**
+ * 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 CloudException thrown if the request is rejected by server
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent
+ * @return the ListContainerItemsInner object if successful.
+ */
+ public ListContainerItemsInner list(String resourceGroupName, String accountName) {
+ return listWithServiceResponseAsync(resourceGroupName, accountName).toBlocking().single().body();
+ }
+
+ /**
+ * 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 serviceCallback the async ServiceCallback to handle successful and failed responses.
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @return the {@link ServiceFuture} object
+ */
+ public ServiceFuture listAsync(String resourceGroupName, String accountName, final ServiceCallback serviceCallback) {
+ return ServiceFuture.fromResponse(listWithServiceResponseAsync(resourceGroupName, accountName), serviceCallback);
+ }
+
+ /**
+ * 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
+ * @return the observable to the ListContainerItemsInner object
+ */
+ public Observable listAsync(String resourceGroupName, String accountName) {
+ return listWithServiceResponseAsync(resourceGroupName, accountName).map(new Func1, ListContainerItemsInner>() {
+ @Override
+ public ListContainerItemsInner call(ServiceResponse response) {
+ return response.body();
+ }
+ });
+ }
+
+ /**
+ * 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
+ * @return the observable to the ListContainerItemsInner object
+ */
+ public Observable> listWithServiceResponseAsync(String resourceGroupName, String accountName) {
+ if (resourceGroupName == null) {
+ throw new IllegalArgumentException("Parameter resourceGroupName is required and cannot be null.");
+ }
+ if (accountName == null) {
+ throw new IllegalArgumentException("Parameter accountName is required and cannot be null.");
+ }
+ if (this.client.subscriptionId() == null) {
+ throw new IllegalArgumentException("Parameter this.client.subscriptionId() is required and cannot be null.");
+ }
+ if (this.client.apiVersion() == null) {
+ throw new IllegalArgumentException("Parameter this.client.apiVersion() is required and cannot be null.");
+ }
+ return service.list(resourceGroupName, accountName, this.client.subscriptionId(), this.client.apiVersion(), this.client.acceptLanguage(), this.client.userAgent())
+ .flatMap(new Func1, Observable>>() {
+ @Override
+ public Observable> call(Response response) {
+ try {
+ ServiceResponse clientResponse = listDelegate(response);
+ return Observable.just(clientResponse);
+ } catch (Throwable t) {
+ return Observable.error(t);
+ }
+ }
+ });
+ }
+
+ private ServiceResponse listDelegate(Response response) throws CloudException, IOException, IllegalArgumentException {
+ return this.client.restClient().responseBuilderFactory().newInstance(this.client.serializerAdapter())
+ .register(200, new TypeToken() { }.getType())
+ .registerError(CloudException.class)
+ .build(response);
+ }
+
+ /**
+ * 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.
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @throws CloudException thrown if the request is rejected by server
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent
+ * @return the BlobContainerInner object if successful.
+ */
+ public BlobContainerInner create(String resourceGroupName, String accountName, String containerName) {
+ return createWithServiceResponseAsync(resourceGroupName, accountName, containerName).toBlocking().single().body();
+ }
+
+ /**
+ * 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 serviceCallback the async ServiceCallback to handle successful and failed responses.
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @return the {@link ServiceFuture} object
+ */
+ public ServiceFuture createAsync(String resourceGroupName, String accountName, String containerName, final ServiceCallback serviceCallback) {
+ return ServiceFuture.fromResponse(createWithServiceResponseAsync(resourceGroupName, accountName, containerName), serviceCallback);
+ }
+
+ /**
+ * 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.
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @return the observable to the BlobContainerInner object
+ */
+ public Observable createAsync(String resourceGroupName, String accountName, String containerName) {
+ return createWithServiceResponseAsync(resourceGroupName, accountName, containerName).map(new Func1, BlobContainerInner>() {
+ @Override
+ public BlobContainerInner call(ServiceResponse response) {
+ return response.body();
+ }
+ });
+ }
+
+ /**
+ * 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.
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @return the observable to the BlobContainerInner object
+ */
+ public Observable> createWithServiceResponseAsync(String resourceGroupName, String accountName, String containerName) {
+ if (resourceGroupName == null) {
+ throw new IllegalArgumentException("Parameter resourceGroupName is required and cannot be null.");
+ }
+ if (accountName == null) {
+ throw new IllegalArgumentException("Parameter accountName is required and cannot be null.");
+ }
+ if (containerName == null) {
+ throw new IllegalArgumentException("Parameter containerName is required and cannot be null.");
+ }
+ if (this.client.subscriptionId() == null) {
+ throw new IllegalArgumentException("Parameter this.client.subscriptionId() is required and cannot be null.");
+ }
+ if (this.client.apiVersion() == null) {
+ throw new IllegalArgumentException("Parameter this.client.apiVersion() is required and cannot be null.");
+ }
+ final PublicAccess publicAccess = null;
+ final Map metadata = null;
+ BlobContainerInner blobContainer = new BlobContainerInner();
+ blobContainer.withPublicAccess(null);
+ blobContainer.withMetadata(null);
+ return service.create(resourceGroupName, accountName, containerName, this.client.subscriptionId(), this.client.apiVersion(), this.client.acceptLanguage(), blobContainer, this.client.userAgent())
+ .flatMap(new Func1, Observable>>() {
+ @Override
+ public Observable> call(Response response) {
+ try {
+ ServiceResponse clientResponse = createDelegate(response);
+ return Observable.just(clientResponse);
+ } catch (Throwable t) {
+ return Observable.error(t);
+ }
+ }
+ });
+ }
+
+ /**
+ * 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 publicAccess Specifies whether data in the container may be accessed publicly and the level of access. Possible values include: 'Container', 'Blob', 'None'
+ * @param metadata A name-value pair to associate with the container as metadata.
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @throws CloudException thrown if the request is rejected by server
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent
+ * @return the BlobContainerInner object if successful.
+ */
+ public BlobContainerInner create(String resourceGroupName, String accountName, String containerName, PublicAccess publicAccess, Map metadata) {
+ return createWithServiceResponseAsync(resourceGroupName, accountName, containerName, publicAccess, metadata).toBlocking().single().body();
+ }
+
+ /**
+ * 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 publicAccess Specifies whether data in the container may be accessed publicly and the level of access. Possible values include: 'Container', 'Blob', 'None'
+ * @param metadata A name-value pair to associate with the container as metadata.
+ * @param serviceCallback the async ServiceCallback to handle successful and failed responses.
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @return the {@link ServiceFuture} object
+ */
+ public ServiceFuture createAsync(String resourceGroupName, String accountName, String containerName, PublicAccess publicAccess, Map metadata, final ServiceCallback serviceCallback) {
+ return ServiceFuture.fromResponse(createWithServiceResponseAsync(resourceGroupName, accountName, containerName, publicAccess, metadata), serviceCallback);
+ }
+
+ /**
+ * 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 publicAccess Specifies whether data in the container may be accessed publicly and the level of access. Possible values include: 'Container', 'Blob', 'None'
+ * @param metadata A name-value pair to associate with the container as metadata.
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @return the observable to the BlobContainerInner object
+ */
+ public Observable createAsync(String resourceGroupName, String accountName, String containerName, PublicAccess publicAccess, Map metadata) {
+ return createWithServiceResponseAsync(resourceGroupName, accountName, containerName, publicAccess, metadata).map(new Func1