diff --git a/storage/resource-manager/v2018_07_01/pom.xml b/storage/resource-manager/v2018_07_01/pom.xml
new file mode 100644
index 000000000000..28ed9952bd3e
--- /dev/null
+++ b/storage/resource-manager/v2018_07_01/pom.xml
@@ -0,0 +1,133 @@
+
+
+ 4.0.0
+ com.microsoft.azure.storage.v2018_07_01
+
+ com.microsoft.azure
+ azure-arm-parent
+ 0.0.2-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-libraries-for-java
+
+
+ The MIT License (MIT)
+ http://opensource.org/licenses/MIT
+ repo
+
+
+
+ scm:git:https://github.com/Azure/azure-libraries-for-java
+ scm:git:git@github.com:Azure/azure-libraries-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/v2018_07_01/src/main/java/com/microsoft/azure/management/storage/v2018_07_01/AccessTier.java b/storage/resource-manager/v2018_07_01/src/main/java/com/microsoft/azure/management/storage/v2018_07_01/AccessTier.java
new file mode 100644
index 000000000000..f9bd978583b0
--- /dev/null
+++ b/storage/resource-manager/v2018_07_01/src/main/java/com/microsoft/azure/management/storage/v2018_07_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.v2018_07_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/v2018_07_01/src/main/java/com/microsoft/azure/management/storage/v2018_07_01/AccountSasParameters.java b/storage/resource-manager/v2018_07_01/src/main/java/com/microsoft/azure/management/storage/v2018_07_01/AccountSasParameters.java
new file mode 100644
index 000000000000..c8733cc58301
--- /dev/null
+++ b/storage/resource-manager/v2018_07_01/src/main/java/com/microsoft/azure/management/storage/v2018_07_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.v2018_07_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/v2018_07_01/src/main/java/com/microsoft/azure/management/storage/v2018_07_01/AccountStatus.java b/storage/resource-manager/v2018_07_01/src/main/java/com/microsoft/azure/management/storage/v2018_07_01/AccountStatus.java
new file mode 100644
index 000000000000..8bb3ecb8330b
--- /dev/null
+++ b/storage/resource-manager/v2018_07_01/src/main/java/com/microsoft/azure/management/storage/v2018_07_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.v2018_07_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/v2018_07_01/src/main/java/com/microsoft/azure/management/storage/v2018_07_01/Action.java b/storage/resource-manager/v2018_07_01/src/main/java/com/microsoft/azure/management/storage/v2018_07_01/Action.java
new file mode 100644
index 000000000000..1b3daa0e428b
--- /dev/null
+++ b/storage/resource-manager/v2018_07_01/src/main/java/com/microsoft/azure/management/storage/v2018_07_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.v2018_07_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/v2018_07_01/src/main/java/com/microsoft/azure/management/storage/v2018_07_01/AzureEntityResource.java b/storage/resource-manager/v2018_07_01/src/main/java/com/microsoft/azure/management/storage/v2018_07_01/AzureEntityResource.java
new file mode 100644
index 000000000000..27c132393546
--- /dev/null
+++ b/storage/resource-manager/v2018_07_01/src/main/java/com/microsoft/azure/management/storage/v2018_07_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.v2018_07_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/v2018_07_01/src/main/java/com/microsoft/azure/management/storage/v2018_07_01/BlobContainer.java b/storage/resource-manager/v2018_07_01/src/main/java/com/microsoft/azure/management/storage/v2018_07_01/BlobContainer.java
new file mode 100644
index 000000000000..3094bc2edbce
--- /dev/null
+++ b/storage/resource-manager/v2018_07_01/src/main/java/com/microsoft/azure/management/storage/v2018_07_01/BlobContainer.java
@@ -0,0 +1,141 @@
+/**
+ * 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.v2018_07_01;
+
+import com.microsoft.azure.arm.model.HasInner;
+import com.microsoft.azure.management.storage.v2018_07_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.v2018_07_01.implementation.StorageManager;
+import org.joda.time.DateTime;
+import java.util.Map;
+
+/**
+ * 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.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.
+ */
+ WithCreate withExistingBlobService(String resourceGroupName, String accountName);
+ }
+
+ /**
+ * 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 {
+ }
+
+ /**
+ * Grouping of BlobContainer update stages.
+ */
+ interface UpdateStages {
+ }
+}
diff --git a/storage/resource-manager/v2018_07_01/src/main/java/com/microsoft/azure/management/storage/v2018_07_01/BlobContainers.java b/storage/resource-manager/v2018_07_01/src/main/java/com/microsoft/azure/management/storage/v2018_07_01/BlobContainers.java
new file mode 100644
index 000000000000..19a94b05e165
--- /dev/null
+++ b/storage/resource-manager/v2018_07_01/src/main/java/com/microsoft/azure/management/storage/v2018_07_01/BlobContainers.java
@@ -0,0 +1,137 @@
+/**
+ * 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.v2018_07_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);
+
+ /**
+ * 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/v2018_07_01/src/main/java/com/microsoft/azure/management/storage/v2018_07_01/BlobContainersCreateOrUpdateImmutabilityPolicyHeaders.java b/storage/resource-manager/v2018_07_01/src/main/java/com/microsoft/azure/management/storage/v2018_07_01/BlobContainersCreateOrUpdateImmutabilityPolicyHeaders.java
new file mode 100644
index 000000000000..db2d123e31ed
--- /dev/null
+++ b/storage/resource-manager/v2018_07_01/src/main/java/com/microsoft/azure/management/storage/v2018_07_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.v2018_07_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/v2018_07_01/src/main/java/com/microsoft/azure/management/storage/v2018_07_01/BlobContainersDeleteImmutabilityPolicyHeaders.java b/storage/resource-manager/v2018_07_01/src/main/java/com/microsoft/azure/management/storage/v2018_07_01/BlobContainersDeleteImmutabilityPolicyHeaders.java
new file mode 100644
index 000000000000..f3b043de5328
--- /dev/null
+++ b/storage/resource-manager/v2018_07_01/src/main/java/com/microsoft/azure/management/storage/v2018_07_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.v2018_07_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/v2018_07_01/src/main/java/com/microsoft/azure/management/storage/v2018_07_01/BlobContainersExtendImmutabilityPolicyHeaders.java b/storage/resource-manager/v2018_07_01/src/main/java/com/microsoft/azure/management/storage/v2018_07_01/BlobContainersExtendImmutabilityPolicyHeaders.java
new file mode 100644
index 000000000000..c641ff8365cc
--- /dev/null
+++ b/storage/resource-manager/v2018_07_01/src/main/java/com/microsoft/azure/management/storage/v2018_07_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.v2018_07_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/v2018_07_01/src/main/java/com/microsoft/azure/management/storage/v2018_07_01/BlobContainersGetImmutabilityPolicyHeaders.java b/storage/resource-manager/v2018_07_01/src/main/java/com/microsoft/azure/management/storage/v2018_07_01/BlobContainersGetImmutabilityPolicyHeaders.java
new file mode 100644
index 000000000000..cc903df66251
--- /dev/null
+++ b/storage/resource-manager/v2018_07_01/src/main/java/com/microsoft/azure/management/storage/v2018_07_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.v2018_07_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/v2018_07_01/src/main/java/com/microsoft/azure/management/storage/v2018_07_01/BlobContainersLockImmutabilityPolicyHeaders.java b/storage/resource-manager/v2018_07_01/src/main/java/com/microsoft/azure/management/storage/v2018_07_01/BlobContainersLockImmutabilityPolicyHeaders.java
new file mode 100644
index 000000000000..783a40031c1f
--- /dev/null
+++ b/storage/resource-manager/v2018_07_01/src/main/java/com/microsoft/azure/management/storage/v2018_07_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.v2018_07_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/v2018_07_01/src/main/java/com/microsoft/azure/management/storage/v2018_07_01/Bypass.java b/storage/resource-manager/v2018_07_01/src/main/java/com/microsoft/azure/management/storage/v2018_07_01/Bypass.java
new file mode 100644
index 000000000000..a68d9e2fe5a3
--- /dev/null
+++ b/storage/resource-manager/v2018_07_01/src/main/java/com/microsoft/azure/management/storage/v2018_07_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.v2018_07_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/v2018_07_01/src/main/java/com/microsoft/azure/management/storage/v2018_07_01/CheckNameAvailabilityResult.java b/storage/resource-manager/v2018_07_01/src/main/java/com/microsoft/azure/management/storage/v2018_07_01/CheckNameAvailabilityResult.java
new file mode 100644
index 000000000000..9b9d52040b50
--- /dev/null
+++ b/storage/resource-manager/v2018_07_01/src/main/java/com/microsoft/azure/management/storage/v2018_07_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.v2018_07_01;
+
+import com.microsoft.azure.arm.model.HasInner;
+import com.microsoft.azure.arm.resources.models.HasManager;
+import com.microsoft.azure.management.storage.v2018_07_01.implementation.StorageManager;
+import com.microsoft.azure.management.storage.v2018_07_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/v2018_07_01/src/main/java/com/microsoft/azure/management/storage/v2018_07_01/CustomDomain.java b/storage/resource-manager/v2018_07_01/src/main/java/com/microsoft/azure/management/storage/v2018_07_01/CustomDomain.java
new file mode 100644
index 000000000000..d94a30c7346d
--- /dev/null
+++ b/storage/resource-manager/v2018_07_01/src/main/java/com/microsoft/azure/management/storage/v2018_07_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.v2018_07_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 = "useSubDomain")
+ private Boolean useSubDomain;
+
+ /**
+ * 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 useSubDomain value
+ */
+ public Boolean useSubDomain() {
+ return this.useSubDomain;
+ }
+
+ /**
+ * Set indicates whether indirect CName validation is enabled. Default value is false. This should only be set on updates.
+ *
+ * @param useSubDomain the useSubDomain value to set
+ * @return the CustomDomain object itself.
+ */
+ public CustomDomain withUseSubDomain(Boolean useSubDomain) {
+ this.useSubDomain = useSubDomain;
+ return this;
+ }
+
+}
diff --git a/storage/resource-manager/v2018_07_01/src/main/java/com/microsoft/azure/management/storage/v2018_07_01/DefaultAction.java b/storage/resource-manager/v2018_07_01/src/main/java/com/microsoft/azure/management/storage/v2018_07_01/DefaultAction.java
new file mode 100644
index 000000000000..1288b15213b0
--- /dev/null
+++ b/storage/resource-manager/v2018_07_01/src/main/java/com/microsoft/azure/management/storage/v2018_07_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.v2018_07_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/v2018_07_01/src/main/java/com/microsoft/azure/management/storage/v2018_07_01/Dimension.java b/storage/resource-manager/v2018_07_01/src/main/java/com/microsoft/azure/management/storage/v2018_07_01/Dimension.java
new file mode 100644
index 000000000000..865d0b65bb53
--- /dev/null
+++ b/storage/resource-manager/v2018_07_01/src/main/java/com/microsoft/azure/management/storage/v2018_07_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.v2018_07_01;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/**
+ * Dimension of blobs, possiblly 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/v2018_07_01/src/main/java/com/microsoft/azure/management/storage/v2018_07_01/Encryption.java b/storage/resource-manager/v2018_07_01/src/main/java/com/microsoft/azure/management/storage/v2018_07_01/Encryption.java
new file mode 100644
index 000000000000..4adf6db17e0c
--- /dev/null
+++ b/storage/resource-manager/v2018_07_01/src/main/java/com/microsoft/azure/management/storage/v2018_07_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.v2018_07_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/v2018_07_01/src/main/java/com/microsoft/azure/management/storage/v2018_07_01/EncryptionService.java b/storage/resource-manager/v2018_07_01/src/main/java/com/microsoft/azure/management/storage/v2018_07_01/EncryptionService.java
new file mode 100644
index 000000000000..2ca0c90fa5fc
--- /dev/null
+++ b/storage/resource-manager/v2018_07_01/src/main/java/com/microsoft/azure/management/storage/v2018_07_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.v2018_07_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/v2018_07_01/src/main/java/com/microsoft/azure/management/storage/v2018_07_01/EncryptionServices.java b/storage/resource-manager/v2018_07_01/src/main/java/com/microsoft/azure/management/storage/v2018_07_01/EncryptionServices.java
new file mode 100644
index 000000000000..ea298d31cc50
--- /dev/null
+++ b/storage/resource-manager/v2018_07_01/src/main/java/com/microsoft/azure/management/storage/v2018_07_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.v2018_07_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/v2018_07_01/src/main/java/com/microsoft/azure/management/storage/v2018_07_01/Endpoints.java b/storage/resource-manager/v2018_07_01/src/main/java/com/microsoft/azure/management/storage/v2018_07_01/Endpoints.java
new file mode 100644
index 000000000000..024a532869d1
--- /dev/null
+++ b/storage/resource-manager/v2018_07_01/src/main/java/com/microsoft/azure/management/storage/v2018_07_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.v2018_07_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/v2018_07_01/src/main/java/com/microsoft/azure/management/storage/v2018_07_01/HttpProtocol.java b/storage/resource-manager/v2018_07_01/src/main/java/com/microsoft/azure/management/storage/v2018_07_01/HttpProtocol.java
new file mode 100644
index 000000000000..7e8329c04604
--- /dev/null
+++ b/storage/resource-manager/v2018_07_01/src/main/java/com/microsoft/azure/management/storage/v2018_07_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.v2018_07_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/v2018_07_01/src/main/java/com/microsoft/azure/management/storage/v2018_07_01/IPRule.java b/storage/resource-manager/v2018_07_01/src/main/java/com/microsoft/azure/management/storage/v2018_07_01/IPRule.java
new file mode 100644
index 000000000000..39969b9a9d56
--- /dev/null
+++ b/storage/resource-manager/v2018_07_01/src/main/java/com/microsoft/azure/management/storage/v2018_07_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.v2018_07_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/v2018_07_01/src/main/java/com/microsoft/azure/management/storage/v2018_07_01/Identity.java b/storage/resource-manager/v2018_07_01/src/main/java/com/microsoft/azure/management/storage/v2018_07_01/Identity.java
new file mode 100644
index 000000000000..a39e940448fb
--- /dev/null
+++ b/storage/resource-manager/v2018_07_01/src/main/java/com/microsoft/azure/management/storage/v2018_07_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.v2018_07_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/v2018_07_01/src/main/java/com/microsoft/azure/management/storage/v2018_07_01/ImmutabilityPolicy.java b/storage/resource-manager/v2018_07_01/src/main/java/com/microsoft/azure/management/storage/v2018_07_01/ImmutabilityPolicy.java
new file mode 100644
index 000000000000..a70873dc21f3
--- /dev/null
+++ b/storage/resource-manager/v2018_07_01/src/main/java/com/microsoft/azure/management/storage/v2018_07_01/ImmutabilityPolicy.java
@@ -0,0 +1,120 @@
+/**
+ * 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.v2018_07_01;
+
+import com.microsoft.azure.arm.model.HasInner;
+import com.microsoft.azure.management.storage.v2018_07_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.v2018_07_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.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.
+ */
+ WithImmutabilityPeriodSinceCreationInDays withExistingContainer(String resourceGroupName, String accountName, String containerName);
+ }
+
+ /**
+ * The stage of the immutabilitypolicy definition allowing to specify ImmutabilityPeriodSinceCreationInDays.
+ */
+ interface WithImmutabilityPeriodSinceCreationInDays {
+ /**
+ * Specifies immutabilityPeriodSinceCreationInDays.
+ */
+ 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.WithImmutabilityPeriodSinceCreationInDays {
+ }
+
+ /**
+ * Grouping of ImmutabilityPolicy update stages.
+ */
+ interface UpdateStages {
+ /**
+ * The stage of the immutabilitypolicy update allowing to specify ImmutabilityPeriodSinceCreationInDays.
+ */
+ interface WithImmutabilityPeriodSinceCreationInDays {
+ /**
+ * Specifies immutabilityPeriodSinceCreationInDays.
+ */
+ Update withImmutabilityPeriodSinceCreationInDays(int immutabilityPeriodSinceCreationInDays);
+ }
+
+ }
+}
diff --git a/storage/resource-manager/v2018_07_01/src/main/java/com/microsoft/azure/management/storage/v2018_07_01/ImmutabilityPolicyProperties.java b/storage/resource-manager/v2018_07_01/src/main/java/com/microsoft/azure/management/storage/v2018_07_01/ImmutabilityPolicyProperties.java
new file mode 100644
index 000000000000..265ba7f39c34
--- /dev/null
+++ b/storage/resource-manager/v2018_07_01/src/main/java/com/microsoft/azure/management/storage/v2018_07_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.v2018_07_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/v2018_07_01/src/main/java/com/microsoft/azure/management/storage/v2018_07_01/ImmutabilityPolicyState.java b/storage/resource-manager/v2018_07_01/src/main/java/com/microsoft/azure/management/storage/v2018_07_01/ImmutabilityPolicyState.java
new file mode 100644
index 000000000000..24db04ba6629
--- /dev/null
+++ b/storage/resource-manager/v2018_07_01/src/main/java/com/microsoft/azure/management/storage/v2018_07_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.v2018_07_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/v2018_07_01/src/main/java/com/microsoft/azure/management/storage/v2018_07_01/ImmutabilityPolicyUpdateType.java b/storage/resource-manager/v2018_07_01/src/main/java/com/microsoft/azure/management/storage/v2018_07_01/ImmutabilityPolicyUpdateType.java
new file mode 100644
index 000000000000..f74d6ad53bf7
--- /dev/null
+++ b/storage/resource-manager/v2018_07_01/src/main/java/com/microsoft/azure/management/storage/v2018_07_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.v2018_07_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/v2018_07_01/src/main/java/com/microsoft/azure/management/storage/v2018_07_01/KeyPermission.java b/storage/resource-manager/v2018_07_01/src/main/java/com/microsoft/azure/management/storage/v2018_07_01/KeyPermission.java
new file mode 100644
index 000000000000..a86ee51c918a
--- /dev/null
+++ b/storage/resource-manager/v2018_07_01/src/main/java/com/microsoft/azure/management/storage/v2018_07_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.v2018_07_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/v2018_07_01/src/main/java/com/microsoft/azure/management/storage/v2018_07_01/KeySource.java b/storage/resource-manager/v2018_07_01/src/main/java/com/microsoft/azure/management/storage/v2018_07_01/KeySource.java
new file mode 100644
index 000000000000..066a305ca683
--- /dev/null
+++ b/storage/resource-manager/v2018_07_01/src/main/java/com/microsoft/azure/management/storage/v2018_07_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.v2018_07_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/v2018_07_01/src/main/java/com/microsoft/azure/management/storage/v2018_07_01/KeyVaultProperties.java b/storage/resource-manager/v2018_07_01/src/main/java/com/microsoft/azure/management/storage/v2018_07_01/KeyVaultProperties.java
new file mode 100644
index 000000000000..95fa4c9830c9
--- /dev/null
+++ b/storage/resource-manager/v2018_07_01/src/main/java/com/microsoft/azure/management/storage/v2018_07_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.v2018_07_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/v2018_07_01/src/main/java/com/microsoft/azure/management/storage/v2018_07_01/Kind.java b/storage/resource-manager/v2018_07_01/src/main/java/com/microsoft/azure/management/storage/v2018_07_01/Kind.java
new file mode 100644
index 000000000000..a51356efc98a
--- /dev/null
+++ b/storage/resource-manager/v2018_07_01/src/main/java/com/microsoft/azure/management/storage/v2018_07_01/Kind.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.v2018_07_01;
+
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonValue;
+
+/**
+ * Defines values for Kind.
+ */
+public enum Kind {
+ /** Enum value Storage. */
+ STORAGE("Storage"),
+
+ /** Enum value StorageV2. */
+ STORAGE_V2("StorageV2"),
+
+ /** Enum value BlobStorage. */
+ BLOB_STORAGE("BlobStorage"),
+
+ /** Enum value FileStorage. */
+ FILE_STORAGE("FileStorage"),
+
+ /** Enum value BlockBlobStorage. */
+ BLOCK_BLOB_STORAGE("BlockBlobStorage");
+
+ /** The actual serialized value for a Kind instance. */
+ private String value;
+
+ Kind(String value) {
+ this.value = value;
+ }
+
+ /**
+ * Parses a serialized value to a Kind instance.
+ *
+ * @param value the serialized value to parse.
+ * @return the parsed Kind object, or null if unable to parse.
+ */
+ @JsonCreator
+ public static Kind fromString(String value) {
+ Kind[] items = Kind.values();
+ for (Kind 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/v2018_07_01/src/main/java/com/microsoft/azure/management/storage/v2018_07_01/LeaseDuration.java b/storage/resource-manager/v2018_07_01/src/main/java/com/microsoft/azure/management/storage/v2018_07_01/LeaseDuration.java
new file mode 100644
index 000000000000..d1d6da00b952
--- /dev/null
+++ b/storage/resource-manager/v2018_07_01/src/main/java/com/microsoft/azure/management/storage/v2018_07_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.v2018_07_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/v2018_07_01/src/main/java/com/microsoft/azure/management/storage/v2018_07_01/LeaseState.java b/storage/resource-manager/v2018_07_01/src/main/java/com/microsoft/azure/management/storage/v2018_07_01/LeaseState.java
new file mode 100644
index 000000000000..1f772b5cb047
--- /dev/null
+++ b/storage/resource-manager/v2018_07_01/src/main/java/com/microsoft/azure/management/storage/v2018_07_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.v2018_07_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/v2018_07_01/src/main/java/com/microsoft/azure/management/storage/v2018_07_01/LeaseStatus.java b/storage/resource-manager/v2018_07_01/src/main/java/com/microsoft/azure/management/storage/v2018_07_01/LeaseStatus.java
new file mode 100644
index 000000000000..fcf25e9cb127
--- /dev/null
+++ b/storage/resource-manager/v2018_07_01/src/main/java/com/microsoft/azure/management/storage/v2018_07_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.v2018_07_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/v2018_07_01/src/main/java/com/microsoft/azure/management/storage/v2018_07_01/LegalHold.java b/storage/resource-manager/v2018_07_01/src/main/java/com/microsoft/azure/management/storage/v2018_07_01/LegalHold.java
new file mode 100644
index 000000000000..cbbf13b3b23c
--- /dev/null
+++ b/storage/resource-manager/v2018_07_01/src/main/java/com/microsoft/azure/management/storage/v2018_07_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.v2018_07_01;
+
+import com.microsoft.azure.arm.model.HasInner;
+import com.microsoft.azure.arm.resources.models.HasManager;
+import com.microsoft.azure.management.storage.v2018_07_01.implementation.StorageManager;
+import com.microsoft.azure.management.storage.v2018_07_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/v2018_07_01/src/main/java/com/microsoft/azure/management/storage/v2018_07_01/LegalHoldProperties.java b/storage/resource-manager/v2018_07_01/src/main/java/com/microsoft/azure/management/storage/v2018_07_01/LegalHoldProperties.java
new file mode 100644
index 000000000000..1f599f3b760d
--- /dev/null
+++ b/storage/resource-manager/v2018_07_01/src/main/java/com/microsoft/azure/management/storage/v2018_07_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.v2018_07_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/v2018_07_01/src/main/java/com/microsoft/azure/management/storage/v2018_07_01/ListAccountSasResponse.java b/storage/resource-manager/v2018_07_01/src/main/java/com/microsoft/azure/management/storage/v2018_07_01/ListAccountSasResponse.java
new file mode 100644
index 000000000000..e4c73fde7516
--- /dev/null
+++ b/storage/resource-manager/v2018_07_01/src/main/java/com/microsoft/azure/management/storage/v2018_07_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.v2018_07_01;
+
+import com.microsoft.azure.arm.model.HasInner;
+import com.microsoft.azure.arm.resources.models.HasManager;
+import com.microsoft.azure.management.storage.v2018_07_01.implementation.StorageManager;
+import com.microsoft.azure.management.storage.v2018_07_01.implementation.ListAccountSasResponseInner;
+
+/**
+ * Type representing ListAccountSasResponse.
+ */
+public interface ListAccountSasResponse extends HasInner, HasManager {
+ /**
+ * @return the accountSasToken value.
+ */
+ String accountSasToken();
+
+}
diff --git a/storage/resource-manager/v2018_07_01/src/main/java/com/microsoft/azure/management/storage/v2018_07_01/ListContainerItem.java b/storage/resource-manager/v2018_07_01/src/main/java/com/microsoft/azure/management/storage/v2018_07_01/ListContainerItem.java
new file mode 100644
index 000000000000..c93c2a5921ac
--- /dev/null
+++ b/storage/resource-manager/v2018_07_01/src/main/java/com/microsoft/azure/management/storage/v2018_07_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.v2018_07_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/v2018_07_01/src/main/java/com/microsoft/azure/management/storage/v2018_07_01/ListContainerItems.java b/storage/resource-manager/v2018_07_01/src/main/java/com/microsoft/azure/management/storage/v2018_07_01/ListContainerItems.java
new file mode 100644
index 000000000000..ce20298f3f3a
--- /dev/null
+++ b/storage/resource-manager/v2018_07_01/src/main/java/com/microsoft/azure/management/storage/v2018_07_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.v2018_07_01;
+
+import com.microsoft.azure.arm.model.HasInner;
+import com.microsoft.azure.arm.resources.models.HasManager;
+import com.microsoft.azure.management.storage.v2018_07_01.implementation.StorageManager;
+import com.microsoft.azure.management.storage.v2018_07_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/v2018_07_01/src/main/java/com/microsoft/azure/management/storage/v2018_07_01/ListServiceSasResponse.java b/storage/resource-manager/v2018_07_01/src/main/java/com/microsoft/azure/management/storage/v2018_07_01/ListServiceSasResponse.java
new file mode 100644
index 000000000000..2e650ad26882
--- /dev/null
+++ b/storage/resource-manager/v2018_07_01/src/main/java/com/microsoft/azure/management/storage/v2018_07_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.v2018_07_01;
+
+import com.microsoft.azure.arm.model.HasInner;
+import com.microsoft.azure.arm.resources.models.HasManager;
+import com.microsoft.azure.management.storage.v2018_07_01.implementation.StorageManager;
+import com.microsoft.azure.management.storage.v2018_07_01.implementation.ListServiceSasResponseInner;
+
+/**
+ * Type representing ListServiceSasResponse.
+ */
+public interface ListServiceSasResponse extends HasInner, HasManager {
+ /**
+ * @return the serviceSasToken value.
+ */
+ String serviceSasToken();
+
+}
diff --git a/storage/resource-manager/v2018_07_01/src/main/java/com/microsoft/azure/management/storage/v2018_07_01/MetricSpecification.java b/storage/resource-manager/v2018_07_01/src/main/java/com/microsoft/azure/management/storage/v2018_07_01/MetricSpecification.java
new file mode 100644
index 000000000000..0bc0bdbf0ca6
--- /dev/null
+++ b/storage/resource-manager/v2018_07_01/src/main/java/com/microsoft/azure/management/storage/v2018_07_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.v2018_07_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/v2018_07_01/src/main/java/com/microsoft/azure/management/storage/v2018_07_01/NetworkRuleSet.java b/storage/resource-manager/v2018_07_01/src/main/java/com/microsoft/azure/management/storage/v2018_07_01/NetworkRuleSet.java
new file mode 100644
index 000000000000..9e2f99d27005
--- /dev/null
+++ b/storage/resource-manager/v2018_07_01/src/main/java/com/microsoft/azure/management/storage/v2018_07_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.v2018_07_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/v2018_07_01/src/main/java/com/microsoft/azure/management/storage/v2018_07_01/Operation.java b/storage/resource-manager/v2018_07_01/src/main/java/com/microsoft/azure/management/storage/v2018_07_01/Operation.java
new file mode 100644
index 000000000000..b59c5459d7c9
--- /dev/null
+++ b/storage/resource-manager/v2018_07_01/src/main/java/com/microsoft/azure/management/storage/v2018_07_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.v2018_07_01;
+
+import com.microsoft.azure.arm.model.HasInner;
+import com.microsoft.azure.arm.resources.models.HasManager;
+import com.microsoft.azure.management.storage.v2018_07_01.implementation.StorageManager;
+import com.microsoft.azure.management.storage.v2018_07_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/v2018_07_01/src/main/java/com/microsoft/azure/management/storage/v2018_07_01/OperationDisplay.java b/storage/resource-manager/v2018_07_01/src/main/java/com/microsoft/azure/management/storage/v2018_07_01/OperationDisplay.java
new file mode 100644
index 000000000000..2a6eef8610ee
--- /dev/null
+++ b/storage/resource-manager/v2018_07_01/src/main/java/com/microsoft/azure/management/storage/v2018_07_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.v2018_07_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/v2018_07_01/src/main/java/com/microsoft/azure/management/storage/v2018_07_01/Operations.java b/storage/resource-manager/v2018_07_01/src/main/java/com/microsoft/azure/management/storage/v2018_07_01/Operations.java
new file mode 100644
index 000000000000..040e58afb869
--- /dev/null
+++ b/storage/resource-manager/v2018_07_01/src/main/java/com/microsoft/azure/management/storage/v2018_07_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.v2018_07_01;
+
+import rx.Observable;
+import com.microsoft.azure.management.storage.v2018_07_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/v2018_07_01/src/main/java/com/microsoft/azure/management/storage/v2018_07_01/Permissions.java b/storage/resource-manager/v2018_07_01/src/main/java/com/microsoft/azure/management/storage/v2018_07_01/Permissions.java
new file mode 100644
index 000000000000..1b11ef153b90
--- /dev/null
+++ b/storage/resource-manager/v2018_07_01/src/main/java/com/microsoft/azure/management/storage/v2018_07_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.v2018_07_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/v2018_07_01/src/main/java/com/microsoft/azure/management/storage/v2018_07_01/ProvisioningState.java b/storage/resource-manager/v2018_07_01/src/main/java/com/microsoft/azure/management/storage/v2018_07_01/ProvisioningState.java
new file mode 100644
index 000000000000..15114d47bb9b
--- /dev/null
+++ b/storage/resource-manager/v2018_07_01/src/main/java/com/microsoft/azure/management/storage/v2018_07_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.v2018_07_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/v2018_07_01/src/main/java/com/microsoft/azure/management/storage/v2018_07_01/PublicAccess.java b/storage/resource-manager/v2018_07_01/src/main/java/com/microsoft/azure/management/storage/v2018_07_01/PublicAccess.java
new file mode 100644
index 000000000000..701146c63c68
--- /dev/null
+++ b/storage/resource-manager/v2018_07_01/src/main/java/com/microsoft/azure/management/storage/v2018_07_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.v2018_07_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/v2018_07_01/src/main/java/com/microsoft/azure/management/storage/v2018_07_01/Reason.java b/storage/resource-manager/v2018_07_01/src/main/java/com/microsoft/azure/management/storage/v2018_07_01/Reason.java
new file mode 100644
index 000000000000..27036e5965ae
--- /dev/null
+++ b/storage/resource-manager/v2018_07_01/src/main/java/com/microsoft/azure/management/storage/v2018_07_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.v2018_07_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/v2018_07_01/src/main/java/com/microsoft/azure/management/storage/v2018_07_01/ReasonCode.java b/storage/resource-manager/v2018_07_01/src/main/java/com/microsoft/azure/management/storage/v2018_07_01/ReasonCode.java
new file mode 100644
index 000000000000..d4f8c563aabe
--- /dev/null
+++ b/storage/resource-manager/v2018_07_01/src/main/java/com/microsoft/azure/management/storage/v2018_07_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.v2018_07_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/v2018_07_01/src/main/java/com/microsoft/azure/management/storage/v2018_07_01/Restriction.java b/storage/resource-manager/v2018_07_01/src/main/java/com/microsoft/azure/management/storage/v2018_07_01/Restriction.java
new file mode 100644
index 000000000000..422fc8ef49ba
--- /dev/null
+++ b/storage/resource-manager/v2018_07_01/src/main/java/com/microsoft/azure/management/storage/v2018_07_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.v2018_07_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/v2018_07_01/src/main/java/com/microsoft/azure/management/storage/v2018_07_01/SKUCapability.java b/storage/resource-manager/v2018_07_01/src/main/java/com/microsoft/azure/management/storage/v2018_07_01/SKUCapability.java
new file mode 100644
index 000000000000..d6557a5d4f92
--- /dev/null
+++ b/storage/resource-manager/v2018_07_01/src/main/java/com/microsoft/azure/management/storage/v2018_07_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.v2018_07_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/v2018_07_01/src/main/java/com/microsoft/azure/management/storage/v2018_07_01/ServiceSasParameters.java b/storage/resource-manager/v2018_07_01/src/main/java/com/microsoft/azure/management/storage/v2018_07_01/ServiceSasParameters.java
new file mode 100644
index 000000000000..fc8c469d9632
--- /dev/null
+++ b/storage/resource-manager/v2018_07_01/src/main/java/com/microsoft/azure/management/storage/v2018_07_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.v2018_07_01;
+
+import org.joda.time.DateTime;
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/**
+ * The parameters to list service SAS credentials of a speicific 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/v2018_07_01/src/main/java/com/microsoft/azure/management/storage/v2018_07_01/ServiceSpecification.java b/storage/resource-manager/v2018_07_01/src/main/java/com/microsoft/azure/management/storage/v2018_07_01/ServiceSpecification.java
new file mode 100644
index 000000000000..f3133cd729e2
--- /dev/null
+++ b/storage/resource-manager/v2018_07_01/src/main/java/com/microsoft/azure/management/storage/v2018_07_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.v2018_07_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/v2018_07_01/src/main/java/com/microsoft/azure/management/storage/v2018_07_01/Services.java b/storage/resource-manager/v2018_07_01/src/main/java/com/microsoft/azure/management/storage/v2018_07_01/Services.java
new file mode 100644
index 000000000000..01e9001cd3ca
--- /dev/null
+++ b/storage/resource-manager/v2018_07_01/src/main/java/com/microsoft/azure/management/storage/v2018_07_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.v2018_07_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/v2018_07_01/src/main/java/com/microsoft/azure/management/storage/v2018_07_01/SignedResource.java b/storage/resource-manager/v2018_07_01/src/main/java/com/microsoft/azure/management/storage/v2018_07_01/SignedResource.java
new file mode 100644
index 000000000000..1a72f05837d0
--- /dev/null
+++ b/storage/resource-manager/v2018_07_01/src/main/java/com/microsoft/azure/management/storage/v2018_07_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.v2018_07_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/v2018_07_01/src/main/java/com/microsoft/azure/management/storage/v2018_07_01/SignedResourceTypes.java b/storage/resource-manager/v2018_07_01/src/main/java/com/microsoft/azure/management/storage/v2018_07_01/SignedResourceTypes.java
new file mode 100644
index 000000000000..ecbceee368e4
--- /dev/null
+++ b/storage/resource-manager/v2018_07_01/src/main/java/com/microsoft/azure/management/storage/v2018_07_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.v2018_07_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/v2018_07_01/src/main/java/com/microsoft/azure/management/storage/v2018_07_01/Sku.java b/storage/resource-manager/v2018_07_01/src/main/java/com/microsoft/azure/management/storage/v2018_07_01/Sku.java
new file mode 100644
index 000000000000..a4fe3ee09924
--- /dev/null
+++ b/storage/resource-manager/v2018_07_01/src/main/java/com/microsoft/azure/management/storage/v2018_07_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.v2018_07_01;
+
+import com.microsoft.azure.arm.model.HasInner;
+import com.microsoft.azure.management.storage.v2018_07_01.implementation.SkuInner;
+import com.microsoft.azure.arm.resources.models.HasManager;
+import com.microsoft.azure.management.storage.v2018_07_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/v2018_07_01/src/main/java/com/microsoft/azure/management/storage/v2018_07_01/SkuName.java b/storage/resource-manager/v2018_07_01/src/main/java/com/microsoft/azure/management/storage/v2018_07_01/SkuName.java
new file mode 100644
index 000000000000..18b44967239f
--- /dev/null
+++ b/storage/resource-manager/v2018_07_01/src/main/java/com/microsoft/azure/management/storage/v2018_07_01/SkuName.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.v2018_07_01;
+
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonValue;
+
+/**
+ * Defines values for SkuName.
+ */
+public enum SkuName {
+ /** Enum value Standard_LRS. */
+ STANDARD_LRS("Standard_LRS"),
+
+ /** Enum value Standard_GRS. */
+ STANDARD_GRS("Standard_GRS"),
+
+ /** Enum value Standard_RAGRS. */
+ STANDARD_RAGRS("Standard_RAGRS"),
+
+ /** Enum value Standard_ZRS. */
+ STANDARD_ZRS("Standard_ZRS"),
+
+ /** Enum value Premium_LRS. */
+ PREMIUM_LRS("Premium_LRS"),
+
+ /** Enum value Premium_ZRS. */
+ PREMIUM_ZRS("Premium_ZRS");
+
+ /** The actual serialized value for a SkuName instance. */
+ private String value;
+
+ SkuName(String value) {
+ this.value = value;
+ }
+
+ /**
+ * Parses a serialized value to a SkuName instance.
+ *
+ * @param value the serialized value to parse.
+ * @return the parsed SkuName object, or null if unable to parse.
+ */
+ @JsonCreator
+ public static SkuName fromString(String value) {
+ SkuName[] items = SkuName.values();
+ for (SkuName 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/v2018_07_01/src/main/java/com/microsoft/azure/management/storage/v2018_07_01/SkuTier.java b/storage/resource-manager/v2018_07_01/src/main/java/com/microsoft/azure/management/storage/v2018_07_01/SkuTier.java
new file mode 100644
index 000000000000..8faa0f2de4dd
--- /dev/null
+++ b/storage/resource-manager/v2018_07_01/src/main/java/com/microsoft/azure/management/storage/v2018_07_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.v2018_07_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/v2018_07_01/src/main/java/com/microsoft/azure/management/storage/v2018_07_01/Skus.java b/storage/resource-manager/v2018_07_01/src/main/java/com/microsoft/azure/management/storage/v2018_07_01/Skus.java
new file mode 100644
index 000000000000..273599a86d8c
--- /dev/null
+++ b/storage/resource-manager/v2018_07_01/src/main/java/com/microsoft/azure/management/storage/v2018_07_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.v2018_07_01;
+
+import com.microsoft.azure.arm.collection.SupportsListing;
+import com.microsoft.azure.management.storage.v2018_07_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/v2018_07_01/src/main/java/com/microsoft/azure/management/storage/v2018_07_01/State.java b/storage/resource-manager/v2018_07_01/src/main/java/com/microsoft/azure/management/storage/v2018_07_01/State.java
new file mode 100644
index 000000000000..42db8f272b3e
--- /dev/null
+++ b/storage/resource-manager/v2018_07_01/src/main/java/com/microsoft/azure/management/storage/v2018_07_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.v2018_07_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/v2018_07_01/src/main/java/com/microsoft/azure/management/storage/v2018_07_01/StorageAccount.java b/storage/resource-manager/v2018_07_01/src/main/java/com/microsoft/azure/management/storage/v2018_07_01/StorageAccount.java
new file mode 100644
index 000000000000..eca1971d1f5f
--- /dev/null
+++ b/storage/resource-manager/v2018_07_01/src/main/java/com/microsoft/azure/management/storage/v2018_07_01/StorageAccount.java
@@ -0,0 +1,355 @@
+/**
+ * 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.v2018_07_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.v2018_07_01.implementation.StorageManager;
+import com.microsoft.azure.management.storage.v2018_07_01.implementation.SkuInner;
+import org.joda.time.DateTime;
+import com.microsoft.azure.management.storage.v2018_07_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 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.
+ */
+ WithSku withKind(Kind kind);
+ }
+
+ /**
+ * The stage of the storageaccount definition allowing to specify Sku.
+ */
+ interface WithSku {
+ /**
+ * Specifies sku.
+ */
+ WithCreate withSku(SkuInner sku);
+ }
+
+ /**
+ * The stage of the storageaccount update allowing to specify AccessTier.
+ */
+ interface WithAccessTier {
+ /**
+ * Specifies accessTier.
+ */
+ WithCreate withAccessTier(AccessTier accessTier);
+ }
+
+ /**
+ * The stage of the storageaccount update allowing to specify CustomDomain.
+ */
+ interface WithCustomDomain {
+ /**
+ * Specifies customDomain.
+ */
+ WithCreate withCustomDomain(CustomDomain customDomain);
+ }
+
+ /**
+ * The stage of the storageaccount update allowing to specify EnableAzureFilesAadIntegration.
+ */
+ interface WithEnableAzureFilesAadIntegration {
+ /**
+ * Specifies enableAzureFilesAadIntegration.
+ */
+ WithCreate withEnableAzureFilesAadIntegration(Boolean enableAzureFilesAadIntegration);
+ }
+
+ /**
+ * The stage of the storageaccount update allowing to specify EnableHttpsTrafficOnly.
+ */
+ interface WithEnableHttpsTrafficOnly {
+ /**
+ * Specifies enableHttpsTrafficOnly.
+ */
+ WithCreate withEnableHttpsTrafficOnly(Boolean enableHttpsTrafficOnly);
+ }
+
+ /**
+ * The stage of the storageaccount update allowing to specify Encryption.
+ */
+ interface WithEncryption {
+ /**
+ * Specifies encryption.
+ */
+ WithCreate withEncryption(Encryption encryption);
+ }
+
+ /**
+ * The stage of the storageaccount update allowing to specify Identity.
+ */
+ interface WithIdentity {
+ /**
+ * Specifies identity.
+ */
+ WithCreate withIdentity(Identity identity);
+ }
+
+ /**
+ * The stage of the storageaccount update allowing to specify IsHnsEnabled.
+ */
+ interface WithIsHnsEnabled {
+ /**
+ * Specifies isHnsEnabled.
+ */
+ WithCreate withIsHnsEnabled(Boolean isHnsEnabled);
+ }
+
+ /**
+ * The stage of the storageaccount update allowing to specify NetworkRuleSet.
+ */
+ interface WithNetworkRuleSet {
+ /**
+ * Specifies networkRuleSet.
+ */
+ 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 {0} allowing to specify AccessTier.
+ */
+ interface WithAccessTier {
+ /**
+ * Specifies accessTier.
+ */
+ Update withAccessTier(AccessTier accessTier);
+ }
+
+ /**
+ * The stage of the storageaccount {0} allowing to specify CustomDomain.
+ */
+ interface WithCustomDomain {
+ /**
+ * Specifies customDomain.
+ */
+ Update withCustomDomain(CustomDomain customDomain);
+ }
+
+ /**
+ * The stage of the storageaccount {0} allowing to specify EnableAzureFilesAadIntegration.
+ */
+ interface WithEnableAzureFilesAadIntegration {
+ /**
+ * Specifies enableAzureFilesAadIntegration.
+ */
+ Update withEnableAzureFilesAadIntegration(Boolean enableAzureFilesAadIntegration);
+ }
+
+ /**
+ * The stage of the storageaccount {0} allowing to specify EnableHttpsTrafficOnly.
+ */
+ interface WithEnableHttpsTrafficOnly {
+ /**
+ * Specifies enableHttpsTrafficOnly.
+ */
+ Update withEnableHttpsTrafficOnly(Boolean enableHttpsTrafficOnly);
+ }
+
+ /**
+ * The stage of the storageaccount {0} allowing to specify Encryption.
+ */
+ interface WithEncryption {
+ /**
+ * Specifies encryption.
+ */
+ Update withEncryption(Encryption encryption);
+ }
+
+ /**
+ * The stage of the storageaccount {0} allowing to specify Identity.
+ */
+ interface WithIdentity {
+ /**
+ * Specifies identity.
+ */
+ Update withIdentity(Identity identity);
+ }
+
+ /**
+ * The stage of the storageaccount {0} allowing to specify Kind.
+ */
+ interface WithKind {
+ /**
+ * Specifies kind.
+ */
+ Update withKind(Kind kind);
+ }
+
+ /**
+ * The stage of the storageaccount {0} allowing to specify NetworkRuleSet.
+ */
+ interface WithNetworkRuleSet {
+ /**
+ * Specifies networkRuleSet.
+ */
+ Update withNetworkRuleSet(NetworkRuleSet networkRuleSet);
+ }
+
+ /**
+ * The stage of the storageaccount {0} allowing to specify Sku.
+ */
+ interface WithSku {
+ /**
+ * Specifies sku.
+ */
+ Update withSku(SkuInner sku);
+ }
+
+ }
+}
diff --git a/storage/resource-manager/v2018_07_01/src/main/java/com/microsoft/azure/management/storage/v2018_07_01/StorageAccountCheckNameAvailabilityParameters.java b/storage/resource-manager/v2018_07_01/src/main/java/com/microsoft/azure/management/storage/v2018_07_01/StorageAccountCheckNameAvailabilityParameters.java
new file mode 100644
index 000000000000..764a81eb55dc
--- /dev/null
+++ b/storage/resource-manager/v2018_07_01/src/main/java/com/microsoft/azure/management/storage/v2018_07_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.v2018_07_01;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/**
+ * The parameters used to check the availabity 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/v2018_07_01/src/main/java/com/microsoft/azure/management/storage/v2018_07_01/StorageAccountCreateParameters.java b/storage/resource-manager/v2018_07_01/src/main/java/com/microsoft/azure/management/storage/v2018_07_01/StorageAccountCreateParameters.java
new file mode 100644
index 000000000000..049832d7f1c0
--- /dev/null
+++ b/storage/resource-manager/v2018_07_01/src/main/java/com/microsoft/azure/management/storage/v2018_07_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.v2018_07_01;
+
+import com.microsoft.azure.management.storage.v2018_07_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/v2018_07_01/src/main/java/com/microsoft/azure/management/storage/v2018_07_01/StorageAccountKey.java b/storage/resource-manager/v2018_07_01/src/main/java/com/microsoft/azure/management/storage/v2018_07_01/StorageAccountKey.java
new file mode 100644
index 000000000000..c7033a70aa98
--- /dev/null
+++ b/storage/resource-manager/v2018_07_01/src/main/java/com/microsoft/azure/management/storage/v2018_07_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.v2018_07_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/v2018_07_01/src/main/java/com/microsoft/azure/management/storage/v2018_07_01/StorageAccountListKeysResult.java b/storage/resource-manager/v2018_07_01/src/main/java/com/microsoft/azure/management/storage/v2018_07_01/StorageAccountListKeysResult.java
new file mode 100644
index 000000000000..03a175975ec8
--- /dev/null
+++ b/storage/resource-manager/v2018_07_01/src/main/java/com/microsoft/azure/management/storage/v2018_07_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.v2018_07_01;
+
+import com.microsoft.azure.arm.model.HasInner;
+import com.microsoft.azure.arm.resources.models.HasManager;
+import com.microsoft.azure.management.storage.v2018_07_01.implementation.StorageManager;
+import com.microsoft.azure.management.storage.v2018_07_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/v2018_07_01/src/main/java/com/microsoft/azure/management/storage/v2018_07_01/StorageAccountRegenerateKeyParameters.java b/storage/resource-manager/v2018_07_01/src/main/java/com/microsoft/azure/management/storage/v2018_07_01/StorageAccountRegenerateKeyParameters.java
new file mode 100644
index 000000000000..a81e8d8647dc
--- /dev/null
+++ b/storage/resource-manager/v2018_07_01/src/main/java/com/microsoft/azure/management/storage/v2018_07_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.v2018_07_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 vaules
+ * are key1, key2.
+ */
+ @JsonProperty(value = "keyName", required = true)
+ private String keyName;
+
+ /**
+ * Get the name of storage keys that want to be regenerated, possible vaules 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 vaules 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/v2018_07_01/src/main/java/com/microsoft/azure/management/storage/v2018_07_01/StorageAccountUpdateParameters.java b/storage/resource-manager/v2018_07_01/src/main/java/com/microsoft/azure/management/storage/v2018_07_01/StorageAccountUpdateParameters.java
new file mode 100644
index 000000000000..2970b7306691
--- /dev/null
+++ b/storage/resource-manager/v2018_07_01/src/main/java/com/microsoft/azure/management/storage/v2018_07_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.v2018_07_01;
+
+import com.microsoft.azure.management.storage.v2018_07_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/v2018_07_01/src/main/java/com/microsoft/azure/management/storage/v2018_07_01/StorageAccounts.java b/storage/resource-manager/v2018_07_01/src/main/java/com/microsoft/azure/management/storage/v2018_07_01/StorageAccounts.java
new file mode 100644
index 000000000000..2556de0e4625
--- /dev/null
+++ b/storage/resource-manager/v2018_07_01/src/main/java/com/microsoft/azure/management/storage/v2018_07_01/StorageAccounts.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.v2018_07_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 com.microsoft.azure.management.storage.v2018_07_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 vaules 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);
+
+ /**
+ * 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/v2018_07_01/src/main/java/com/microsoft/azure/management/storage/v2018_07_01/TagProperty.java b/storage/resource-manager/v2018_07_01/src/main/java/com/microsoft/azure/management/storage/v2018_07_01/TagProperty.java
new file mode 100644
index 000000000000..bbc5be023dc0
--- /dev/null
+++ b/storage/resource-manager/v2018_07_01/src/main/java/com/microsoft/azure/management/storage/v2018_07_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.v2018_07_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/v2018_07_01/src/main/java/com/microsoft/azure/management/storage/v2018_07_01/UpdateHistoryProperty.java b/storage/resource-manager/v2018_07_01/src/main/java/com/microsoft/azure/management/storage/v2018_07_01/UpdateHistoryProperty.java
new file mode 100644
index 000000000000..f295b2a0edbc
--- /dev/null
+++ b/storage/resource-manager/v2018_07_01/src/main/java/com/microsoft/azure/management/storage/v2018_07_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.v2018_07_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/v2018_07_01/src/main/java/com/microsoft/azure/management/storage/v2018_07_01/Usage.java b/storage/resource-manager/v2018_07_01/src/main/java/com/microsoft/azure/management/storage/v2018_07_01/Usage.java
new file mode 100644
index 000000000000..d115cfcf2d72
--- /dev/null
+++ b/storage/resource-manager/v2018_07_01/src/main/java/com/microsoft/azure/management/storage/v2018_07_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.v2018_07_01;
+
+import com.microsoft.azure.arm.model.HasInner;
+import com.microsoft.azure.management.storage.v2018_07_01.implementation.UsageInner;
+import com.microsoft.azure.arm.resources.models.HasManager;
+import com.microsoft.azure.management.storage.v2018_07_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/v2018_07_01/src/main/java/com/microsoft/azure/management/storage/v2018_07_01/UsageName.java b/storage/resource-manager/v2018_07_01/src/main/java/com/microsoft/azure/management/storage/v2018_07_01/UsageName.java
new file mode 100644
index 000000000000..6510f89ff503
--- /dev/null
+++ b/storage/resource-manager/v2018_07_01/src/main/java/com/microsoft/azure/management/storage/v2018_07_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.v2018_07_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/v2018_07_01/src/main/java/com/microsoft/azure/management/storage/v2018_07_01/UsageUnit.java b/storage/resource-manager/v2018_07_01/src/main/java/com/microsoft/azure/management/storage/v2018_07_01/UsageUnit.java
new file mode 100644
index 000000000000..554a161241ec
--- /dev/null
+++ b/storage/resource-manager/v2018_07_01/src/main/java/com/microsoft/azure/management/storage/v2018_07_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.v2018_07_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/v2018_07_01/src/main/java/com/microsoft/azure/management/storage/v2018_07_01/Usages.java b/storage/resource-manager/v2018_07_01/src/main/java/com/microsoft/azure/management/storage/v2018_07_01/Usages.java
new file mode 100644
index 000000000000..240eba4a29b1
--- /dev/null
+++ b/storage/resource-manager/v2018_07_01/src/main/java/com/microsoft/azure/management/storage/v2018_07_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.v2018_07_01;
+
+import rx.Observable;
+import com.microsoft.azure.management.storage.v2018_07_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/v2018_07_01/src/main/java/com/microsoft/azure/management/storage/v2018_07_01/VirtualNetworkRule.java b/storage/resource-manager/v2018_07_01/src/main/java/com/microsoft/azure/management/storage/v2018_07_01/VirtualNetworkRule.java
new file mode 100644
index 000000000000..6d4b45a3d2ac
--- /dev/null
+++ b/storage/resource-manager/v2018_07_01/src/main/java/com/microsoft/azure/management/storage/v2018_07_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.v2018_07_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/v2018_07_01/src/main/java/com/microsoft/azure/management/storage/v2018_07_01/implementation/BlobContainerImpl.java b/storage/resource-manager/v2018_07_01/src/main/java/com/microsoft/azure/management/storage/v2018_07_01/implementation/BlobContainerImpl.java
new file mode 100644
index 000000000000..0d07f2299081
--- /dev/null
+++ b/storage/resource-manager/v2018_07_01/src/main/java/com/microsoft/azure/management/storage/v2018_07_01/implementation/BlobContainerImpl.java
@@ -0,0 +1,157 @@
+/**
+ * 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.v2018_07_01.implementation;
+
+import com.microsoft.azure.management.storage.v2018_07_01.BlobContainer;
+import com.microsoft.azure.arm.model.implementation.CreatableUpdatableImpl;
+import rx.Observable;
+import com.microsoft.azure.management.storage.v2018_07_01.ImmutabilityPolicyProperties;
+import org.joda.time.DateTime;
+import com.microsoft.azure.management.storage.v2018_07_01.LeaseDuration;
+import com.microsoft.azure.management.storage.v2018_07_01.LeaseState;
+import com.microsoft.azure.management.storage.v2018_07_01.LeaseStatus;
+import com.microsoft.azure.management.storage.v2018_07_01.LegalHoldProperties;
+import java.util.Map;
+import com.microsoft.azure.management.storage.v2018_07_01.PublicAccess;
+
+class BlobContainerImpl extends CreatableUpdatableImpl implements BlobContainer, BlobContainer.Definition, BlobContainer.Update {
+ private final StorageManager manager;
+ private String resourceGroupName;
+ private String accountName;
+ private String containerName;
+
+ 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();
+ // resource ancestor names
+ 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)
+ .map(innerToFluentMap(this));
+ }
+
+ @Override
+ public Observable updateResourceAsync() {
+ BlobContainersInner client = this.manager().inner().blobContainers();
+ return client.updateAsync(this.resourceGroupName, this.accountName, this.containerName)
+ .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;
+ }
+
+}
diff --git a/storage/resource-manager/v2018_07_01/src/main/java/com/microsoft/azure/management/storage/v2018_07_01/implementation/BlobContainerInner.java b/storage/resource-manager/v2018_07_01/src/main/java/com/microsoft/azure/management/storage/v2018_07_01/implementation/BlobContainerInner.java
new file mode 100644
index 000000000000..f08e7778f94a
--- /dev/null
+++ b/storage/resource-manager/v2018_07_01/src/main/java/com/microsoft/azure/management/storage/v2018_07_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.v2018_07_01.implementation;
+
+import com.microsoft.azure.management.storage.v2018_07_01.PublicAccess;
+import org.joda.time.DateTime;
+import com.microsoft.azure.management.storage.v2018_07_01.LeaseStatus;
+import com.microsoft.azure.management.storage.v2018_07_01.LeaseState;
+import com.microsoft.azure.management.storage.v2018_07_01.LeaseDuration;
+import java.util.Map;
+import com.microsoft.azure.management.storage.v2018_07_01.ImmutabilityPolicyProperties;
+import com.microsoft.azure.management.storage.v2018_07_01.LegalHoldProperties;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.microsoft.rest.serializer.JsonFlatten;
+import com.microsoft.azure.management.storage.v2018_07_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/v2018_07_01/src/main/java/com/microsoft/azure/management/storage/v2018_07_01/implementation/BlobContainersImpl.java b/storage/resource-manager/v2018_07_01/src/main/java/com/microsoft/azure/management/storage/v2018_07_01/implementation/BlobContainersImpl.java
new file mode 100644
index 000000000000..f95e86181d0f
--- /dev/null
+++ b/storage/resource-manager/v2018_07_01/src/main/java/com/microsoft/azure/management/storage/v2018_07_01/implementation/BlobContainersImpl.java
@@ -0,0 +1,165 @@
+/**
+ * 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.v2018_07_01.implementation;
+
+import com.microsoft.azure.arm.model.implementation.WrapperImpl;
+import com.microsoft.azure.management.storage.v2018_07_01.BlobContainers;
+import rx.Completable;
+import rx.functions.Func1;
+import rx.Observable;
+import com.microsoft.azure.management.storage.v2018_07_01.ListContainerItems;
+import com.microsoft.azure.management.storage.v2018_07_01.BlobContainer;
+import com.microsoft.azure.management.storage.v2018_07_01.LegalHold;
+import java.util.List;
+import com.microsoft.azure.management.storage.v2018_07_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 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/v2018_07_01/src/main/java/com/microsoft/azure/management/storage/v2018_07_01/implementation/BlobContainersInner.java b/storage/resource-manager/v2018_07_01/src/main/java/com/microsoft/azure/management/storage/v2018_07_01/implementation/BlobContainersInner.java
new file mode 100644
index 000000000000..0e5d79d11e6c
--- /dev/null
+++ b/storage/resource-manager/v2018_07_01/src/main/java/com/microsoft/azure/management/storage/v2018_07_01/implementation/BlobContainersInner.java
@@ -0,0 +1,1680 @@
+/**
+ * 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.v2018_07_01.implementation;
+
+import retrofit2.Retrofit;
+import com.google.common.reflect.TypeToken;
+import com.microsoft.azure.CloudException;
+import com.microsoft.azure.management.storage.v2018_07_01.BlobContainersCreateOrUpdateImmutabilityPolicyHeaders;
+import com.microsoft.azure.management.storage.v2018_07_01.BlobContainersDeleteImmutabilityPolicyHeaders;
+import com.microsoft.azure.management.storage.v2018_07_01.BlobContainersExtendImmutabilityPolicyHeaders;
+import com.microsoft.azure.management.storage.v2018_07_01.BlobContainersGetImmutabilityPolicyHeaders;
+import com.microsoft.azure.management.storage.v2018_07_01.BlobContainersLockImmutabilityPolicyHeaders;
+import com.microsoft.azure.management.storage.v2018_07_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.v2018_07_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.v2018_07_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.v2018_07_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.v2018_07_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.v2018_07_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.v2018_07_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.v2018_07_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.v2018_07_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.v2018_07_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.v2018_07_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.v2018_07_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.v2018_07_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);
+
+ }
+
+ /**
+ * 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, 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.
+ * @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> createWithServiceResponseAsync(String resourceGroupName, String accountName, String containerName, PublicAccess publicAccess, Map metadata) {
+ 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.");
+ }
+ Validator.validate(metadata);
+ BlobContainerInner blobContainer = new BlobContainerInner();
+ blobContainer.withPublicAccess(publicAccess);
+ blobContainer.withMetadata(metadata);
+ 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);
+ }
+ }
+ });
+ }
+
+ private ServiceResponse createDelegate(Response response) throws CloudException, IOException, IllegalArgumentException {
+ return this.client.restClient().responseBuilderFactory().newInstance(this.client.serializerAdapter())
+ .register(201, new TypeToken() { }.getType())
+ .registerError(CloudException.class)
+ .build(response);
+ }
+
+ /**
+ * Updates container properties as specified in request body. Properties not mentioned in the request will be unchanged. Update fails if the specified container doesn't already exist.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param containerName The name of the blob container within the specified storage account. Blob container names must be between 3 and 63 characters in length and use numbers, lower-case letters and dash (-) only. Every dash (-) character must be immediately preceded and followed by a letter or number.
+ * @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 update(String resourceGroupName, String accountName, String containerName) {
+ return updateWithServiceResponseAsync(resourceGroupName, accountName, containerName).toBlocking().single().body();
+ }
+
+ /**
+ * Updates container properties as specified in request body. Properties not mentioned in the request will be unchanged. Update fails if the specified container doesn't already exist.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param containerName The name of the blob container within the specified storage account. Blob container names must be between 3 and 63 characters in length and use numbers, lower-case letters and dash (-) only. Every dash (-) character must be immediately preceded and followed by a letter or number.
+ * @param 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 updateAsync(String resourceGroupName, String accountName, String containerName, final ServiceCallback serviceCallback) {
+ return ServiceFuture.fromResponse(updateWithServiceResponseAsync(resourceGroupName, accountName, containerName), serviceCallback);
+ }
+
+ /**
+ * Updates container properties as specified in request body. Properties not mentioned in the request will be unchanged. Update fails if the specified container doesn't already exist.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param containerName The name of the blob container within the specified storage account. Blob container names must be between 3 and 63 characters in length and use numbers, lower-case letters and dash (-) only. Every dash (-) character must be immediately preceded and followed by a letter or number.
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @return the observable to the BlobContainerInner object
+ */
+ public Observable updateAsync(String resourceGroupName, String accountName, String containerName) {
+ return updateWithServiceResponseAsync(resourceGroupName, accountName, containerName).map(new Func1, BlobContainerInner>() {
+ @Override
+ public BlobContainerInner call(ServiceResponse response) {
+ return response.body();
+ }
+ });
+ }
+
+ /**
+ * Updates container properties as specified in request body. Properties not mentioned in the request will be unchanged. Update fails if the specified container doesn't already exist.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param containerName The name of the blob container within the specified storage account. Blob container names must be between 3 and 63 characters in length and use numbers, lower-case letters and dash (-) only. Every dash (-) character must be immediately preceded and followed by a letter or number.
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @return the observable to the BlobContainerInner object
+ */
+ public Observable> updateWithServiceResponseAsync(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.update(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 = updateDelegate(response);
+ return Observable.just(clientResponse);
+ } catch (Throwable t) {
+ return Observable.error(t);
+ }
+ }
+ });
+ }
+
+ /**
+ * Updates container properties as specified in request body. Properties not mentioned in the request will be unchanged. Update fails if the specified container doesn't already exist.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param containerName The name of the blob container within the specified storage account. Blob container names must be between 3 and 63 characters in length and use numbers, lower-case letters and dash (-) only. Every dash (-) character must be immediately preceded and followed by a letter or number.
+ * @param 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 update(String resourceGroupName, String accountName, String containerName, PublicAccess publicAccess, Map metadata) {
+ return updateWithServiceResponseAsync(resourceGroupName, accountName, containerName, publicAccess, metadata).toBlocking().single().body();
+ }
+
+ /**
+ * Updates container properties as specified in request body. Properties not mentioned in the request will be unchanged. Update fails if the specified container doesn't already exist.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param containerName The name of the blob container within the specified storage account. Blob container names must be between 3 and 63 characters in length and use numbers, lower-case letters and dash (-) only. Every dash (-) character must be immediately preceded and followed by a letter or number.
+ * @param 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 updateAsync(String resourceGroupName, String accountName, String containerName, PublicAccess publicAccess, Map metadata, final ServiceCallback serviceCallback) {
+ return ServiceFuture.fromResponse(updateWithServiceResponseAsync(resourceGroupName, accountName, containerName, publicAccess, metadata), serviceCallback);
+ }
+
+ /**
+ * Updates container properties as specified in request body. Properties not mentioned in the request will be unchanged. Update fails if the specified container doesn't already exist.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param containerName The name of the blob container within the specified storage account. Blob container names must be between 3 and 63 characters in length and use numbers, lower-case letters and dash (-) only. Every dash (-) character must be immediately preceded and followed by a letter or number.
+ * @param 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 updateAsync(String resourceGroupName, String accountName, String containerName, PublicAccess publicAccess, Map metadata) {
+ return updateWithServiceResponseAsync(resourceGroupName, accountName, containerName, publicAccess, metadata).map(new Func1, BlobContainerInner>() {
+ @Override
+ public BlobContainerInner call(ServiceResponse response) {
+ return response.body();
+ }
+ });
+ }
+
+ /**
+ * Updates container properties as specified in request body. Properties not mentioned in the request will be unchanged. Update fails if the specified container doesn't already exist.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param containerName The name of the blob container within the specified storage account. Blob container names must be between 3 and 63 characters in length and use numbers, lower-case letters and dash (-) only. Every dash (-) character must be immediately preceded and followed by a letter or number.
+ * @param 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> updateWithServiceResponseAsync(String resourceGroupName, String accountName, String containerName, PublicAccess publicAccess, Map metadata) {
+ 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.");
+ }
+ Validator.validate(metadata);
+ BlobContainerInner blobContainer = new BlobContainerInner();
+ blobContainer.withPublicAccess(publicAccess);
+ blobContainer.withMetadata(metadata);
+ return service.update(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 = updateDelegate(response);
+ return Observable.just(clientResponse);
+ } catch (Throwable t) {
+ return Observable.error(t);
+ }
+ }
+ });
+ }
+
+ private ServiceResponse updateDelegate(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);
+ }
+
+ /**
+ * Gets properties of a specified container.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param containerName The name of the blob container within the specified storage account. Blob container names must be between 3 and 63 characters in length and use numbers, lower-case letters and dash (-) only. Every dash (-) character must be immediately preceded and followed by a letter or number.
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @throws 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 get(String resourceGroupName, String accountName, String containerName) {
+ return getWithServiceResponseAsync(resourceGroupName, accountName, containerName).toBlocking().single().body();
+ }
+
+ /**
+ * Gets properties of a specified container.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param containerName The name of the blob container within the specified storage account. Blob container names must be between 3 and 63 characters in length and use numbers, lower-case letters and dash (-) only. Every dash (-) character must be immediately preceded and followed by a letter or number.
+ * @param 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 getAsync(String resourceGroupName, String accountName, String containerName, final ServiceCallback serviceCallback) {
+ return ServiceFuture.fromResponse(getWithServiceResponseAsync(resourceGroupName, accountName, containerName), serviceCallback);
+ }
+
+ /**
+ * 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 to the BlobContainerInner object
+ */
+ public Observable getAsync(String resourceGroupName, String accountName, String containerName) {
+ return getWithServiceResponseAsync(resourceGroupName, accountName, containerName).map(new Func1, BlobContainerInner>() {
+ @Override
+ public BlobContainerInner call(ServiceResponse response) {
+ return response.body();
+ }
+ });
+ }
+
+ /**
+ * 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 to the BlobContainerInner object
+ */
+ public Observable> getWithServiceResponseAsync(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.");
+ }
+ return service.get(resourceGroupName, accountName, containerName, 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 = getDelegate(response);
+ return Observable.just(clientResponse);
+ } catch (Throwable t) {
+ return Observable.error(t);
+ }
+ }
+ });
+ }
+
+ private ServiceResponse getDelegate(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);
+ }
+
+ /**
+ * Deletes specified container under its account.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param containerName The name of the blob container within the specified storage account. Blob container names must be between 3 and 63 characters in length and use numbers, lower-case letters and dash (-) only. Every dash (-) character must be immediately preceded and followed by a letter or number.
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @throws CloudException thrown if the request is rejected by server
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent
+ */
+ public void delete(String resourceGroupName, String accountName, String containerName) {
+ deleteWithServiceResponseAsync(resourceGroupName, accountName, containerName).toBlocking().single().body();
+ }
+
+ /**
+ * Deletes specified container under its account.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param containerName The name of the blob container within the specified storage account. Blob container names must be between 3 and 63 characters in length and use numbers, lower-case letters and dash (-) only. Every dash (-) character must be immediately preceded and followed by a letter or number.
+ * @param 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