diff --git a/sql/resource-manager/v2014_04_01/pom.xml b/sql/resource-manager/v2014_04_01/pom.xml
new file mode 100644
index 0000000000000..15ee9d56a144a
--- /dev/null
+++ b/sql/resource-manager/v2014_04_01/pom.xml
@@ -0,0 +1,133 @@
+
+
+ 4.0.0
+ com.microsoft.azure.sql.v2014_04_01
+
+ com.microsoft.azure
+ azure-arm-parent
+ 0.0.2-beta
+ ../../../pom.xml
+
+ azure-mgmt-sql
+ 1.0.0-beta
+ jar
+ Microsoft Azure SDK for Sql Management
+ This package contains Microsoft Sql 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
+
+
+ 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/sql/resource-manager/v2014_04_01/src/main/java/com/microsoft/azure/management/sql/v2014_04_01/AuthenticationType.java b/sql/resource-manager/v2014_04_01/src/main/java/com/microsoft/azure/management/sql/v2014_04_01/AuthenticationType.java
new file mode 100644
index 0000000000000..4612cd8dbdcb3
--- /dev/null
+++ b/sql/resource-manager/v2014_04_01/src/main/java/com/microsoft/azure/management/sql/v2014_04_01/AuthenticationType.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.sql.v2014_04_01;
+
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonValue;
+
+/**
+ * Defines values for AuthenticationType.
+ */
+public enum AuthenticationType {
+ /** Enum value SQL. */
+ SQL("SQL"),
+
+ /** Enum value ADPassword. */
+ ADPASSWORD("ADPassword");
+
+ /** The actual serialized value for a AuthenticationType instance. */
+ private String value;
+
+ AuthenticationType(String value) {
+ this.value = value;
+ }
+
+ /**
+ * Parses a serialized value to a AuthenticationType instance.
+ *
+ * @param value the serialized value to parse.
+ * @return the parsed AuthenticationType object, or null if unable to parse.
+ */
+ @JsonCreator
+ public static AuthenticationType fromString(String value) {
+ AuthenticationType[] items = AuthenticationType.values();
+ for (AuthenticationType item : items) {
+ if (item.toString().equalsIgnoreCase(value)) {
+ return item;
+ }
+ }
+ return null;
+ }
+
+ @JsonValue
+ @Override
+ public String toString() {
+ return this.value;
+ }
+}
diff --git a/sql/resource-manager/v2014_04_01/src/main/java/com/microsoft/azure/management/sql/v2014_04_01/CheckNameAvailabilityReason.java b/sql/resource-manager/v2014_04_01/src/main/java/com/microsoft/azure/management/sql/v2014_04_01/CheckNameAvailabilityReason.java
new file mode 100644
index 0000000000000..43ccfbe6df5d7
--- /dev/null
+++ b/sql/resource-manager/v2014_04_01/src/main/java/com/microsoft/azure/management/sql/v2014_04_01/CheckNameAvailabilityReason.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.sql.v2014_04_01;
+
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonValue;
+
+/**
+ * Defines values for CheckNameAvailabilityReason.
+ */
+public enum CheckNameAvailabilityReason {
+ /** Enum value Invalid. */
+ INVALID("Invalid"),
+
+ /** Enum value AlreadyExists. */
+ ALREADY_EXISTS("AlreadyExists");
+
+ /** The actual serialized value for a CheckNameAvailabilityReason instance. */
+ private String value;
+
+ CheckNameAvailabilityReason(String value) {
+ this.value = value;
+ }
+
+ /**
+ * Parses a serialized value to a CheckNameAvailabilityReason instance.
+ *
+ * @param value the serialized value to parse.
+ * @return the parsed CheckNameAvailabilityReason object, or null if unable to parse.
+ */
+ @JsonCreator
+ public static CheckNameAvailabilityReason fromString(String value) {
+ CheckNameAvailabilityReason[] items = CheckNameAvailabilityReason.values();
+ for (CheckNameAvailabilityReason item : items) {
+ if (item.toString().equalsIgnoreCase(value)) {
+ return item;
+ }
+ }
+ return null;
+ }
+
+ @JsonValue
+ @Override
+ public String toString() {
+ return this.value;
+ }
+}
diff --git a/sql/resource-manager/v2014_04_01/src/main/java/com/microsoft/azure/management/sql/v2014_04_01/CheckNameAvailabilityRequest.java b/sql/resource-manager/v2014_04_01/src/main/java/com/microsoft/azure/management/sql/v2014_04_01/CheckNameAvailabilityRequest.java
new file mode 100644
index 0000000000000..b47c0b0d7f75c
--- /dev/null
+++ b/sql/resource-manager/v2014_04_01/src/main/java/com/microsoft/azure/management/sql/v2014_04_01/CheckNameAvailabilityRequest.java
@@ -0,0 +1,78 @@
+/**
+ * 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.sql.v2014_04_01;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/**
+ * A request to check whether the specified name for a resource is available.
+ */
+public class CheckNameAvailabilityRequest {
+ /**
+ * The name whose availability is to be checked.
+ */
+ @JsonProperty(value = "name", required = true)
+ private String name;
+
+ /**
+ * The type of resource that is used as the scope of the availability
+ * check.
+ */
+ @JsonProperty(value = "type", required = true)
+ private String type;
+
+ /**
+ * Creates an instance of CheckNameAvailabilityRequest class.
+ * @param name the name whose availability is to be checked.
+ */
+ public CheckNameAvailabilityRequest() {
+ type = "Microsoft.Sql/servers";
+ }
+
+ /**
+ * Get the name whose availability is to be checked.
+ *
+ * @return the name value
+ */
+ public String name() {
+ return this.name;
+ }
+
+ /**
+ * Set the name whose availability is to be checked.
+ *
+ * @param name the name value to set
+ * @return the CheckNameAvailabilityRequest object itself.
+ */
+ public CheckNameAvailabilityRequest withName(String name) {
+ this.name = name;
+ return this;
+ }
+
+ /**
+ * Get the type of resource that is used as the scope of the availability check.
+ *
+ * @return the type value
+ */
+ public String type() {
+ return this.type;
+ }
+
+ /**
+ * Set the type of resource that is used as the scope of the availability check.
+ *
+ * @param type the type value to set
+ * @return the CheckNameAvailabilityRequest object itself.
+ */
+ public CheckNameAvailabilityRequest withType(String type) {
+ this.type = type;
+ return this;
+ }
+
+}
diff --git a/sql/resource-manager/v2014_04_01/src/main/java/com/microsoft/azure/management/sql/v2014_04_01/CheckNameAvailabilityResponse.java b/sql/resource-manager/v2014_04_01/src/main/java/com/microsoft/azure/management/sql/v2014_04_01/CheckNameAvailabilityResponse.java
new file mode 100644
index 0000000000000..46f0b0f742334
--- /dev/null
+++ b/sql/resource-manager/v2014_04_01/src/main/java/com/microsoft/azure/management/sql/v2014_04_01/CheckNameAvailabilityResponse.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.sql.v2014_04_01;
+
+import com.microsoft.azure.arm.model.HasInner;
+import com.microsoft.azure.arm.resources.models.HasManager;
+import com.microsoft.azure.management.sql.v2014_04_01.implementation.SqlManager;
+import com.microsoft.azure.management.sql.v2014_04_01.implementation.CheckNameAvailabilityResponseInner;
+
+/**
+ * Type representing CheckNameAvailabilityResponse.
+ */
+public interface CheckNameAvailabilityResponse extends HasInner, HasManager {
+ /**
+ * @return the available value.
+ */
+ Boolean available();
+
+ /**
+ * @return the message value.
+ */
+ String message();
+
+ /**
+ * @return the name value.
+ */
+ String name();
+
+ /**
+ * @return the reason value.
+ */
+ CheckNameAvailabilityReason reason();
+
+}
diff --git a/sql/resource-manager/v2014_04_01/src/main/java/com/microsoft/azure/management/sql/v2014_04_01/CreateMode.java b/sql/resource-manager/v2014_04_01/src/main/java/com/microsoft/azure/management/sql/v2014_04_01/CreateMode.java
new file mode 100644
index 0000000000000..3228ed0aeb77e
--- /dev/null
+++ b/sql/resource-manager/v2014_04_01/src/main/java/com/microsoft/azure/management/sql/v2014_04_01/CreateMode.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.sql.v2014_04_01;
+
+import java.util.Collection;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.microsoft.rest.ExpandableStringEnum;
+
+/**
+ * Defines values for CreateMode.
+ */
+public final class CreateMode extends ExpandableStringEnum {
+ /** Static value Copy for CreateMode. */
+ public static final CreateMode COPY = fromString("Copy");
+
+ /** Static value Default for CreateMode. */
+ public static final CreateMode DEFAULT = fromString("Default");
+
+ /** Static value NonReadableSecondary for CreateMode. */
+ public static final CreateMode NON_READABLE_SECONDARY = fromString("NonReadableSecondary");
+
+ /** Static value OnlineSecondary for CreateMode. */
+ public static final CreateMode ONLINE_SECONDARY = fromString("OnlineSecondary");
+
+ /** Static value PointInTimeRestore for CreateMode. */
+ public static final CreateMode POINT_IN_TIME_RESTORE = fromString("PointInTimeRestore");
+
+ /** Static value Recovery for CreateMode. */
+ public static final CreateMode RECOVERY = fromString("Recovery");
+
+ /** Static value Restore for CreateMode. */
+ public static final CreateMode RESTORE = fromString("Restore");
+
+ /** Static value RestoreLongTermRetentionBackup for CreateMode. */
+ public static final CreateMode RESTORE_LONG_TERM_RETENTION_BACKUP = fromString("RestoreLongTermRetentionBackup");
+
+ /**
+ * Creates or finds a CreateMode from its string representation.
+ * @param name a name to look for
+ * @return the corresponding CreateMode
+ */
+ @JsonCreator
+ public static CreateMode fromString(String name) {
+ return fromString(name, CreateMode.class);
+ }
+
+ /**
+ * @return known CreateMode values
+ */
+ public static Collection values() {
+ return values(CreateMode.class);
+ }
+}
diff --git a/sql/resource-manager/v2014_04_01/src/main/java/com/microsoft/azure/management/sql/v2014_04_01/Database.java b/sql/resource-manager/v2014_04_01/src/main/java/com/microsoft/azure/management/sql/v2014_04_01/Database.java
new file mode 100644
index 0000000000000..cbc104d416e0d
--- /dev/null
+++ b/sql/resource-manager/v2014_04_01/src/main/java/com/microsoft/azure/management/sql/v2014_04_01/Database.java
@@ -0,0 +1,546 @@
+/**
+ * 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.sql.v2014_04_01;
+
+import com.microsoft.azure.arm.model.HasInner;
+import com.microsoft.azure.management.sql.v2014_04_01.implementation.DatabaseInner;
+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.sql.v2014_04_01.implementation.SqlManager;
+import java.util.Map;
+import org.joda.time.DateTime;
+import java.util.UUID;
+import java.util.List;
+import com.microsoft.azure.management.sql.v2014_04_01.implementation.ServiceTierAdvisorInner;
+import com.microsoft.azure.management.sql.v2014_04_01.implementation.TransparentDataEncryptionInner;
+
+/**
+ * Type representing Database.
+ */
+public interface Database extends HasInner, Indexable, Refreshable, Updatable, HasManager {
+ /**
+ * @return the collation value.
+ */
+ String collation();
+
+ /**
+ * @return the containmentState value.
+ */
+ Long containmentState();
+
+ /**
+ * @return the createMode value.
+ */
+ CreateMode createMode();
+
+ /**
+ * @return the creationDate value.
+ */
+ DateTime creationDate();
+
+ /**
+ * @return the currentServiceObjectiveId value.
+ */
+ UUID currentServiceObjectiveId();
+
+ /**
+ * @return the databaseId value.
+ */
+ UUID databaseId();
+
+ /**
+ * @return the defaultSecondaryLocation value.
+ */
+ String defaultSecondaryLocation();
+
+ /**
+ * @return the earliestRestoreDate value.
+ */
+ DateTime earliestRestoreDate();
+
+ /**
+ * @return the edition value.
+ */
+ DatabaseEdition edition();
+
+ /**
+ * @return the elasticPoolName value.
+ */
+ String elasticPoolName();
+
+ /**
+ * @return the failoverGroupId value.
+ */
+ String failoverGroupId();
+
+ /**
+ * @return the id value.
+ */
+ String id();
+
+ /**
+ * @return the kind value.
+ */
+ String kind();
+
+ /**
+ * @return the location value.
+ */
+ String location();
+
+ /**
+ * @return the maxSizeBytes value.
+ */
+ String maxSizeBytes();
+
+ /**
+ * @return the name value.
+ */
+ String name();
+
+ /**
+ * @return the readScale value.
+ */
+ ReadScale readScale();
+
+ /**
+ * @return the recommendedIndex value.
+ */
+ List recommendedIndex();
+
+ /**
+ * @return the recoveryServicesRecoveryPointResourceId value.
+ */
+ String recoveryServicesRecoveryPointResourceId();
+
+ /**
+ * @return the requestedServiceObjectiveId value.
+ */
+ UUID requestedServiceObjectiveId();
+
+ /**
+ * @return the requestedServiceObjectiveName value.
+ */
+ ServiceObjectiveName requestedServiceObjectiveName();
+
+ /**
+ * @return the restorePointInTime value.
+ */
+ DateTime restorePointInTime();
+
+ /**
+ * @return the sampleName value.
+ */
+ SampleName sampleName();
+
+ /**
+ * @return the serviceLevelObjective value.
+ */
+ ServiceObjectiveName serviceLevelObjective();
+
+ /**
+ * @return the serviceTierAdvisors value.
+ */
+ List serviceTierAdvisors();
+
+ /**
+ * @return the sourceDatabaseDeletionDate value.
+ */
+ DateTime sourceDatabaseDeletionDate();
+
+ /**
+ * @return the sourceDatabaseId value.
+ */
+ String sourceDatabaseId();
+
+ /**
+ * @return the status value.
+ */
+ String status();
+
+ /**
+ * @return the tags value.
+ */
+ Map tags();
+
+ /**
+ * @return the transparentDataEncryption value.
+ */
+ List transparentDataEncryption();
+
+ /**
+ * @return the type value.
+ */
+ String type();
+
+ /**
+ * @return the zoneRedundant value.
+ */
+ Boolean zoneRedundant();
+
+ /**
+ * The entirety of the Database definition.
+ */
+ interface Definition extends DefinitionStages.Blank, DefinitionStages.WithServer, DefinitionStages.WithLocation, DefinitionStages.WithCreate {
+ }
+
+ /**
+ * Grouping of Database definition stages.
+ */
+ interface DefinitionStages {
+ /**
+ * The first stage of a Database definition.
+ */
+ interface Blank extends WithServer {
+ }
+
+ /**
+ * The stage of the database definition allowing to specify Server.
+ */
+ interface WithServer {
+ /**
+ * Specifies resourceGroupName, serverName.
+ */
+ WithLocation withExistingServer(String resourceGroupName, String serverName);
+ }
+
+ /**
+ * The stage of the database definition allowing to specify Location.
+ */
+ interface WithLocation {
+ /**
+ * Specifies location.
+ */
+ WithCreate withLocation(String location);
+ }
+
+ /**
+ * The stage of the database definition allowing to specify Collation.
+ */
+ interface WithCollation {
+ /**
+ * Specifies collation.
+ */
+ WithCreate withCollation(String collation);
+ }
+
+ /**
+ * The stage of the database definition allowing to specify CreateMode.
+ */
+ interface WithCreateMode {
+ /**
+ * Specifies createMode.
+ */
+ WithCreate withCreateMode(CreateMode createMode);
+ }
+
+ /**
+ * The stage of the database definition allowing to specify Edition.
+ */
+ interface WithEdition {
+ /**
+ * Specifies edition.
+ */
+ WithCreate withEdition(DatabaseEdition edition);
+ }
+
+ /**
+ * The stage of the database definition allowing to specify ElasticPoolName.
+ */
+ interface WithElasticPoolName {
+ /**
+ * Specifies elasticPoolName.
+ */
+ WithCreate withElasticPoolName(String elasticPoolName);
+ }
+
+ /**
+ * The stage of the database definition allowing to specify MaxSizeBytes.
+ */
+ interface WithMaxSizeBytes {
+ /**
+ * Specifies maxSizeBytes.
+ */
+ WithCreate withMaxSizeBytes(String maxSizeBytes);
+ }
+
+ /**
+ * The stage of the database definition allowing to specify ReadScale.
+ */
+ interface WithReadScale {
+ /**
+ * Specifies readScale.
+ */
+ WithCreate withReadScale(ReadScale readScale);
+ }
+
+ /**
+ * The stage of the database definition allowing to specify RecoveryServicesRecoveryPointResourceId.
+ */
+ interface WithRecoveryServicesRecoveryPointResourceId {
+ /**
+ * Specifies recoveryServicesRecoveryPointResourceId.
+ */
+ WithCreate withRecoveryServicesRecoveryPointResourceId(String recoveryServicesRecoveryPointResourceId);
+ }
+
+ /**
+ * The stage of the database definition allowing to specify RequestedServiceObjectiveId.
+ */
+ interface WithRequestedServiceObjectiveId {
+ /**
+ * Specifies requestedServiceObjectiveId.
+ */
+ WithCreate withRequestedServiceObjectiveId(UUID requestedServiceObjectiveId);
+ }
+
+ /**
+ * The stage of the database definition allowing to specify RequestedServiceObjectiveName.
+ */
+ interface WithRequestedServiceObjectiveName {
+ /**
+ * Specifies requestedServiceObjectiveName.
+ */
+ WithCreate withRequestedServiceObjectiveName(ServiceObjectiveName requestedServiceObjectiveName);
+ }
+
+ /**
+ * The stage of the database definition allowing to specify RestorePointInTime.
+ */
+ interface WithRestorePointInTime {
+ /**
+ * Specifies restorePointInTime.
+ */
+ WithCreate withRestorePointInTime(DateTime restorePointInTime);
+ }
+
+ /**
+ * The stage of the database definition allowing to specify SampleName.
+ */
+ interface WithSampleName {
+ /**
+ * Specifies sampleName.
+ */
+ WithCreate withSampleName(SampleName sampleName);
+ }
+
+ /**
+ * The stage of the database definition allowing to specify SourceDatabaseDeletionDate.
+ */
+ interface WithSourceDatabaseDeletionDate {
+ /**
+ * Specifies sourceDatabaseDeletionDate.
+ */
+ WithCreate withSourceDatabaseDeletionDate(DateTime sourceDatabaseDeletionDate);
+ }
+
+ /**
+ * The stage of the database definition allowing to specify SourceDatabaseId.
+ */
+ interface WithSourceDatabaseId {
+ /**
+ * Specifies sourceDatabaseId.
+ */
+ WithCreate withSourceDatabaseId(String sourceDatabaseId);
+ }
+
+ /**
+ * The stage of the database definition allowing to specify Tags.
+ */
+ interface WithTags {
+ /**
+ * Specifies tags.
+ */
+ WithCreate withTags(Map tags);
+ }
+
+ /**
+ * The stage of the database definition allowing to specify ZoneRedundant.
+ */
+ interface WithZoneRedundant {
+ /**
+ * Specifies zoneRedundant.
+ */
+ WithCreate withZoneRedundant(Boolean zoneRedundant);
+ }
+
+ /**
+ * The stage of the definition which contains all the minimum required inputs for
+ * the resource to be created (via {@link WithCreate#create()}), but also allows
+ * for any other optional settings to be specified.
+ */
+ interface WithCreate extends Creatable, DefinitionStages.WithCollation, DefinitionStages.WithCreateMode, DefinitionStages.WithEdition, DefinitionStages.WithElasticPoolName, DefinitionStages.WithMaxSizeBytes, DefinitionStages.WithReadScale, DefinitionStages.WithRecoveryServicesRecoveryPointResourceId, DefinitionStages.WithRequestedServiceObjectiveId, DefinitionStages.WithRequestedServiceObjectiveName, DefinitionStages.WithRestorePointInTime, DefinitionStages.WithSampleName, DefinitionStages.WithSourceDatabaseDeletionDate, DefinitionStages.WithSourceDatabaseId, DefinitionStages.WithTags, DefinitionStages.WithZoneRedundant {
+ }
+ }
+ /**
+ * The template for a Database update operation, containing all the settings that can be modified.
+ */
+ interface Update extends Appliable, UpdateStages.WithCollation, UpdateStages.WithCreateMode, UpdateStages.WithEdition, UpdateStages.WithElasticPoolName, UpdateStages.WithMaxSizeBytes, UpdateStages.WithReadScale, UpdateStages.WithRecoveryServicesRecoveryPointResourceId, UpdateStages.WithRequestedServiceObjectiveId, UpdateStages.WithRequestedServiceObjectiveName, UpdateStages.WithRestorePointInTime, UpdateStages.WithSampleName, UpdateStages.WithSourceDatabaseDeletionDate, UpdateStages.WithSourceDatabaseId, UpdateStages.WithTags, UpdateStages.WithZoneRedundant {
+ }
+
+ /**
+ * Grouping of Database update stages.
+ */
+ interface UpdateStages {
+ /**
+ * The stage of the database update allowing to specify Collation.
+ */
+ interface WithCollation {
+ /**
+ * Specifies collation.
+ */
+ Update withCollation(String collation);
+ }
+
+ /**
+ * The stage of the database update allowing to specify CreateMode.
+ */
+ interface WithCreateMode {
+ /**
+ * Specifies createMode.
+ */
+ Update withCreateMode(CreateMode createMode);
+ }
+
+ /**
+ * The stage of the database update allowing to specify Edition.
+ */
+ interface WithEdition {
+ /**
+ * Specifies edition.
+ */
+ Update withEdition(DatabaseEdition edition);
+ }
+
+ /**
+ * The stage of the database update allowing to specify ElasticPoolName.
+ */
+ interface WithElasticPoolName {
+ /**
+ * Specifies elasticPoolName.
+ */
+ Update withElasticPoolName(String elasticPoolName);
+ }
+
+ /**
+ * The stage of the database update allowing to specify MaxSizeBytes.
+ */
+ interface WithMaxSizeBytes {
+ /**
+ * Specifies maxSizeBytes.
+ */
+ Update withMaxSizeBytes(String maxSizeBytes);
+ }
+
+ /**
+ * The stage of the database update allowing to specify ReadScale.
+ */
+ interface WithReadScale {
+ /**
+ * Specifies readScale.
+ */
+ Update withReadScale(ReadScale readScale);
+ }
+
+ /**
+ * The stage of the database update allowing to specify RecoveryServicesRecoveryPointResourceId.
+ */
+ interface WithRecoveryServicesRecoveryPointResourceId {
+ /**
+ * Specifies recoveryServicesRecoveryPointResourceId.
+ */
+ Update withRecoveryServicesRecoveryPointResourceId(String recoveryServicesRecoveryPointResourceId);
+ }
+
+ /**
+ * The stage of the database update allowing to specify RequestedServiceObjectiveId.
+ */
+ interface WithRequestedServiceObjectiveId {
+ /**
+ * Specifies requestedServiceObjectiveId.
+ */
+ Update withRequestedServiceObjectiveId(UUID requestedServiceObjectiveId);
+ }
+
+ /**
+ * The stage of the database update allowing to specify RequestedServiceObjectiveName.
+ */
+ interface WithRequestedServiceObjectiveName {
+ /**
+ * Specifies requestedServiceObjectiveName.
+ */
+ Update withRequestedServiceObjectiveName(ServiceObjectiveName requestedServiceObjectiveName);
+ }
+
+ /**
+ * The stage of the database update allowing to specify RestorePointInTime.
+ */
+ interface WithRestorePointInTime {
+ /**
+ * Specifies restorePointInTime.
+ */
+ Update withRestorePointInTime(DateTime restorePointInTime);
+ }
+
+ /**
+ * The stage of the database update allowing to specify SampleName.
+ */
+ interface WithSampleName {
+ /**
+ * Specifies sampleName.
+ */
+ Update withSampleName(SampleName sampleName);
+ }
+
+ /**
+ * The stage of the database update allowing to specify SourceDatabaseDeletionDate.
+ */
+ interface WithSourceDatabaseDeletionDate {
+ /**
+ * Specifies sourceDatabaseDeletionDate.
+ */
+ Update withSourceDatabaseDeletionDate(DateTime sourceDatabaseDeletionDate);
+ }
+
+ /**
+ * The stage of the database update allowing to specify SourceDatabaseId.
+ */
+ interface WithSourceDatabaseId {
+ /**
+ * Specifies sourceDatabaseId.
+ */
+ Update withSourceDatabaseId(String sourceDatabaseId);
+ }
+
+ /**
+ * The stage of the database update allowing to specify Tags.
+ */
+ interface WithTags {
+ /**
+ * Specifies tags.
+ */
+ Update withTags(Map tags);
+ }
+
+ /**
+ * The stage of the database update allowing to specify ZoneRedundant.
+ */
+ interface WithZoneRedundant {
+ /**
+ * Specifies zoneRedundant.
+ */
+ Update withZoneRedundant(Boolean zoneRedundant);
+ }
+
+ }
+}
diff --git a/sql/resource-manager/v2014_04_01/src/main/java/com/microsoft/azure/management/sql/v2014_04_01/DatabaseEdition.java b/sql/resource-manager/v2014_04_01/src/main/java/com/microsoft/azure/management/sql/v2014_04_01/DatabaseEdition.java
new file mode 100644
index 0000000000000..63a8ddfef7e6c
--- /dev/null
+++ b/sql/resource-manager/v2014_04_01/src/main/java/com/microsoft/azure/management/sql/v2014_04_01/DatabaseEdition.java
@@ -0,0 +1,68 @@
+/**
+ * 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.sql.v2014_04_01;
+
+import java.util.Collection;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.microsoft.rest.ExpandableStringEnum;
+
+/**
+ * Defines values for DatabaseEdition.
+ */
+public final class DatabaseEdition extends ExpandableStringEnum {
+ /** Static value Web for DatabaseEdition. */
+ public static final DatabaseEdition WEB = fromString("Web");
+
+ /** Static value Business for DatabaseEdition. */
+ public static final DatabaseEdition BUSINESS = fromString("Business");
+
+ /** Static value Basic for DatabaseEdition. */
+ public static final DatabaseEdition BASIC = fromString("Basic");
+
+ /** Static value Standard for DatabaseEdition. */
+ public static final DatabaseEdition STANDARD = fromString("Standard");
+
+ /** Static value Premium for DatabaseEdition. */
+ public static final DatabaseEdition PREMIUM = fromString("Premium");
+
+ /** Static value PremiumRS for DatabaseEdition. */
+ public static final DatabaseEdition PREMIUM_RS = fromString("PremiumRS");
+
+ /** Static value Free for DatabaseEdition. */
+ public static final DatabaseEdition FREE = fromString("Free");
+
+ /** Static value Stretch for DatabaseEdition. */
+ public static final DatabaseEdition STRETCH = fromString("Stretch");
+
+ /** Static value DataWarehouse for DatabaseEdition. */
+ public static final DatabaseEdition DATA_WAREHOUSE = fromString("DataWarehouse");
+
+ /** Static value System for DatabaseEdition. */
+ public static final DatabaseEdition SYSTEM = fromString("System");
+
+ /** Static value System2 for DatabaseEdition. */
+ public static final DatabaseEdition SYSTEM2 = fromString("System2");
+
+ /**
+ * Creates or finds a DatabaseEdition from its string representation.
+ * @param name a name to look for
+ * @return the corresponding DatabaseEdition
+ */
+ @JsonCreator
+ public static DatabaseEdition fromString(String name) {
+ return fromString(name, DatabaseEdition.class);
+ }
+
+ /**
+ * @return known DatabaseEdition values
+ */
+ public static Collection values() {
+ return values(DatabaseEdition.class);
+ }
+}
diff --git a/sql/resource-manager/v2014_04_01/src/main/java/com/microsoft/azure/management/sql/v2014_04_01/DatabaseSecurityAlertPolicy.java b/sql/resource-manager/v2014_04_01/src/main/java/com/microsoft/azure/management/sql/v2014_04_01/DatabaseSecurityAlertPolicy.java
new file mode 100644
index 0000000000000..219419e26a666
--- /dev/null
+++ b/sql/resource-manager/v2014_04_01/src/main/java/com/microsoft/azure/management/sql/v2014_04_01/DatabaseSecurityAlertPolicy.java
@@ -0,0 +1,305 @@
+/**
+ * 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.sql.v2014_04_01;
+
+import com.microsoft.azure.arm.model.HasInner;
+import com.microsoft.azure.management.sql.v2014_04_01.implementation.DatabaseSecurityAlertPolicyInner;
+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.sql.v2014_04_01.implementation.SqlManager;
+
+/**
+ * Type representing DatabaseSecurityAlertPolicy.
+ */
+public interface DatabaseSecurityAlertPolicy extends HasInner, Indexable, Refreshable, Updatable, HasManager {
+ /**
+ * @return the disabledAlerts value.
+ */
+ String disabledAlerts();
+
+ /**
+ * @return the emailAccountAdmins value.
+ */
+ SecurityAlertPolicyEmailAccountAdmins emailAccountAdmins();
+
+ /**
+ * @return the emailAddresses value.
+ */
+ String emailAddresses();
+
+ /**
+ * @return the id value.
+ */
+ String id();
+
+ /**
+ * @return the kind value.
+ */
+ String kind();
+
+ /**
+ * @return the location value.
+ */
+ String location();
+
+ /**
+ * @return the name value.
+ */
+ String name();
+
+ /**
+ * @return the retentionDays value.
+ */
+ Integer retentionDays();
+
+ /**
+ * @return the state value.
+ */
+ SecurityAlertPolicyState state();
+
+ /**
+ * @return the storageAccountAccessKey value.
+ */
+ String storageAccountAccessKey();
+
+ /**
+ * @return the storageEndpoint value.
+ */
+ String storageEndpoint();
+
+ /**
+ * @return the type value.
+ */
+ String type();
+
+ /**
+ * @return the useServerDefault value.
+ */
+ SecurityAlertPolicyUseServerDefault useServerDefault();
+
+ /**
+ * The entirety of the DatabaseSecurityAlertPolicy definition.
+ */
+ interface Definition extends DefinitionStages.Blank, DefinitionStages.WithDatabasis, DefinitionStages.WithState, DefinitionStages.WithCreate {
+ }
+
+ /**
+ * Grouping of DatabaseSecurityAlertPolicy definition stages.
+ */
+ interface DefinitionStages {
+ /**
+ * The first stage of a DatabaseSecurityAlertPolicy definition.
+ */
+ interface Blank extends WithDatabasis {
+ }
+
+ /**
+ * The stage of the databasesecurityalertpolicy definition allowing to specify Databasis.
+ */
+ interface WithDatabasis {
+ /**
+ * Specifies resourceGroupName, serverName, databaseName.
+ */
+ WithState withExistingDatabasis(String resourceGroupName, String serverName, String databaseName);
+ }
+
+ /**
+ * The stage of the databasesecurityalertpolicy definition allowing to specify State.
+ */
+ interface WithState {
+ /**
+ * Specifies state.
+ */
+ WithCreate withState(SecurityAlertPolicyState state);
+ }
+
+ /**
+ * The stage of the databasesecurityalertpolicy definition allowing to specify DisabledAlerts.
+ */
+ interface WithDisabledAlerts {
+ /**
+ * Specifies disabledAlerts.
+ */
+ WithCreate withDisabledAlerts(String disabledAlerts);
+ }
+
+ /**
+ * The stage of the databasesecurityalertpolicy definition allowing to specify EmailAccountAdmins.
+ */
+ interface WithEmailAccountAdmins {
+ /**
+ * Specifies emailAccountAdmins.
+ */
+ WithCreate withEmailAccountAdmins(SecurityAlertPolicyEmailAccountAdmins emailAccountAdmins);
+ }
+
+ /**
+ * The stage of the databasesecurityalertpolicy definition allowing to specify EmailAddresses.
+ */
+ interface WithEmailAddresses {
+ /**
+ * Specifies emailAddresses.
+ */
+ WithCreate withEmailAddresses(String emailAddresses);
+ }
+
+ /**
+ * The stage of the databasesecurityalertpolicy definition allowing to specify Location.
+ */
+ interface WithLocation {
+ /**
+ * Specifies location.
+ */
+ WithCreate withLocation(String location);
+ }
+
+ /**
+ * The stage of the databasesecurityalertpolicy definition allowing to specify RetentionDays.
+ */
+ interface WithRetentionDays {
+ /**
+ * Specifies retentionDays.
+ */
+ WithCreate withRetentionDays(Integer retentionDays);
+ }
+
+ /**
+ * The stage of the databasesecurityalertpolicy definition allowing to specify StorageAccountAccessKey.
+ */
+ interface WithStorageAccountAccessKey {
+ /**
+ * Specifies storageAccountAccessKey.
+ */
+ WithCreate withStorageAccountAccessKey(String storageAccountAccessKey);
+ }
+
+ /**
+ * The stage of the databasesecurityalertpolicy definition allowing to specify StorageEndpoint.
+ */
+ interface WithStorageEndpoint {
+ /**
+ * Specifies storageEndpoint.
+ */
+ WithCreate withStorageEndpoint(String storageEndpoint);
+ }
+
+ /**
+ * The stage of the databasesecurityalertpolicy definition allowing to specify UseServerDefault.
+ */
+ interface WithUseServerDefault {
+ /**
+ * Specifies useServerDefault.
+ */
+ WithCreate withUseServerDefault(SecurityAlertPolicyUseServerDefault useServerDefault);
+ }
+
+ /**
+ * The stage of the definition which contains all the minimum required inputs for
+ * the resource to be created (via {@link WithCreate#create()}), but also allows
+ * for any other optional settings to be specified.
+ */
+ interface WithCreate extends Creatable, DefinitionStages.WithDisabledAlerts, DefinitionStages.WithEmailAccountAdmins, DefinitionStages.WithEmailAddresses, DefinitionStages.WithLocation, DefinitionStages.WithRetentionDays, DefinitionStages.WithStorageAccountAccessKey, DefinitionStages.WithStorageEndpoint, DefinitionStages.WithUseServerDefault {
+ }
+ }
+ /**
+ * The template for a DatabaseSecurityAlertPolicy update operation, containing all the settings that can be modified.
+ */
+ interface Update extends Appliable, UpdateStages.WithDisabledAlerts, UpdateStages.WithEmailAccountAdmins, UpdateStages.WithEmailAddresses, UpdateStages.WithLocation, UpdateStages.WithRetentionDays, UpdateStages.WithStorageAccountAccessKey, UpdateStages.WithStorageEndpoint, UpdateStages.WithUseServerDefault {
+ }
+
+ /**
+ * Grouping of DatabaseSecurityAlertPolicy update stages.
+ */
+ interface UpdateStages {
+ /**
+ * The stage of the databasesecurityalertpolicy update allowing to specify DisabledAlerts.
+ */
+ interface WithDisabledAlerts {
+ /**
+ * Specifies disabledAlerts.
+ */
+ Update withDisabledAlerts(String disabledAlerts);
+ }
+
+ /**
+ * The stage of the databasesecurityalertpolicy update allowing to specify EmailAccountAdmins.
+ */
+ interface WithEmailAccountAdmins {
+ /**
+ * Specifies emailAccountAdmins.
+ */
+ Update withEmailAccountAdmins(SecurityAlertPolicyEmailAccountAdmins emailAccountAdmins);
+ }
+
+ /**
+ * The stage of the databasesecurityalertpolicy update allowing to specify EmailAddresses.
+ */
+ interface WithEmailAddresses {
+ /**
+ * Specifies emailAddresses.
+ */
+ Update withEmailAddresses(String emailAddresses);
+ }
+
+ /**
+ * The stage of the databasesecurityalertpolicy update allowing to specify Location.
+ */
+ interface WithLocation {
+ /**
+ * Specifies location.
+ */
+ Update withLocation(String location);
+ }
+
+ /**
+ * The stage of the databasesecurityalertpolicy update allowing to specify RetentionDays.
+ */
+ interface WithRetentionDays {
+ /**
+ * Specifies retentionDays.
+ */
+ Update withRetentionDays(Integer retentionDays);
+ }
+
+ /**
+ * The stage of the databasesecurityalertpolicy update allowing to specify StorageAccountAccessKey.
+ */
+ interface WithStorageAccountAccessKey {
+ /**
+ * Specifies storageAccountAccessKey.
+ */
+ Update withStorageAccountAccessKey(String storageAccountAccessKey);
+ }
+
+ /**
+ * The stage of the databasesecurityalertpolicy update allowing to specify StorageEndpoint.
+ */
+ interface WithStorageEndpoint {
+ /**
+ * Specifies storageEndpoint.
+ */
+ Update withStorageEndpoint(String storageEndpoint);
+ }
+
+ /**
+ * The stage of the databasesecurityalertpolicy update allowing to specify UseServerDefault.
+ */
+ interface WithUseServerDefault {
+ /**
+ * Specifies useServerDefault.
+ */
+ Update withUseServerDefault(SecurityAlertPolicyUseServerDefault useServerDefault);
+ }
+
+ }
+}
diff --git a/sql/resource-manager/v2014_04_01/src/main/java/com/microsoft/azure/management/sql/v2014_04_01/DatabaseThreatDetectionPolicies.java b/sql/resource-manager/v2014_04_01/src/main/java/com/microsoft/azure/management/sql/v2014_04_01/DatabaseThreatDetectionPolicies.java
new file mode 100644
index 0000000000000..a1094193ed710
--- /dev/null
+++ b/sql/resource-manager/v2014_04_01/src/main/java/com/microsoft/azure/management/sql/v2014_04_01/DatabaseThreatDetectionPolicies.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.sql.v2014_04_01;
+
+import com.microsoft.azure.arm.collection.SupportsCreating;
+import rx.Observable;
+import com.microsoft.azure.management.sql.v2014_04_01.implementation.DatabaseThreatDetectionPoliciesInner;
+import com.microsoft.azure.arm.model.HasInner;
+
+/**
+ * Type representing DatabaseThreatDetectionPolicies.
+ */
+public interface DatabaseThreatDetectionPolicies extends SupportsCreating, HasInner {
+ /**
+ * Gets a database's threat detection policy.
+ *
+ * @param resourceGroupName The name of the resource group that contains the resource. You can obtain this value from the Azure Resource Manager API or the portal.
+ * @param serverName The name of the server.
+ * @param databaseName The name of the database for which database Threat Detection policy is defined.
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @return the observable for the request
+ */
+ Observable getAsync(String resourceGroupName, String serverName, String databaseName);
+
+}
diff --git a/sql/resource-manager/v2014_04_01/src/main/java/com/microsoft/azure/management/sql/v2014_04_01/DatabaseUpdate.java b/sql/resource-manager/v2014_04_01/src/main/java/com/microsoft/azure/management/sql/v2014_04_01/DatabaseUpdate.java
new file mode 100644
index 0000000000000..2600459243381
--- /dev/null
+++ b/sql/resource-manager/v2014_04_01/src/main/java/com/microsoft/azure/management/sql/v2014_04_01/DatabaseUpdate.java
@@ -0,0 +1,726 @@
+/**
+ * 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.sql.v2014_04_01;
+
+import java.util.Map;
+import org.joda.time.DateTime;
+import java.util.UUID;
+import java.util.List;
+import com.microsoft.azure.management.sql.v2014_04_01.implementation.ServiceTierAdvisorInner;
+import com.microsoft.azure.management.sql.v2014_04_01.implementation.TransparentDataEncryptionInner;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.microsoft.rest.serializer.JsonFlatten;
+import com.microsoft.azure.ProxyResource;
+
+/**
+ * Represents a database update.
+ */
+@JsonFlatten
+public class DatabaseUpdate extends ProxyResource {
+ /**
+ * Resource tags.
+ */
+ @JsonProperty(value = "tags")
+ private Map tags;
+
+ /**
+ * The collation of the database. If createMode is not Default, this value
+ * is ignored.
+ */
+ @JsonProperty(value = "properties.collation")
+ private String collation;
+
+ /**
+ * The creation date of the database (ISO8601 format).
+ */
+ @JsonProperty(value = "properties.creationDate", access = JsonProperty.Access.WRITE_ONLY)
+ private DateTime creationDate;
+
+ /**
+ * The containment state of the database.
+ */
+ @JsonProperty(value = "properties.containmentState", access = JsonProperty.Access.WRITE_ONLY)
+ private Long containmentState;
+
+ /**
+ * The current service level objective ID of the database. This is the ID
+ * of the service level objective that is currently active.
+ */
+ @JsonProperty(value = "properties.currentServiceObjectiveId", access = JsonProperty.Access.WRITE_ONLY)
+ private UUID currentServiceObjectiveId;
+
+ /**
+ * The ID of the database.
+ */
+ @JsonProperty(value = "properties.databaseId", access = JsonProperty.Access.WRITE_ONLY)
+ private UUID databaseId;
+
+ /**
+ * This records the earliest start date and time that restore is available
+ * for this database (ISO8601 format).
+ */
+ @JsonProperty(value = "properties.earliestRestoreDate", access = JsonProperty.Access.WRITE_ONLY)
+ private DateTime earliestRestoreDate;
+
+ /**
+ * Specifies the mode of database creation.
+ *
+ * Default: regular database creation.
+ *
+ * Copy: creates a database as a copy of an existing database.
+ * sourceDatabaseId must be specified as the resource ID of the source
+ * database.
+ *
+ * OnlineSecondary/NonReadableSecondary: creates a database as a (readable
+ * or nonreadable) secondary replica of an existing database.
+ * sourceDatabaseId must be specified as the resource ID of the existing
+ * primary database.
+ *
+ * PointInTimeRestore: Creates a database by restoring a point in time
+ * backup of an existing database. sourceDatabaseId must be specified as
+ * the resource ID of the existing database, and restorePointInTime must be
+ * specified.
+ *
+ * Recovery: Creates a database by restoring a geo-replicated backup.
+ * sourceDatabaseId must be specified as the recoverable database resource
+ * ID to restore.
+ *
+ * Restore: Creates a database by restoring a backup of a deleted database.
+ * sourceDatabaseId must be specified. If sourceDatabaseId is the
+ * database's original resource ID, then sourceDatabaseDeletionDate must be
+ * specified. Otherwise sourceDatabaseId must be the restorable dropped
+ * database resource ID and sourceDatabaseDeletionDate is ignored.
+ * restorePointInTime may also be specified to restore from an earlier
+ * point in time.
+ *
+ * RestoreLongTermRetentionBackup: Creates a database by restoring from a
+ * long term retention vault. recoveryServicesRecoveryPointResourceId must
+ * be specified as the recovery point resource ID.
+ *
+ * Copy, NonReadableSecondary, OnlineSecondary and
+ * RestoreLongTermRetentionBackup are not supported for DataWarehouse
+ * edition. Possible values include: 'Copy', 'Default',
+ * 'NonReadableSecondary', 'OnlineSecondary', 'PointInTimeRestore',
+ * 'Recovery', 'Restore', 'RestoreLongTermRetentionBackup'.
+ */
+ @JsonProperty(value = "properties.createMode")
+ private CreateMode createMode;
+
+ /**
+ * Conditional. If createMode is Copy, NonReadableSecondary,
+ * OnlineSecondary, PointInTimeRestore, Recovery, or Restore, then this
+ * value is required. Specifies the resource ID of the source database. If
+ * createMode is NonReadableSecondary or OnlineSecondary, the name of the
+ * source database must be the same as the new database being created.
+ */
+ @JsonProperty(value = "properties.sourceDatabaseId")
+ private String sourceDatabaseId;
+
+ /**
+ * Conditional. If createMode is Restore and sourceDatabaseId is the
+ * deleted database's original resource id when it existed (as opposed to
+ * its current restorable dropped database id), then this value is
+ * required. Specifies the time that the database was deleted.
+ */
+ @JsonProperty(value = "properties.sourceDatabaseDeletionDate")
+ private DateTime sourceDatabaseDeletionDate;
+
+ /**
+ * Conditional. If createMode is PointInTimeRestore, this value is
+ * required. If createMode is Restore, this value is optional. Specifies
+ * the point in time (ISO8601 format) of the source database that will be
+ * restored to create the new database. Must be greater than or equal to
+ * the source database's earliestRestoreDate value.
+ */
+ @JsonProperty(value = "properties.restorePointInTime")
+ private DateTime restorePointInTime;
+
+ /**
+ * Conditional. If createMode is RestoreLongTermRetentionBackup, then this
+ * value is required. Specifies the resource ID of the recovery point to
+ * restore from.
+ */
+ @JsonProperty(value = "properties.recoveryServicesRecoveryPointResourceId")
+ private String recoveryServicesRecoveryPointResourceId;
+
+ /**
+ * The edition of the database. The DatabaseEditions enumeration contains
+ * all the valid editions. If createMode is NonReadableSecondary or
+ * OnlineSecondary, this value is ignored. To see possible values, query
+ * the capabilities API
+ * (/subscriptions/{subscriptionId}/providers/Microsoft.Sql/locations/{locationID}/capabilities)
+ * referred to by operationId: "Capabilities_ListByLocation." or use the
+ * Azure CLI command `az sql db list-editions -l westus --query [].name`.
+ * Possible values include: 'Web', 'Business', 'Basic', 'Standard',
+ * 'Premium', 'PremiumRS', 'Free', 'Stretch', 'DataWarehouse', 'System',
+ * 'System2'.
+ */
+ @JsonProperty(value = "properties.edition")
+ private DatabaseEdition edition;
+
+ /**
+ * The max size of the database expressed in bytes. If createMode is not
+ * Default, this value is ignored. To see possible values, query the
+ * capabilities API
+ * (/subscriptions/{subscriptionId}/providers/Microsoft.Sql/locations/{locationID}/capabilities)
+ * referred to by operationId: "Capabilities_ListByLocation.".
+ */
+ @JsonProperty(value = "properties.maxSizeBytes")
+ private String maxSizeBytes;
+
+ /**
+ * The configured service level objective ID of the database. This is the
+ * service level objective that is in the process of being applied to the
+ * database. Once successfully updated, it will match the value of
+ * currentServiceObjectiveId property. If requestedServiceObjectiveId and
+ * requestedServiceObjectiveName are both updated, the value of
+ * requestedServiceObjectiveId overrides the value of
+ * requestedServiceObjectiveName. To see possible values, query the
+ * capabilities API
+ * (/subscriptions/{subscriptionId}/providers/Microsoft.Sql/locations/{locationID}/capabilities)
+ * referred to by operationId: "Capabilities_ListByLocation." or use the
+ * Azure CLI command `az sql db list-editions --location <location>
+ * --query [].supportedServiceLevelObjectives[].name` .
+ */
+ @JsonProperty(value = "properties.requestedServiceObjectiveId")
+ private UUID requestedServiceObjectiveId;
+
+ /**
+ * The name of the configured service level objective of the database. This
+ * is the service level objective that is in the process of being applied
+ * to the database. Once successfully updated, it will match the value of
+ * serviceLevelObjective property. To see possible values, query the
+ * capabilities API
+ * (/subscriptions/{subscriptionId}/providers/Microsoft.Sql/locations/{locationID}/capabilities)
+ * referred to by operationId: "Capabilities_ListByLocation." or use the
+ * Azure CLI command `az sql db list-editions --location <location>
+ * --query [].supportedServiceLevelObjectives[].name`. Possible values
+ * include: 'System', 'System0', 'System1', 'System2', 'System3',
+ * 'System4', 'System2L', 'System3L', 'System4L', 'Free', 'Basic', 'S0',
+ * 'S1', 'S2', 'S3', 'S4', 'S6', 'S7', 'S9', 'S12', 'P1', 'P2', 'P3', 'P4',
+ * 'P6', 'P11', 'P15', 'PRS1', 'PRS2', 'PRS4', 'PRS6', 'DW100', 'DW200',
+ * 'DW300', 'DW400', 'DW500', 'DW600', 'DW1000', 'DW1200', 'DW1000c',
+ * 'DW1500', 'DW1500c', 'DW2000', 'DW2000c', 'DW3000', 'DW2500c',
+ * 'DW3000c', 'DW6000', 'DW5000c', 'DW6000c', 'DW7500c', 'DW10000c',
+ * 'DW15000c', 'DW30000c', 'DS100', 'DS200', 'DS300', 'DS400', 'DS500',
+ * 'DS600', 'DS1000', 'DS1200', 'DS1500', 'DS2000', 'ElasticPool'.
+ */
+ @JsonProperty(value = "properties.requestedServiceObjectiveName")
+ private ServiceObjectiveName requestedServiceObjectiveName;
+
+ /**
+ * The current service level objective of the database. Possible values
+ * include: 'System', 'System0', 'System1', 'System2', 'System3',
+ * 'System4', 'System2L', 'System3L', 'System4L', 'Free', 'Basic', 'S0',
+ * 'S1', 'S2', 'S3', 'S4', 'S6', 'S7', 'S9', 'S12', 'P1', 'P2', 'P3', 'P4',
+ * 'P6', 'P11', 'P15', 'PRS1', 'PRS2', 'PRS4', 'PRS6', 'DW100', 'DW200',
+ * 'DW300', 'DW400', 'DW500', 'DW600', 'DW1000', 'DW1200', 'DW1000c',
+ * 'DW1500', 'DW1500c', 'DW2000', 'DW2000c', 'DW3000', 'DW2500c',
+ * 'DW3000c', 'DW6000', 'DW5000c', 'DW6000c', 'DW7500c', 'DW10000c',
+ * 'DW15000c', 'DW30000c', 'DS100', 'DS200', 'DS300', 'DS400', 'DS500',
+ * 'DS600', 'DS1000', 'DS1200', 'DS1500', 'DS2000', 'ElasticPool'.
+ */
+ @JsonProperty(value = "properties.serviceLevelObjective", access = JsonProperty.Access.WRITE_ONLY)
+ private ServiceObjectiveName serviceLevelObjective;
+
+ /**
+ * The status of the database.
+ */
+ @JsonProperty(value = "properties.status", access = JsonProperty.Access.WRITE_ONLY)
+ private String status;
+
+ /**
+ * The name of the elastic pool the database is in. If elasticPoolName and
+ * requestedServiceObjectiveName are both updated, the value of
+ * requestedServiceObjectiveName is ignored. Not supported for
+ * DataWarehouse edition.
+ */
+ @JsonProperty(value = "properties.elasticPoolName")
+ private String elasticPoolName;
+
+ /**
+ * The default secondary region for this database.
+ */
+ @JsonProperty(value = "properties.defaultSecondaryLocation", access = JsonProperty.Access.WRITE_ONLY)
+ private String defaultSecondaryLocation;
+
+ /**
+ * The list of service tier advisors for this database. Expanded property.
+ */
+ @JsonProperty(value = "properties.serviceTierAdvisors", access = JsonProperty.Access.WRITE_ONLY)
+ private List serviceTierAdvisors;
+
+ /**
+ * The transparent data encryption info for this database.
+ */
+ @JsonProperty(value = "properties.transparentDataEncryption", access = JsonProperty.Access.WRITE_ONLY)
+ private List transparentDataEncryption;
+
+ /**
+ * The recommended indices for this database.
+ */
+ @JsonProperty(value = "properties.recommendedIndex", access = JsonProperty.Access.WRITE_ONLY)
+ private List recommendedIndex;
+
+ /**
+ * The resource identifier of the failover group containing this database.
+ */
+ @JsonProperty(value = "properties.failoverGroupId", access = JsonProperty.Access.WRITE_ONLY)
+ private String failoverGroupId;
+
+ /**
+ * Conditional. If the database is a geo-secondary, readScale indicates
+ * whether read-only connections are allowed to this database or not. Not
+ * supported for DataWarehouse edition. Possible values include: 'Enabled',
+ * 'Disabled'.
+ */
+ @JsonProperty(value = "properties.readScale")
+ private ReadScale readScale;
+
+ /**
+ * Indicates the name of the sample schema to apply when creating this
+ * database. If createMode is not Default, this value is ignored. Not
+ * supported for DataWarehouse edition. Possible values include:
+ * 'AdventureWorksLT'.
+ */
+ @JsonProperty(value = "properties.sampleName")
+ private SampleName sampleName;
+
+ /**
+ * Whether or not this database is zone redundant, which means the replicas
+ * of this database will be spread across multiple availability zones.
+ */
+ @JsonProperty(value = "properties.zoneRedundant")
+ private Boolean zoneRedundant;
+
+ /**
+ * Get resource tags.
+ *
+ * @return the tags value
+ */
+ public Map tags() {
+ return this.tags;
+ }
+
+ /**
+ * Set resource tags.
+ *
+ * @param tags the tags value to set
+ * @return the DatabaseUpdate object itself.
+ */
+ public DatabaseUpdate withTags(Map tags) {
+ this.tags = tags;
+ return this;
+ }
+
+ /**
+ * Get the collation of the database. If createMode is not Default, this value is ignored.
+ *
+ * @return the collation value
+ */
+ public String collation() {
+ return this.collation;
+ }
+
+ /**
+ * Set the collation of the database. If createMode is not Default, this value is ignored.
+ *
+ * @param collation the collation value to set
+ * @return the DatabaseUpdate object itself.
+ */
+ public DatabaseUpdate withCollation(String collation) {
+ this.collation = collation;
+ return this;
+ }
+
+ /**
+ * Get the creation date of the database (ISO8601 format).
+ *
+ * @return the creationDate value
+ */
+ public DateTime creationDate() {
+ return this.creationDate;
+ }
+
+ /**
+ * Get the containment state of the database.
+ *
+ * @return the containmentState value
+ */
+ public Long containmentState() {
+ return this.containmentState;
+ }
+
+ /**
+ * Get the current service level objective ID of the database. This is the ID of the service level objective that is currently active.
+ *
+ * @return the currentServiceObjectiveId value
+ */
+ public UUID currentServiceObjectiveId() {
+ return this.currentServiceObjectiveId;
+ }
+
+ /**
+ * Get the ID of the database.
+ *
+ * @return the databaseId value
+ */
+ public UUID databaseId() {
+ return this.databaseId;
+ }
+
+ /**
+ * Get this records the earliest start date and time that restore is available for this database (ISO8601 format).
+ *
+ * @return the earliestRestoreDate value
+ */
+ public DateTime earliestRestoreDate() {
+ return this.earliestRestoreDate;
+ }
+
+ /**
+ * Get specifies the mode of database creation.
+ Default: regular database creation.
+ Copy: creates a database as a copy of an existing database. sourceDatabaseId must be specified as the resource ID of the source database.
+ OnlineSecondary/NonReadableSecondary: creates a database as a (readable or nonreadable) secondary replica of an existing database. sourceDatabaseId must be specified as the resource ID of the existing primary database.
+ PointInTimeRestore: Creates a database by restoring a point in time backup of an existing database. sourceDatabaseId must be specified as the resource ID of the existing database, and restorePointInTime must be specified.
+ Recovery: Creates a database by restoring a geo-replicated backup. sourceDatabaseId must be specified as the recoverable database resource ID to restore.
+ Restore: Creates a database by restoring a backup of a deleted database. sourceDatabaseId must be specified. If sourceDatabaseId is the database's original resource ID, then sourceDatabaseDeletionDate must be specified. Otherwise sourceDatabaseId must be the restorable dropped database resource ID and sourceDatabaseDeletionDate is ignored. restorePointInTime may also be specified to restore from an earlier point in time.
+ RestoreLongTermRetentionBackup: Creates a database by restoring from a long term retention vault. recoveryServicesRecoveryPointResourceId must be specified as the recovery point resource ID.
+ Copy, NonReadableSecondary, OnlineSecondary and RestoreLongTermRetentionBackup are not supported for DataWarehouse edition. Possible values include: 'Copy', 'Default', 'NonReadableSecondary', 'OnlineSecondary', 'PointInTimeRestore', 'Recovery', 'Restore', 'RestoreLongTermRetentionBackup'.
+ *
+ * @return the createMode value
+ */
+ public CreateMode createMode() {
+ return this.createMode;
+ }
+
+ /**
+ * Set specifies the mode of database creation.
+ Default: regular database creation.
+ Copy: creates a database as a copy of an existing database. sourceDatabaseId must be specified as the resource ID of the source database.
+ OnlineSecondary/NonReadableSecondary: creates a database as a (readable or nonreadable) secondary replica of an existing database. sourceDatabaseId must be specified as the resource ID of the existing primary database.
+ PointInTimeRestore: Creates a database by restoring a point in time backup of an existing database. sourceDatabaseId must be specified as the resource ID of the existing database, and restorePointInTime must be specified.
+ Recovery: Creates a database by restoring a geo-replicated backup. sourceDatabaseId must be specified as the recoverable database resource ID to restore.
+ Restore: Creates a database by restoring a backup of a deleted database. sourceDatabaseId must be specified. If sourceDatabaseId is the database's original resource ID, then sourceDatabaseDeletionDate must be specified. Otherwise sourceDatabaseId must be the restorable dropped database resource ID and sourceDatabaseDeletionDate is ignored. restorePointInTime may also be specified to restore from an earlier point in time.
+ RestoreLongTermRetentionBackup: Creates a database by restoring from a long term retention vault. recoveryServicesRecoveryPointResourceId must be specified as the recovery point resource ID.
+ Copy, NonReadableSecondary, OnlineSecondary and RestoreLongTermRetentionBackup are not supported for DataWarehouse edition. Possible values include: 'Copy', 'Default', 'NonReadableSecondary', 'OnlineSecondary', 'PointInTimeRestore', 'Recovery', 'Restore', 'RestoreLongTermRetentionBackup'.
+ *
+ * @param createMode the createMode value to set
+ * @return the DatabaseUpdate object itself.
+ */
+ public DatabaseUpdate withCreateMode(CreateMode createMode) {
+ this.createMode = createMode;
+ return this;
+ }
+
+ /**
+ * Get conditional. If createMode is Copy, NonReadableSecondary, OnlineSecondary, PointInTimeRestore, Recovery, or Restore, then this value is required. Specifies the resource ID of the source database. If createMode is NonReadableSecondary or OnlineSecondary, the name of the source database must be the same as the new database being created.
+ *
+ * @return the sourceDatabaseId value
+ */
+ public String sourceDatabaseId() {
+ return this.sourceDatabaseId;
+ }
+
+ /**
+ * Set conditional. If createMode is Copy, NonReadableSecondary, OnlineSecondary, PointInTimeRestore, Recovery, or Restore, then this value is required. Specifies the resource ID of the source database. If createMode is NonReadableSecondary or OnlineSecondary, the name of the source database must be the same as the new database being created.
+ *
+ * @param sourceDatabaseId the sourceDatabaseId value to set
+ * @return the DatabaseUpdate object itself.
+ */
+ public DatabaseUpdate withSourceDatabaseId(String sourceDatabaseId) {
+ this.sourceDatabaseId = sourceDatabaseId;
+ return this;
+ }
+
+ /**
+ * Get conditional. If createMode is Restore and sourceDatabaseId is the deleted database's original resource id when it existed (as opposed to its current restorable dropped database id), then this value is required. Specifies the time that the database was deleted.
+ *
+ * @return the sourceDatabaseDeletionDate value
+ */
+ public DateTime sourceDatabaseDeletionDate() {
+ return this.sourceDatabaseDeletionDate;
+ }
+
+ /**
+ * Set conditional. If createMode is Restore and sourceDatabaseId is the deleted database's original resource id when it existed (as opposed to its current restorable dropped database id), then this value is required. Specifies the time that the database was deleted.
+ *
+ * @param sourceDatabaseDeletionDate the sourceDatabaseDeletionDate value to set
+ * @return the DatabaseUpdate object itself.
+ */
+ public DatabaseUpdate withSourceDatabaseDeletionDate(DateTime sourceDatabaseDeletionDate) {
+ this.sourceDatabaseDeletionDate = sourceDatabaseDeletionDate;
+ return this;
+ }
+
+ /**
+ * Get conditional. If createMode is PointInTimeRestore, this value is required. If createMode is Restore, this value is optional. Specifies the point in time (ISO8601 format) of the source database that will be restored to create the new database. Must be greater than or equal to the source database's earliestRestoreDate value.
+ *
+ * @return the restorePointInTime value
+ */
+ public DateTime restorePointInTime() {
+ return this.restorePointInTime;
+ }
+
+ /**
+ * Set conditional. If createMode is PointInTimeRestore, this value is required. If createMode is Restore, this value is optional. Specifies the point in time (ISO8601 format) of the source database that will be restored to create the new database. Must be greater than or equal to the source database's earliestRestoreDate value.
+ *
+ * @param restorePointInTime the restorePointInTime value to set
+ * @return the DatabaseUpdate object itself.
+ */
+ public DatabaseUpdate withRestorePointInTime(DateTime restorePointInTime) {
+ this.restorePointInTime = restorePointInTime;
+ return this;
+ }
+
+ /**
+ * Get conditional. If createMode is RestoreLongTermRetentionBackup, then this value is required. Specifies the resource ID of the recovery point to restore from.
+ *
+ * @return the recoveryServicesRecoveryPointResourceId value
+ */
+ public String recoveryServicesRecoveryPointResourceId() {
+ return this.recoveryServicesRecoveryPointResourceId;
+ }
+
+ /**
+ * Set conditional. If createMode is RestoreLongTermRetentionBackup, then this value is required. Specifies the resource ID of the recovery point to restore from.
+ *
+ * @param recoveryServicesRecoveryPointResourceId the recoveryServicesRecoveryPointResourceId value to set
+ * @return the DatabaseUpdate object itself.
+ */
+ public DatabaseUpdate withRecoveryServicesRecoveryPointResourceId(String recoveryServicesRecoveryPointResourceId) {
+ this.recoveryServicesRecoveryPointResourceId = recoveryServicesRecoveryPointResourceId;
+ return this;
+ }
+
+ /**
+ * Get the edition of the database. The DatabaseEditions enumeration contains all the valid editions. If createMode is NonReadableSecondary or OnlineSecondary, this value is ignored. To see possible values, query the capabilities API (/subscriptions/{subscriptionId}/providers/Microsoft.Sql/locations/{locationID}/capabilities) referred to by operationId: "Capabilities_ListByLocation." or use the Azure CLI command `az sql db list-editions -l westus --query [].name`. Possible values include: 'Web', 'Business', 'Basic', 'Standard', 'Premium', 'PremiumRS', 'Free', 'Stretch', 'DataWarehouse', 'System', 'System2'.
+ *
+ * @return the edition value
+ */
+ public DatabaseEdition edition() {
+ return this.edition;
+ }
+
+ /**
+ * Set the edition of the database. The DatabaseEditions enumeration contains all the valid editions. If createMode is NonReadableSecondary or OnlineSecondary, this value is ignored. To see possible values, query the capabilities API (/subscriptions/{subscriptionId}/providers/Microsoft.Sql/locations/{locationID}/capabilities) referred to by operationId: "Capabilities_ListByLocation." or use the Azure CLI command `az sql db list-editions -l westus --query [].name`. Possible values include: 'Web', 'Business', 'Basic', 'Standard', 'Premium', 'PremiumRS', 'Free', 'Stretch', 'DataWarehouse', 'System', 'System2'.
+ *
+ * @param edition the edition value to set
+ * @return the DatabaseUpdate object itself.
+ */
+ public DatabaseUpdate withEdition(DatabaseEdition edition) {
+ this.edition = edition;
+ return this;
+ }
+
+ /**
+ * Get the max size of the database expressed in bytes. If createMode is not Default, this value is ignored. To see possible values, query the capabilities API (/subscriptions/{subscriptionId}/providers/Microsoft.Sql/locations/{locationID}/capabilities) referred to by operationId: "Capabilities_ListByLocation.".
+ *
+ * @return the maxSizeBytes value
+ */
+ public String maxSizeBytes() {
+ return this.maxSizeBytes;
+ }
+
+ /**
+ * Set the max size of the database expressed in bytes. If createMode is not Default, this value is ignored. To see possible values, query the capabilities API (/subscriptions/{subscriptionId}/providers/Microsoft.Sql/locations/{locationID}/capabilities) referred to by operationId: "Capabilities_ListByLocation.".
+ *
+ * @param maxSizeBytes the maxSizeBytes value to set
+ * @return the DatabaseUpdate object itself.
+ */
+ public DatabaseUpdate withMaxSizeBytes(String maxSizeBytes) {
+ this.maxSizeBytes = maxSizeBytes;
+ return this;
+ }
+
+ /**
+ * Get the configured service level objective ID of the database. This is the service level objective that is in the process of being applied to the database. Once successfully updated, it will match the value of currentServiceObjectiveId property. If requestedServiceObjectiveId and requestedServiceObjectiveName are both updated, the value of requestedServiceObjectiveId overrides the value of requestedServiceObjectiveName. To see possible values, query the capabilities API (/subscriptions/{subscriptionId}/providers/Microsoft.Sql/locations/{locationID}/capabilities) referred to by operationId: "Capabilities_ListByLocation." or use the Azure CLI command `az sql db list-editions --location <location> --query [].supportedServiceLevelObjectives[].name` .
+ *
+ * @return the requestedServiceObjectiveId value
+ */
+ public UUID requestedServiceObjectiveId() {
+ return this.requestedServiceObjectiveId;
+ }
+
+ /**
+ * Set the configured service level objective ID of the database. This is the service level objective that is in the process of being applied to the database. Once successfully updated, it will match the value of currentServiceObjectiveId property. If requestedServiceObjectiveId and requestedServiceObjectiveName are both updated, the value of requestedServiceObjectiveId overrides the value of requestedServiceObjectiveName. To see possible values, query the capabilities API (/subscriptions/{subscriptionId}/providers/Microsoft.Sql/locations/{locationID}/capabilities) referred to by operationId: "Capabilities_ListByLocation." or use the Azure CLI command `az sql db list-editions --location <location> --query [].supportedServiceLevelObjectives[].name` .
+ *
+ * @param requestedServiceObjectiveId the requestedServiceObjectiveId value to set
+ * @return the DatabaseUpdate object itself.
+ */
+ public DatabaseUpdate withRequestedServiceObjectiveId(UUID requestedServiceObjectiveId) {
+ this.requestedServiceObjectiveId = requestedServiceObjectiveId;
+ return this;
+ }
+
+ /**
+ * Get the name of the configured service level objective of the database. This is the service level objective that is in the process of being applied to the database. Once successfully updated, it will match the value of serviceLevelObjective property. To see possible values, query the capabilities API (/subscriptions/{subscriptionId}/providers/Microsoft.Sql/locations/{locationID}/capabilities) referred to by operationId: "Capabilities_ListByLocation." or use the Azure CLI command `az sql db list-editions --location <location> --query [].supportedServiceLevelObjectives[].name`. Possible values include: 'System', 'System0', 'System1', 'System2', 'System3', 'System4', 'System2L', 'System3L', 'System4L', 'Free', 'Basic', 'S0', 'S1', 'S2', 'S3', 'S4', 'S6', 'S7', 'S9', 'S12', 'P1', 'P2', 'P3', 'P4', 'P6', 'P11', 'P15', 'PRS1', 'PRS2', 'PRS4', 'PRS6', 'DW100', 'DW200', 'DW300', 'DW400', 'DW500', 'DW600', 'DW1000', 'DW1200', 'DW1000c', 'DW1500', 'DW1500c', 'DW2000', 'DW2000c', 'DW3000', 'DW2500c', 'DW3000c', 'DW6000', 'DW5000c', 'DW6000c', 'DW7500c', 'DW10000c', 'DW15000c', 'DW30000c', 'DS100', 'DS200', 'DS300', 'DS400', 'DS500', 'DS600', 'DS1000', 'DS1200', 'DS1500', 'DS2000', 'ElasticPool'.
+ *
+ * @return the requestedServiceObjectiveName value
+ */
+ public ServiceObjectiveName requestedServiceObjectiveName() {
+ return this.requestedServiceObjectiveName;
+ }
+
+ /**
+ * Set the name of the configured service level objective of the database. This is the service level objective that is in the process of being applied to the database. Once successfully updated, it will match the value of serviceLevelObjective property. To see possible values, query the capabilities API (/subscriptions/{subscriptionId}/providers/Microsoft.Sql/locations/{locationID}/capabilities) referred to by operationId: "Capabilities_ListByLocation." or use the Azure CLI command `az sql db list-editions --location <location> --query [].supportedServiceLevelObjectives[].name`. Possible values include: 'System', 'System0', 'System1', 'System2', 'System3', 'System4', 'System2L', 'System3L', 'System4L', 'Free', 'Basic', 'S0', 'S1', 'S2', 'S3', 'S4', 'S6', 'S7', 'S9', 'S12', 'P1', 'P2', 'P3', 'P4', 'P6', 'P11', 'P15', 'PRS1', 'PRS2', 'PRS4', 'PRS6', 'DW100', 'DW200', 'DW300', 'DW400', 'DW500', 'DW600', 'DW1000', 'DW1200', 'DW1000c', 'DW1500', 'DW1500c', 'DW2000', 'DW2000c', 'DW3000', 'DW2500c', 'DW3000c', 'DW6000', 'DW5000c', 'DW6000c', 'DW7500c', 'DW10000c', 'DW15000c', 'DW30000c', 'DS100', 'DS200', 'DS300', 'DS400', 'DS500', 'DS600', 'DS1000', 'DS1200', 'DS1500', 'DS2000', 'ElasticPool'.
+ *
+ * @param requestedServiceObjectiveName the requestedServiceObjectiveName value to set
+ * @return the DatabaseUpdate object itself.
+ */
+ public DatabaseUpdate withRequestedServiceObjectiveName(ServiceObjectiveName requestedServiceObjectiveName) {
+ this.requestedServiceObjectiveName = requestedServiceObjectiveName;
+ return this;
+ }
+
+ /**
+ * Get the current service level objective of the database. Possible values include: 'System', 'System0', 'System1', 'System2', 'System3', 'System4', 'System2L', 'System3L', 'System4L', 'Free', 'Basic', 'S0', 'S1', 'S2', 'S3', 'S4', 'S6', 'S7', 'S9', 'S12', 'P1', 'P2', 'P3', 'P4', 'P6', 'P11', 'P15', 'PRS1', 'PRS2', 'PRS4', 'PRS6', 'DW100', 'DW200', 'DW300', 'DW400', 'DW500', 'DW600', 'DW1000', 'DW1200', 'DW1000c', 'DW1500', 'DW1500c', 'DW2000', 'DW2000c', 'DW3000', 'DW2500c', 'DW3000c', 'DW6000', 'DW5000c', 'DW6000c', 'DW7500c', 'DW10000c', 'DW15000c', 'DW30000c', 'DS100', 'DS200', 'DS300', 'DS400', 'DS500', 'DS600', 'DS1000', 'DS1200', 'DS1500', 'DS2000', 'ElasticPool'.
+ *
+ * @return the serviceLevelObjective value
+ */
+ public ServiceObjectiveName serviceLevelObjective() {
+ return this.serviceLevelObjective;
+ }
+
+ /**
+ * Get the status of the database.
+ *
+ * @return the status value
+ */
+ public String status() {
+ return this.status;
+ }
+
+ /**
+ * Get the name of the elastic pool the database is in. If elasticPoolName and requestedServiceObjectiveName are both updated, the value of requestedServiceObjectiveName is ignored. Not supported for DataWarehouse edition.
+ *
+ * @return the elasticPoolName value
+ */
+ public String elasticPoolName() {
+ return this.elasticPoolName;
+ }
+
+ /**
+ * Set the name of the elastic pool the database is in. If elasticPoolName and requestedServiceObjectiveName are both updated, the value of requestedServiceObjectiveName is ignored. Not supported for DataWarehouse edition.
+ *
+ * @param elasticPoolName the elasticPoolName value to set
+ * @return the DatabaseUpdate object itself.
+ */
+ public DatabaseUpdate withElasticPoolName(String elasticPoolName) {
+ this.elasticPoolName = elasticPoolName;
+ return this;
+ }
+
+ /**
+ * Get the default secondary region for this database.
+ *
+ * @return the defaultSecondaryLocation value
+ */
+ public String defaultSecondaryLocation() {
+ return this.defaultSecondaryLocation;
+ }
+
+ /**
+ * Get the list of service tier advisors for this database. Expanded property.
+ *
+ * @return the serviceTierAdvisors value
+ */
+ public List serviceTierAdvisors() {
+ return this.serviceTierAdvisors;
+ }
+
+ /**
+ * Get the transparent data encryption info for this database.
+ *
+ * @return the transparentDataEncryption value
+ */
+ public List transparentDataEncryption() {
+ return this.transparentDataEncryption;
+ }
+
+ /**
+ * Get the recommended indices for this database.
+ *
+ * @return the recommendedIndex value
+ */
+ public List recommendedIndex() {
+ return this.recommendedIndex;
+ }
+
+ /**
+ * Get the resource identifier of the failover group containing this database.
+ *
+ * @return the failoverGroupId value
+ */
+ public String failoverGroupId() {
+ return this.failoverGroupId;
+ }
+
+ /**
+ * Get conditional. If the database is a geo-secondary, readScale indicates whether read-only connections are allowed to this database or not. Not supported for DataWarehouse edition. Possible values include: 'Enabled', 'Disabled'.
+ *
+ * @return the readScale value
+ */
+ public ReadScale readScale() {
+ return this.readScale;
+ }
+
+ /**
+ * Set conditional. If the database is a geo-secondary, readScale indicates whether read-only connections are allowed to this database or not. Not supported for DataWarehouse edition. Possible values include: 'Enabled', 'Disabled'.
+ *
+ * @param readScale the readScale value to set
+ * @return the DatabaseUpdate object itself.
+ */
+ public DatabaseUpdate withReadScale(ReadScale readScale) {
+ this.readScale = readScale;
+ return this;
+ }
+
+ /**
+ * Get indicates the name of the sample schema to apply when creating this database. If createMode is not Default, this value is ignored. Not supported for DataWarehouse edition. Possible values include: 'AdventureWorksLT'.
+ *
+ * @return the sampleName value
+ */
+ public SampleName sampleName() {
+ return this.sampleName;
+ }
+
+ /**
+ * Set indicates the name of the sample schema to apply when creating this database. If createMode is not Default, this value is ignored. Not supported for DataWarehouse edition. Possible values include: 'AdventureWorksLT'.
+ *
+ * @param sampleName the sampleName value to set
+ * @return the DatabaseUpdate object itself.
+ */
+ public DatabaseUpdate withSampleName(SampleName sampleName) {
+ this.sampleName = sampleName;
+ return this;
+ }
+
+ /**
+ * Get whether or not this database is zone redundant, which means the replicas of this database will be spread across multiple availability zones.
+ *
+ * @return the zoneRedundant value
+ */
+ public Boolean zoneRedundant() {
+ return this.zoneRedundant;
+ }
+
+ /**
+ * Set whether or not this database is zone redundant, which means the replicas of this database will be spread across multiple availability zones.
+ *
+ * @param zoneRedundant the zoneRedundant value to set
+ * @return the DatabaseUpdate object itself.
+ */
+ public DatabaseUpdate withZoneRedundant(Boolean zoneRedundant) {
+ this.zoneRedundant = zoneRedundant;
+ return this;
+ }
+
+}
diff --git a/sql/resource-manager/v2014_04_01/src/main/java/com/microsoft/azure/management/sql/v2014_04_01/Databases.java b/sql/resource-manager/v2014_04_01/src/main/java/com/microsoft/azure/management/sql/v2014_04_01/Databases.java
new file mode 100644
index 0000000000000..422206f42f8e1
--- /dev/null
+++ b/sql/resource-manager/v2014_04_01/src/main/java/com/microsoft/azure/management/sql/v2014_04_01/Databases.java
@@ -0,0 +1,151 @@
+/**
+ * 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.sql.v2014_04_01;
+
+import com.microsoft.azure.arm.collection.SupportsCreating;
+import rx.Completable;
+import rx.Observable;
+import com.microsoft.azure.management.sql.v2014_04_01.implementation.DatabasesInner;
+import com.microsoft.azure.arm.model.HasInner;
+
+/**
+ * Type representing Databases.
+ */
+public interface Databases extends SupportsCreating, HasInner {
+ /**
+ * Begins definition for a new Extension resource.
+ * @param name resource name.
+ * @return the first stage of the new Extension definition.
+ */
+ ImportExportResponse.DefinitionStages.Blank defineExtension(String name);
+
+ /**
+ * Pauses a data warehouse.
+ *
+ * @param resourceGroupName The name of the resource group that contains the resource. You can obtain this value from the Azure Resource Manager API or the portal.
+ * @param serverName The name of the server.
+ * @param databaseName The name of the data warehouse to pause.
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @return the observable for the request
+ */
+ Completable pauseAsync(String resourceGroupName, String serverName, String databaseName);
+
+ /**
+ * Resumes a data warehouse.
+ *
+ * @param resourceGroupName The name of the resource group that contains the resource. You can obtain this value from the Azure Resource Manager API or the portal.
+ * @param serverName The name of the server.
+ * @param databaseName The name of the data warehouse to resume.
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @return the observable for the request
+ */
+ Completable resumeAsync(String resourceGroupName, String serverName, String databaseName);
+
+ /**
+ * Gets a database inside of an elastic pool.
+ *
+ * @param resourceGroupName The name of the resource group that contains the resource. You can obtain this value from the Azure Resource Manager API or the portal.
+ * @param serverName The name of the server.
+ * @param elasticPoolName The name of the elastic pool to be retrieved.
+ * @param databaseName The name of the database to be retrieved.
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @return the observable for the request
+ */
+ Observable getByElasticPoolAsync(String resourceGroupName, String serverName, String elasticPoolName, String databaseName);
+
+ /**
+ * Returns a list of databases in an elastic pool.
+ *
+ * @param resourceGroupName The name of the resource group that contains the resource. You can obtain this value from the Azure Resource Manager API or the portal.
+ * @param serverName The name of the server.
+ * @param elasticPoolName The name of the elastic pool to be retrieved.
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @return the observable for the request
+ */
+ Observable listByElasticPoolAsync(String resourceGroupName, String serverName, String elasticPoolName);
+
+ /**
+ * Gets a database inside of a recommented elastic pool.
+ *
+ * @param resourceGroupName The name of the resource group that contains the resource. You can obtain this value from the Azure Resource Manager API or the portal.
+ * @param serverName The name of the server.
+ * @param recommendedElasticPoolName The name of the elastic pool to be retrieved.
+ * @param databaseName The name of the database to be retrieved.
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @return the observable for the request
+ */
+ Observable getByRecommendedElasticPoolAsync(String resourceGroupName, String serverName, String recommendedElasticPoolName, String databaseName);
+
+ /**
+ * Returns a list of databases inside a recommented elastic pool.
+ *
+ * @param resourceGroupName The name of the resource group that contains the resource. You can obtain this value from the Azure Resource Manager API or the portal.
+ * @param serverName The name of the server.
+ * @param recommendedElasticPoolName The name of the recommended elastic pool to be retrieved.
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @return the observable for the request
+ */
+ Observable listByRecommendedElasticPoolAsync(String resourceGroupName, String serverName, String recommendedElasticPoolName);
+
+ /**
+ * Exports a database to a bacpac.
+ *
+ * @param resourceGroupName The name of the resource group that contains the resource. You can obtain this value from the Azure Resource Manager API or the portal.
+ * @param serverName The name of the server.
+ * @param databaseName The name of the database to be exported.
+ * @param parameters The required parameters for exporting a database.
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @return the observable for the request
+ */
+ Observable exportAsync(String resourceGroupName, String serverName, String databaseName, ExportRequest parameters);
+
+ /**
+ * Gets a database.
+ *
+ * @param resourceGroupName The name of the resource group that contains the resource. You can obtain this value from the Azure Resource Manager API or the portal.
+ * @param serverName The name of the server.
+ * @param databaseName The name of the database to be retrieved.
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @return the observable for the request
+ */
+ Observable getAsync(String resourceGroupName, String serverName, String databaseName);
+
+ /**
+ * Returns a list of databases in a server.
+ *
+ * @param resourceGroupName The name of the resource group that contains the resource. You can obtain this value from the Azure Resource Manager API or the portal.
+ * @param serverName The name of the server.
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @return the observable for the request
+ */
+ Observable listByServerAsync(String resourceGroupName, String serverName);
+
+ /**
+ * Deletes a database.
+ *
+ * @param resourceGroupName The name of the resource group that contains the resource. You can obtain this value from the Azure Resource Manager API or the portal.
+ * @param serverName The name of the server.
+ * @param databaseName The name of the database to be deleted.
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @return the observable for the request
+ */
+ Completable deleteAsync(String resourceGroupName, String serverName, String databaseName);
+
+ /**
+ * Imports a bacpac into a new database.
+ *
+ * @param resourceGroupName The name of the resource group that contains the resource. You can obtain this value from the Azure Resource Manager API or the portal.
+ * @param serverName The name of the server.
+ * @param parameters The required parameters for importing a Bacpac into a database.
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @return the observable for the request
+ */
+ Observable importMethodAsync(String resourceGroupName, String serverName, ImportRequest parameters);
+
+}
diff --git a/sql/resource-manager/v2014_04_01/src/main/java/com/microsoft/azure/management/sql/v2014_04_01/ElasticPool.java b/sql/resource-manager/v2014_04_01/src/main/java/com/microsoft/azure/management/sql/v2014_04_01/ElasticPool.java
new file mode 100644
index 0000000000000..3d1ce6a7f16dd
--- /dev/null
+++ b/sql/resource-manager/v2014_04_01/src/main/java/com/microsoft/azure/management/sql/v2014_04_01/ElasticPool.java
@@ -0,0 +1,292 @@
+/**
+ * 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.sql.v2014_04_01;
+
+import com.microsoft.azure.arm.model.HasInner;
+import com.microsoft.azure.management.sql.v2014_04_01.implementation.ElasticPoolInner;
+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.sql.v2014_04_01.implementation.SqlManager;
+import java.util.Map;
+import org.joda.time.DateTime;
+
+/**
+ * Type representing ElasticPool.
+ */
+public interface ElasticPool extends HasInner, Indexable, Refreshable, Updatable, HasManager {
+ /**
+ * @return the creationDate value.
+ */
+ DateTime creationDate();
+
+ /**
+ * @return the databaseDtuMax value.
+ */
+ Integer databaseDtuMax();
+
+ /**
+ * @return the databaseDtuMin value.
+ */
+ Integer databaseDtuMin();
+
+ /**
+ * @return the dtu value.
+ */
+ Integer dtu();
+
+ /**
+ * @return the edition value.
+ */
+ ElasticPoolEdition edition();
+
+ /**
+ * @return the id value.
+ */
+ String id();
+
+ /**
+ * @return the kind value.
+ */
+ String kind();
+
+ /**
+ * @return the location value.
+ */
+ String location();
+
+ /**
+ * @return the name value.
+ */
+ String name();
+
+ /**
+ * @return the state value.
+ */
+ ElasticPoolState state();
+
+ /**
+ * @return the storageMB value.
+ */
+ Integer storageMB();
+
+ /**
+ * @return the tags value.
+ */
+ Map tags();
+
+ /**
+ * @return the type value.
+ */
+ String type();
+
+ /**
+ * @return the zoneRedundant value.
+ */
+ Boolean zoneRedundant();
+
+ /**
+ * The entirety of the ElasticPool definition.
+ */
+ interface Definition extends DefinitionStages.Blank, DefinitionStages.WithServer, DefinitionStages.WithLocation, DefinitionStages.WithCreate {
+ }
+
+ /**
+ * Grouping of ElasticPool definition stages.
+ */
+ interface DefinitionStages {
+ /**
+ * The first stage of a ElasticPool definition.
+ */
+ interface Blank extends WithServer {
+ }
+
+ /**
+ * The stage of the elasticpool definition allowing to specify Server.
+ */
+ interface WithServer {
+ /**
+ * Specifies resourceGroupName, serverName.
+ */
+ WithLocation withExistingServer(String resourceGroupName, String serverName);
+ }
+
+ /**
+ * The stage of the elasticpool definition allowing to specify Location.
+ */
+ interface WithLocation {
+ /**
+ * Specifies location.
+ */
+ WithCreate withLocation(String location);
+ }
+
+ /**
+ * The stage of the elasticpool definition allowing to specify DatabaseDtuMax.
+ */
+ interface WithDatabaseDtuMax {
+ /**
+ * Specifies databaseDtuMax.
+ */
+ WithCreate withDatabaseDtuMax(Integer databaseDtuMax);
+ }
+
+ /**
+ * The stage of the elasticpool definition allowing to specify DatabaseDtuMin.
+ */
+ interface WithDatabaseDtuMin {
+ /**
+ * Specifies databaseDtuMin.
+ */
+ WithCreate withDatabaseDtuMin(Integer databaseDtuMin);
+ }
+
+ /**
+ * The stage of the elasticpool definition allowing to specify Dtu.
+ */
+ interface WithDtu {
+ /**
+ * Specifies dtu.
+ */
+ WithCreate withDtu(Integer dtu);
+ }
+
+ /**
+ * The stage of the elasticpool definition allowing to specify Edition.
+ */
+ interface WithEdition {
+ /**
+ * Specifies edition.
+ */
+ WithCreate withEdition(ElasticPoolEdition edition);
+ }
+
+ /**
+ * The stage of the elasticpool definition allowing to specify StorageMB.
+ */
+ interface WithStorageMB {
+ /**
+ * Specifies storageMB.
+ */
+ WithCreate withStorageMB(Integer storageMB);
+ }
+
+ /**
+ * The stage of the elasticpool definition allowing to specify Tags.
+ */
+ interface WithTags {
+ /**
+ * Specifies tags.
+ */
+ WithCreate withTags(Map tags);
+ }
+
+ /**
+ * The stage of the elasticpool definition allowing to specify ZoneRedundant.
+ */
+ interface WithZoneRedundant {
+ /**
+ * Specifies zoneRedundant.
+ */
+ WithCreate withZoneRedundant(Boolean zoneRedundant);
+ }
+
+ /**
+ * The stage of the definition which contains all the minimum required inputs for
+ * the resource to be created (via {@link WithCreate#create()}), but also allows
+ * for any other optional settings to be specified.
+ */
+ interface WithCreate extends Creatable, DefinitionStages.WithDatabaseDtuMax, DefinitionStages.WithDatabaseDtuMin, DefinitionStages.WithDtu, DefinitionStages.WithEdition, DefinitionStages.WithStorageMB, DefinitionStages.WithTags, DefinitionStages.WithZoneRedundant {
+ }
+ }
+ /**
+ * The template for a ElasticPool update operation, containing all the settings that can be modified.
+ */
+ interface Update extends Appliable, UpdateStages.WithDatabaseDtuMax, UpdateStages.WithDatabaseDtuMin, UpdateStages.WithDtu, UpdateStages.WithEdition, UpdateStages.WithStorageMB, UpdateStages.WithTags, UpdateStages.WithZoneRedundant {
+ }
+
+ /**
+ * Grouping of ElasticPool update stages.
+ */
+ interface UpdateStages {
+ /**
+ * The stage of the elasticpool update allowing to specify DatabaseDtuMax.
+ */
+ interface WithDatabaseDtuMax {
+ /**
+ * Specifies databaseDtuMax.
+ */
+ Update withDatabaseDtuMax(Integer databaseDtuMax);
+ }
+
+ /**
+ * The stage of the elasticpool update allowing to specify DatabaseDtuMin.
+ */
+ interface WithDatabaseDtuMin {
+ /**
+ * Specifies databaseDtuMin.
+ */
+ Update withDatabaseDtuMin(Integer databaseDtuMin);
+ }
+
+ /**
+ * The stage of the elasticpool update allowing to specify Dtu.
+ */
+ interface WithDtu {
+ /**
+ * Specifies dtu.
+ */
+ Update withDtu(Integer dtu);
+ }
+
+ /**
+ * The stage of the elasticpool update allowing to specify Edition.
+ */
+ interface WithEdition {
+ /**
+ * Specifies edition.
+ */
+ Update withEdition(ElasticPoolEdition edition);
+ }
+
+ /**
+ * The stage of the elasticpool update allowing to specify StorageMB.
+ */
+ interface WithStorageMB {
+ /**
+ * Specifies storageMB.
+ */
+ Update withStorageMB(Integer storageMB);
+ }
+
+ /**
+ * The stage of the elasticpool update allowing to specify Tags.
+ */
+ interface WithTags {
+ /**
+ * Specifies tags.
+ */
+ Update withTags(Map tags);
+ }
+
+ /**
+ * The stage of the elasticpool update allowing to specify ZoneRedundant.
+ */
+ interface WithZoneRedundant {
+ /**
+ * Specifies zoneRedundant.
+ */
+ Update withZoneRedundant(Boolean zoneRedundant);
+ }
+
+ }
+}
diff --git a/sql/resource-manager/v2014_04_01/src/main/java/com/microsoft/azure/management/sql/v2014_04_01/ElasticPoolActivities.java b/sql/resource-manager/v2014_04_01/src/main/java/com/microsoft/azure/management/sql/v2014_04_01/ElasticPoolActivities.java
new file mode 100644
index 0000000000000..28970d3a05d32
--- /dev/null
+++ b/sql/resource-manager/v2014_04_01/src/main/java/com/microsoft/azure/management/sql/v2014_04_01/ElasticPoolActivities.java
@@ -0,0 +1,30 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.sql.v2014_04_01;
+
+import rx.Observable;
+import com.microsoft.azure.management.sql.v2014_04_01.implementation.ElasticPoolActivitiesInner;
+import com.microsoft.azure.arm.model.HasInner;
+
+/**
+ * Type representing ElasticPoolActivities.
+ */
+public interface ElasticPoolActivities extends HasInner {
+ /**
+ * Returns elastic pool activities.
+ *
+ * @param resourceGroupName The name of the resource group that contains the resource. You can obtain this value from the Azure Resource Manager API or the portal.
+ * @param serverName The name of the server.
+ * @param elasticPoolName The name of the elastic pool for which to get the current activity.
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @return the observable for the request
+ */
+ Observable listByElasticPoolAsync(String resourceGroupName, String serverName, String elasticPoolName);
+
+}
diff --git a/sql/resource-manager/v2014_04_01/src/main/java/com/microsoft/azure/management/sql/v2014_04_01/ElasticPoolActivity.java b/sql/resource-manager/v2014_04_01/src/main/java/com/microsoft/azure/management/sql/v2014_04_01/ElasticPoolActivity.java
new file mode 100644
index 0000000000000..310b97986c586
--- /dev/null
+++ b/sql/resource-manager/v2014_04_01/src/main/java/com/microsoft/azure/management/sql/v2014_04_01/ElasticPoolActivity.java
@@ -0,0 +1,142 @@
+/**
+ * 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.sql.v2014_04_01;
+
+import com.microsoft.azure.arm.model.HasInner;
+import com.microsoft.azure.arm.resources.models.HasManager;
+import com.microsoft.azure.management.sql.v2014_04_01.implementation.SqlManager;
+import com.microsoft.azure.management.sql.v2014_04_01.implementation.ElasticPoolActivityInner;
+import org.joda.time.DateTime;
+import java.util.UUID;
+
+/**
+ * Type representing ElasticPoolActivity.
+ */
+public interface ElasticPoolActivity extends HasInner, HasManager {
+ /**
+ * @return the elasticPoolName value.
+ */
+ String elasticPoolName();
+
+ /**
+ * @return the endTime value.
+ */
+ DateTime endTime();
+
+ /**
+ * @return the errorCode value.
+ */
+ Integer errorCode();
+
+ /**
+ * @return the errorMessage value.
+ */
+ String errorMessage();
+
+ /**
+ * @return the errorSeverity value.
+ */
+ Integer errorSeverity();
+
+ /**
+ * @return the id value.
+ */
+ String id();
+
+ /**
+ * @return the location value.
+ */
+ String location();
+
+ /**
+ * @return the name value.
+ */
+ String name();
+
+ /**
+ * @return the operation value.
+ */
+ String operation();
+
+ /**
+ * @return the operationId value.
+ */
+ UUID operationId();
+
+ /**
+ * @return the percentComplete value.
+ */
+ Integer percentComplete();
+
+ /**
+ * @return the requestedDatabaseDtuCap value.
+ */
+ Integer requestedDatabaseDtuCap();
+
+ /**
+ * @return the requestedDatabaseDtuGuarantee value.
+ */
+ Integer requestedDatabaseDtuGuarantee();
+
+ /**
+ * @return the requestedDatabaseDtuMax value.
+ */
+ Integer requestedDatabaseDtuMax();
+
+ /**
+ * @return the requestedDatabaseDtuMin value.
+ */
+ Integer requestedDatabaseDtuMin();
+
+ /**
+ * @return the requestedDtu value.
+ */
+ Integer requestedDtu();
+
+ /**
+ * @return the requestedDtuGuarantee value.
+ */
+ Integer requestedDtuGuarantee();
+
+ /**
+ * @return the requestedElasticPoolName value.
+ */
+ String requestedElasticPoolName();
+
+ /**
+ * @return the requestedStorageLimitInGB value.
+ */
+ Long requestedStorageLimitInGB();
+
+ /**
+ * @return the requestedStorageLimitInMB value.
+ */
+ Integer requestedStorageLimitInMB();
+
+ /**
+ * @return the serverName value.
+ */
+ String serverName();
+
+ /**
+ * @return the startTime value.
+ */
+ DateTime startTime();
+
+ /**
+ * @return the state value.
+ */
+ String state();
+
+ /**
+ * @return the type value.
+ */
+ String type();
+
+}
diff --git a/sql/resource-manager/v2014_04_01/src/main/java/com/microsoft/azure/management/sql/v2014_04_01/ElasticPoolDatabaseActivities.java b/sql/resource-manager/v2014_04_01/src/main/java/com/microsoft/azure/management/sql/v2014_04_01/ElasticPoolDatabaseActivities.java
new file mode 100644
index 0000000000000..8ddbf8097bcd3
--- /dev/null
+++ b/sql/resource-manager/v2014_04_01/src/main/java/com/microsoft/azure/management/sql/v2014_04_01/ElasticPoolDatabaseActivities.java
@@ -0,0 +1,30 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.sql.v2014_04_01;
+
+import rx.Observable;
+import com.microsoft.azure.management.sql.v2014_04_01.implementation.ElasticPoolDatabaseActivitiesInner;
+import com.microsoft.azure.arm.model.HasInner;
+
+/**
+ * Type representing ElasticPoolDatabaseActivities.
+ */
+public interface ElasticPoolDatabaseActivities extends HasInner {
+ /**
+ * Returns activity on databases inside of an elastic pool.
+ *
+ * @param resourceGroupName The name of the resource group that contains the resource. You can obtain this value from the Azure Resource Manager API or the portal.
+ * @param serverName The name of the server.
+ * @param elasticPoolName The name of the elastic pool.
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @return the observable for the request
+ */
+ Observable listByElasticPoolAsync(String resourceGroupName, String serverName, String elasticPoolName);
+
+}
diff --git a/sql/resource-manager/v2014_04_01/src/main/java/com/microsoft/azure/management/sql/v2014_04_01/ElasticPoolDatabaseActivity.java b/sql/resource-manager/v2014_04_01/src/main/java/com/microsoft/azure/management/sql/v2014_04_01/ElasticPoolDatabaseActivity.java
new file mode 100644
index 0000000000000..e5d68d036bc0a
--- /dev/null
+++ b/sql/resource-manager/v2014_04_01/src/main/java/com/microsoft/azure/management/sql/v2014_04_01/ElasticPoolDatabaseActivity.java
@@ -0,0 +1,117 @@
+/**
+ * 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.sql.v2014_04_01;
+
+import com.microsoft.azure.arm.model.HasInner;
+import com.microsoft.azure.arm.resources.models.HasManager;
+import com.microsoft.azure.management.sql.v2014_04_01.implementation.SqlManager;
+import com.microsoft.azure.management.sql.v2014_04_01.implementation.ElasticPoolDatabaseActivityInner;
+import org.joda.time.DateTime;
+import java.util.UUID;
+
+/**
+ * Type representing ElasticPoolDatabaseActivity.
+ */
+public interface ElasticPoolDatabaseActivity extends HasInner, HasManager {
+ /**
+ * @return the currentElasticPoolName value.
+ */
+ String currentElasticPoolName();
+
+ /**
+ * @return the currentServiceObjective value.
+ */
+ String currentServiceObjective();
+
+ /**
+ * @return the databaseName value.
+ */
+ String databaseName();
+
+ /**
+ * @return the endTime value.
+ */
+ DateTime endTime();
+
+ /**
+ * @return the errorCode value.
+ */
+ Integer errorCode();
+
+ /**
+ * @return the errorMessage value.
+ */
+ String errorMessage();
+
+ /**
+ * @return the errorSeverity value.
+ */
+ Integer errorSeverity();
+
+ /**
+ * @return the id value.
+ */
+ String id();
+
+ /**
+ * @return the location value.
+ */
+ String location();
+
+ /**
+ * @return the name value.
+ */
+ String name();
+
+ /**
+ * @return the operation value.
+ */
+ String operation();
+
+ /**
+ * @return the operationId value.
+ */
+ UUID operationId();
+
+ /**
+ * @return the percentComplete value.
+ */
+ Integer percentComplete();
+
+ /**
+ * @return the requestedElasticPoolName value.
+ */
+ String requestedElasticPoolName();
+
+ /**
+ * @return the requestedServiceObjective value.
+ */
+ String requestedServiceObjective();
+
+ /**
+ * @return the serverName value.
+ */
+ String serverName();
+
+ /**
+ * @return the startTime value.
+ */
+ DateTime startTime();
+
+ /**
+ * @return the state value.
+ */
+ String state();
+
+ /**
+ * @return the type value.
+ */
+ String type();
+
+}
diff --git a/sql/resource-manager/v2014_04_01/src/main/java/com/microsoft/azure/management/sql/v2014_04_01/ElasticPoolEdition.java b/sql/resource-manager/v2014_04_01/src/main/java/com/microsoft/azure/management/sql/v2014_04_01/ElasticPoolEdition.java
new file mode 100644
index 0000000000000..842f33fc97867
--- /dev/null
+++ b/sql/resource-manager/v2014_04_01/src/main/java/com/microsoft/azure/management/sql/v2014_04_01/ElasticPoolEdition.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.sql.v2014_04_01;
+
+import java.util.Collection;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.microsoft.rest.ExpandableStringEnum;
+
+/**
+ * Defines values for ElasticPoolEdition.
+ */
+public final class ElasticPoolEdition extends ExpandableStringEnum {
+ /** Static value Basic for ElasticPoolEdition. */
+ public static final ElasticPoolEdition BASIC = fromString("Basic");
+
+ /** Static value Standard for ElasticPoolEdition. */
+ public static final ElasticPoolEdition STANDARD = fromString("Standard");
+
+ /** Static value Premium for ElasticPoolEdition. */
+ public static final ElasticPoolEdition PREMIUM = fromString("Premium");
+
+ /**
+ * Creates or finds a ElasticPoolEdition from its string representation.
+ * @param name a name to look for
+ * @return the corresponding ElasticPoolEdition
+ */
+ @JsonCreator
+ public static ElasticPoolEdition fromString(String name) {
+ return fromString(name, ElasticPoolEdition.class);
+ }
+
+ /**
+ * @return known ElasticPoolEdition values
+ */
+ public static Collection values() {
+ return values(ElasticPoolEdition.class);
+ }
+}
diff --git a/sql/resource-manager/v2014_04_01/src/main/java/com/microsoft/azure/management/sql/v2014_04_01/ElasticPoolState.java b/sql/resource-manager/v2014_04_01/src/main/java/com/microsoft/azure/management/sql/v2014_04_01/ElasticPoolState.java
new file mode 100644
index 0000000000000..554a6fb93402e
--- /dev/null
+++ b/sql/resource-manager/v2014_04_01/src/main/java/com/microsoft/azure/management/sql/v2014_04_01/ElasticPoolState.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.sql.v2014_04_01;
+
+import java.util.Collection;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.microsoft.rest.ExpandableStringEnum;
+
+/**
+ * Defines values for ElasticPoolState.
+ */
+public final class ElasticPoolState extends ExpandableStringEnum {
+ /** Static value Creating for ElasticPoolState. */
+ public static final ElasticPoolState CREATING = fromString("Creating");
+
+ /** Static value Ready for ElasticPoolState. */
+ public static final ElasticPoolState READY = fromString("Ready");
+
+ /** Static value Disabled for ElasticPoolState. */
+ public static final ElasticPoolState DISABLED = fromString("Disabled");
+
+ /**
+ * Creates or finds a ElasticPoolState from its string representation.
+ * @param name a name to look for
+ * @return the corresponding ElasticPoolState
+ */
+ @JsonCreator
+ public static ElasticPoolState fromString(String name) {
+ return fromString(name, ElasticPoolState.class);
+ }
+
+ /**
+ * @return known ElasticPoolState values
+ */
+ public static Collection values() {
+ return values(ElasticPoolState.class);
+ }
+}
diff --git a/sql/resource-manager/v2014_04_01/src/main/java/com/microsoft/azure/management/sql/v2014_04_01/ElasticPoolUpdate.java b/sql/resource-manager/v2014_04_01/src/main/java/com/microsoft/azure/management/sql/v2014_04_01/ElasticPoolUpdate.java
new file mode 100644
index 0000000000000..ecefd193f0ecc
--- /dev/null
+++ b/sql/resource-manager/v2014_04_01/src/main/java/com/microsoft/azure/management/sql/v2014_04_01/ElasticPoolUpdate.java
@@ -0,0 +1,238 @@
+/**
+ * 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.sql.v2014_04_01;
+
+import java.util.Map;
+import org.joda.time.DateTime;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.microsoft.rest.serializer.JsonFlatten;
+import com.microsoft.azure.ProxyResource;
+
+/**
+ * Represents an elastic pool update.
+ */
+@JsonFlatten
+public class ElasticPoolUpdate extends ProxyResource {
+ /**
+ * Resource tags.
+ */
+ @JsonProperty(value = "tags")
+ private Map tags;
+
+ /**
+ * The creation date of the elastic pool (ISO8601 format).
+ */
+ @JsonProperty(value = "properties.creationDate", access = JsonProperty.Access.WRITE_ONLY)
+ private DateTime creationDate;
+
+ /**
+ * The state of the elastic pool. Possible values include: 'Creating',
+ * 'Ready', 'Disabled'.
+ */
+ @JsonProperty(value = "properties.state", access = JsonProperty.Access.WRITE_ONLY)
+ private ElasticPoolState state;
+
+ /**
+ * The edition of the elastic pool. Possible values include: 'Basic',
+ * 'Standard', 'Premium'.
+ */
+ @JsonProperty(value = "properties.edition")
+ private ElasticPoolEdition edition;
+
+ /**
+ * The total shared DTU for the database elastic pool.
+ */
+ @JsonProperty(value = "properties.dtu")
+ private Integer dtu;
+
+ /**
+ * The maximum DTU any one database can consume.
+ */
+ @JsonProperty(value = "properties.databaseDtuMax")
+ private Integer databaseDtuMax;
+
+ /**
+ * The minimum DTU all databases are guaranteed.
+ */
+ @JsonProperty(value = "properties.databaseDtuMin")
+ private Integer databaseDtuMin;
+
+ /**
+ * Gets storage limit for the database elastic pool in MB.
+ */
+ @JsonProperty(value = "properties.storageMB")
+ private Integer storageMB;
+
+ /**
+ * Whether or not this database elastic pool is zone redundant, which means
+ * the replicas of this database will be spread across multiple
+ * availability zones.
+ */
+ @JsonProperty(value = "properties.zoneRedundant")
+ private Boolean zoneRedundant;
+
+ /**
+ * Get resource tags.
+ *
+ * @return the tags value
+ */
+ public Map tags() {
+ return this.tags;
+ }
+
+ /**
+ * Set resource tags.
+ *
+ * @param tags the tags value to set
+ * @return the ElasticPoolUpdate object itself.
+ */
+ public ElasticPoolUpdate withTags(Map tags) {
+ this.tags = tags;
+ return this;
+ }
+
+ /**
+ * Get the creation date of the elastic pool (ISO8601 format).
+ *
+ * @return the creationDate value
+ */
+ public DateTime creationDate() {
+ return this.creationDate;
+ }
+
+ /**
+ * Get the state of the elastic pool. Possible values include: 'Creating', 'Ready', 'Disabled'.
+ *
+ * @return the state value
+ */
+ public ElasticPoolState state() {
+ return this.state;
+ }
+
+ /**
+ * Get the edition of the elastic pool. Possible values include: 'Basic', 'Standard', 'Premium'.
+ *
+ * @return the edition value
+ */
+ public ElasticPoolEdition edition() {
+ return this.edition;
+ }
+
+ /**
+ * Set the edition of the elastic pool. Possible values include: 'Basic', 'Standard', 'Premium'.
+ *
+ * @param edition the edition value to set
+ * @return the ElasticPoolUpdate object itself.
+ */
+ public ElasticPoolUpdate withEdition(ElasticPoolEdition edition) {
+ this.edition = edition;
+ return this;
+ }
+
+ /**
+ * Get the total shared DTU for the database elastic pool.
+ *
+ * @return the dtu value
+ */
+ public Integer dtu() {
+ return this.dtu;
+ }
+
+ /**
+ * Set the total shared DTU for the database elastic pool.
+ *
+ * @param dtu the dtu value to set
+ * @return the ElasticPoolUpdate object itself.
+ */
+ public ElasticPoolUpdate withDtu(Integer dtu) {
+ this.dtu = dtu;
+ return this;
+ }
+
+ /**
+ * Get the maximum DTU any one database can consume.
+ *
+ * @return the databaseDtuMax value
+ */
+ public Integer databaseDtuMax() {
+ return this.databaseDtuMax;
+ }
+
+ /**
+ * Set the maximum DTU any one database can consume.
+ *
+ * @param databaseDtuMax the databaseDtuMax value to set
+ * @return the ElasticPoolUpdate object itself.
+ */
+ public ElasticPoolUpdate withDatabaseDtuMax(Integer databaseDtuMax) {
+ this.databaseDtuMax = databaseDtuMax;
+ return this;
+ }
+
+ /**
+ * Get the minimum DTU all databases are guaranteed.
+ *
+ * @return the databaseDtuMin value
+ */
+ public Integer databaseDtuMin() {
+ return this.databaseDtuMin;
+ }
+
+ /**
+ * Set the minimum DTU all databases are guaranteed.
+ *
+ * @param databaseDtuMin the databaseDtuMin value to set
+ * @return the ElasticPoolUpdate object itself.
+ */
+ public ElasticPoolUpdate withDatabaseDtuMin(Integer databaseDtuMin) {
+ this.databaseDtuMin = databaseDtuMin;
+ return this;
+ }
+
+ /**
+ * Get gets storage limit for the database elastic pool in MB.
+ *
+ * @return the storageMB value
+ */
+ public Integer storageMB() {
+ return this.storageMB;
+ }
+
+ /**
+ * Set gets storage limit for the database elastic pool in MB.
+ *
+ * @param storageMB the storageMB value to set
+ * @return the ElasticPoolUpdate object itself.
+ */
+ public ElasticPoolUpdate withStorageMB(Integer storageMB) {
+ this.storageMB = storageMB;
+ return this;
+ }
+
+ /**
+ * Get whether or not this database elastic pool is zone redundant, which means the replicas of this database will be spread across multiple availability zones.
+ *
+ * @return the zoneRedundant value
+ */
+ public Boolean zoneRedundant() {
+ return this.zoneRedundant;
+ }
+
+ /**
+ * Set whether or not this database elastic pool is zone redundant, which means the replicas of this database will be spread across multiple availability zones.
+ *
+ * @param zoneRedundant the zoneRedundant value to set
+ * @return the ElasticPoolUpdate object itself.
+ */
+ public ElasticPoolUpdate withZoneRedundant(Boolean zoneRedundant) {
+ this.zoneRedundant = zoneRedundant;
+ return this;
+ }
+
+}
diff --git a/sql/resource-manager/v2014_04_01/src/main/java/com/microsoft/azure/management/sql/v2014_04_01/ElasticPools.java b/sql/resource-manager/v2014_04_01/src/main/java/com/microsoft/azure/management/sql/v2014_04_01/ElasticPools.java
new file mode 100644
index 0000000000000..31fb76a3a1b0a
--- /dev/null
+++ b/sql/resource-manager/v2014_04_01/src/main/java/com/microsoft/azure/management/sql/v2014_04_01/ElasticPools.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.sql.v2014_04_01;
+
+import com.microsoft.azure.arm.collection.SupportsCreating;
+import rx.Completable;
+import rx.Observable;
+import com.microsoft.azure.management.sql.v2014_04_01.implementation.ElasticPoolsInner;
+import com.microsoft.azure.arm.model.HasInner;
+
+/**
+ * Type representing ElasticPools.
+ */
+public interface ElasticPools extends SupportsCreating, HasInner {
+ /**
+ * Gets an elastic pool.
+ *
+ * @param resourceGroupName The name of the resource group that contains the resource. You can obtain this value from the Azure Resource Manager API or the portal.
+ * @param serverName The name of the server.
+ * @param elasticPoolName The name of the elastic pool to be retrieved.
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @return the observable for the request
+ */
+ Observable getAsync(String resourceGroupName, String serverName, String elasticPoolName);
+
+ /**
+ * Returns a list of elastic pools in a server.
+ *
+ * @param resourceGroupName The name of the resource group that contains the resource. You can obtain this value from the Azure Resource Manager API or the portal.
+ * @param serverName The name of the server.
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @return the observable for the request
+ */
+ Observable listByServerAsync(String resourceGroupName, String serverName);
+
+ /**
+ * Deletes the elastic pool.
+ *
+ * @param resourceGroupName The name of the resource group that contains the resource. You can obtain this value from the Azure Resource Manager API or the portal.
+ * @param serverName The name of the server.
+ * @param elasticPoolName The name of the elastic pool to be deleted.
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @return the observable for the request
+ */
+ Completable deleteAsync(String resourceGroupName, String serverName, String elasticPoolName);
+
+}
diff --git a/sql/resource-manager/v2014_04_01/src/main/java/com/microsoft/azure/management/sql/v2014_04_01/ExportRequest.java b/sql/resource-manager/v2014_04_01/src/main/java/com/microsoft/azure/management/sql/v2014_04_01/ExportRequest.java
new file mode 100644
index 0000000000000..38754c437f199
--- /dev/null
+++ b/sql/resource-manager/v2014_04_01/src/main/java/com/microsoft/azure/management/sql/v2014_04_01/ExportRequest.java
@@ -0,0 +1,175 @@
+/**
+ * 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.sql.v2014_04_01;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/**
+ * Export database parameters.
+ */
+public class ExportRequest {
+ /**
+ * The type of the storage key to use. Possible values include:
+ * 'StorageAccessKey', 'SharedAccessKey'.
+ */
+ @JsonProperty(value = "storageKeyType", required = true)
+ private StorageKeyType storageKeyType;
+
+ /**
+ * The storage key to use. If storage key type is SharedAccessKey, it must
+ * be preceded with a "?.".
+ */
+ @JsonProperty(value = "storageKey", required = true)
+ private String storageKey;
+
+ /**
+ * The storage uri to use.
+ */
+ @JsonProperty(value = "storageUri", required = true)
+ private String storageUri;
+
+ /**
+ * The name of the SQL administrator.
+ */
+ @JsonProperty(value = "administratorLogin", required = true)
+ private String administratorLogin;
+
+ /**
+ * The password of the SQL administrator.
+ */
+ @JsonProperty(value = "administratorLoginPassword", required = true)
+ private String administratorLoginPassword;
+
+ /**
+ * The authentication type. Possible values include: 'SQL', 'ADPassword'.
+ */
+ @JsonProperty(value = "authenticationType")
+ private AuthenticationType authenticationType;
+
+ /**
+ * Get the type of the storage key to use. Possible values include: 'StorageAccessKey', 'SharedAccessKey'.
+ *
+ * @return the storageKeyType value
+ */
+ public StorageKeyType storageKeyType() {
+ return this.storageKeyType;
+ }
+
+ /**
+ * Set the type of the storage key to use. Possible values include: 'StorageAccessKey', 'SharedAccessKey'.
+ *
+ * @param storageKeyType the storageKeyType value to set
+ * @return the ExportRequest object itself.
+ */
+ public ExportRequest withStorageKeyType(StorageKeyType storageKeyType) {
+ this.storageKeyType = storageKeyType;
+ return this;
+ }
+
+ /**
+ * Get the storage key to use. If storage key type is SharedAccessKey, it must be preceded with a "?.".
+ *
+ * @return the storageKey value
+ */
+ public String storageKey() {
+ return this.storageKey;
+ }
+
+ /**
+ * Set the storage key to use. If storage key type is SharedAccessKey, it must be preceded with a "?.".
+ *
+ * @param storageKey the storageKey value to set
+ * @return the ExportRequest object itself.
+ */
+ public ExportRequest withStorageKey(String storageKey) {
+ this.storageKey = storageKey;
+ return this;
+ }
+
+ /**
+ * Get the storage uri to use.
+ *
+ * @return the storageUri value
+ */
+ public String storageUri() {
+ return this.storageUri;
+ }
+
+ /**
+ * Set the storage uri to use.
+ *
+ * @param storageUri the storageUri value to set
+ * @return the ExportRequest object itself.
+ */
+ public ExportRequest withStorageUri(String storageUri) {
+ this.storageUri = storageUri;
+ return this;
+ }
+
+ /**
+ * Get the name of the SQL administrator.
+ *
+ * @return the administratorLogin value
+ */
+ public String administratorLogin() {
+ return this.administratorLogin;
+ }
+
+ /**
+ * Set the name of the SQL administrator.
+ *
+ * @param administratorLogin the administratorLogin value to set
+ * @return the ExportRequest object itself.
+ */
+ public ExportRequest withAdministratorLogin(String administratorLogin) {
+ this.administratorLogin = administratorLogin;
+ return this;
+ }
+
+ /**
+ * Get the password of the SQL administrator.
+ *
+ * @return the administratorLoginPassword value
+ */
+ public String administratorLoginPassword() {
+ return this.administratorLoginPassword;
+ }
+
+ /**
+ * Set the password of the SQL administrator.
+ *
+ * @param administratorLoginPassword the administratorLoginPassword value to set
+ * @return the ExportRequest object itself.
+ */
+ public ExportRequest withAdministratorLoginPassword(String administratorLoginPassword) {
+ this.administratorLoginPassword = administratorLoginPassword;
+ return this;
+ }
+
+ /**
+ * Get the authentication type. Possible values include: 'SQL', 'ADPassword'.
+ *
+ * @return the authenticationType value
+ */
+ public AuthenticationType authenticationType() {
+ return this.authenticationType;
+ }
+
+ /**
+ * Set the authentication type. Possible values include: 'SQL', 'ADPassword'.
+ *
+ * @param authenticationType the authenticationType value to set
+ * @return the ExportRequest object itself.
+ */
+ public ExportRequest withAuthenticationType(AuthenticationType authenticationType) {
+ this.authenticationType = authenticationType;
+ return this;
+ }
+
+}
diff --git a/sql/resource-manager/v2014_04_01/src/main/java/com/microsoft/azure/management/sql/v2014_04_01/FirewallRule.java b/sql/resource-manager/v2014_04_01/src/main/java/com/microsoft/azure/management/sql/v2014_04_01/FirewallRule.java
new file mode 100644
index 0000000000000..113a3fd162b70
--- /dev/null
+++ b/sql/resource-manager/v2014_04_01/src/main/java/com/microsoft/azure/management/sql/v2014_04_01/FirewallRule.java
@@ -0,0 +1,125 @@
+/**
+ * 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.sql.v2014_04_01;
+
+import com.microsoft.azure.arm.model.HasInner;
+import com.microsoft.azure.management.sql.v2014_04_01.implementation.FirewallRuleInner;
+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.sql.v2014_04_01.implementation.SqlManager;
+
+/**
+ * Type representing FirewallRule.
+ */
+public interface FirewallRule extends HasInner, Indexable, Refreshable, Updatable, HasManager {
+ /**
+ * @return the endIpAddress value.
+ */
+ String endIpAddress();
+
+ /**
+ * @return the id value.
+ */
+ String id();
+
+ /**
+ * @return the kind value.
+ */
+ String kind();
+
+ /**
+ * @return the location value.
+ */
+ String location();
+
+ /**
+ * @return the name value.
+ */
+ String name();
+
+ /**
+ * @return the startIpAddress value.
+ */
+ String startIpAddress();
+
+ /**
+ * @return the type value.
+ */
+ String type();
+
+ /**
+ * The entirety of the FirewallRule definition.
+ */
+ interface Definition extends DefinitionStages.Blank, DefinitionStages.WithServer, DefinitionStages.WithEndIpAddress, DefinitionStages.WithStartIpAddress, DefinitionStages.WithCreate {
+ }
+
+ /**
+ * Grouping of FirewallRule definition stages.
+ */
+ interface DefinitionStages {
+ /**
+ * The first stage of a FirewallRule definition.
+ */
+ interface Blank extends WithServer {
+ }
+
+ /**
+ * The stage of the firewallrule definition allowing to specify Server.
+ */
+ interface WithServer {
+ /**
+ * Specifies resourceGroupName, serverName.
+ */
+ WithEndIpAddress withExistingServer(String resourceGroupName, String serverName);
+ }
+
+ /**
+ * The stage of the firewallrule definition allowing to specify EndIpAddress.
+ */
+ interface WithEndIpAddress {
+ /**
+ * Specifies endIpAddress.
+ */
+ WithStartIpAddress withEndIpAddress(String endIpAddress);
+ }
+
+ /**
+ * The stage of the firewallrule definition allowing to specify StartIpAddress.
+ */
+ interface WithStartIpAddress {
+ /**
+ * Specifies startIpAddress.
+ */
+ WithCreate withStartIpAddress(String startIpAddress);
+ }
+
+ /**
+ * 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 FirewallRule update operation, containing all the settings that can be modified.
+ */
+ interface Update extends Appliable {
+ }
+
+ /**
+ * Grouping of FirewallRule update stages.
+ */
+ interface UpdateStages {
+ }
+}
diff --git a/sql/resource-manager/v2014_04_01/src/main/java/com/microsoft/azure/management/sql/v2014_04_01/FirewallRules.java b/sql/resource-manager/v2014_04_01/src/main/java/com/microsoft/azure/management/sql/v2014_04_01/FirewallRules.java
new file mode 100644
index 0000000000000..2d064a5027ace
--- /dev/null
+++ b/sql/resource-manager/v2014_04_01/src/main/java/com/microsoft/azure/management/sql/v2014_04_01/FirewallRules.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.sql.v2014_04_01;
+
+import com.microsoft.azure.arm.collection.SupportsCreating;
+import rx.Completable;
+import rx.Observable;
+import com.microsoft.azure.management.sql.v2014_04_01.implementation.FirewallRulesInner;
+import com.microsoft.azure.arm.model.HasInner;
+
+/**
+ * Type representing FirewallRules.
+ */
+public interface FirewallRules extends SupportsCreating, HasInner {
+ /**
+ * Gets a firewall rule.
+ *
+ * @param resourceGroupName The name of the resource group that contains the resource. You can obtain this value from the Azure Resource Manager API or the portal.
+ * @param serverName The name of the server.
+ * @param firewallRuleName The name of the firewall rule.
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @return the observable for the request
+ */
+ Observable getAsync(String resourceGroupName, String serverName, String firewallRuleName);
+
+ /**
+ * Returns a list of firewall rules.
+ *
+ * @param resourceGroupName The name of the resource group that contains the resource. You can obtain this value from the Azure Resource Manager API or the portal.
+ * @param serverName The name of the server.
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @return the observable for the request
+ */
+ Observable listByServerAsync(String resourceGroupName, String serverName);
+
+ /**
+ * Deletes a firewall rule.
+ *
+ * @param resourceGroupName The name of the resource group that contains the resource. You can obtain this value from the Azure Resource Manager API or the portal.
+ * @param serverName The name of the server.
+ * @param firewallRuleName The name of the firewall rule.
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @return the observable for the request
+ */
+ Completable deleteAsync(String resourceGroupName, String serverName, String firewallRuleName);
+
+}
diff --git a/sql/resource-manager/v2014_04_01/src/main/java/com/microsoft/azure/management/sql/v2014_04_01/ImportExportResponse.java b/sql/resource-manager/v2014_04_01/src/main/java/com/microsoft/azure/management/sql/v2014_04_01/ImportExportResponse.java
new file mode 100644
index 0000000000000..3bfb29fdd51d3
--- /dev/null
+++ b/sql/resource-manager/v2014_04_01/src/main/java/com/microsoft/azure/management/sql/v2014_04_01/ImportExportResponse.java
@@ -0,0 +1,250 @@
+/**
+ * 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.sql.v2014_04_01;
+
+import com.microsoft.azure.arm.model.HasInner;
+import com.microsoft.azure.management.sql.v2014_04_01.implementation.ImportExportResponseInner;
+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.sql.v2014_04_01.implementation.SqlManager;
+import java.util.UUID;
+
+/**
+ * Type representing ImportExportResponse.
+ */
+public interface ImportExportResponse extends HasInner, Indexable, Updatable, HasManager {
+ /**
+ * @return the blobUri value.
+ */
+ String blobUri();
+
+ /**
+ * @return the databaseName value.
+ */
+ String databaseName();
+
+ /**
+ * @return the errorMessage value.
+ */
+ String errorMessage();
+
+ /**
+ * @return the id value.
+ */
+ String id();
+
+ /**
+ * @return the lastModifiedTime value.
+ */
+ String lastModifiedTime();
+
+ /**
+ * @return the name value.
+ */
+ String name();
+
+ /**
+ * @return the queuedTime value.
+ */
+ String queuedTime();
+
+ /**
+ * @return the requestId value.
+ */
+ UUID requestId();
+
+ /**
+ * @return the requestType value.
+ */
+ String requestType();
+
+ /**
+ * @return the serverName value.
+ */
+ String serverName();
+
+ /**
+ * @return the status value.
+ */
+ String status();
+
+ /**
+ * @return the type value.
+ */
+ String type();
+
+ /**
+ * The entirety of the ImportExportResponse definition.
+ */
+ interface Definition extends DefinitionStages.Blank, DefinitionStages.WithDatabasis, DefinitionStages.WithAdministratorLogin, DefinitionStages.WithAdministratorLoginPassword, DefinitionStages.WithOperationMode, DefinitionStages.WithStorageKey, DefinitionStages.WithStorageKeyType, DefinitionStages.WithStorageUri, DefinitionStages.WithCreate {
+ }
+
+ /**
+ * Grouping of ImportExportResponse definition stages.
+ */
+ interface DefinitionStages {
+ /**
+ * The first stage of a ImportExportResponse definition.
+ */
+ interface Blank extends WithDatabasis {
+ }
+
+ /**
+ * The stage of the importexportresponse definition allowing to specify Databasis.
+ */
+ interface WithDatabasis {
+ /**
+ * Specifies resourceGroupName, serverName, databaseName.
+ */
+ WithAdministratorLogin withExistingDatabasis(String resourceGroupName, String serverName, String databaseName);
+ }
+
+ /**
+ * The stage of the importexportresponse definition allowing to specify AdministratorLogin.
+ */
+ interface WithAdministratorLogin {
+ /**
+ * Specifies administratorLogin.
+ */
+ WithAdministratorLoginPassword withAdministratorLogin(String administratorLogin);
+ }
+
+ /**
+ * The stage of the importexportresponse definition allowing to specify AdministratorLoginPassword.
+ */
+ interface WithAdministratorLoginPassword {
+ /**
+ * Specifies administratorLoginPassword.
+ */
+ WithOperationMode withAdministratorLoginPassword(String administratorLoginPassword);
+ }
+
+ /**
+ * The stage of the importexportresponse definition allowing to specify OperationMode.
+ */
+ interface WithOperationMode {
+ /**
+ * Specifies operationMode.
+ */
+ WithStorageKey withOperationMode(String operationMode);
+ }
+
+ /**
+ * The stage of the importexportresponse definition allowing to specify StorageKey.
+ */
+ interface WithStorageKey {
+ /**
+ * Specifies storageKey.
+ */
+ WithStorageKeyType withStorageKey(String storageKey);
+ }
+
+ /**
+ * The stage of the importexportresponse definition allowing to specify StorageKeyType.
+ */
+ interface WithStorageKeyType {
+ /**
+ * Specifies storageKeyType.
+ */
+ WithStorageUri withStorageKeyType(StorageKeyType storageKeyType);
+ }
+
+ /**
+ * The stage of the importexportresponse definition allowing to specify StorageUri.
+ */
+ interface WithStorageUri {
+ /**
+ * Specifies storageUri.
+ */
+ WithCreate withStorageUri(String storageUri);
+ }
+
+ /**
+ * The stage of the importexportresponse definition allowing to specify AuthenticationType.
+ */
+ interface WithAuthenticationType {
+ /**
+ * Specifies authenticationType.
+ */
+ WithCreate withAuthenticationType(AuthenticationType authenticationType);
+ }
+
+ /**
+ * The stage of the importexportresponse definition allowing to specify Name.
+ */
+ interface WithName {
+ /**
+ * Specifies name.
+ */
+ WithCreate withName(String name);
+ }
+
+ /**
+ * The stage of the importexportresponse definition allowing to specify Type.
+ */
+ interface WithType {
+ /**
+ * Specifies type.
+ */
+ WithCreate withType(String type);
+ }
+
+ /**
+ * The stage of the definition which contains all the minimum required inputs for
+ * the resource to be created (via {@link WithCreate#create()}), but also allows
+ * for any other optional settings to be specified.
+ */
+ interface WithCreate extends Creatable, DefinitionStages.WithAuthenticationType, DefinitionStages.WithName, DefinitionStages.WithType {
+ }
+ }
+ /**
+ * The template for a ImportExportResponse update operation, containing all the settings that can be modified.
+ */
+ interface Update extends Appliable, UpdateStages.WithAuthenticationType, UpdateStages.WithName, UpdateStages.WithType {
+ }
+
+ /**
+ * Grouping of ImportExportResponse update stages.
+ */
+ interface UpdateStages {
+ /**
+ * The stage of the importexportresponse update allowing to specify AuthenticationType.
+ */
+ interface WithAuthenticationType {
+ /**
+ * Specifies authenticationType.
+ */
+ Update withAuthenticationType(AuthenticationType authenticationType);
+ }
+
+ /**
+ * The stage of the importexportresponse update allowing to specify Name.
+ */
+ interface WithName {
+ /**
+ * Specifies name.
+ */
+ Update withName(String name);
+ }
+
+ /**
+ * The stage of the importexportresponse update allowing to specify Type.
+ */
+ interface WithType {
+ /**
+ * Specifies type.
+ */
+ Update withType(String type);
+ }
+
+ }
+}
diff --git a/sql/resource-manager/v2014_04_01/src/main/java/com/microsoft/azure/management/sql/v2014_04_01/ImportExtensionRequest.java b/sql/resource-manager/v2014_04_01/src/main/java/com/microsoft/azure/management/sql/v2014_04_01/ImportExtensionRequest.java
new file mode 100644
index 0000000000000..c3b0b7d5a3bee
--- /dev/null
+++ b/sql/resource-manager/v2014_04_01/src/main/java/com/microsoft/azure/management/sql/v2014_04_01/ImportExtensionRequest.java
@@ -0,0 +1,267 @@
+/**
+ * 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.sql.v2014_04_01;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.microsoft.rest.serializer.JsonFlatten;
+
+/**
+ * Import database parameters.
+ */
+@JsonFlatten
+public class ImportExtensionRequest {
+ /**
+ * The name of the extension.
+ */
+ @JsonProperty(value = "name")
+ private String name;
+
+ /**
+ * The type of the extension.
+ */
+ @JsonProperty(value = "type")
+ private String type;
+
+ /**
+ * The type of the storage key to use. Possible values include:
+ * 'StorageAccessKey', 'SharedAccessKey'.
+ */
+ @JsonProperty(value = "properties.storageKeyType", required = true)
+ private StorageKeyType storageKeyType;
+
+ /**
+ * The storage key to use. If storage key type is SharedAccessKey, it must
+ * be preceded with a "?.".
+ */
+ @JsonProperty(value = "properties.storageKey", required = true)
+ private String storageKey;
+
+ /**
+ * The storage uri to use.
+ */
+ @JsonProperty(value = "properties.storageUri", required = true)
+ private String storageUri;
+
+ /**
+ * The name of the SQL administrator.
+ */
+ @JsonProperty(value = "properties.administratorLogin", required = true)
+ private String administratorLogin;
+
+ /**
+ * The password of the SQL administrator.
+ */
+ @JsonProperty(value = "properties.administratorLoginPassword", required = true)
+ private String administratorLoginPassword;
+
+ /**
+ * The authentication type. Possible values include: 'SQL', 'ADPassword'.
+ */
+ @JsonProperty(value = "properties.authenticationType")
+ private AuthenticationType authenticationType;
+
+ /**
+ * The type of import operation being performed. This is always Import.
+ */
+ @JsonProperty(value = "properties.operationMode", required = true)
+ private String operationMode;
+
+ /**
+ * Creates an instance of ImportExtensionRequest class.
+ * @param storageKeyType the type of the storage key to use. Possible values include: 'StorageAccessKey', 'SharedAccessKey'.
+ * @param storageKey the storage key to use. If storage key type is SharedAccessKey, it must be preceded with a "?.".
+ * @param storageUri the storage uri to use.
+ * @param administratorLogin the name of the SQL administrator.
+ * @param administratorLoginPassword the password of the SQL administrator.
+ */
+ public ImportExtensionRequest() {
+ operationMode = "Import";
+ }
+
+ /**
+ * Get the name of the extension.
+ *
+ * @return the name value
+ */
+ public String name() {
+ return this.name;
+ }
+
+ /**
+ * Set the name of the extension.
+ *
+ * @param name the name value to set
+ * @return the ImportExtensionRequest object itself.
+ */
+ public ImportExtensionRequest withName(String name) {
+ this.name = name;
+ return this;
+ }
+
+ /**
+ * Get the type of the extension.
+ *
+ * @return the type value
+ */
+ public String type() {
+ return this.type;
+ }
+
+ /**
+ * Set the type of the extension.
+ *
+ * @param type the type value to set
+ * @return the ImportExtensionRequest object itself.
+ */
+ public ImportExtensionRequest withType(String type) {
+ this.type = type;
+ return this;
+ }
+
+ /**
+ * Get the type of the storage key to use. Possible values include: 'StorageAccessKey', 'SharedAccessKey'.
+ *
+ * @return the storageKeyType value
+ */
+ public StorageKeyType storageKeyType() {
+ return this.storageKeyType;
+ }
+
+ /**
+ * Set the type of the storage key to use. Possible values include: 'StorageAccessKey', 'SharedAccessKey'.
+ *
+ * @param storageKeyType the storageKeyType value to set
+ * @return the ImportExtensionRequest object itself.
+ */
+ public ImportExtensionRequest withStorageKeyType(StorageKeyType storageKeyType) {
+ this.storageKeyType = storageKeyType;
+ return this;
+ }
+
+ /**
+ * Get the storage key to use. If storage key type is SharedAccessKey, it must be preceded with a "?.".
+ *
+ * @return the storageKey value
+ */
+ public String storageKey() {
+ return this.storageKey;
+ }
+
+ /**
+ * Set the storage key to use. If storage key type is SharedAccessKey, it must be preceded with a "?.".
+ *
+ * @param storageKey the storageKey value to set
+ * @return the ImportExtensionRequest object itself.
+ */
+ public ImportExtensionRequest withStorageKey(String storageKey) {
+ this.storageKey = storageKey;
+ return this;
+ }
+
+ /**
+ * Get the storage uri to use.
+ *
+ * @return the storageUri value
+ */
+ public String storageUri() {
+ return this.storageUri;
+ }
+
+ /**
+ * Set the storage uri to use.
+ *
+ * @param storageUri the storageUri value to set
+ * @return the ImportExtensionRequest object itself.
+ */
+ public ImportExtensionRequest withStorageUri(String storageUri) {
+ this.storageUri = storageUri;
+ return this;
+ }
+
+ /**
+ * Get the name of the SQL administrator.
+ *
+ * @return the administratorLogin value
+ */
+ public String administratorLogin() {
+ return this.administratorLogin;
+ }
+
+ /**
+ * Set the name of the SQL administrator.
+ *
+ * @param administratorLogin the administratorLogin value to set
+ * @return the ImportExtensionRequest object itself.
+ */
+ public ImportExtensionRequest withAdministratorLogin(String administratorLogin) {
+ this.administratorLogin = administratorLogin;
+ return this;
+ }
+
+ /**
+ * Get the password of the SQL administrator.
+ *
+ * @return the administratorLoginPassword value
+ */
+ public String administratorLoginPassword() {
+ return this.administratorLoginPassword;
+ }
+
+ /**
+ * Set the password of the SQL administrator.
+ *
+ * @param administratorLoginPassword the administratorLoginPassword value to set
+ * @return the ImportExtensionRequest object itself.
+ */
+ public ImportExtensionRequest withAdministratorLoginPassword(String administratorLoginPassword) {
+ this.administratorLoginPassword = administratorLoginPassword;
+ return this;
+ }
+
+ /**
+ * Get the authentication type. Possible values include: 'SQL', 'ADPassword'.
+ *
+ * @return the authenticationType value
+ */
+ public AuthenticationType authenticationType() {
+ return this.authenticationType;
+ }
+
+ /**
+ * Set the authentication type. Possible values include: 'SQL', 'ADPassword'.
+ *
+ * @param authenticationType the authenticationType value to set
+ * @return the ImportExtensionRequest object itself.
+ */
+ public ImportExtensionRequest withAuthenticationType(AuthenticationType authenticationType) {
+ this.authenticationType = authenticationType;
+ return this;
+ }
+
+ /**
+ * Get the type of import operation being performed. This is always Import.
+ *
+ * @return the operationMode value
+ */
+ public String operationMode() {
+ return this.operationMode;
+ }
+
+ /**
+ * Set the type of import operation being performed. This is always Import.
+ *
+ * @param operationMode the operationMode value to set
+ * @return the ImportExtensionRequest object itself.
+ */
+ public ImportExtensionRequest withOperationMode(String operationMode) {
+ this.operationMode = operationMode;
+ return this;
+ }
+
+}
diff --git a/sql/resource-manager/v2014_04_01/src/main/java/com/microsoft/azure/management/sql/v2014_04_01/ImportRequest.java b/sql/resource-manager/v2014_04_01/src/main/java/com/microsoft/azure/management/sql/v2014_04_01/ImportRequest.java
new file mode 100644
index 0000000000000..f947a3473e506
--- /dev/null
+++ b/sql/resource-manager/v2014_04_01/src/main/java/com/microsoft/azure/management/sql/v2014_04_01/ImportRequest.java
@@ -0,0 +1,132 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.sql.v2014_04_01;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/**
+ * Import database parameters.
+ */
+public class ImportRequest extends ExportRequest {
+ /**
+ * The name of the database to import.
+ */
+ @JsonProperty(value = "databaseName", required = true)
+ private String databaseName;
+
+ /**
+ * The edition for the database being created. Possible values include:
+ * 'Web', 'Business', 'Basic', 'Standard', 'Premium', 'PremiumRS', 'Free',
+ * 'Stretch', 'DataWarehouse', 'System', 'System2'.
+ */
+ @JsonProperty(value = "edition", required = true)
+ private DatabaseEdition edition;
+
+ /**
+ * The name of the service objective to assign to the database. Possible
+ * values include: 'System', 'System0', 'System1', 'System2', 'System3',
+ * 'System4', 'System2L', 'System3L', 'System4L', 'Free', 'Basic', 'S0',
+ * 'S1', 'S2', 'S3', 'S4', 'S6', 'S7', 'S9', 'S12', 'P1', 'P2', 'P3', 'P4',
+ * 'P6', 'P11', 'P15', 'PRS1', 'PRS2', 'PRS4', 'PRS6', 'DW100', 'DW200',
+ * 'DW300', 'DW400', 'DW500', 'DW600', 'DW1000', 'DW1200', 'DW1000c',
+ * 'DW1500', 'DW1500c', 'DW2000', 'DW2000c', 'DW3000', 'DW2500c',
+ * 'DW3000c', 'DW6000', 'DW5000c', 'DW6000c', 'DW7500c', 'DW10000c',
+ * 'DW15000c', 'DW30000c', 'DS100', 'DS200', 'DS300', 'DS400', 'DS500',
+ * 'DS600', 'DS1000', 'DS1200', 'DS1500', 'DS2000', 'ElasticPool'.
+ */
+ @JsonProperty(value = "serviceObjectiveName", required = true)
+ private ServiceObjectiveName serviceObjectiveName;
+
+ /**
+ * The maximum size for the newly imported database.
+ */
+ @JsonProperty(value = "maxSizeBytes", required = true)
+ private String maxSizeBytes;
+
+ /**
+ * Get the name of the database to import.
+ *
+ * @return the databaseName value
+ */
+ public String databaseName() {
+ return this.databaseName;
+ }
+
+ /**
+ * Set the name of the database to import.
+ *
+ * @param databaseName the databaseName value to set
+ * @return the ImportRequest object itself.
+ */
+ public ImportRequest withDatabaseName(String databaseName) {
+ this.databaseName = databaseName;
+ return this;
+ }
+
+ /**
+ * Get the edition for the database being created. Possible values include: 'Web', 'Business', 'Basic', 'Standard', 'Premium', 'PremiumRS', 'Free', 'Stretch', 'DataWarehouse', 'System', 'System2'.
+ *
+ * @return the edition value
+ */
+ public DatabaseEdition edition() {
+ return this.edition;
+ }
+
+ /**
+ * Set the edition for the database being created. Possible values include: 'Web', 'Business', 'Basic', 'Standard', 'Premium', 'PremiumRS', 'Free', 'Stretch', 'DataWarehouse', 'System', 'System2'.
+ *
+ * @param edition the edition value to set
+ * @return the ImportRequest object itself.
+ */
+ public ImportRequest withEdition(DatabaseEdition edition) {
+ this.edition = edition;
+ return this;
+ }
+
+ /**
+ * Get the name of the service objective to assign to the database. Possible values include: 'System', 'System0', 'System1', 'System2', 'System3', 'System4', 'System2L', 'System3L', 'System4L', 'Free', 'Basic', 'S0', 'S1', 'S2', 'S3', 'S4', 'S6', 'S7', 'S9', 'S12', 'P1', 'P2', 'P3', 'P4', 'P6', 'P11', 'P15', 'PRS1', 'PRS2', 'PRS4', 'PRS6', 'DW100', 'DW200', 'DW300', 'DW400', 'DW500', 'DW600', 'DW1000', 'DW1200', 'DW1000c', 'DW1500', 'DW1500c', 'DW2000', 'DW2000c', 'DW3000', 'DW2500c', 'DW3000c', 'DW6000', 'DW5000c', 'DW6000c', 'DW7500c', 'DW10000c', 'DW15000c', 'DW30000c', 'DS100', 'DS200', 'DS300', 'DS400', 'DS500', 'DS600', 'DS1000', 'DS1200', 'DS1500', 'DS2000', 'ElasticPool'.
+ *
+ * @return the serviceObjectiveName value
+ */
+ public ServiceObjectiveName serviceObjectiveName() {
+ return this.serviceObjectiveName;
+ }
+
+ /**
+ * Set the name of the service objective to assign to the database. Possible values include: 'System', 'System0', 'System1', 'System2', 'System3', 'System4', 'System2L', 'System3L', 'System4L', 'Free', 'Basic', 'S0', 'S1', 'S2', 'S3', 'S4', 'S6', 'S7', 'S9', 'S12', 'P1', 'P2', 'P3', 'P4', 'P6', 'P11', 'P15', 'PRS1', 'PRS2', 'PRS4', 'PRS6', 'DW100', 'DW200', 'DW300', 'DW400', 'DW500', 'DW600', 'DW1000', 'DW1200', 'DW1000c', 'DW1500', 'DW1500c', 'DW2000', 'DW2000c', 'DW3000', 'DW2500c', 'DW3000c', 'DW6000', 'DW5000c', 'DW6000c', 'DW7500c', 'DW10000c', 'DW15000c', 'DW30000c', 'DS100', 'DS200', 'DS300', 'DS400', 'DS500', 'DS600', 'DS1000', 'DS1200', 'DS1500', 'DS2000', 'ElasticPool'.
+ *
+ * @param serviceObjectiveName the serviceObjectiveName value to set
+ * @return the ImportRequest object itself.
+ */
+ public ImportRequest withServiceObjectiveName(ServiceObjectiveName serviceObjectiveName) {
+ this.serviceObjectiveName = serviceObjectiveName;
+ return this;
+ }
+
+ /**
+ * Get the maximum size for the newly imported database.
+ *
+ * @return the maxSizeBytes value
+ */
+ public String maxSizeBytes() {
+ return this.maxSizeBytes;
+ }
+
+ /**
+ * Set the maximum size for the newly imported database.
+ *
+ * @param maxSizeBytes the maxSizeBytes value to set
+ * @return the ImportRequest object itself.
+ */
+ public ImportRequest withMaxSizeBytes(String maxSizeBytes) {
+ this.maxSizeBytes = maxSizeBytes;
+ return this;
+ }
+
+}
diff --git a/sql/resource-manager/v2014_04_01/src/main/java/com/microsoft/azure/management/sql/v2014_04_01/OperationImpact.java b/sql/resource-manager/v2014_04_01/src/main/java/com/microsoft/azure/management/sql/v2014_04_01/OperationImpact.java
new file mode 100644
index 0000000000000..89a77c9d80176
--- /dev/null
+++ b/sql/resource-manager/v2014_04_01/src/main/java/com/microsoft/azure/management/sql/v2014_04_01/OperationImpact.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.sql.v2014_04_01;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/**
+ * The impact of an operation, both in absolute and relative terms.
+ */
+public class OperationImpact {
+ /**
+ * The name of the impact dimension.
+ */
+ @JsonProperty(value = "name", access = JsonProperty.Access.WRITE_ONLY)
+ private String name;
+
+ /**
+ * The unit in which estimated impact to dimension is measured.
+ */
+ @JsonProperty(value = "unit", access = JsonProperty.Access.WRITE_ONLY)
+ private String unit;
+
+ /**
+ * The absolute impact to dimension.
+ */
+ @JsonProperty(value = "changeValueAbsolute", access = JsonProperty.Access.WRITE_ONLY)
+ private Double changeValueAbsolute;
+
+ /**
+ * The relative impact to dimension (null if not applicable).
+ */
+ @JsonProperty(value = "changeValueRelative", access = JsonProperty.Access.WRITE_ONLY)
+ private Double changeValueRelative;
+
+ /**
+ * Get the name of the impact dimension.
+ *
+ * @return the name value
+ */
+ public String name() {
+ return this.name;
+ }
+
+ /**
+ * Get the unit in which estimated impact to dimension is measured.
+ *
+ * @return the unit value
+ */
+ public String unit() {
+ return this.unit;
+ }
+
+ /**
+ * Get the absolute impact to dimension.
+ *
+ * @return the changeValueAbsolute value
+ */
+ public Double changeValueAbsolute() {
+ return this.changeValueAbsolute;
+ }
+
+ /**
+ * Get the relative impact to dimension (null if not applicable).
+ *
+ * @return the changeValueRelative value
+ */
+ public Double changeValueRelative() {
+ return this.changeValueRelative;
+ }
+
+}
diff --git a/sql/resource-manager/v2014_04_01/src/main/java/com/microsoft/azure/management/sql/v2014_04_01/ReadScale.java b/sql/resource-manager/v2014_04_01/src/main/java/com/microsoft/azure/management/sql/v2014_04_01/ReadScale.java
new file mode 100644
index 0000000000000..9547b48f8d2e6
--- /dev/null
+++ b/sql/resource-manager/v2014_04_01/src/main/java/com/microsoft/azure/management/sql/v2014_04_01/ReadScale.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.sql.v2014_04_01;
+
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonValue;
+
+/**
+ * Defines values for ReadScale.
+ */
+public enum ReadScale {
+ /** Enum value Enabled. */
+ ENABLED("Enabled"),
+
+ /** Enum value Disabled. */
+ DISABLED("Disabled");
+
+ /** The actual serialized value for a ReadScale instance. */
+ private String value;
+
+ ReadScale(String value) {
+ this.value = value;
+ }
+
+ /**
+ * Parses a serialized value to a ReadScale instance.
+ *
+ * @param value the serialized value to parse.
+ * @return the parsed ReadScale object, or null if unable to parse.
+ */
+ @JsonCreator
+ public static ReadScale fromString(String value) {
+ ReadScale[] items = ReadScale.values();
+ for (ReadScale item : items) {
+ if (item.toString().equalsIgnoreCase(value)) {
+ return item;
+ }
+ }
+ return null;
+ }
+
+ @JsonValue
+ @Override
+ public String toString() {
+ return this.value;
+ }
+}
diff --git a/sql/resource-manager/v2014_04_01/src/main/java/com/microsoft/azure/management/sql/v2014_04_01/RecommendedElasticPool.java b/sql/resource-manager/v2014_04_01/src/main/java/com/microsoft/azure/management/sql/v2014_04_01/RecommendedElasticPool.java
new file mode 100644
index 0000000000000..18fedbd6be7c9
--- /dev/null
+++ b/sql/resource-manager/v2014_04_01/src/main/java/com/microsoft/azure/management/sql/v2014_04_01/RecommendedElasticPool.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.sql.v2014_04_01;
+
+import com.microsoft.azure.arm.model.HasInner;
+import com.microsoft.azure.management.sql.v2014_04_01.implementation.RecommendedElasticPoolInner;
+import com.microsoft.azure.arm.model.Indexable;
+import com.microsoft.azure.arm.model.Refreshable;
+import com.microsoft.azure.arm.resources.models.HasManager;
+import com.microsoft.azure.management.sql.v2014_04_01.implementation.SqlManager;
+import java.util.List;
+import org.joda.time.DateTime;
+
+/**
+ * Type representing RecommendedElasticPool.
+ */
+public interface RecommendedElasticPool extends HasInner, Indexable, Refreshable, HasManager {
+ /**
+ * @return the databaseDtuMax value.
+ */
+ Double databaseDtuMax();
+
+ /**
+ * @return the databaseDtuMin value.
+ */
+ Double databaseDtuMin();
+
+ /**
+ * @return the databaseEdition value.
+ */
+ ElasticPoolEdition databaseEdition();
+
+ /**
+ * @return the databases value.
+ */
+ List databases();
+
+ /**
+ * @return the dtu value.
+ */
+ Double dtu();
+
+ /**
+ * @return the id value.
+ */
+ String id();
+
+ /**
+ * @return the maxObservedDtu value.
+ */
+ Double maxObservedDtu();
+
+ /**
+ * @return the maxObservedStorageMB value.
+ */
+ Double maxObservedStorageMB();
+
+ /**
+ * @return the metrics value.
+ */
+ List metrics();
+
+ /**
+ * @return the name value.
+ */
+ String name();
+
+ /**
+ * @return the observationPeriodEnd value.
+ */
+ DateTime observationPeriodEnd();
+
+ /**
+ * @return the observationPeriodStart value.
+ */
+ DateTime observationPeriodStart();
+
+ /**
+ * @return the storageMB value.
+ */
+ Double storageMB();
+
+ /**
+ * @return the type value.
+ */
+ String type();
+
+}
diff --git a/sql/resource-manager/v2014_04_01/src/main/java/com/microsoft/azure/management/sql/v2014_04_01/RecommendedElasticPoolMetric.java b/sql/resource-manager/v2014_04_01/src/main/java/com/microsoft/azure/management/sql/v2014_04_01/RecommendedElasticPoolMetric.java
new file mode 100644
index 0000000000000..a0a76f2b36dba
--- /dev/null
+++ b/sql/resource-manager/v2014_04_01/src/main/java/com/microsoft/azure/management/sql/v2014_04_01/RecommendedElasticPoolMetric.java
@@ -0,0 +1,36 @@
+/**
+ * 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.sql.v2014_04_01;
+
+import com.microsoft.azure.arm.model.HasInner;
+import com.microsoft.azure.management.sql.v2014_04_01.implementation.RecommendedElasticPoolMetricInner;
+import com.microsoft.azure.arm.resources.models.HasManager;
+import com.microsoft.azure.management.sql.v2014_04_01.implementation.SqlManager;
+import org.joda.time.DateTime;
+
+/**
+ * Type representing RecommendedElasticPoolMetric.
+ */
+public interface RecommendedElasticPoolMetric extends HasInner, HasManager {
+ /**
+ * @return the dateTimeProperty value.
+ */
+ DateTime dateTimeProperty();
+
+ /**
+ * @return the dtu value.
+ */
+ Double dtu();
+
+ /**
+ * @return the sizeGB value.
+ */
+ Double sizeGB();
+
+}
diff --git a/sql/resource-manager/v2014_04_01/src/main/java/com/microsoft/azure/management/sql/v2014_04_01/RecommendedElasticPools.java b/sql/resource-manager/v2014_04_01/src/main/java/com/microsoft/azure/management/sql/v2014_04_01/RecommendedElasticPools.java
new file mode 100644
index 0000000000000..cc8cc11b6c8c2
--- /dev/null
+++ b/sql/resource-manager/v2014_04_01/src/main/java/com/microsoft/azure/management/sql/v2014_04_01/RecommendedElasticPools.java
@@ -0,0 +1,52 @@
+/**
+ * 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.sql.v2014_04_01;
+
+import rx.Observable;
+import com.microsoft.azure.management.sql.v2014_04_01.implementation.RecommendedElasticPoolsInner;
+import com.microsoft.azure.arm.model.HasInner;
+import com.microsoft.azure.management.sql.v2014_04_01.RecommendedElasticPoolMetric;
+
+/**
+ * Type representing RecommendedElasticPools.
+ */
+public interface RecommendedElasticPools extends HasInner {
+ /**
+ * Gets a recommented elastic pool.
+ *
+ * @param resourceGroupName The name of the resource group that contains the resource. You can obtain this value from the Azure Resource Manager API or the portal.
+ * @param serverName The name of the server.
+ * @param recommendedElasticPoolName The name of the recommended elastic pool to be retrieved.
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @return the observable for the request
+ */
+ Observable getAsync(String resourceGroupName, String serverName, String recommendedElasticPoolName);
+
+ /**
+ * Returns recommended elastic pools.
+ *
+ * @param resourceGroupName The name of the resource group that contains the resource. You can obtain this value from the Azure Resource Manager API or the portal.
+ * @param serverName The name of the server.
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @return the observable for the request
+ */
+ Observable listByServerAsync(String resourceGroupName, String serverName);
+
+ /**
+ * Returns recommented elastic pool metrics.
+ *
+ * @param resourceGroupName The name of the resource group that contains the resource. You can obtain this value from the Azure Resource Manager API or the portal.
+ * @param serverName The name of the server.
+ * @param recommendedElasticPoolName The name of the recommended elastic pool to be retrieved.
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @return the observable for the request
+ */
+ Observable listMetricsAsync(String resourceGroupName, String serverName, String recommendedElasticPoolName);
+
+}
diff --git a/sql/resource-manager/v2014_04_01/src/main/java/com/microsoft/azure/management/sql/v2014_04_01/RecommendedIndex.java b/sql/resource-manager/v2014_04_01/src/main/java/com/microsoft/azure/management/sql/v2014_04_01/RecommendedIndex.java
new file mode 100644
index 0000000000000..09698ba74e2f4
--- /dev/null
+++ b/sql/resource-manager/v2014_04_01/src/main/java/com/microsoft/azure/management/sql/v2014_04_01/RecommendedIndex.java
@@ -0,0 +1,210 @@
+/**
+ * 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.sql.v2014_04_01;
+
+import org.joda.time.DateTime;
+import java.util.List;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.microsoft.rest.serializer.JsonFlatten;
+import com.microsoft.azure.ProxyResource;
+
+/**
+ * Represents a database recommended index.
+ */
+@JsonFlatten
+public class RecommendedIndex extends ProxyResource {
+ /**
+ * The proposed index action. You can create a missing index, drop an
+ * unused index, or rebuild an existing index to improve its performance.
+ * Possible values include: 'Create', 'Drop', 'Rebuild'.
+ */
+ @JsonProperty(value = "properties.action", access = JsonProperty.Access.WRITE_ONLY)
+ private RecommendedIndexAction action;
+
+ /**
+ * The current recommendation state. Possible values include: 'Active',
+ * 'Pending', 'Executing', 'Verifying', 'Pending Revert', 'Reverting',
+ * 'Reverted', 'Ignored', 'Expired', 'Blocked', 'Success'.
+ */
+ @JsonProperty(value = "properties.state", access = JsonProperty.Access.WRITE_ONLY)
+ private RecommendedIndexState state;
+
+ /**
+ * The UTC datetime showing when this resource was created (ISO8601
+ * format).
+ */
+ @JsonProperty(value = "properties.created", access = JsonProperty.Access.WRITE_ONLY)
+ private DateTime created;
+
+ /**
+ * The UTC datetime of when was this resource last changed (ISO8601
+ * format).
+ */
+ @JsonProperty(value = "properties.lastModified", access = JsonProperty.Access.WRITE_ONLY)
+ private DateTime lastModified;
+
+ /**
+ * The type of index (CLUSTERED, NONCLUSTERED, COLUMNSTORE, CLUSTERED
+ * COLUMNSTORE). Possible values include: 'CLUSTERED', 'NONCLUSTERED',
+ * 'COLUMNSTORE', 'CLUSTERED COLUMNSTORE'.
+ */
+ @JsonProperty(value = "properties.indexType", access = JsonProperty.Access.WRITE_ONLY)
+ private RecommendedIndexType indexType;
+
+ /**
+ * The schema where table to build index over resides.
+ */
+ @JsonProperty(value = "properties.schema", access = JsonProperty.Access.WRITE_ONLY)
+ private String schema;
+
+ /**
+ * The table on which to build index.
+ */
+ @JsonProperty(value = "properties.table", access = JsonProperty.Access.WRITE_ONLY)
+ private String table;
+
+ /**
+ * Columns over which to build index.
+ */
+ @JsonProperty(value = "properties.columns", access = JsonProperty.Access.WRITE_ONLY)
+ private List columns;
+
+ /**
+ * The list of column names to be included in the index.
+ */
+ @JsonProperty(value = "properties.includedColumns", access = JsonProperty.Access.WRITE_ONLY)
+ private List includedColumns;
+
+ /**
+ * The full build index script.
+ */
+ @JsonProperty(value = "properties.indexScript", access = JsonProperty.Access.WRITE_ONLY)
+ private String indexScript;
+
+ /**
+ * The estimated impact of doing recommended index action.
+ */
+ @JsonProperty(value = "properties.estimatedImpact", access = JsonProperty.Access.WRITE_ONLY)
+ private List estimatedImpact;
+
+ /**
+ * The values reported after index action is complete.
+ */
+ @JsonProperty(value = "properties.reportedImpact", access = JsonProperty.Access.WRITE_ONLY)
+ private List reportedImpact;
+
+ /**
+ * Get the proposed index action. You can create a missing index, drop an unused index, or rebuild an existing index to improve its performance. Possible values include: 'Create', 'Drop', 'Rebuild'.
+ *
+ * @return the action value
+ */
+ public RecommendedIndexAction action() {
+ return this.action;
+ }
+
+ /**
+ * Get the current recommendation state. Possible values include: 'Active', 'Pending', 'Executing', 'Verifying', 'Pending Revert', 'Reverting', 'Reverted', 'Ignored', 'Expired', 'Blocked', 'Success'.
+ *
+ * @return the state value
+ */
+ public RecommendedIndexState state() {
+ return this.state;
+ }
+
+ /**
+ * Get the UTC datetime showing when this resource was created (ISO8601 format).
+ *
+ * @return the created value
+ */
+ public DateTime created() {
+ return this.created;
+ }
+
+ /**
+ * Get the UTC datetime of when was this resource last changed (ISO8601 format).
+ *
+ * @return the lastModified value
+ */
+ public DateTime lastModified() {
+ return this.lastModified;
+ }
+
+ /**
+ * Get the type of index (CLUSTERED, NONCLUSTERED, COLUMNSTORE, CLUSTERED COLUMNSTORE). Possible values include: 'CLUSTERED', 'NONCLUSTERED', 'COLUMNSTORE', 'CLUSTERED COLUMNSTORE'.
+ *
+ * @return the indexType value
+ */
+ public RecommendedIndexType indexType() {
+ return this.indexType;
+ }
+
+ /**
+ * Get the schema where table to build index over resides.
+ *
+ * @return the schema value
+ */
+ public String schema() {
+ return this.schema;
+ }
+
+ /**
+ * Get the table on which to build index.
+ *
+ * @return the table value
+ */
+ public String table() {
+ return this.table;
+ }
+
+ /**
+ * Get columns over which to build index.
+ *
+ * @return the columns value
+ */
+ public List columns() {
+ return this.columns;
+ }
+
+ /**
+ * Get the list of column names to be included in the index.
+ *
+ * @return the includedColumns value
+ */
+ public List includedColumns() {
+ return this.includedColumns;
+ }
+
+ /**
+ * Get the full build index script.
+ *
+ * @return the indexScript value
+ */
+ public String indexScript() {
+ return this.indexScript;
+ }
+
+ /**
+ * Get the estimated impact of doing recommended index action.
+ *
+ * @return the estimatedImpact value
+ */
+ public List estimatedImpact() {
+ return this.estimatedImpact;
+ }
+
+ /**
+ * Get the values reported after index action is complete.
+ *
+ * @return the reportedImpact value
+ */
+ public List reportedImpact() {
+ return this.reportedImpact;
+ }
+
+}
diff --git a/sql/resource-manager/v2014_04_01/src/main/java/com/microsoft/azure/management/sql/v2014_04_01/RecommendedIndexAction.java b/sql/resource-manager/v2014_04_01/src/main/java/com/microsoft/azure/management/sql/v2014_04_01/RecommendedIndexAction.java
new file mode 100644
index 0000000000000..eb379d9810132
--- /dev/null
+++ b/sql/resource-manager/v2014_04_01/src/main/java/com/microsoft/azure/management/sql/v2014_04_01/RecommendedIndexAction.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.sql.v2014_04_01;
+
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonValue;
+
+/**
+ * Defines values for RecommendedIndexAction.
+ */
+public enum RecommendedIndexAction {
+ /** Enum value Create. */
+ CREATE("Create"),
+
+ /** Enum value Drop. */
+ DROP("Drop"),
+
+ /** Enum value Rebuild. */
+ REBUILD("Rebuild");
+
+ /** The actual serialized value for a RecommendedIndexAction instance. */
+ private String value;
+
+ RecommendedIndexAction(String value) {
+ this.value = value;
+ }
+
+ /**
+ * Parses a serialized value to a RecommendedIndexAction instance.
+ *
+ * @param value the serialized value to parse.
+ * @return the parsed RecommendedIndexAction object, or null if unable to parse.
+ */
+ @JsonCreator
+ public static RecommendedIndexAction fromString(String value) {
+ RecommendedIndexAction[] items = RecommendedIndexAction.values();
+ for (RecommendedIndexAction item : items) {
+ if (item.toString().equalsIgnoreCase(value)) {
+ return item;
+ }
+ }
+ return null;
+ }
+
+ @JsonValue
+ @Override
+ public String toString() {
+ return this.value;
+ }
+}
diff --git a/sql/resource-manager/v2014_04_01/src/main/java/com/microsoft/azure/management/sql/v2014_04_01/RecommendedIndexState.java b/sql/resource-manager/v2014_04_01/src/main/java/com/microsoft/azure/management/sql/v2014_04_01/RecommendedIndexState.java
new file mode 100644
index 0000000000000..202ced229428a
--- /dev/null
+++ b/sql/resource-manager/v2014_04_01/src/main/java/com/microsoft/azure/management/sql/v2014_04_01/RecommendedIndexState.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.sql.v2014_04_01;
+
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonValue;
+
+/**
+ * Defines values for RecommendedIndexState.
+ */
+public enum RecommendedIndexState {
+ /** Enum value Active. */
+ ACTIVE("Active"),
+
+ /** Enum value Pending. */
+ PENDING("Pending"),
+
+ /** Enum value Executing. */
+ EXECUTING("Executing"),
+
+ /** Enum value Verifying. */
+ VERIFYING("Verifying"),
+
+ /** Enum value Pending Revert. */
+ PENDING_REVERT("Pending Revert"),
+
+ /** Enum value Reverting. */
+ REVERTING("Reverting"),
+
+ /** Enum value Reverted. */
+ REVERTED("Reverted"),
+
+ /** Enum value Ignored. */
+ IGNORED("Ignored"),
+
+ /** Enum value Expired. */
+ EXPIRED("Expired"),
+
+ /** Enum value Blocked. */
+ BLOCKED("Blocked"),
+
+ /** Enum value Success. */
+ SUCCESS("Success");
+
+ /** The actual serialized value for a RecommendedIndexState instance. */
+ private String value;
+
+ RecommendedIndexState(String value) {
+ this.value = value;
+ }
+
+ /**
+ * Parses a serialized value to a RecommendedIndexState instance.
+ *
+ * @param value the serialized value to parse.
+ * @return the parsed RecommendedIndexState object, or null if unable to parse.
+ */
+ @JsonCreator
+ public static RecommendedIndexState fromString(String value) {
+ RecommendedIndexState[] items = RecommendedIndexState.values();
+ for (RecommendedIndexState item : items) {
+ if (item.toString().equalsIgnoreCase(value)) {
+ return item;
+ }
+ }
+ return null;
+ }
+
+ @JsonValue
+ @Override
+ public String toString() {
+ return this.value;
+ }
+}
diff --git a/sql/resource-manager/v2014_04_01/src/main/java/com/microsoft/azure/management/sql/v2014_04_01/RecommendedIndexType.java b/sql/resource-manager/v2014_04_01/src/main/java/com/microsoft/azure/management/sql/v2014_04_01/RecommendedIndexType.java
new file mode 100644
index 0000000000000..96c26210017f0
--- /dev/null
+++ b/sql/resource-manager/v2014_04_01/src/main/java/com/microsoft/azure/management/sql/v2014_04_01/RecommendedIndexType.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.sql.v2014_04_01;
+
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonValue;
+
+/**
+ * Defines values for RecommendedIndexType.
+ */
+public enum RecommendedIndexType {
+ /** Enum value CLUSTERED. */
+ CLUSTERED("CLUSTERED"),
+
+ /** Enum value NONCLUSTERED. */
+ NONCLUSTERED("NONCLUSTERED"),
+
+ /** Enum value COLUMNSTORE. */
+ COLUMNSTORE("COLUMNSTORE"),
+
+ /** Enum value CLUSTERED COLUMNSTORE. */
+ CLUSTERED_COLUMNSTORE("CLUSTERED COLUMNSTORE");
+
+ /** The actual serialized value for a RecommendedIndexType instance. */
+ private String value;
+
+ RecommendedIndexType(String value) {
+ this.value = value;
+ }
+
+ /**
+ * Parses a serialized value to a RecommendedIndexType instance.
+ *
+ * @param value the serialized value to parse.
+ * @return the parsed RecommendedIndexType object, or null if unable to parse.
+ */
+ @JsonCreator
+ public static RecommendedIndexType fromString(String value) {
+ RecommendedIndexType[] items = RecommendedIndexType.values();
+ for (RecommendedIndexType item : items) {
+ if (item.toString().equalsIgnoreCase(value)) {
+ return item;
+ }
+ }
+ return null;
+ }
+
+ @JsonValue
+ @Override
+ public String toString() {
+ return this.value;
+ }
+}
diff --git a/sql/resource-manager/v2014_04_01/src/main/java/com/microsoft/azure/management/sql/v2014_04_01/ReplicationLink.java b/sql/resource-manager/v2014_04_01/src/main/java/com/microsoft/azure/management/sql/v2014_04_01/ReplicationLink.java
new file mode 100644
index 0000000000000..d94da2e11d759
--- /dev/null
+++ b/sql/resource-manager/v2014_04_01/src/main/java/com/microsoft/azure/management/sql/v2014_04_01/ReplicationLink.java
@@ -0,0 +1,93 @@
+/**
+ * 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.sql.v2014_04_01;
+
+import com.microsoft.azure.arm.model.HasInner;
+import com.microsoft.azure.management.sql.v2014_04_01.implementation.ReplicationLinkInner;
+import com.microsoft.azure.arm.model.Indexable;
+import com.microsoft.azure.arm.model.Refreshable;
+import com.microsoft.azure.arm.resources.models.HasManager;
+import com.microsoft.azure.management.sql.v2014_04_01.implementation.SqlManager;
+import org.joda.time.DateTime;
+
+/**
+ * Type representing ReplicationLink.
+ */
+public interface ReplicationLink extends HasInner, Indexable, Refreshable, HasManager {
+ /**
+ * @return the id value.
+ */
+ String id();
+
+ /**
+ * @return the isTerminationAllowed value.
+ */
+ Boolean isTerminationAllowed();
+
+ /**
+ * @return the location value.
+ */
+ String location();
+
+ /**
+ * @return the name value.
+ */
+ String name();
+
+ /**
+ * @return the partnerDatabase value.
+ */
+ String partnerDatabase();
+
+ /**
+ * @return the partnerLocation value.
+ */
+ String partnerLocation();
+
+ /**
+ * @return the partnerRole value.
+ */
+ ReplicationRole partnerRole();
+
+ /**
+ * @return the partnerServer value.
+ */
+ String partnerServer();
+
+ /**
+ * @return the percentComplete value.
+ */
+ Integer percentComplete();
+
+ /**
+ * @return the replicationMode value.
+ */
+ String replicationMode();
+
+ /**
+ * @return the replicationState value.
+ */
+ ReplicationState replicationState();
+
+ /**
+ * @return the role value.
+ */
+ ReplicationRole role();
+
+ /**
+ * @return the startTime value.
+ */
+ DateTime startTime();
+
+ /**
+ * @return the type value.
+ */
+ String type();
+
+}
diff --git a/sql/resource-manager/v2014_04_01/src/main/java/com/microsoft/azure/management/sql/v2014_04_01/ReplicationLinks.java b/sql/resource-manager/v2014_04_01/src/main/java/com/microsoft/azure/management/sql/v2014_04_01/ReplicationLinks.java
new file mode 100644
index 0000000000000..2e025e123a389
--- /dev/null
+++ b/sql/resource-manager/v2014_04_01/src/main/java/com/microsoft/azure/management/sql/v2014_04_01/ReplicationLinks.java
@@ -0,0 +1,79 @@
+/**
+ * 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.sql.v2014_04_01;
+
+import rx.Completable;
+import rx.Observable;
+import com.microsoft.azure.management.sql.v2014_04_01.implementation.ReplicationLinksInner;
+import com.microsoft.azure.arm.model.HasInner;
+
+/**
+ * Type representing ReplicationLinks.
+ */
+public interface ReplicationLinks extends HasInner {
+ /**
+ * Sets which replica database is primary by failing over from the current primary replica database.
+ *
+ * @param resourceGroupName The name of the resource group that contains the resource. You can obtain this value from the Azure Resource Manager API or the portal.
+ * @param serverName The name of the server.
+ * @param databaseName The name of the database that has the replication link to be failed over.
+ * @param linkId The ID of the replication link to be failed over.
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @return the observable for the request
+ */
+ Completable failoverAsync(String resourceGroupName, String serverName, String databaseName, String linkId);
+
+ /**
+ * Sets which replica database is primary by failing over from the current primary replica database. This operation might result in data loss.
+ *
+ * @param resourceGroupName The name of the resource group that contains the resource. You can obtain this value from the Azure Resource Manager API or the portal.
+ * @param serverName The name of the server.
+ * @param databaseName The name of the database that has the replication link to be failed over.
+ * @param linkId The ID of the replication link to be failed over.
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @return the observable for the request
+ */
+ Completable failoverAllowDataLossAsync(String resourceGroupName, String serverName, String databaseName, String linkId);
+
+ /**
+ * Gets a database replication link.
+ *
+ * @param resourceGroupName The name of the resource group that contains the resource. You can obtain this value from the Azure Resource Manager API or the portal.
+ * @param serverName The name of the server.
+ * @param databaseName The name of the database to get the link for.
+ * @param linkId The replication link ID to be retrieved.
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @return the observable for the request
+ */
+ Observable getAsync(String resourceGroupName, String serverName, String databaseName, String linkId);
+
+ /**
+ * Lists a database's replication links.
+ *
+ * @param resourceGroupName The name of the resource group that contains the resource. You can obtain this value from the Azure Resource Manager API or the portal.
+ * @param serverName The name of the server.
+ * @param databaseName The name of the database to retrieve links for.
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @return the observable for the request
+ */
+ Observable listByDatabaseAsync(String resourceGroupName, String serverName, String databaseName);
+
+ /**
+ * Deletes a database replication link. Cannot be done during failover.
+ *
+ * @param resourceGroupName The name of the resource group that contains the resource. You can obtain this value from the Azure Resource Manager API or the portal.
+ * @param serverName The name of the server.
+ * @param databaseName The name of the database that has the replication link to be dropped.
+ * @param linkId The ID of the replication link to be deleted.
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @return the observable for the request
+ */
+ Completable deleteAsync(String resourceGroupName, String serverName, String databaseName, String linkId);
+
+}
diff --git a/sql/resource-manager/v2014_04_01/src/main/java/com/microsoft/azure/management/sql/v2014_04_01/ReplicationRole.java b/sql/resource-manager/v2014_04_01/src/main/java/com/microsoft/azure/management/sql/v2014_04_01/ReplicationRole.java
new file mode 100644
index 0000000000000..114bffe1c23bd
--- /dev/null
+++ b/sql/resource-manager/v2014_04_01/src/main/java/com/microsoft/azure/management/sql/v2014_04_01/ReplicationRole.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.sql.v2014_04_01;
+
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonValue;
+
+/**
+ * Defines values for ReplicationRole.
+ */
+public enum ReplicationRole {
+ /** Enum value Primary. */
+ PRIMARY("Primary"),
+
+ /** Enum value Secondary. */
+ SECONDARY("Secondary"),
+
+ /** Enum value NonReadableSecondary. */
+ NON_READABLE_SECONDARY("NonReadableSecondary"),
+
+ /** Enum value Source. */
+ SOURCE("Source"),
+
+ /** Enum value Copy. */
+ COPY("Copy");
+
+ /** The actual serialized value for a ReplicationRole instance. */
+ private String value;
+
+ ReplicationRole(String value) {
+ this.value = value;
+ }
+
+ /**
+ * Parses a serialized value to a ReplicationRole instance.
+ *
+ * @param value the serialized value to parse.
+ * @return the parsed ReplicationRole object, or null if unable to parse.
+ */
+ @JsonCreator
+ public static ReplicationRole fromString(String value) {
+ ReplicationRole[] items = ReplicationRole.values();
+ for (ReplicationRole item : items) {
+ if (item.toString().equalsIgnoreCase(value)) {
+ return item;
+ }
+ }
+ return null;
+ }
+
+ @JsonValue
+ @Override
+ public String toString() {
+ return this.value;
+ }
+}
diff --git a/sql/resource-manager/v2014_04_01/src/main/java/com/microsoft/azure/management/sql/v2014_04_01/ReplicationState.java b/sql/resource-manager/v2014_04_01/src/main/java/com/microsoft/azure/management/sql/v2014_04_01/ReplicationState.java
new file mode 100644
index 0000000000000..0a31a15d4d9d6
--- /dev/null
+++ b/sql/resource-manager/v2014_04_01/src/main/java/com/microsoft/azure/management/sql/v2014_04_01/ReplicationState.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.sql.v2014_04_01;
+
+import java.util.Collection;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.microsoft.rest.ExpandableStringEnum;
+
+/**
+ * Defines values for ReplicationState.
+ */
+public final class ReplicationState extends ExpandableStringEnum {
+ /** Static value PENDING for ReplicationState. */
+ public static final ReplicationState PENDING = fromString("PENDING");
+
+ /** Static value SEEDING for ReplicationState. */
+ public static final ReplicationState SEEDING = fromString("SEEDING");
+
+ /** Static value CATCH_UP for ReplicationState. */
+ public static final ReplicationState CATCH_UP = fromString("CATCH_UP");
+
+ /** Static value SUSPENDED for ReplicationState. */
+ public static final ReplicationState SUSPENDED = fromString("SUSPENDED");
+
+ /**
+ * Creates or finds a ReplicationState from its string representation.
+ * @param name a name to look for
+ * @return the corresponding ReplicationState
+ */
+ @JsonCreator
+ public static ReplicationState fromString(String name) {
+ return fromString(name, ReplicationState.class);
+ }
+
+ /**
+ * @return known ReplicationState values
+ */
+ public static Collection values() {
+ return values(ReplicationState.class);
+ }
+}
diff --git a/sql/resource-manager/v2014_04_01/src/main/java/com/microsoft/azure/management/sql/v2014_04_01/SampleName.java b/sql/resource-manager/v2014_04_01/src/main/java/com/microsoft/azure/management/sql/v2014_04_01/SampleName.java
new file mode 100644
index 0000000000000..0233430fdec2d
--- /dev/null
+++ b/sql/resource-manager/v2014_04_01/src/main/java/com/microsoft/azure/management/sql/v2014_04_01/SampleName.java
@@ -0,0 +1,38 @@
+/**
+ * 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.sql.v2014_04_01;
+
+import java.util.Collection;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.microsoft.rest.ExpandableStringEnum;
+
+/**
+ * Defines values for SampleName.
+ */
+public final class SampleName extends ExpandableStringEnum {
+ /** Static value AdventureWorksLT for SampleName. */
+ public static final SampleName ADVENTURE_WORKS_LT = fromString("AdventureWorksLT");
+
+ /**
+ * Creates or finds a SampleName from its string representation.
+ * @param name a name to look for
+ * @return the corresponding SampleName
+ */
+ @JsonCreator
+ public static SampleName fromString(String name) {
+ return fromString(name, SampleName.class);
+ }
+
+ /**
+ * @return known SampleName values
+ */
+ public static Collection values() {
+ return values(SampleName.class);
+ }
+}
diff --git a/sql/resource-manager/v2014_04_01/src/main/java/com/microsoft/azure/management/sql/v2014_04_01/SecurityAlertPolicyEmailAccountAdmins.java b/sql/resource-manager/v2014_04_01/src/main/java/com/microsoft/azure/management/sql/v2014_04_01/SecurityAlertPolicyEmailAccountAdmins.java
new file mode 100644
index 0000000000000..2ae0a9a487f18
--- /dev/null
+++ b/sql/resource-manager/v2014_04_01/src/main/java/com/microsoft/azure/management/sql/v2014_04_01/SecurityAlertPolicyEmailAccountAdmins.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.sql.v2014_04_01;
+
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonValue;
+
+/**
+ * Defines values for SecurityAlertPolicyEmailAccountAdmins.
+ */
+public enum SecurityAlertPolicyEmailAccountAdmins {
+ /** Enum value Enabled. */
+ ENABLED("Enabled"),
+
+ /** Enum value Disabled. */
+ DISABLED("Disabled");
+
+ /** The actual serialized value for a SecurityAlertPolicyEmailAccountAdmins instance. */
+ private String value;
+
+ SecurityAlertPolicyEmailAccountAdmins(String value) {
+ this.value = value;
+ }
+
+ /**
+ * Parses a serialized value to a SecurityAlertPolicyEmailAccountAdmins instance.
+ *
+ * @param value the serialized value to parse.
+ * @return the parsed SecurityAlertPolicyEmailAccountAdmins object, or null if unable to parse.
+ */
+ @JsonCreator
+ public static SecurityAlertPolicyEmailAccountAdmins fromString(String value) {
+ SecurityAlertPolicyEmailAccountAdmins[] items = SecurityAlertPolicyEmailAccountAdmins.values();
+ for (SecurityAlertPolicyEmailAccountAdmins item : items) {
+ if (item.toString().equalsIgnoreCase(value)) {
+ return item;
+ }
+ }
+ return null;
+ }
+
+ @JsonValue
+ @Override
+ public String toString() {
+ return this.value;
+ }
+}
diff --git a/sql/resource-manager/v2014_04_01/src/main/java/com/microsoft/azure/management/sql/v2014_04_01/SecurityAlertPolicyState.java b/sql/resource-manager/v2014_04_01/src/main/java/com/microsoft/azure/management/sql/v2014_04_01/SecurityAlertPolicyState.java
new file mode 100644
index 0000000000000..60842f6333363
--- /dev/null
+++ b/sql/resource-manager/v2014_04_01/src/main/java/com/microsoft/azure/management/sql/v2014_04_01/SecurityAlertPolicyState.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.sql.v2014_04_01;
+
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonValue;
+
+/**
+ * Defines values for SecurityAlertPolicyState.
+ */
+public enum SecurityAlertPolicyState {
+ /** Enum value New. */
+ NEW("New"),
+
+ /** Enum value Enabled. */
+ ENABLED("Enabled"),
+
+ /** Enum value Disabled. */
+ DISABLED("Disabled");
+
+ /** The actual serialized value for a SecurityAlertPolicyState instance. */
+ private String value;
+
+ SecurityAlertPolicyState(String value) {
+ this.value = value;
+ }
+
+ /**
+ * Parses a serialized value to a SecurityAlertPolicyState instance.
+ *
+ * @param value the serialized value to parse.
+ * @return the parsed SecurityAlertPolicyState object, or null if unable to parse.
+ */
+ @JsonCreator
+ public static SecurityAlertPolicyState fromString(String value) {
+ SecurityAlertPolicyState[] items = SecurityAlertPolicyState.values();
+ for (SecurityAlertPolicyState item : items) {
+ if (item.toString().equalsIgnoreCase(value)) {
+ return item;
+ }
+ }
+ return null;
+ }
+
+ @JsonValue
+ @Override
+ public String toString() {
+ return this.value;
+ }
+}
diff --git a/sql/resource-manager/v2014_04_01/src/main/java/com/microsoft/azure/management/sql/v2014_04_01/SecurityAlertPolicyUseServerDefault.java b/sql/resource-manager/v2014_04_01/src/main/java/com/microsoft/azure/management/sql/v2014_04_01/SecurityAlertPolicyUseServerDefault.java
new file mode 100644
index 0000000000000..7f45a8b34902e
--- /dev/null
+++ b/sql/resource-manager/v2014_04_01/src/main/java/com/microsoft/azure/management/sql/v2014_04_01/SecurityAlertPolicyUseServerDefault.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.sql.v2014_04_01;
+
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonValue;
+
+/**
+ * Defines values for SecurityAlertPolicyUseServerDefault.
+ */
+public enum SecurityAlertPolicyUseServerDefault {
+ /** Enum value Enabled. */
+ ENABLED("Enabled"),
+
+ /** Enum value Disabled. */
+ DISABLED("Disabled");
+
+ /** The actual serialized value for a SecurityAlertPolicyUseServerDefault instance. */
+ private String value;
+
+ SecurityAlertPolicyUseServerDefault(String value) {
+ this.value = value;
+ }
+
+ /**
+ * Parses a serialized value to a SecurityAlertPolicyUseServerDefault instance.
+ *
+ * @param value the serialized value to parse.
+ * @return the parsed SecurityAlertPolicyUseServerDefault object, or null if unable to parse.
+ */
+ @JsonCreator
+ public static SecurityAlertPolicyUseServerDefault fromString(String value) {
+ SecurityAlertPolicyUseServerDefault[] items = SecurityAlertPolicyUseServerDefault.values();
+ for (SecurityAlertPolicyUseServerDefault item : items) {
+ if (item.toString().equalsIgnoreCase(value)) {
+ return item;
+ }
+ }
+ return null;
+ }
+
+ @JsonValue
+ @Override
+ public String toString() {
+ return this.value;
+ }
+}
diff --git a/sql/resource-manager/v2014_04_01/src/main/java/com/microsoft/azure/management/sql/v2014_04_01/Servers.java b/sql/resource-manager/v2014_04_01/src/main/java/com/microsoft/azure/management/sql/v2014_04_01/Servers.java
new file mode 100644
index 0000000000000..e2d14f49ecc37
--- /dev/null
+++ b/sql/resource-manager/v2014_04_01/src/main/java/com/microsoft/azure/management/sql/v2014_04_01/Servers.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.sql.v2014_04_01;
+
+import rx.Observable;
+import com.microsoft.azure.management.sql.v2014_04_01.implementation.ServersInner;
+import com.microsoft.azure.arm.model.HasInner;
+
+/**
+ * Type representing Servers.
+ */
+public interface Servers extends HasInner {
+ /**
+ * Determines whether a resource can be created with the specified name.
+ *
+ * @param name The name whose availability is to be checked.
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @return the observable for the request
+ */
+ Observable checkNameAvailabilityAsync(String name);
+
+}
diff --git a/sql/resource-manager/v2014_04_01/src/main/java/com/microsoft/azure/management/sql/v2014_04_01/ServiceObjectiveName.java b/sql/resource-manager/v2014_04_01/src/main/java/com/microsoft/azure/management/sql/v2014_04_01/ServiceObjectiveName.java
new file mode 100644
index 0000000000000..5027a3f7a8bfa
--- /dev/null
+++ b/sql/resource-manager/v2014_04_01/src/main/java/com/microsoft/azure/management/sql/v2014_04_01/ServiceObjectiveName.java
@@ -0,0 +1,230 @@
+/**
+ * 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.sql.v2014_04_01;
+
+import java.util.Collection;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.microsoft.rest.ExpandableStringEnum;
+
+/**
+ * Defines values for ServiceObjectiveName.
+ */
+public final class ServiceObjectiveName extends ExpandableStringEnum {
+ /** Static value System for ServiceObjectiveName. */
+ public static final ServiceObjectiveName SYSTEM = fromString("System");
+
+ /** Static value System0 for ServiceObjectiveName. */
+ public static final ServiceObjectiveName SYSTEM0 = fromString("System0");
+
+ /** Static value System1 for ServiceObjectiveName. */
+ public static final ServiceObjectiveName SYSTEM1 = fromString("System1");
+
+ /** Static value System2 for ServiceObjectiveName. */
+ public static final ServiceObjectiveName SYSTEM2 = fromString("System2");
+
+ /** Static value System3 for ServiceObjectiveName. */
+ public static final ServiceObjectiveName SYSTEM3 = fromString("System3");
+
+ /** Static value System4 for ServiceObjectiveName. */
+ public static final ServiceObjectiveName SYSTEM4 = fromString("System4");
+
+ /** Static value System2L for ServiceObjectiveName. */
+ public static final ServiceObjectiveName SYSTEM2L = fromString("System2L");
+
+ /** Static value System3L for ServiceObjectiveName. */
+ public static final ServiceObjectiveName SYSTEM3L = fromString("System3L");
+
+ /** Static value System4L for ServiceObjectiveName. */
+ public static final ServiceObjectiveName SYSTEM4L = fromString("System4L");
+
+ /** Static value Free for ServiceObjectiveName. */
+ public static final ServiceObjectiveName FREE = fromString("Free");
+
+ /** Static value Basic for ServiceObjectiveName. */
+ public static final ServiceObjectiveName BASIC = fromString("Basic");
+
+ /** Static value S0 for ServiceObjectiveName. */
+ public static final ServiceObjectiveName S0 = fromString("S0");
+
+ /** Static value S1 for ServiceObjectiveName. */
+ public static final ServiceObjectiveName S1 = fromString("S1");
+
+ /** Static value S2 for ServiceObjectiveName. */
+ public static final ServiceObjectiveName S2 = fromString("S2");
+
+ /** Static value S3 for ServiceObjectiveName. */
+ public static final ServiceObjectiveName S3 = fromString("S3");
+
+ /** Static value S4 for ServiceObjectiveName. */
+ public static final ServiceObjectiveName S4 = fromString("S4");
+
+ /** Static value S6 for ServiceObjectiveName. */
+ public static final ServiceObjectiveName S6 = fromString("S6");
+
+ /** Static value S7 for ServiceObjectiveName. */
+ public static final ServiceObjectiveName S7 = fromString("S7");
+
+ /** Static value S9 for ServiceObjectiveName. */
+ public static final ServiceObjectiveName S9 = fromString("S9");
+
+ /** Static value S12 for ServiceObjectiveName. */
+ public static final ServiceObjectiveName S12 = fromString("S12");
+
+ /** Static value P1 for ServiceObjectiveName. */
+ public static final ServiceObjectiveName P1 = fromString("P1");
+
+ /** Static value P2 for ServiceObjectiveName. */
+ public static final ServiceObjectiveName P2 = fromString("P2");
+
+ /** Static value P3 for ServiceObjectiveName. */
+ public static final ServiceObjectiveName P3 = fromString("P3");
+
+ /** Static value P4 for ServiceObjectiveName. */
+ public static final ServiceObjectiveName P4 = fromString("P4");
+
+ /** Static value P6 for ServiceObjectiveName. */
+ public static final ServiceObjectiveName P6 = fromString("P6");
+
+ /** Static value P11 for ServiceObjectiveName. */
+ public static final ServiceObjectiveName P11 = fromString("P11");
+
+ /** Static value P15 for ServiceObjectiveName. */
+ public static final ServiceObjectiveName P15 = fromString("P15");
+
+ /** Static value PRS1 for ServiceObjectiveName. */
+ public static final ServiceObjectiveName PRS1 = fromString("PRS1");
+
+ /** Static value PRS2 for ServiceObjectiveName. */
+ public static final ServiceObjectiveName PRS2 = fromString("PRS2");
+
+ /** Static value PRS4 for ServiceObjectiveName. */
+ public static final ServiceObjectiveName PRS4 = fromString("PRS4");
+
+ /** Static value PRS6 for ServiceObjectiveName. */
+ public static final ServiceObjectiveName PRS6 = fromString("PRS6");
+
+ /** Static value DW100 for ServiceObjectiveName. */
+ public static final ServiceObjectiveName DW100 = fromString("DW100");
+
+ /** Static value DW200 for ServiceObjectiveName. */
+ public static final ServiceObjectiveName DW200 = fromString("DW200");
+
+ /** Static value DW300 for ServiceObjectiveName. */
+ public static final ServiceObjectiveName DW300 = fromString("DW300");
+
+ /** Static value DW400 for ServiceObjectiveName. */
+ public static final ServiceObjectiveName DW400 = fromString("DW400");
+
+ /** Static value DW500 for ServiceObjectiveName. */
+ public static final ServiceObjectiveName DW500 = fromString("DW500");
+
+ /** Static value DW600 for ServiceObjectiveName. */
+ public static final ServiceObjectiveName DW600 = fromString("DW600");
+
+ /** Static value DW1000 for ServiceObjectiveName. */
+ public static final ServiceObjectiveName DW1000 = fromString("DW1000");
+
+ /** Static value DW1200 for ServiceObjectiveName. */
+ public static final ServiceObjectiveName DW1200 = fromString("DW1200");
+
+ /** Static value DW1000c for ServiceObjectiveName. */
+ public static final ServiceObjectiveName DW1000C = fromString("DW1000c");
+
+ /** Static value DW1500 for ServiceObjectiveName. */
+ public static final ServiceObjectiveName DW1500 = fromString("DW1500");
+
+ /** Static value DW1500c for ServiceObjectiveName. */
+ public static final ServiceObjectiveName DW1500C = fromString("DW1500c");
+
+ /** Static value DW2000 for ServiceObjectiveName. */
+ public static final ServiceObjectiveName DW2000 = fromString("DW2000");
+
+ /** Static value DW2000c for ServiceObjectiveName. */
+ public static final ServiceObjectiveName DW2000C = fromString("DW2000c");
+
+ /** Static value DW3000 for ServiceObjectiveName. */
+ public static final ServiceObjectiveName DW3000 = fromString("DW3000");
+
+ /** Static value DW2500c for ServiceObjectiveName. */
+ public static final ServiceObjectiveName DW2500C = fromString("DW2500c");
+
+ /** Static value DW3000c for ServiceObjectiveName. */
+ public static final ServiceObjectiveName DW3000C = fromString("DW3000c");
+
+ /** Static value DW6000 for ServiceObjectiveName. */
+ public static final ServiceObjectiveName DW6000 = fromString("DW6000");
+
+ /** Static value DW5000c for ServiceObjectiveName. */
+ public static final ServiceObjectiveName DW5000C = fromString("DW5000c");
+
+ /** Static value DW6000c for ServiceObjectiveName. */
+ public static final ServiceObjectiveName DW6000C = fromString("DW6000c");
+
+ /** Static value DW7500c for ServiceObjectiveName. */
+ public static final ServiceObjectiveName DW7500C = fromString("DW7500c");
+
+ /** Static value DW10000c for ServiceObjectiveName. */
+ public static final ServiceObjectiveName DW10000C = fromString("DW10000c");
+
+ /** Static value DW15000c for ServiceObjectiveName. */
+ public static final ServiceObjectiveName DW15000C = fromString("DW15000c");
+
+ /** Static value DW30000c for ServiceObjectiveName. */
+ public static final ServiceObjectiveName DW30000C = fromString("DW30000c");
+
+ /** Static value DS100 for ServiceObjectiveName. */
+ public static final ServiceObjectiveName DS100 = fromString("DS100");
+
+ /** Static value DS200 for ServiceObjectiveName. */
+ public static final ServiceObjectiveName DS200 = fromString("DS200");
+
+ /** Static value DS300 for ServiceObjectiveName. */
+ public static final ServiceObjectiveName DS300 = fromString("DS300");
+
+ /** Static value DS400 for ServiceObjectiveName. */
+ public static final ServiceObjectiveName DS400 = fromString("DS400");
+
+ /** Static value DS500 for ServiceObjectiveName. */
+ public static final ServiceObjectiveName DS500 = fromString("DS500");
+
+ /** Static value DS600 for ServiceObjectiveName. */
+ public static final ServiceObjectiveName DS600 = fromString("DS600");
+
+ /** Static value DS1000 for ServiceObjectiveName. */
+ public static final ServiceObjectiveName DS1000 = fromString("DS1000");
+
+ /** Static value DS1200 for ServiceObjectiveName. */
+ public static final ServiceObjectiveName DS1200 = fromString("DS1200");
+
+ /** Static value DS1500 for ServiceObjectiveName. */
+ public static final ServiceObjectiveName DS1500 = fromString("DS1500");
+
+ /** Static value DS2000 for ServiceObjectiveName. */
+ public static final ServiceObjectiveName DS2000 = fromString("DS2000");
+
+ /** Static value ElasticPool for ServiceObjectiveName. */
+ public static final ServiceObjectiveName ELASTIC_POOL = fromString("ElasticPool");
+
+ /**
+ * Creates or finds a ServiceObjectiveName from its string representation.
+ * @param name a name to look for
+ * @return the corresponding ServiceObjectiveName
+ */
+ @JsonCreator
+ public static ServiceObjectiveName fromString(String name) {
+ return fromString(name, ServiceObjectiveName.class);
+ }
+
+ /**
+ * @return known ServiceObjectiveName values
+ */
+ public static Collection values() {
+ return values(ServiceObjectiveName.class);
+ }
+}
diff --git a/sql/resource-manager/v2014_04_01/src/main/java/com/microsoft/azure/management/sql/v2014_04_01/ServiceTierAdvisor.java b/sql/resource-manager/v2014_04_01/src/main/java/com/microsoft/azure/management/sql/v2014_04_01/ServiceTierAdvisor.java
new file mode 100644
index 0000000000000..1a212dfc36351
--- /dev/null
+++ b/sql/resource-manager/v2014_04_01/src/main/java/com/microsoft/azure/management/sql/v2014_04_01/ServiceTierAdvisor.java
@@ -0,0 +1,135 @@
+/**
+ * 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.sql.v2014_04_01;
+
+import com.microsoft.azure.arm.model.HasInner;
+import com.microsoft.azure.management.sql.v2014_04_01.implementation.ServiceTierAdvisorInner;
+import com.microsoft.azure.arm.model.Indexable;
+import com.microsoft.azure.arm.model.Refreshable;
+import com.microsoft.azure.arm.resources.models.HasManager;
+import com.microsoft.azure.management.sql.v2014_04_01.implementation.SqlManager;
+import java.util.UUID;
+import org.joda.time.DateTime;
+import java.util.List;
+
+/**
+ * Type representing ServiceTierAdvisor.
+ */
+public interface ServiceTierAdvisor extends HasInner, Indexable, Refreshable, HasManager {
+ /**
+ * @return the activeTimeRatio value.
+ */
+ Double activeTimeRatio();
+
+ /**
+ * @return the avgDtu value.
+ */
+ Double avgDtu();
+
+ /**
+ * @return the confidence value.
+ */
+ double confidence();
+
+ /**
+ * @return the currentServiceLevelObjective value.
+ */
+ String currentServiceLevelObjective();
+
+ /**
+ * @return the currentServiceLevelObjectiveId value.
+ */
+ UUID currentServiceLevelObjectiveId();
+
+ /**
+ * @return the databaseSizeBasedRecommendationServiceLevelObjective value.
+ */
+ String databaseSizeBasedRecommendationServiceLevelObjective();
+
+ /**
+ * @return the databaseSizeBasedRecommendationServiceLevelObjectiveId value.
+ */
+ UUID databaseSizeBasedRecommendationServiceLevelObjectiveId();
+
+ /**
+ * @return the disasterPlanBasedRecommendationServiceLevelObjective value.
+ */
+ String disasterPlanBasedRecommendationServiceLevelObjective();
+
+ /**
+ * @return the disasterPlanBasedRecommendationServiceLevelObjectiveId value.
+ */
+ UUID disasterPlanBasedRecommendationServiceLevelObjectiveId();
+
+ /**
+ * @return the id value.
+ */
+ String id();
+
+ /**
+ * @return the maxDtu value.
+ */
+ Double maxDtu();
+
+ /**
+ * @return the maxSizeInGB value.
+ */
+ Double maxSizeInGB();
+
+ /**
+ * @return the minDtu value.
+ */
+ Double minDtu();
+
+ /**
+ * @return the name value.
+ */
+ String name();
+
+ /**
+ * @return the observationPeriodEnd value.
+ */
+ DateTime observationPeriodEnd();
+
+ /**
+ * @return the observationPeriodStart value.
+ */
+ DateTime observationPeriodStart();
+
+ /**
+ * @return the overallRecommendationServiceLevelObjective value.
+ */
+ String overallRecommendationServiceLevelObjective();
+
+ /**
+ * @return the overallRecommendationServiceLevelObjectiveId value.
+ */
+ UUID overallRecommendationServiceLevelObjectiveId();
+
+ /**
+ * @return the serviceLevelObjectiveUsageMetrics value.
+ */
+ List serviceLevelObjectiveUsageMetrics();
+
+ /**
+ * @return the type value.
+ */
+ String type();
+
+ /**
+ * @return the usageBasedRecommendationServiceLevelObjective value.
+ */
+ String usageBasedRecommendationServiceLevelObjective();
+
+ /**
+ * @return the usageBasedRecommendationServiceLevelObjectiveId value.
+ */
+ UUID usageBasedRecommendationServiceLevelObjectiveId();
+
+}
diff --git a/sql/resource-manager/v2014_04_01/src/main/java/com/microsoft/azure/management/sql/v2014_04_01/ServiceTierAdvisors.java b/sql/resource-manager/v2014_04_01/src/main/java/com/microsoft/azure/management/sql/v2014_04_01/ServiceTierAdvisors.java
new file mode 100644
index 0000000000000..e3de82242f905
--- /dev/null
+++ b/sql/resource-manager/v2014_04_01/src/main/java/com/microsoft/azure/management/sql/v2014_04_01/ServiceTierAdvisors.java
@@ -0,0 +1,42 @@
+/**
+ * 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.sql.v2014_04_01;
+
+import rx.Observable;
+import com.microsoft.azure.management.sql.v2014_04_01.implementation.ServiceTierAdvisorsInner;
+import com.microsoft.azure.arm.model.HasInner;
+
+/**
+ * Type representing ServiceTierAdvisors.
+ */
+public interface ServiceTierAdvisors extends HasInner {
+ /**
+ * Gets a service tier advisor.
+ *
+ * @param resourceGroupName The name of the resource group that contains the resource. You can obtain this value from the Azure Resource Manager API or the portal.
+ * @param serverName The name of the server.
+ * @param databaseName The name of database.
+ * @param serviceTierAdvisorName The name of service tier advisor.
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @return the observable for the request
+ */
+ Observable getAsync(String resourceGroupName, String serverName, String databaseName, String serviceTierAdvisorName);
+
+ /**
+ * Returns service tier advisors for specified database.
+ *
+ * @param resourceGroupName The name of the resource group that contains the resource. You can obtain this value from the Azure Resource Manager API or the portal.
+ * @param serverName The name of the server.
+ * @param databaseName The name of database.
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @return the observable for the request
+ */
+ Observable listByDatabaseAsync(String resourceGroupName, String serverName, String databaseName);
+
+}
diff --git a/sql/resource-manager/v2014_04_01/src/main/java/com/microsoft/azure/management/sql/v2014_04_01/SloUsageMetric.java b/sql/resource-manager/v2014_04_01/src/main/java/com/microsoft/azure/management/sql/v2014_04_01/SloUsageMetric.java
new file mode 100644
index 0000000000000..148d3ddd64c72
--- /dev/null
+++ b/sql/resource-manager/v2014_04_01/src/main/java/com/microsoft/azure/management/sql/v2014_04_01/SloUsageMetric.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.sql.v2014_04_01;
+
+import java.util.UUID;
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/**
+ * A Slo Usage Metric.
+ */
+public class SloUsageMetric {
+ /**
+ * The serviceLevelObjective for SLO usage metric. Possible values include:
+ * 'System', 'System0', 'System1', 'System2', 'System3', 'System4',
+ * 'System2L', 'System3L', 'System4L', 'Free', 'Basic', 'S0', 'S1', 'S2',
+ * 'S3', 'S4', 'S6', 'S7', 'S9', 'S12', 'P1', 'P2', 'P3', 'P4', 'P6',
+ * 'P11', 'P15', 'PRS1', 'PRS2', 'PRS4', 'PRS6', 'DW100', 'DW200', 'DW300',
+ * 'DW400', 'DW500', 'DW600', 'DW1000', 'DW1200', 'DW1000c', 'DW1500',
+ * 'DW1500c', 'DW2000', 'DW2000c', 'DW3000', 'DW2500c', 'DW3000c',
+ * 'DW6000', 'DW5000c', 'DW6000c', 'DW7500c', 'DW10000c', 'DW15000c',
+ * 'DW30000c', 'DS100', 'DS200', 'DS300', 'DS400', 'DS500', 'DS600',
+ * 'DS1000', 'DS1200', 'DS1500', 'DS2000', 'ElasticPool'.
+ */
+ @JsonProperty(value = "serviceLevelObjective", access = JsonProperty.Access.WRITE_ONLY)
+ private ServiceObjectiveName serviceLevelObjective;
+
+ /**
+ * The serviceLevelObjectiveId for SLO usage metric.
+ */
+ @JsonProperty(value = "serviceLevelObjectiveId", access = JsonProperty.Access.WRITE_ONLY)
+ private UUID serviceLevelObjectiveId;
+
+ /**
+ * Gets or sets inRangeTimeRatio for SLO usage metric.
+ */
+ @JsonProperty(value = "inRangeTimeRatio", access = JsonProperty.Access.WRITE_ONLY)
+ private double inRangeTimeRatio;
+
+ /**
+ * Get the serviceLevelObjective for SLO usage metric. Possible values include: 'System', 'System0', 'System1', 'System2', 'System3', 'System4', 'System2L', 'System3L', 'System4L', 'Free', 'Basic', 'S0', 'S1', 'S2', 'S3', 'S4', 'S6', 'S7', 'S9', 'S12', 'P1', 'P2', 'P3', 'P4', 'P6', 'P11', 'P15', 'PRS1', 'PRS2', 'PRS4', 'PRS6', 'DW100', 'DW200', 'DW300', 'DW400', 'DW500', 'DW600', 'DW1000', 'DW1200', 'DW1000c', 'DW1500', 'DW1500c', 'DW2000', 'DW2000c', 'DW3000', 'DW2500c', 'DW3000c', 'DW6000', 'DW5000c', 'DW6000c', 'DW7500c', 'DW10000c', 'DW15000c', 'DW30000c', 'DS100', 'DS200', 'DS300', 'DS400', 'DS500', 'DS600', 'DS1000', 'DS1200', 'DS1500', 'DS2000', 'ElasticPool'.
+ *
+ * @return the serviceLevelObjective value
+ */
+ public ServiceObjectiveName serviceLevelObjective() {
+ return this.serviceLevelObjective;
+ }
+
+ /**
+ * Get the serviceLevelObjectiveId for SLO usage metric.
+ *
+ * @return the serviceLevelObjectiveId value
+ */
+ public UUID serviceLevelObjectiveId() {
+ return this.serviceLevelObjectiveId;
+ }
+
+ /**
+ * Get gets or sets inRangeTimeRatio for SLO usage metric.
+ *
+ * @return the inRangeTimeRatio value
+ */
+ public double inRangeTimeRatio() {
+ return this.inRangeTimeRatio;
+ }
+
+}
diff --git a/sql/resource-manager/v2014_04_01/src/main/java/com/microsoft/azure/management/sql/v2014_04_01/StorageKeyType.java b/sql/resource-manager/v2014_04_01/src/main/java/com/microsoft/azure/management/sql/v2014_04_01/StorageKeyType.java
new file mode 100644
index 0000000000000..c561f5ac0db5a
--- /dev/null
+++ b/sql/resource-manager/v2014_04_01/src/main/java/com/microsoft/azure/management/sql/v2014_04_01/StorageKeyType.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.sql.v2014_04_01;
+
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonValue;
+
+/**
+ * Defines values for StorageKeyType.
+ */
+public enum StorageKeyType {
+ /** Enum value StorageAccessKey. */
+ STORAGE_ACCESS_KEY("StorageAccessKey"),
+
+ /** Enum value SharedAccessKey. */
+ SHARED_ACCESS_KEY("SharedAccessKey");
+
+ /** The actual serialized value for a StorageKeyType instance. */
+ private String value;
+
+ StorageKeyType(String value) {
+ this.value = value;
+ }
+
+ /**
+ * Parses a serialized value to a StorageKeyType instance.
+ *
+ * @param value the serialized value to parse.
+ * @return the parsed StorageKeyType object, or null if unable to parse.
+ */
+ @JsonCreator
+ public static StorageKeyType fromString(String value) {
+ StorageKeyType[] items = StorageKeyType.values();
+ for (StorageKeyType item : items) {
+ if (item.toString().equalsIgnoreCase(value)) {
+ return item;
+ }
+ }
+ return null;
+ }
+
+ @JsonValue
+ @Override
+ public String toString() {
+ return this.value;
+ }
+}
diff --git a/sql/resource-manager/v2014_04_01/src/main/java/com/microsoft/azure/management/sql/v2014_04_01/TransparentDataEncryption.java b/sql/resource-manager/v2014_04_01/src/main/java/com/microsoft/azure/management/sql/v2014_04_01/TransparentDataEncryption.java
new file mode 100644
index 0000000000000..bd3f35a4e42fd
--- /dev/null
+++ b/sql/resource-manager/v2014_04_01/src/main/java/com/microsoft/azure/management/sql/v2014_04_01/TransparentDataEncryption.java
@@ -0,0 +1,45 @@
+/**
+ * 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.sql.v2014_04_01;
+
+import com.microsoft.azure.arm.model.HasInner;
+import com.microsoft.azure.arm.resources.models.HasManager;
+import com.microsoft.azure.management.sql.v2014_04_01.implementation.SqlManager;
+import com.microsoft.azure.management.sql.v2014_04_01.implementation.TransparentDataEncryptionInner;
+
+/**
+ * Type representing TransparentDataEncryption.
+ */
+public interface TransparentDataEncryption extends HasInner, HasManager {
+ /**
+ * @return the id value.
+ */
+ String id();
+
+ /**
+ * @return the location value.
+ */
+ String location();
+
+ /**
+ * @return the name value.
+ */
+ String name();
+
+ /**
+ * @return the status value.
+ */
+ TransparentDataEncryptionStatus status();
+
+ /**
+ * @return the type value.
+ */
+ String type();
+
+}
diff --git a/sql/resource-manager/v2014_04_01/src/main/java/com/microsoft/azure/management/sql/v2014_04_01/TransparentDataEncryptionActivities.java b/sql/resource-manager/v2014_04_01/src/main/java/com/microsoft/azure/management/sql/v2014_04_01/TransparentDataEncryptionActivities.java
new file mode 100644
index 0000000000000..27cd841eb2c0a
--- /dev/null
+++ b/sql/resource-manager/v2014_04_01/src/main/java/com/microsoft/azure/management/sql/v2014_04_01/TransparentDataEncryptionActivities.java
@@ -0,0 +1,30 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.sql.v2014_04_01;
+
+import rx.Observable;
+import com.microsoft.azure.management.sql.v2014_04_01.implementation.TransparentDataEncryptionActivitiesInner;
+import com.microsoft.azure.arm.model.HasInner;
+
+/**
+ * Type representing TransparentDataEncryptionActivities.
+ */
+public interface TransparentDataEncryptionActivities extends HasInner {
+ /**
+ * Returns a database's transparent data encryption operation result.
+ *
+ * @param resourceGroupName The name of the resource group that contains the resource. You can obtain this value from the Azure Resource Manager API or the portal.
+ * @param serverName The name of the server.
+ * @param databaseName The name of the database for which the transparent data encryption applies.
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @return the observable for the request
+ */
+ Observable listByConfigurationAsync(String resourceGroupName, String serverName, String databaseName);
+
+}
diff --git a/sql/resource-manager/v2014_04_01/src/main/java/com/microsoft/azure/management/sql/v2014_04_01/TransparentDataEncryptionActivity.java b/sql/resource-manager/v2014_04_01/src/main/java/com/microsoft/azure/management/sql/v2014_04_01/TransparentDataEncryptionActivity.java
new file mode 100644
index 0000000000000..410a43f8549a7
--- /dev/null
+++ b/sql/resource-manager/v2014_04_01/src/main/java/com/microsoft/azure/management/sql/v2014_04_01/TransparentDataEncryptionActivity.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.sql.v2014_04_01;
+
+import com.microsoft.azure.arm.model.HasInner;
+import com.microsoft.azure.arm.resources.models.HasManager;
+import com.microsoft.azure.management.sql.v2014_04_01.implementation.SqlManager;
+import com.microsoft.azure.management.sql.v2014_04_01.implementation.TransparentDataEncryptionActivityInner;
+
+/**
+ * Type representing TransparentDataEncryptionActivity.
+ */
+public interface TransparentDataEncryptionActivity extends HasInner, HasManager {
+ /**
+ * @return the id value.
+ */
+ String id();
+
+ /**
+ * @return the location value.
+ */
+ String location();
+
+ /**
+ * @return the name value.
+ */
+ String name();
+
+ /**
+ * @return the percentComplete value.
+ */
+ Double percentComplete();
+
+ /**
+ * @return the status value.
+ */
+ TransparentDataEncryptionActivityStatus status();
+
+ /**
+ * @return the type value.
+ */
+ String type();
+
+}
diff --git a/sql/resource-manager/v2014_04_01/src/main/java/com/microsoft/azure/management/sql/v2014_04_01/TransparentDataEncryptionActivityStatus.java b/sql/resource-manager/v2014_04_01/src/main/java/com/microsoft/azure/management/sql/v2014_04_01/TransparentDataEncryptionActivityStatus.java
new file mode 100644
index 0000000000000..425685654c759
--- /dev/null
+++ b/sql/resource-manager/v2014_04_01/src/main/java/com/microsoft/azure/management/sql/v2014_04_01/TransparentDataEncryptionActivityStatus.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.sql.v2014_04_01;
+
+import java.util.Collection;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.microsoft.rest.ExpandableStringEnum;
+
+/**
+ * Defines values for TransparentDataEncryptionActivityStatus.
+ */
+public final class TransparentDataEncryptionActivityStatus extends ExpandableStringEnum {
+ /** Static value Encrypting for TransparentDataEncryptionActivityStatus. */
+ public static final TransparentDataEncryptionActivityStatus ENCRYPTING = fromString("Encrypting");
+
+ /** Static value Decrypting for TransparentDataEncryptionActivityStatus. */
+ public static final TransparentDataEncryptionActivityStatus DECRYPTING = fromString("Decrypting");
+
+ /**
+ * Creates or finds a TransparentDataEncryptionActivityStatus from its string representation.
+ * @param name a name to look for
+ * @return the corresponding TransparentDataEncryptionActivityStatus
+ */
+ @JsonCreator
+ public static TransparentDataEncryptionActivityStatus fromString(String name) {
+ return fromString(name, TransparentDataEncryptionActivityStatus.class);
+ }
+
+ /**
+ * @return known TransparentDataEncryptionActivityStatus values
+ */
+ public static Collection values() {
+ return values(TransparentDataEncryptionActivityStatus.class);
+ }
+}
diff --git a/sql/resource-manager/v2014_04_01/src/main/java/com/microsoft/azure/management/sql/v2014_04_01/TransparentDataEncryptionStatus.java b/sql/resource-manager/v2014_04_01/src/main/java/com/microsoft/azure/management/sql/v2014_04_01/TransparentDataEncryptionStatus.java
new file mode 100644
index 0000000000000..6720aabb6308b
--- /dev/null
+++ b/sql/resource-manager/v2014_04_01/src/main/java/com/microsoft/azure/management/sql/v2014_04_01/TransparentDataEncryptionStatus.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.sql.v2014_04_01;
+
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonValue;
+
+/**
+ * Defines values for TransparentDataEncryptionStatus.
+ */
+public enum TransparentDataEncryptionStatus {
+ /** Enum value Enabled. */
+ ENABLED("Enabled"),
+
+ /** Enum value Disabled. */
+ DISABLED("Disabled");
+
+ /** The actual serialized value for a TransparentDataEncryptionStatus instance. */
+ private String value;
+
+ TransparentDataEncryptionStatus(String value) {
+ this.value = value;
+ }
+
+ /**
+ * Parses a serialized value to a TransparentDataEncryptionStatus instance.
+ *
+ * @param value the serialized value to parse.
+ * @return the parsed TransparentDataEncryptionStatus object, or null if unable to parse.
+ */
+ @JsonCreator
+ public static TransparentDataEncryptionStatus fromString(String value) {
+ TransparentDataEncryptionStatus[] items = TransparentDataEncryptionStatus.values();
+ for (TransparentDataEncryptionStatus item : items) {
+ if (item.toString().equalsIgnoreCase(value)) {
+ return item;
+ }
+ }
+ return null;
+ }
+
+ @JsonValue
+ @Override
+ public String toString() {
+ return this.value;
+ }
+}
diff --git a/sql/resource-manager/v2014_04_01/src/main/java/com/microsoft/azure/management/sql/v2014_04_01/TransparentDataEncryptions.java b/sql/resource-manager/v2014_04_01/src/main/java/com/microsoft/azure/management/sql/v2014_04_01/TransparentDataEncryptions.java
new file mode 100644
index 0000000000000..0ca5573bdee8c
--- /dev/null
+++ b/sql/resource-manager/v2014_04_01/src/main/java/com/microsoft/azure/management/sql/v2014_04_01/TransparentDataEncryptions.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.sql.v2014_04_01;
+
+import rx.Observable;
+import com.microsoft.azure.management.sql.v2014_04_01.implementation.TransparentDataEncryptionsInner;
+import com.microsoft.azure.arm.model.HasInner;
+
+/**
+ * Type representing TransparentDataEncryptions.
+ */
+public interface TransparentDataEncryptions extends HasInner {
+ /**
+ * Creates or updates a database's transparent data encryption configuration.
+ *
+ * @param resourceGroupName The name of the resource group that contains the resource. You can obtain this value from the Azure Resource Manager API or the portal.
+ * @param serverName The name of the server.
+ * @param databaseName The name of the database for which setting the transparent data encryption applies.
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @return the observable for the request
+ */
+ Observable createOrUpdateAsync(String resourceGroupName, String serverName, String databaseName);
+
+ /**
+ * Gets a database's transparent data encryption configuration.
+ *
+ * @param resourceGroupName The name of the resource group that contains the resource. You can obtain this value from the Azure Resource Manager API or the portal.
+ * @param serverName The name of the server.
+ * @param databaseName The name of the database for which the transparent data encryption applies.
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @return the observable for the request
+ */
+ Observable getAsync(String resourceGroupName, String serverName, String databaseName);
+
+}
diff --git a/sql/resource-manager/v2014_04_01/src/main/java/com/microsoft/azure/management/sql/v2014_04_01/implementation/CheckNameAvailabilityResponseImpl.java b/sql/resource-manager/v2014_04_01/src/main/java/com/microsoft/azure/management/sql/v2014_04_01/implementation/CheckNameAvailabilityResponseImpl.java
new file mode 100644
index 0000000000000..c25633610cf51
--- /dev/null
+++ b/sql/resource-manager/v2014_04_01/src/main/java/com/microsoft/azure/management/sql/v2014_04_01/implementation/CheckNameAvailabilityResponseImpl.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.sql.v2014_04_01.implementation;
+
+import com.microsoft.azure.management.sql.v2014_04_01.CheckNameAvailabilityResponse;
+import com.microsoft.azure.arm.model.implementation.WrapperImpl;
+import com.microsoft.azure.management.sql.v2014_04_01.CheckNameAvailabilityReason;
+
+class CheckNameAvailabilityResponseImpl extends WrapperImpl implements CheckNameAvailabilityResponse {
+ private final SqlManager manager;
+ CheckNameAvailabilityResponseImpl(CheckNameAvailabilityResponseInner inner, SqlManager manager) {
+ super(inner);
+ this.manager = manager;
+ }
+
+ @Override
+ public SqlManager manager() {
+ return this.manager;
+ }
+
+ @Override
+ public Boolean available() {
+ return this.inner().available();
+ }
+
+ @Override
+ public String message() {
+ return this.inner().message();
+ }
+
+ @Override
+ public String name() {
+ return this.inner().name();
+ }
+
+ @Override
+ public CheckNameAvailabilityReason reason() {
+ return this.inner().reason();
+ }
+
+}
diff --git a/sql/resource-manager/v2014_04_01/src/main/java/com/microsoft/azure/management/sql/v2014_04_01/implementation/CheckNameAvailabilityResponseInner.java b/sql/resource-manager/v2014_04_01/src/main/java/com/microsoft/azure/management/sql/v2014_04_01/implementation/CheckNameAvailabilityResponseInner.java
new file mode 100644
index 0000000000000..f1f75cf97c261
--- /dev/null
+++ b/sql/resource-manager/v2014_04_01/src/main/java/com/microsoft/azure/management/sql/v2014_04_01/implementation/CheckNameAvailabilityResponseInner.java
@@ -0,0 +1,82 @@
+/**
+ * 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.sql.v2014_04_01.implementation;
+
+import com.microsoft.azure.management.sql.v2014_04_01.CheckNameAvailabilityReason;
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/**
+ * A response indicating whether the specified name for a resource is
+ * available.
+ */
+public class CheckNameAvailabilityResponseInner {
+ /**
+ * True if the name is available, otherwise false.
+ */
+ @JsonProperty(value = "available", access = JsonProperty.Access.WRITE_ONLY)
+ private Boolean available;
+
+ /**
+ * A message explaining why the name is unavailable. Will be null if the
+ * name is available.
+ */
+ @JsonProperty(value = "message", access = JsonProperty.Access.WRITE_ONLY)
+ private String message;
+
+ /**
+ * The name whose availability was checked.
+ */
+ @JsonProperty(value = "name", access = JsonProperty.Access.WRITE_ONLY)
+ private String name;
+
+ /**
+ * The reason code explaining why the name is unavailable. Will be null if
+ * the name is available. Possible values include: 'Invalid',
+ * 'AlreadyExists'.
+ */
+ @JsonProperty(value = "reason", access = JsonProperty.Access.WRITE_ONLY)
+ private CheckNameAvailabilityReason reason;
+
+ /**
+ * Get true if the name is available, otherwise false.
+ *
+ * @return the available value
+ */
+ public Boolean available() {
+ return this.available;
+ }
+
+ /**
+ * Get a message explaining why the name is unavailable. Will be null if the name is available.
+ *
+ * @return the message value
+ */
+ public String message() {
+ return this.message;
+ }
+
+ /**
+ * Get the name whose availability was checked.
+ *
+ * @return the name value
+ */
+ public String name() {
+ return this.name;
+ }
+
+ /**
+ * Get the reason code explaining why the name is unavailable. Will be null if the name is available. Possible values include: 'Invalid', 'AlreadyExists'.
+ *
+ * @return the reason value
+ */
+ public CheckNameAvailabilityReason reason() {
+ return this.reason;
+ }
+
+}
diff --git a/sql/resource-manager/v2014_04_01/src/main/java/com/microsoft/azure/management/sql/v2014_04_01/implementation/DatabaseImpl.java b/sql/resource-manager/v2014_04_01/src/main/java/com/microsoft/azure/management/sql/v2014_04_01/implementation/DatabaseImpl.java
new file mode 100644
index 0000000000000..e86c1cac6c001
--- /dev/null
+++ b/sql/resource-manager/v2014_04_01/src/main/java/com/microsoft/azure/management/sql/v2014_04_01/implementation/DatabaseImpl.java
@@ -0,0 +1,442 @@
+/**
+ * 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.sql.v2014_04_01.implementation;
+
+import com.microsoft.azure.management.sql.v2014_04_01.Database;
+import com.microsoft.azure.arm.model.implementation.CreatableUpdatableImpl;
+import rx.Observable;
+import com.microsoft.azure.management.sql.v2014_04_01.DatabaseUpdate;
+import java.util.Map;
+import org.joda.time.DateTime;
+import java.util.UUID;
+import java.util.List;
+import com.microsoft.azure.management.sql.v2014_04_01.CreateMode;
+import com.microsoft.azure.management.sql.v2014_04_01.DatabaseEdition;
+import com.microsoft.azure.management.sql.v2014_04_01.ServiceObjectiveName;
+import com.microsoft.azure.management.sql.v2014_04_01.RecommendedIndex;
+import com.microsoft.azure.management.sql.v2014_04_01.ReadScale;
+import com.microsoft.azure.management.sql.v2014_04_01.SampleName;
+import java.util.ArrayList;
+import com.microsoft.azure.management.sql.v2014_04_01.ServiceTierAdvisor;
+import com.microsoft.azure.management.sql.v2014_04_01.TransparentDataEncryption;
+import rx.functions.Func1;
+
+class DatabaseImpl extends CreatableUpdatableImpl implements Database, Database.Definition, Database.Update {
+ private final SqlManager manager;
+ private String resourceGroupName;
+ private String serverName;
+ private String databaseName;
+ private DatabaseUpdate updateParameter;
+
+ DatabaseImpl(String name, SqlManager manager) {
+ super(name, new DatabaseInner());
+ this.manager = manager;
+ // Set resource name
+ this.databaseName = name;
+ //
+ this.updateParameter = new DatabaseUpdate();
+ }
+
+ DatabaseImpl(DatabaseInner inner, SqlManager manager) {
+ super(inner.name(), inner);
+ this.manager = manager;
+ // Set resource name
+ this.databaseName = inner.name();
+ // resource ancestor names
+ this.resourceGroupName = IdParsingUtils.getValueFromIdByName(inner.id(), "resourceGroups");
+ this.serverName = IdParsingUtils.getValueFromIdByName(inner.id(), "servers");
+ this.databaseName = IdParsingUtils.getValueFromIdByName(inner.id(), "databases");
+ //
+ this.updateParameter = new DatabaseUpdate();
+ }
+
+ @Override
+ public SqlManager manager() {
+ return this.manager;
+ }
+
+ @Override
+ public Observable createResourceAsync() {
+ DatabasesInner client = this.manager().inner().databases();
+ return client.createOrUpdateAsync(this.resourceGroupName, this.serverName, this.databaseName, this.inner())
+ .map(new Func1() {
+ @Override
+ public DatabaseInner call(DatabaseInner resource) {
+ resetCreateUpdateParameters();
+ return resource;
+ }
+ })
+ .map(innerToFluentMap(this));
+ }
+
+ @Override
+ public Observable updateResourceAsync() {
+ DatabasesInner client = this.manager().inner().databases();
+ return client.updateAsync(this.resourceGroupName, this.serverName, this.databaseName, this.updateParameter)
+ .map(new Func1() {
+ @Override
+ public DatabaseInner call(DatabaseInner resource) {
+ resetCreateUpdateParameters();
+ return resource;
+ }
+ })
+ .map(innerToFluentMap(this));
+ }
+
+ @Override
+ protected Observable getInnerAsync() {
+ DatabasesInner client = this.manager().inner().databases();
+ return client.getAsync(this.resourceGroupName, this.serverName, this.databaseName);
+ }
+
+ @Override
+ public boolean isInCreateMode() {
+ return this.inner().id() == null;
+ }
+
+ private void resetCreateUpdateParameters() {
+ this.updateParameter = new DatabaseUpdate();
+ }
+
+ @Override
+ public String collation() {
+ return this.inner().collation();
+ }
+
+ @Override
+ public Long containmentState() {
+ return this.inner().containmentState();
+ }
+
+ @Override
+ public CreateMode createMode() {
+ return this.inner().createMode();
+ }
+
+ @Override
+ public DateTime creationDate() {
+ return this.inner().creationDate();
+ }
+
+ @Override
+ public UUID currentServiceObjectiveId() {
+ return this.inner().currentServiceObjectiveId();
+ }
+
+ @Override
+ public UUID databaseId() {
+ return this.inner().databaseId();
+ }
+
+ @Override
+ public String defaultSecondaryLocation() {
+ return this.inner().defaultSecondaryLocation();
+ }
+
+ @Override
+ public DateTime earliestRestoreDate() {
+ return this.inner().earliestRestoreDate();
+ }
+
+ @Override
+ public DatabaseEdition edition() {
+ return this.inner().edition();
+ }
+
+ @Override
+ public String elasticPoolName() {
+ return this.inner().elasticPoolName();
+ }
+
+ @Override
+ public String failoverGroupId() {
+ return this.inner().failoverGroupId();
+ }
+
+ @Override
+ public String id() {
+ return this.inner().id();
+ }
+
+ @Override
+ public String kind() {
+ return this.inner().kind();
+ }
+
+ @Override
+ public String location() {
+ return this.inner().location();
+ }
+
+ @Override
+ public String maxSizeBytes() {
+ return this.inner().maxSizeBytes();
+ }
+
+ @Override
+ public String name() {
+ return this.inner().name();
+ }
+
+ @Override
+ public ReadScale readScale() {
+ return this.inner().readScale();
+ }
+
+ @Override
+ public List recommendedIndex() {
+ return this.inner().recommendedIndex();
+ }
+
+ @Override
+ public String recoveryServicesRecoveryPointResourceId() {
+ return this.inner().recoveryServicesRecoveryPointResourceId();
+ }
+
+ @Override
+ public UUID requestedServiceObjectiveId() {
+ return this.inner().requestedServiceObjectiveId();
+ }
+
+ @Override
+ public ServiceObjectiveName requestedServiceObjectiveName() {
+ return this.inner().requestedServiceObjectiveName();
+ }
+
+ @Override
+ public DateTime restorePointInTime() {
+ return this.inner().restorePointInTime();
+ }
+
+ @Override
+ public SampleName sampleName() {
+ return this.inner().sampleName();
+ }
+
+ @Override
+ public ServiceObjectiveName serviceLevelObjective() {
+ return this.inner().serviceLevelObjective();
+ }
+
+ @Override
+ public List serviceTierAdvisors() {
+ List lst = new ArrayList();
+ if (this.inner().serviceTierAdvisors() != null) {
+ for (ServiceTierAdvisorInner inner : this.inner().serviceTierAdvisors()) {
+ lst.add( new ServiceTierAdvisorImpl(inner, manager()));
+ }
+ }
+ return lst;
+ }
+
+ @Override
+ public DateTime sourceDatabaseDeletionDate() {
+ return this.inner().sourceDatabaseDeletionDate();
+ }
+
+ @Override
+ public String sourceDatabaseId() {
+ return this.inner().sourceDatabaseId();
+ }
+
+ @Override
+ public String status() {
+ return this.inner().status();
+ }
+
+ @Override
+ public Map tags() {
+ return this.inner().getTags();
+ }
+
+ @Override
+ public List transparentDataEncryption() {
+ List lst = new ArrayList();
+ if (this.inner().transparentDataEncryption() != null) {
+ for (TransparentDataEncryptionInner inner : this.inner().transparentDataEncryption()) {
+ lst.add( new TransparentDataEncryptionImpl(inner, manager()));
+ }
+ }
+ return lst;
+ }
+
+ @Override
+ public String type() {
+ return this.inner().type();
+ }
+
+ @Override
+ public Boolean zoneRedundant() {
+ return this.inner().zoneRedundant();
+ }
+
+ @Override
+ public DatabaseImpl withExistingServer(String resourceGroupName, String serverName) {
+ this.resourceGroupName = resourceGroupName;
+ this.serverName = serverName;
+ return this;
+ }
+
+ @Override
+ public DatabaseImpl withLocation(String location) {
+ this.inner().withLocation(location);
+ return this;
+ }
+
+ @Override
+ public DatabaseImpl withCollation(String collation) {
+ if (isInCreateMode()) {
+ this.inner().withCollation(collation);
+ } else {
+ this.updateParameter.withCollation(collation);
+ }
+ return this;
+ }
+
+ @Override
+ public DatabaseImpl withCreateMode(CreateMode createMode) {
+ if (isInCreateMode()) {
+ this.inner().withCreateMode(createMode);
+ } else {
+ this.updateParameter.withCreateMode(createMode);
+ }
+ return this;
+ }
+
+ @Override
+ public DatabaseImpl withEdition(DatabaseEdition edition) {
+ if (isInCreateMode()) {
+ this.inner().withEdition(edition);
+ } else {
+ this.updateParameter.withEdition(edition);
+ }
+ return this;
+ }
+
+ @Override
+ public DatabaseImpl withElasticPoolName(String elasticPoolName) {
+ if (isInCreateMode()) {
+ this.inner().withElasticPoolName(elasticPoolName);
+ } else {
+ this.updateParameter.withElasticPoolName(elasticPoolName);
+ }
+ return this;
+ }
+
+ @Override
+ public DatabaseImpl withMaxSizeBytes(String maxSizeBytes) {
+ if (isInCreateMode()) {
+ this.inner().withMaxSizeBytes(maxSizeBytes);
+ } else {
+ this.updateParameter.withMaxSizeBytes(maxSizeBytes);
+ }
+ return this;
+ }
+
+ @Override
+ public DatabaseImpl withReadScale(ReadScale readScale) {
+ if (isInCreateMode()) {
+ this.inner().withReadScale(readScale);
+ } else {
+ this.updateParameter.withReadScale(readScale);
+ }
+ return this;
+ }
+
+ @Override
+ public DatabaseImpl withRecoveryServicesRecoveryPointResourceId(String recoveryServicesRecoveryPointResourceId) {
+ if (isInCreateMode()) {
+ this.inner().withRecoveryServicesRecoveryPointResourceId(recoveryServicesRecoveryPointResourceId);
+ } else {
+ this.updateParameter.withRecoveryServicesRecoveryPointResourceId(recoveryServicesRecoveryPointResourceId);
+ }
+ return this;
+ }
+
+ @Override
+ public DatabaseImpl withRequestedServiceObjectiveId(UUID requestedServiceObjectiveId) {
+ if (isInCreateMode()) {
+ this.inner().withRequestedServiceObjectiveId(requestedServiceObjectiveId);
+ } else {
+ this.updateParameter.withRequestedServiceObjectiveId(requestedServiceObjectiveId);
+ }
+ return this;
+ }
+
+ @Override
+ public DatabaseImpl withRequestedServiceObjectiveName(ServiceObjectiveName requestedServiceObjectiveName) {
+ if (isInCreateMode()) {
+ this.inner().withRequestedServiceObjectiveName(requestedServiceObjectiveName);
+ } else {
+ this.updateParameter.withRequestedServiceObjectiveName(requestedServiceObjectiveName);
+ }
+ return this;
+ }
+
+ @Override
+ public DatabaseImpl withRestorePointInTime(DateTime restorePointInTime) {
+ if (isInCreateMode()) {
+ this.inner().withRestorePointInTime(restorePointInTime);
+ } else {
+ this.updateParameter.withRestorePointInTime(restorePointInTime);
+ }
+ return this;
+ }
+
+ @Override
+ public DatabaseImpl withSampleName(SampleName sampleName) {
+ if (isInCreateMode()) {
+ this.inner().withSampleName(sampleName);
+ } else {
+ this.updateParameter.withSampleName(sampleName);
+ }
+ return this;
+ }
+
+ @Override
+ public DatabaseImpl withSourceDatabaseDeletionDate(DateTime sourceDatabaseDeletionDate) {
+ if (isInCreateMode()) {
+ this.inner().withSourceDatabaseDeletionDate(sourceDatabaseDeletionDate);
+ } else {
+ this.updateParameter.withSourceDatabaseDeletionDate(sourceDatabaseDeletionDate);
+ }
+ return this;
+ }
+
+ @Override
+ public DatabaseImpl withSourceDatabaseId(String sourceDatabaseId) {
+ if (isInCreateMode()) {
+ this.inner().withSourceDatabaseId(sourceDatabaseId);
+ } else {
+ this.updateParameter.withSourceDatabaseId(sourceDatabaseId);
+ }
+ return this;
+ }
+
+ @Override
+ public DatabaseImpl withTags(Map tags) {
+ if (isInCreateMode()) {
+ this.inner().withTags(tags);
+ } else {
+ this.updateParameter.withTags(tags);
+ }
+ return this;
+ }
+
+ @Override
+ public DatabaseImpl withZoneRedundant(Boolean zoneRedundant) {
+ if (isInCreateMode()) {
+ this.inner().withZoneRedundant(zoneRedundant);
+ } else {
+ this.updateParameter.withZoneRedundant(zoneRedundant);
+ }
+ return this;
+ }
+
+}
diff --git a/sql/resource-manager/v2014_04_01/src/main/java/com/microsoft/azure/management/sql/v2014_04_01/implementation/DatabaseInner.java b/sql/resource-manager/v2014_04_01/src/main/java/com/microsoft/azure/management/sql/v2014_04_01/implementation/DatabaseInner.java
new file mode 100644
index 0000000000000..5cc5b1b54d285
--- /dev/null
+++ b/sql/resource-manager/v2014_04_01/src/main/java/com/microsoft/azure/management/sql/v2014_04_01/implementation/DatabaseInner.java
@@ -0,0 +1,719 @@
+/**
+ * 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.sql.v2014_04_01.implementation;
+
+import org.joda.time.DateTime;
+import java.util.UUID;
+import com.microsoft.azure.management.sql.v2014_04_01.CreateMode;
+import com.microsoft.azure.management.sql.v2014_04_01.DatabaseEdition;
+import com.microsoft.azure.management.sql.v2014_04_01.ServiceObjectiveName;
+import java.util.List;
+import com.microsoft.azure.management.sql.v2014_04_01.RecommendedIndex;
+import com.microsoft.azure.management.sql.v2014_04_01.ReadScale;
+import com.microsoft.azure.management.sql.v2014_04_01.SampleName;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.microsoft.rest.serializer.JsonFlatten;
+import com.microsoft.azure.Resource;
+
+/**
+ * Represents a database.
+ */
+@JsonFlatten
+public class DatabaseInner extends Resource {
+ /**
+ * Kind of database. This is metadata used for the Azure portal
+ * experience.
+ */
+ @JsonProperty(value = "kind", access = JsonProperty.Access.WRITE_ONLY)
+ private String kind;
+
+ /**
+ * The collation of the database. If createMode is not Default, this value
+ * is ignored.
+ */
+ @JsonProperty(value = "properties.collation")
+ private String collation;
+
+ /**
+ * The creation date of the database (ISO8601 format).
+ */
+ @JsonProperty(value = "properties.creationDate", access = JsonProperty.Access.WRITE_ONLY)
+ private DateTime creationDate;
+
+ /**
+ * The containment state of the database.
+ */
+ @JsonProperty(value = "properties.containmentState", access = JsonProperty.Access.WRITE_ONLY)
+ private Long containmentState;
+
+ /**
+ * The current service level objective ID of the database. This is the ID
+ * of the service level objective that is currently active.
+ */
+ @JsonProperty(value = "properties.currentServiceObjectiveId", access = JsonProperty.Access.WRITE_ONLY)
+ private UUID currentServiceObjectiveId;
+
+ /**
+ * The ID of the database.
+ */
+ @JsonProperty(value = "properties.databaseId", access = JsonProperty.Access.WRITE_ONLY)
+ private UUID databaseId;
+
+ /**
+ * This records the earliest start date and time that restore is available
+ * for this database (ISO8601 format).
+ */
+ @JsonProperty(value = "properties.earliestRestoreDate", access = JsonProperty.Access.WRITE_ONLY)
+ private DateTime earliestRestoreDate;
+
+ /**
+ * Specifies the mode of database creation.
+ *
+ * Default: regular database creation.
+ *
+ * Copy: creates a database as a copy of an existing database.
+ * sourceDatabaseId must be specified as the resource ID of the source
+ * database.
+ *
+ * OnlineSecondary/NonReadableSecondary: creates a database as a (readable
+ * or nonreadable) secondary replica of an existing database.
+ * sourceDatabaseId must be specified as the resource ID of the existing
+ * primary database.
+ *
+ * PointInTimeRestore: Creates a database by restoring a point in time
+ * backup of an existing database. sourceDatabaseId must be specified as
+ * the resource ID of the existing database, and restorePointInTime must be
+ * specified.
+ *
+ * Recovery: Creates a database by restoring a geo-replicated backup.
+ * sourceDatabaseId must be specified as the recoverable database resource
+ * ID to restore.
+ *
+ * Restore: Creates a database by restoring a backup of a deleted database.
+ * sourceDatabaseId must be specified. If sourceDatabaseId is the
+ * database's original resource ID, then sourceDatabaseDeletionDate must be
+ * specified. Otherwise sourceDatabaseId must be the restorable dropped
+ * database resource ID and sourceDatabaseDeletionDate is ignored.
+ * restorePointInTime may also be specified to restore from an earlier
+ * point in time.
+ *
+ * RestoreLongTermRetentionBackup: Creates a database by restoring from a
+ * long term retention vault. recoveryServicesRecoveryPointResourceId must
+ * be specified as the recovery point resource ID.
+ *
+ * Copy, NonReadableSecondary, OnlineSecondary and
+ * RestoreLongTermRetentionBackup are not supported for DataWarehouse
+ * edition. Possible values include: 'Copy', 'Default',
+ * 'NonReadableSecondary', 'OnlineSecondary', 'PointInTimeRestore',
+ * 'Recovery', 'Restore', 'RestoreLongTermRetentionBackup'.
+ */
+ @JsonProperty(value = "properties.createMode")
+ private CreateMode createMode;
+
+ /**
+ * Conditional. If createMode is Copy, NonReadableSecondary,
+ * OnlineSecondary, PointInTimeRestore, Recovery, or Restore, then this
+ * value is required. Specifies the resource ID of the source database. If
+ * createMode is NonReadableSecondary or OnlineSecondary, the name of the
+ * source database must be the same as the new database being created.
+ */
+ @JsonProperty(value = "properties.sourceDatabaseId")
+ private String sourceDatabaseId;
+
+ /**
+ * Conditional. If createMode is Restore and sourceDatabaseId is the
+ * deleted database's original resource id when it existed (as opposed to
+ * its current restorable dropped database id), then this value is
+ * required. Specifies the time that the database was deleted.
+ */
+ @JsonProperty(value = "properties.sourceDatabaseDeletionDate")
+ private DateTime sourceDatabaseDeletionDate;
+
+ /**
+ * Conditional. If createMode is PointInTimeRestore, this value is
+ * required. If createMode is Restore, this value is optional. Specifies
+ * the point in time (ISO8601 format) of the source database that will be
+ * restored to create the new database. Must be greater than or equal to
+ * the source database's earliestRestoreDate value.
+ */
+ @JsonProperty(value = "properties.restorePointInTime")
+ private DateTime restorePointInTime;
+
+ /**
+ * Conditional. If createMode is RestoreLongTermRetentionBackup, then this
+ * value is required. Specifies the resource ID of the recovery point to
+ * restore from.
+ */
+ @JsonProperty(value = "properties.recoveryServicesRecoveryPointResourceId")
+ private String recoveryServicesRecoveryPointResourceId;
+
+ /**
+ * The edition of the database. The DatabaseEditions enumeration contains
+ * all the valid editions. If createMode is NonReadableSecondary or
+ * OnlineSecondary, this value is ignored. To see possible values, query
+ * the capabilities API
+ * (/subscriptions/{subscriptionId}/providers/Microsoft.Sql/locations/{locationID}/capabilities)
+ * referred to by operationId: "Capabilities_ListByLocation." or use the
+ * Azure CLI command `az sql db list-editions -l westus --query [].name`.
+ * Possible values include: 'Web', 'Business', 'Basic', 'Standard',
+ * 'Premium', 'PremiumRS', 'Free', 'Stretch', 'DataWarehouse', 'System',
+ * 'System2'.
+ */
+ @JsonProperty(value = "properties.edition")
+ private DatabaseEdition edition;
+
+ /**
+ * The max size of the database expressed in bytes. If createMode is not
+ * Default, this value is ignored. To see possible values, query the
+ * capabilities API
+ * (/subscriptions/{subscriptionId}/providers/Microsoft.Sql/locations/{locationID}/capabilities)
+ * referred to by operationId: "Capabilities_ListByLocation.".
+ */
+ @JsonProperty(value = "properties.maxSizeBytes")
+ private String maxSizeBytes;
+
+ /**
+ * The configured service level objective ID of the database. This is the
+ * service level objective that is in the process of being applied to the
+ * database. Once successfully updated, it will match the value of
+ * currentServiceObjectiveId property. If requestedServiceObjectiveId and
+ * requestedServiceObjectiveName are both updated, the value of
+ * requestedServiceObjectiveId overrides the value of
+ * requestedServiceObjectiveName. To see possible values, query the
+ * capabilities API
+ * (/subscriptions/{subscriptionId}/providers/Microsoft.Sql/locations/{locationID}/capabilities)
+ * referred to by operationId: "Capabilities_ListByLocation." or use the
+ * Azure CLI command `az sql db list-editions --location <location>
+ * --query [].supportedServiceLevelObjectives[].name` .
+ */
+ @JsonProperty(value = "properties.requestedServiceObjectiveId")
+ private UUID requestedServiceObjectiveId;
+
+ /**
+ * The name of the configured service level objective of the database. This
+ * is the service level objective that is in the process of being applied
+ * to the database. Once successfully updated, it will match the value of
+ * serviceLevelObjective property. To see possible values, query the
+ * capabilities API
+ * (/subscriptions/{subscriptionId}/providers/Microsoft.Sql/locations/{locationID}/capabilities)
+ * referred to by operationId: "Capabilities_ListByLocation." or use the
+ * Azure CLI command `az sql db list-editions --location <location>
+ * --query [].supportedServiceLevelObjectives[].name`. Possible values
+ * include: 'System', 'System0', 'System1', 'System2', 'System3',
+ * 'System4', 'System2L', 'System3L', 'System4L', 'Free', 'Basic', 'S0',
+ * 'S1', 'S2', 'S3', 'S4', 'S6', 'S7', 'S9', 'S12', 'P1', 'P2', 'P3', 'P4',
+ * 'P6', 'P11', 'P15', 'PRS1', 'PRS2', 'PRS4', 'PRS6', 'DW100', 'DW200',
+ * 'DW300', 'DW400', 'DW500', 'DW600', 'DW1000', 'DW1200', 'DW1000c',
+ * 'DW1500', 'DW1500c', 'DW2000', 'DW2000c', 'DW3000', 'DW2500c',
+ * 'DW3000c', 'DW6000', 'DW5000c', 'DW6000c', 'DW7500c', 'DW10000c',
+ * 'DW15000c', 'DW30000c', 'DS100', 'DS200', 'DS300', 'DS400', 'DS500',
+ * 'DS600', 'DS1000', 'DS1200', 'DS1500', 'DS2000', 'ElasticPool'.
+ */
+ @JsonProperty(value = "properties.requestedServiceObjectiveName")
+ private ServiceObjectiveName requestedServiceObjectiveName;
+
+ /**
+ * The current service level objective of the database. Possible values
+ * include: 'System', 'System0', 'System1', 'System2', 'System3',
+ * 'System4', 'System2L', 'System3L', 'System4L', 'Free', 'Basic', 'S0',
+ * 'S1', 'S2', 'S3', 'S4', 'S6', 'S7', 'S9', 'S12', 'P1', 'P2', 'P3', 'P4',
+ * 'P6', 'P11', 'P15', 'PRS1', 'PRS2', 'PRS4', 'PRS6', 'DW100', 'DW200',
+ * 'DW300', 'DW400', 'DW500', 'DW600', 'DW1000', 'DW1200', 'DW1000c',
+ * 'DW1500', 'DW1500c', 'DW2000', 'DW2000c', 'DW3000', 'DW2500c',
+ * 'DW3000c', 'DW6000', 'DW5000c', 'DW6000c', 'DW7500c', 'DW10000c',
+ * 'DW15000c', 'DW30000c', 'DS100', 'DS200', 'DS300', 'DS400', 'DS500',
+ * 'DS600', 'DS1000', 'DS1200', 'DS1500', 'DS2000', 'ElasticPool'.
+ */
+ @JsonProperty(value = "properties.serviceLevelObjective", access = JsonProperty.Access.WRITE_ONLY)
+ private ServiceObjectiveName serviceLevelObjective;
+
+ /**
+ * The status of the database.
+ */
+ @JsonProperty(value = "properties.status", access = JsonProperty.Access.WRITE_ONLY)
+ private String status;
+
+ /**
+ * The name of the elastic pool the database is in. If elasticPoolName and
+ * requestedServiceObjectiveName are both updated, the value of
+ * requestedServiceObjectiveName is ignored. Not supported for
+ * DataWarehouse edition.
+ */
+ @JsonProperty(value = "properties.elasticPoolName")
+ private String elasticPoolName;
+
+ /**
+ * The default secondary region for this database.
+ */
+ @JsonProperty(value = "properties.defaultSecondaryLocation", access = JsonProperty.Access.WRITE_ONLY)
+ private String defaultSecondaryLocation;
+
+ /**
+ * The list of service tier advisors for this database. Expanded property.
+ */
+ @JsonProperty(value = "properties.serviceTierAdvisors", access = JsonProperty.Access.WRITE_ONLY)
+ private List serviceTierAdvisors;
+
+ /**
+ * The transparent data encryption info for this database.
+ */
+ @JsonProperty(value = "properties.transparentDataEncryption", access = JsonProperty.Access.WRITE_ONLY)
+ private List transparentDataEncryption;
+
+ /**
+ * The recommended indices for this database.
+ */
+ @JsonProperty(value = "properties.recommendedIndex", access = JsonProperty.Access.WRITE_ONLY)
+ private List recommendedIndex;
+
+ /**
+ * The resource identifier of the failover group containing this database.
+ */
+ @JsonProperty(value = "properties.failoverGroupId", access = JsonProperty.Access.WRITE_ONLY)
+ private String failoverGroupId;
+
+ /**
+ * Conditional. If the database is a geo-secondary, readScale indicates
+ * whether read-only connections are allowed to this database or not. Not
+ * supported for DataWarehouse edition. Possible values include: 'Enabled',
+ * 'Disabled'.
+ */
+ @JsonProperty(value = "properties.readScale")
+ private ReadScale readScale;
+
+ /**
+ * Indicates the name of the sample schema to apply when creating this
+ * database. If createMode is not Default, this value is ignored. Not
+ * supported for DataWarehouse edition. Possible values include:
+ * 'AdventureWorksLT'.
+ */
+ @JsonProperty(value = "properties.sampleName")
+ private SampleName sampleName;
+
+ /**
+ * Whether or not this database is zone redundant, which means the replicas
+ * of this database will be spread across multiple availability zones.
+ */
+ @JsonProperty(value = "properties.zoneRedundant")
+ private Boolean zoneRedundant;
+
+ /**
+ * Get kind of database. This is metadata used for the Azure portal experience.
+ *
+ * @return the kind value
+ */
+ public String kind() {
+ return this.kind;
+ }
+
+ /**
+ * Get the collation of the database. If createMode is not Default, this value is ignored.
+ *
+ * @return the collation value
+ */
+ public String collation() {
+ return this.collation;
+ }
+
+ /**
+ * Set the collation of the database. If createMode is not Default, this value is ignored.
+ *
+ * @param collation the collation value to set
+ * @return the DatabaseInner object itself.
+ */
+ public DatabaseInner withCollation(String collation) {
+ this.collation = collation;
+ return this;
+ }
+
+ /**
+ * Get the creation date of the database (ISO8601 format).
+ *
+ * @return the creationDate value
+ */
+ public DateTime creationDate() {
+ return this.creationDate;
+ }
+
+ /**
+ * Get the containment state of the database.
+ *
+ * @return the containmentState value
+ */
+ public Long containmentState() {
+ return this.containmentState;
+ }
+
+ /**
+ * Get the current service level objective ID of the database. This is the ID of the service level objective that is currently active.
+ *
+ * @return the currentServiceObjectiveId value
+ */
+ public UUID currentServiceObjectiveId() {
+ return this.currentServiceObjectiveId;
+ }
+
+ /**
+ * Get the ID of the database.
+ *
+ * @return the databaseId value
+ */
+ public UUID databaseId() {
+ return this.databaseId;
+ }
+
+ /**
+ * Get this records the earliest start date and time that restore is available for this database (ISO8601 format).
+ *
+ * @return the earliestRestoreDate value
+ */
+ public DateTime earliestRestoreDate() {
+ return this.earliestRestoreDate;
+ }
+
+ /**
+ * Get specifies the mode of database creation.
+ Default: regular database creation.
+ Copy: creates a database as a copy of an existing database. sourceDatabaseId must be specified as the resource ID of the source database.
+ OnlineSecondary/NonReadableSecondary: creates a database as a (readable or nonreadable) secondary replica of an existing database. sourceDatabaseId must be specified as the resource ID of the existing primary database.
+ PointInTimeRestore: Creates a database by restoring a point in time backup of an existing database. sourceDatabaseId must be specified as the resource ID of the existing database, and restorePointInTime must be specified.
+ Recovery: Creates a database by restoring a geo-replicated backup. sourceDatabaseId must be specified as the recoverable database resource ID to restore.
+ Restore: Creates a database by restoring a backup of a deleted database. sourceDatabaseId must be specified. If sourceDatabaseId is the database's original resource ID, then sourceDatabaseDeletionDate must be specified. Otherwise sourceDatabaseId must be the restorable dropped database resource ID and sourceDatabaseDeletionDate is ignored. restorePointInTime may also be specified to restore from an earlier point in time.
+ RestoreLongTermRetentionBackup: Creates a database by restoring from a long term retention vault. recoveryServicesRecoveryPointResourceId must be specified as the recovery point resource ID.
+ Copy, NonReadableSecondary, OnlineSecondary and RestoreLongTermRetentionBackup are not supported for DataWarehouse edition. Possible values include: 'Copy', 'Default', 'NonReadableSecondary', 'OnlineSecondary', 'PointInTimeRestore', 'Recovery', 'Restore', 'RestoreLongTermRetentionBackup'.
+ *
+ * @return the createMode value
+ */
+ public CreateMode createMode() {
+ return this.createMode;
+ }
+
+ /**
+ * Set specifies the mode of database creation.
+ Default: regular database creation.
+ Copy: creates a database as a copy of an existing database. sourceDatabaseId must be specified as the resource ID of the source database.
+ OnlineSecondary/NonReadableSecondary: creates a database as a (readable or nonreadable) secondary replica of an existing database. sourceDatabaseId must be specified as the resource ID of the existing primary database.
+ PointInTimeRestore: Creates a database by restoring a point in time backup of an existing database. sourceDatabaseId must be specified as the resource ID of the existing database, and restorePointInTime must be specified.
+ Recovery: Creates a database by restoring a geo-replicated backup. sourceDatabaseId must be specified as the recoverable database resource ID to restore.
+ Restore: Creates a database by restoring a backup of a deleted database. sourceDatabaseId must be specified. If sourceDatabaseId is the database's original resource ID, then sourceDatabaseDeletionDate must be specified. Otherwise sourceDatabaseId must be the restorable dropped database resource ID and sourceDatabaseDeletionDate is ignored. restorePointInTime may also be specified to restore from an earlier point in time.
+ RestoreLongTermRetentionBackup: Creates a database by restoring from a long term retention vault. recoveryServicesRecoveryPointResourceId must be specified as the recovery point resource ID.
+ Copy, NonReadableSecondary, OnlineSecondary and RestoreLongTermRetentionBackup are not supported for DataWarehouse edition. Possible values include: 'Copy', 'Default', 'NonReadableSecondary', 'OnlineSecondary', 'PointInTimeRestore', 'Recovery', 'Restore', 'RestoreLongTermRetentionBackup'.
+ *
+ * @param createMode the createMode value to set
+ * @return the DatabaseInner object itself.
+ */
+ public DatabaseInner withCreateMode(CreateMode createMode) {
+ this.createMode = createMode;
+ return this;
+ }
+
+ /**
+ * Get conditional. If createMode is Copy, NonReadableSecondary, OnlineSecondary, PointInTimeRestore, Recovery, or Restore, then this value is required. Specifies the resource ID of the source database. If createMode is NonReadableSecondary or OnlineSecondary, the name of the source database must be the same as the new database being created.
+ *
+ * @return the sourceDatabaseId value
+ */
+ public String sourceDatabaseId() {
+ return this.sourceDatabaseId;
+ }
+
+ /**
+ * Set conditional. If createMode is Copy, NonReadableSecondary, OnlineSecondary, PointInTimeRestore, Recovery, or Restore, then this value is required. Specifies the resource ID of the source database. If createMode is NonReadableSecondary or OnlineSecondary, the name of the source database must be the same as the new database being created.
+ *
+ * @param sourceDatabaseId the sourceDatabaseId value to set
+ * @return the DatabaseInner object itself.
+ */
+ public DatabaseInner withSourceDatabaseId(String sourceDatabaseId) {
+ this.sourceDatabaseId = sourceDatabaseId;
+ return this;
+ }
+
+ /**
+ * Get conditional. If createMode is Restore and sourceDatabaseId is the deleted database's original resource id when it existed (as opposed to its current restorable dropped database id), then this value is required. Specifies the time that the database was deleted.
+ *
+ * @return the sourceDatabaseDeletionDate value
+ */
+ public DateTime sourceDatabaseDeletionDate() {
+ return this.sourceDatabaseDeletionDate;
+ }
+
+ /**
+ * Set conditional. If createMode is Restore and sourceDatabaseId is the deleted database's original resource id when it existed (as opposed to its current restorable dropped database id), then this value is required. Specifies the time that the database was deleted.
+ *
+ * @param sourceDatabaseDeletionDate the sourceDatabaseDeletionDate value to set
+ * @return the DatabaseInner object itself.
+ */
+ public DatabaseInner withSourceDatabaseDeletionDate(DateTime sourceDatabaseDeletionDate) {
+ this.sourceDatabaseDeletionDate = sourceDatabaseDeletionDate;
+ return this;
+ }
+
+ /**
+ * Get conditional. If createMode is PointInTimeRestore, this value is required. If createMode is Restore, this value is optional. Specifies the point in time (ISO8601 format) of the source database that will be restored to create the new database. Must be greater than or equal to the source database's earliestRestoreDate value.
+ *
+ * @return the restorePointInTime value
+ */
+ public DateTime restorePointInTime() {
+ return this.restorePointInTime;
+ }
+
+ /**
+ * Set conditional. If createMode is PointInTimeRestore, this value is required. If createMode is Restore, this value is optional. Specifies the point in time (ISO8601 format) of the source database that will be restored to create the new database. Must be greater than or equal to the source database's earliestRestoreDate value.
+ *
+ * @param restorePointInTime the restorePointInTime value to set
+ * @return the DatabaseInner object itself.
+ */
+ public DatabaseInner withRestorePointInTime(DateTime restorePointInTime) {
+ this.restorePointInTime = restorePointInTime;
+ return this;
+ }
+
+ /**
+ * Get conditional. If createMode is RestoreLongTermRetentionBackup, then this value is required. Specifies the resource ID of the recovery point to restore from.
+ *
+ * @return the recoveryServicesRecoveryPointResourceId value
+ */
+ public String recoveryServicesRecoveryPointResourceId() {
+ return this.recoveryServicesRecoveryPointResourceId;
+ }
+
+ /**
+ * Set conditional. If createMode is RestoreLongTermRetentionBackup, then this value is required. Specifies the resource ID of the recovery point to restore from.
+ *
+ * @param recoveryServicesRecoveryPointResourceId the recoveryServicesRecoveryPointResourceId value to set
+ * @return the DatabaseInner object itself.
+ */
+ public DatabaseInner withRecoveryServicesRecoveryPointResourceId(String recoveryServicesRecoveryPointResourceId) {
+ this.recoveryServicesRecoveryPointResourceId = recoveryServicesRecoveryPointResourceId;
+ return this;
+ }
+
+ /**
+ * Get the edition of the database. The DatabaseEditions enumeration contains all the valid editions. If createMode is NonReadableSecondary or OnlineSecondary, this value is ignored. To see possible values, query the capabilities API (/subscriptions/{subscriptionId}/providers/Microsoft.Sql/locations/{locationID}/capabilities) referred to by operationId: "Capabilities_ListByLocation." or use the Azure CLI command `az sql db list-editions -l westus --query [].name`. Possible values include: 'Web', 'Business', 'Basic', 'Standard', 'Premium', 'PremiumRS', 'Free', 'Stretch', 'DataWarehouse', 'System', 'System2'.
+ *
+ * @return the edition value
+ */
+ public DatabaseEdition edition() {
+ return this.edition;
+ }
+
+ /**
+ * Set the edition of the database. The DatabaseEditions enumeration contains all the valid editions. If createMode is NonReadableSecondary or OnlineSecondary, this value is ignored. To see possible values, query the capabilities API (/subscriptions/{subscriptionId}/providers/Microsoft.Sql/locations/{locationID}/capabilities) referred to by operationId: "Capabilities_ListByLocation." or use the Azure CLI command `az sql db list-editions -l westus --query [].name`. Possible values include: 'Web', 'Business', 'Basic', 'Standard', 'Premium', 'PremiumRS', 'Free', 'Stretch', 'DataWarehouse', 'System', 'System2'.
+ *
+ * @param edition the edition value to set
+ * @return the DatabaseInner object itself.
+ */
+ public DatabaseInner withEdition(DatabaseEdition edition) {
+ this.edition = edition;
+ return this;
+ }
+
+ /**
+ * Get the max size of the database expressed in bytes. If createMode is not Default, this value is ignored. To see possible values, query the capabilities API (/subscriptions/{subscriptionId}/providers/Microsoft.Sql/locations/{locationID}/capabilities) referred to by operationId: "Capabilities_ListByLocation.".
+ *
+ * @return the maxSizeBytes value
+ */
+ public String maxSizeBytes() {
+ return this.maxSizeBytes;
+ }
+
+ /**
+ * Set the max size of the database expressed in bytes. If createMode is not Default, this value is ignored. To see possible values, query the capabilities API (/subscriptions/{subscriptionId}/providers/Microsoft.Sql/locations/{locationID}/capabilities) referred to by operationId: "Capabilities_ListByLocation.".
+ *
+ * @param maxSizeBytes the maxSizeBytes value to set
+ * @return the DatabaseInner object itself.
+ */
+ public DatabaseInner withMaxSizeBytes(String maxSizeBytes) {
+ this.maxSizeBytes = maxSizeBytes;
+ return this;
+ }
+
+ /**
+ * Get the configured service level objective ID of the database. This is the service level objective that is in the process of being applied to the database. Once successfully updated, it will match the value of currentServiceObjectiveId property. If requestedServiceObjectiveId and requestedServiceObjectiveName are both updated, the value of requestedServiceObjectiveId overrides the value of requestedServiceObjectiveName. To see possible values, query the capabilities API (/subscriptions/{subscriptionId}/providers/Microsoft.Sql/locations/{locationID}/capabilities) referred to by operationId: "Capabilities_ListByLocation." or use the Azure CLI command `az sql db list-editions --location <location> --query [].supportedServiceLevelObjectives[].name` .
+ *
+ * @return the requestedServiceObjectiveId value
+ */
+ public UUID requestedServiceObjectiveId() {
+ return this.requestedServiceObjectiveId;
+ }
+
+ /**
+ * Set the configured service level objective ID of the database. This is the service level objective that is in the process of being applied to the database. Once successfully updated, it will match the value of currentServiceObjectiveId property. If requestedServiceObjectiveId and requestedServiceObjectiveName are both updated, the value of requestedServiceObjectiveId overrides the value of requestedServiceObjectiveName. To see possible values, query the capabilities API (/subscriptions/{subscriptionId}/providers/Microsoft.Sql/locations/{locationID}/capabilities) referred to by operationId: "Capabilities_ListByLocation." or use the Azure CLI command `az sql db list-editions --location <location> --query [].supportedServiceLevelObjectives[].name` .
+ *
+ * @param requestedServiceObjectiveId the requestedServiceObjectiveId value to set
+ * @return the DatabaseInner object itself.
+ */
+ public DatabaseInner withRequestedServiceObjectiveId(UUID requestedServiceObjectiveId) {
+ this.requestedServiceObjectiveId = requestedServiceObjectiveId;
+ return this;
+ }
+
+ /**
+ * Get the name of the configured service level objective of the database. This is the service level objective that is in the process of being applied to the database. Once successfully updated, it will match the value of serviceLevelObjective property. To see possible values, query the capabilities API (/subscriptions/{subscriptionId}/providers/Microsoft.Sql/locations/{locationID}/capabilities) referred to by operationId: "Capabilities_ListByLocation." or use the Azure CLI command `az sql db list-editions --location <location> --query [].supportedServiceLevelObjectives[].name`. Possible values include: 'System', 'System0', 'System1', 'System2', 'System3', 'System4', 'System2L', 'System3L', 'System4L', 'Free', 'Basic', 'S0', 'S1', 'S2', 'S3', 'S4', 'S6', 'S7', 'S9', 'S12', 'P1', 'P2', 'P3', 'P4', 'P6', 'P11', 'P15', 'PRS1', 'PRS2', 'PRS4', 'PRS6', 'DW100', 'DW200', 'DW300', 'DW400', 'DW500', 'DW600', 'DW1000', 'DW1200', 'DW1000c', 'DW1500', 'DW1500c', 'DW2000', 'DW2000c', 'DW3000', 'DW2500c', 'DW3000c', 'DW6000', 'DW5000c', 'DW6000c', 'DW7500c', 'DW10000c', 'DW15000c', 'DW30000c', 'DS100', 'DS200', 'DS300', 'DS400', 'DS500', 'DS600', 'DS1000', 'DS1200', 'DS1500', 'DS2000', 'ElasticPool'.
+ *
+ * @return the requestedServiceObjectiveName value
+ */
+ public ServiceObjectiveName requestedServiceObjectiveName() {
+ return this.requestedServiceObjectiveName;
+ }
+
+ /**
+ * Set the name of the configured service level objective of the database. This is the service level objective that is in the process of being applied to the database. Once successfully updated, it will match the value of serviceLevelObjective property. To see possible values, query the capabilities API (/subscriptions/{subscriptionId}/providers/Microsoft.Sql/locations/{locationID}/capabilities) referred to by operationId: "Capabilities_ListByLocation." or use the Azure CLI command `az sql db list-editions --location <location> --query [].supportedServiceLevelObjectives[].name`. Possible values include: 'System', 'System0', 'System1', 'System2', 'System3', 'System4', 'System2L', 'System3L', 'System4L', 'Free', 'Basic', 'S0', 'S1', 'S2', 'S3', 'S4', 'S6', 'S7', 'S9', 'S12', 'P1', 'P2', 'P3', 'P4', 'P6', 'P11', 'P15', 'PRS1', 'PRS2', 'PRS4', 'PRS6', 'DW100', 'DW200', 'DW300', 'DW400', 'DW500', 'DW600', 'DW1000', 'DW1200', 'DW1000c', 'DW1500', 'DW1500c', 'DW2000', 'DW2000c', 'DW3000', 'DW2500c', 'DW3000c', 'DW6000', 'DW5000c', 'DW6000c', 'DW7500c', 'DW10000c', 'DW15000c', 'DW30000c', 'DS100', 'DS200', 'DS300', 'DS400', 'DS500', 'DS600', 'DS1000', 'DS1200', 'DS1500', 'DS2000', 'ElasticPool'.
+ *
+ * @param requestedServiceObjectiveName the requestedServiceObjectiveName value to set
+ * @return the DatabaseInner object itself.
+ */
+ public DatabaseInner withRequestedServiceObjectiveName(ServiceObjectiveName requestedServiceObjectiveName) {
+ this.requestedServiceObjectiveName = requestedServiceObjectiveName;
+ return this;
+ }
+
+ /**
+ * Get the current service level objective of the database. Possible values include: 'System', 'System0', 'System1', 'System2', 'System3', 'System4', 'System2L', 'System3L', 'System4L', 'Free', 'Basic', 'S0', 'S1', 'S2', 'S3', 'S4', 'S6', 'S7', 'S9', 'S12', 'P1', 'P2', 'P3', 'P4', 'P6', 'P11', 'P15', 'PRS1', 'PRS2', 'PRS4', 'PRS6', 'DW100', 'DW200', 'DW300', 'DW400', 'DW500', 'DW600', 'DW1000', 'DW1200', 'DW1000c', 'DW1500', 'DW1500c', 'DW2000', 'DW2000c', 'DW3000', 'DW2500c', 'DW3000c', 'DW6000', 'DW5000c', 'DW6000c', 'DW7500c', 'DW10000c', 'DW15000c', 'DW30000c', 'DS100', 'DS200', 'DS300', 'DS400', 'DS500', 'DS600', 'DS1000', 'DS1200', 'DS1500', 'DS2000', 'ElasticPool'.
+ *
+ * @return the serviceLevelObjective value
+ */
+ public ServiceObjectiveName serviceLevelObjective() {
+ return this.serviceLevelObjective;
+ }
+
+ /**
+ * Get the status of the database.
+ *
+ * @return the status value
+ */
+ public String status() {
+ return this.status;
+ }
+
+ /**
+ * Get the name of the elastic pool the database is in. If elasticPoolName and requestedServiceObjectiveName are both updated, the value of requestedServiceObjectiveName is ignored. Not supported for DataWarehouse edition.
+ *
+ * @return the elasticPoolName value
+ */
+ public String elasticPoolName() {
+ return this.elasticPoolName;
+ }
+
+ /**
+ * Set the name of the elastic pool the database is in. If elasticPoolName and requestedServiceObjectiveName are both updated, the value of requestedServiceObjectiveName is ignored. Not supported for DataWarehouse edition.
+ *
+ * @param elasticPoolName the elasticPoolName value to set
+ * @return the DatabaseInner object itself.
+ */
+ public DatabaseInner withElasticPoolName(String elasticPoolName) {
+ this.elasticPoolName = elasticPoolName;
+ return this;
+ }
+
+ /**
+ * Get the default secondary region for this database.
+ *
+ * @return the defaultSecondaryLocation value
+ */
+ public String defaultSecondaryLocation() {
+ return this.defaultSecondaryLocation;
+ }
+
+ /**
+ * Get the list of service tier advisors for this database. Expanded property.
+ *
+ * @return the serviceTierAdvisors value
+ */
+ public List serviceTierAdvisors() {
+ return this.serviceTierAdvisors;
+ }
+
+ /**
+ * Get the transparent data encryption info for this database.
+ *
+ * @return the transparentDataEncryption value
+ */
+ public List transparentDataEncryption() {
+ return this.transparentDataEncryption;
+ }
+
+ /**
+ * Get the recommended indices for this database.
+ *
+ * @return the recommendedIndex value
+ */
+ public List recommendedIndex() {
+ return this.recommendedIndex;
+ }
+
+ /**
+ * Get the resource identifier of the failover group containing this database.
+ *
+ * @return the failoverGroupId value
+ */
+ public String failoverGroupId() {
+ return this.failoverGroupId;
+ }
+
+ /**
+ * Get conditional. If the database is a geo-secondary, readScale indicates whether read-only connections are allowed to this database or not. Not supported for DataWarehouse edition. Possible values include: 'Enabled', 'Disabled'.
+ *
+ * @return the readScale value
+ */
+ public ReadScale readScale() {
+ return this.readScale;
+ }
+
+ /**
+ * Set conditional. If the database is a geo-secondary, readScale indicates whether read-only connections are allowed to this database or not. Not supported for DataWarehouse edition. Possible values include: 'Enabled', 'Disabled'.
+ *
+ * @param readScale the readScale value to set
+ * @return the DatabaseInner object itself.
+ */
+ public DatabaseInner withReadScale(ReadScale readScale) {
+ this.readScale = readScale;
+ return this;
+ }
+
+ /**
+ * Get indicates the name of the sample schema to apply when creating this database. If createMode is not Default, this value is ignored. Not supported for DataWarehouse edition. Possible values include: 'AdventureWorksLT'.
+ *
+ * @return the sampleName value
+ */
+ public SampleName sampleName() {
+ return this.sampleName;
+ }
+
+ /**
+ * Set indicates the name of the sample schema to apply when creating this database. If createMode is not Default, this value is ignored. Not supported for DataWarehouse edition. Possible values include: 'AdventureWorksLT'.
+ *
+ * @param sampleName the sampleName value to set
+ * @return the DatabaseInner object itself.
+ */
+ public DatabaseInner withSampleName(SampleName sampleName) {
+ this.sampleName = sampleName;
+ return this;
+ }
+
+ /**
+ * Get whether or not this database is zone redundant, which means the replicas of this database will be spread across multiple availability zones.
+ *
+ * @return the zoneRedundant value
+ */
+ public Boolean zoneRedundant() {
+ return this.zoneRedundant;
+ }
+
+ /**
+ * Set whether or not this database is zone redundant, which means the replicas of this database will be spread across multiple availability zones.
+ *
+ * @param zoneRedundant the zoneRedundant value to set
+ * @return the DatabaseInner object itself.
+ */
+ public DatabaseInner withZoneRedundant(Boolean zoneRedundant) {
+ this.zoneRedundant = zoneRedundant;
+ return this;
+ }
+
+}
diff --git a/sql/resource-manager/v2014_04_01/src/main/java/com/microsoft/azure/management/sql/v2014_04_01/implementation/DatabaseSecurityAlertPolicyImpl.java b/sql/resource-manager/v2014_04_01/src/main/java/com/microsoft/azure/management/sql/v2014_04_01/implementation/DatabaseSecurityAlertPolicyImpl.java
new file mode 100644
index 0000000000000..04b53bf0bcdee
--- /dev/null
+++ b/sql/resource-manager/v2014_04_01/src/main/java/com/microsoft/azure/management/sql/v2014_04_01/implementation/DatabaseSecurityAlertPolicyImpl.java
@@ -0,0 +1,202 @@
+/**
+ * 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.sql.v2014_04_01.implementation;
+
+import com.microsoft.azure.management.sql.v2014_04_01.DatabaseSecurityAlertPolicy;
+import com.microsoft.azure.arm.model.implementation.CreatableUpdatableImpl;
+import rx.Observable;
+import com.microsoft.azure.management.sql.v2014_04_01.SecurityAlertPolicyState;
+import com.microsoft.azure.management.sql.v2014_04_01.SecurityAlertPolicyEmailAccountAdmins;
+import com.microsoft.azure.management.sql.v2014_04_01.SecurityAlertPolicyUseServerDefault;
+
+class DatabaseSecurityAlertPolicyImpl extends CreatableUpdatableImpl implements DatabaseSecurityAlertPolicy, DatabaseSecurityAlertPolicy.Definition, DatabaseSecurityAlertPolicy.Update {
+ private final SqlManager manager;
+ private String resourceGroupName;
+ private String serverName;
+ private String databaseName;
+
+ DatabaseSecurityAlertPolicyImpl(String name, SqlManager manager) {
+ super(name, new DatabaseSecurityAlertPolicyInner());
+ this.manager = manager;
+ // Set resource name
+ this.databaseName = name;
+ //
+ }
+
+ DatabaseSecurityAlertPolicyImpl(DatabaseSecurityAlertPolicyInner inner, SqlManager manager) {
+ super(inner.name(), inner);
+ this.manager = manager;
+ // Set resource name
+ this.databaseName = inner.name();
+ // resource ancestor names
+ this.resourceGroupName = IdParsingUtils.getValueFromIdByName(inner.id(), "resourceGroups");
+ this.serverName = IdParsingUtils.getValueFromIdByName(inner.id(), "servers");
+ this.databaseName = IdParsingUtils.getValueFromIdByName(inner.id(), "databases");
+ //
+ }
+
+ @Override
+ public SqlManager manager() {
+ return this.manager;
+ }
+
+ @Override
+ public Observable createResourceAsync() {
+ DatabaseThreatDetectionPoliciesInner client = this.manager().inner().databaseThreatDetectionPolicies();
+ return client.createOrUpdateAsync(this.resourceGroupName, this.serverName, this.databaseName, this.inner())
+ .map(innerToFluentMap(this));
+ }
+
+ @Override
+ public Observable updateResourceAsync() {
+ DatabaseThreatDetectionPoliciesInner client = this.manager().inner().databaseThreatDetectionPolicies();
+ return client.createOrUpdateAsync(this.resourceGroupName, this.serverName, this.databaseName, this.inner())
+ .map(innerToFluentMap(this));
+ }
+
+ @Override
+ protected Observable getInnerAsync() {
+ DatabaseThreatDetectionPoliciesInner client = this.manager().inner().databaseThreatDetectionPolicies();
+ return client.getAsync(this.resourceGroupName, this.serverName, this.databaseName);
+ }
+
+ @Override
+ public boolean isInCreateMode() {
+ return this.inner().id() == null;
+ }
+
+
+ @Override
+ public String disabledAlerts() {
+ return this.inner().disabledAlerts();
+ }
+
+ @Override
+ public SecurityAlertPolicyEmailAccountAdmins emailAccountAdmins() {
+ return this.inner().emailAccountAdmins();
+ }
+
+ @Override
+ public String emailAddresses() {
+ return this.inner().emailAddresses();
+ }
+
+ @Override
+ public String id() {
+ return this.inner().id();
+ }
+
+ @Override
+ public String kind() {
+ return this.inner().kind();
+ }
+
+ @Override
+ public String location() {
+ return this.inner().location();
+ }
+
+ @Override
+ public String name() {
+ return this.inner().name();
+ }
+
+ @Override
+ public Integer retentionDays() {
+ return this.inner().retentionDays();
+ }
+
+ @Override
+ public SecurityAlertPolicyState state() {
+ return this.inner().state();
+ }
+
+ @Override
+ public String storageAccountAccessKey() {
+ return this.inner().storageAccountAccessKey();
+ }
+
+ @Override
+ public String storageEndpoint() {
+ return this.inner().storageEndpoint();
+ }
+
+ @Override
+ public String type() {
+ return this.inner().type();
+ }
+
+ @Override
+ public SecurityAlertPolicyUseServerDefault useServerDefault() {
+ return this.inner().useServerDefault();
+ }
+
+ @Override
+ public DatabaseSecurityAlertPolicyImpl withExistingDatabasis(String resourceGroupName, String serverName, String databaseName) {
+ this.resourceGroupName = resourceGroupName;
+ this.serverName = serverName;
+ this.databaseName = databaseName;
+ return this;
+ }
+
+ @Override
+ public DatabaseSecurityAlertPolicyImpl withState(SecurityAlertPolicyState state) {
+ this.inner().withState(state);
+ return this;
+ }
+
+ @Override
+ public DatabaseSecurityAlertPolicyImpl withDisabledAlerts(String disabledAlerts) {
+ this.inner().withDisabledAlerts(disabledAlerts);
+ return this;
+ }
+
+ @Override
+ public DatabaseSecurityAlertPolicyImpl withEmailAccountAdmins(SecurityAlertPolicyEmailAccountAdmins emailAccountAdmins) {
+ this.inner().withEmailAccountAdmins(emailAccountAdmins);
+ return this;
+ }
+
+ @Override
+ public DatabaseSecurityAlertPolicyImpl withEmailAddresses(String emailAddresses) {
+ this.inner().withEmailAddresses(emailAddresses);
+ return this;
+ }
+
+ @Override
+ public DatabaseSecurityAlertPolicyImpl withLocation(String location) {
+ this.inner().withLocation(location);
+ return this;
+ }
+
+ @Override
+ public DatabaseSecurityAlertPolicyImpl withRetentionDays(Integer retentionDays) {
+ this.inner().withRetentionDays(retentionDays);
+ return this;
+ }
+
+ @Override
+ public DatabaseSecurityAlertPolicyImpl withStorageAccountAccessKey(String storageAccountAccessKey) {
+ this.inner().withStorageAccountAccessKey(storageAccountAccessKey);
+ return this;
+ }
+
+ @Override
+ public DatabaseSecurityAlertPolicyImpl withStorageEndpoint(String storageEndpoint) {
+ this.inner().withStorageEndpoint(storageEndpoint);
+ return this;
+ }
+
+ @Override
+ public DatabaseSecurityAlertPolicyImpl withUseServerDefault(SecurityAlertPolicyUseServerDefault useServerDefault) {
+ this.inner().withUseServerDefault(useServerDefault);
+ return this;
+ }
+
+}
diff --git a/sql/resource-manager/v2014_04_01/src/main/java/com/microsoft/azure/management/sql/v2014_04_01/implementation/DatabaseSecurityAlertPolicyInner.java b/sql/resource-manager/v2014_04_01/src/main/java/com/microsoft/azure/management/sql/v2014_04_01/implementation/DatabaseSecurityAlertPolicyInner.java
new file mode 100644
index 0000000000000..7a528d7a582eb
--- /dev/null
+++ b/sql/resource-manager/v2014_04_01/src/main/java/com/microsoft/azure/management/sql/v2014_04_01/implementation/DatabaseSecurityAlertPolicyInner.java
@@ -0,0 +1,283 @@
+/**
+ * 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.sql.v2014_04_01.implementation;
+
+import com.microsoft.azure.management.sql.v2014_04_01.SecurityAlertPolicyState;
+import com.microsoft.azure.management.sql.v2014_04_01.SecurityAlertPolicyEmailAccountAdmins;
+import com.microsoft.azure.management.sql.v2014_04_01.SecurityAlertPolicyUseServerDefault;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.microsoft.rest.serializer.JsonFlatten;
+import com.microsoft.azure.ProxyResource;
+
+/**
+ * Contains information about a database Threat Detection policy.
+ */
+@JsonFlatten
+public class DatabaseSecurityAlertPolicyInner extends ProxyResource {
+ /**
+ * The geo-location where the resource lives.
+ */
+ @JsonProperty(value = "location")
+ private String location;
+
+ /**
+ * Resource kind.
+ */
+ @JsonProperty(value = "kind", access = JsonProperty.Access.WRITE_ONLY)
+ private String kind;
+
+ /**
+ * Specifies the state of the policy. If state is Enabled, storageEndpoint
+ * and storageAccountAccessKey are required. Possible values include:
+ * 'New', 'Enabled', 'Disabled'.
+ */
+ @JsonProperty(value = "properties.state", required = true)
+ private SecurityAlertPolicyState state;
+
+ /**
+ * Specifies the semicolon-separated list of alerts that are disabled, or
+ * empty string to disable no alerts. Possible values: Sql_Injection;
+ * Sql_Injection_Vulnerability; Access_Anomaly; Usage_Anomaly.
+ */
+ @JsonProperty(value = "properties.disabledAlerts")
+ private String disabledAlerts;
+
+ /**
+ * Specifies the semicolon-separated list of e-mail addresses to which the
+ * alert is sent.
+ */
+ @JsonProperty(value = "properties.emailAddresses")
+ private String emailAddresses;
+
+ /**
+ * Specifies that the alert is sent to the account administrators. Possible
+ * values include: 'Enabled', 'Disabled'.
+ */
+ @JsonProperty(value = "properties.emailAccountAdmins")
+ private SecurityAlertPolicyEmailAccountAdmins emailAccountAdmins;
+
+ /**
+ * Specifies the blob storage endpoint (e.g.
+ * https://MyAccount.blob.core.windows.net). This blob storage will hold
+ * all Threat Detection audit logs. If state is Enabled, storageEndpoint is
+ * required.
+ */
+ @JsonProperty(value = "properties.storageEndpoint")
+ private String storageEndpoint;
+
+ /**
+ * Specifies the identifier key of the Threat Detection audit storage
+ * account. If state is Enabled, storageAccountAccessKey is required.
+ */
+ @JsonProperty(value = "properties.storageAccountAccessKey")
+ private String storageAccountAccessKey;
+
+ /**
+ * Specifies the number of days to keep in the Threat Detection audit logs.
+ */
+ @JsonProperty(value = "properties.retentionDays")
+ private Integer retentionDays;
+
+ /**
+ * Specifies whether to use the default server policy. Possible values
+ * include: 'Enabled', 'Disabled'.
+ */
+ @JsonProperty(value = "properties.useServerDefault")
+ private SecurityAlertPolicyUseServerDefault useServerDefault;
+
+ /**
+ * Get the geo-location where the resource lives.
+ *
+ * @return the location value
+ */
+ public String location() {
+ return this.location;
+ }
+
+ /**
+ * Set the geo-location where the resource lives.
+ *
+ * @param location the location value to set
+ * @return the DatabaseSecurityAlertPolicyInner object itself.
+ */
+ public DatabaseSecurityAlertPolicyInner withLocation(String location) {
+ this.location = location;
+ return this;
+ }
+
+ /**
+ * Get resource kind.
+ *
+ * @return the kind value
+ */
+ public String kind() {
+ return this.kind;
+ }
+
+ /**
+ * Get specifies the state of the policy. If state is Enabled, storageEndpoint and storageAccountAccessKey are required. Possible values include: 'New', 'Enabled', 'Disabled'.
+ *
+ * @return the state value
+ */
+ public SecurityAlertPolicyState state() {
+ return this.state;
+ }
+
+ /**
+ * Set specifies the state of the policy. If state is Enabled, storageEndpoint and storageAccountAccessKey are required. Possible values include: 'New', 'Enabled', 'Disabled'.
+ *
+ * @param state the state value to set
+ * @return the DatabaseSecurityAlertPolicyInner object itself.
+ */
+ public DatabaseSecurityAlertPolicyInner withState(SecurityAlertPolicyState state) {
+ this.state = state;
+ return this;
+ }
+
+ /**
+ * Get specifies the semicolon-separated list of alerts that are disabled, or empty string to disable no alerts. Possible values: Sql_Injection; Sql_Injection_Vulnerability; Access_Anomaly; Usage_Anomaly.
+ *
+ * @return the disabledAlerts value
+ */
+ public String disabledAlerts() {
+ return this.disabledAlerts;
+ }
+
+ /**
+ * Set specifies the semicolon-separated list of alerts that are disabled, or empty string to disable no alerts. Possible values: Sql_Injection; Sql_Injection_Vulnerability; Access_Anomaly; Usage_Anomaly.
+ *
+ * @param disabledAlerts the disabledAlerts value to set
+ * @return the DatabaseSecurityAlertPolicyInner object itself.
+ */
+ public DatabaseSecurityAlertPolicyInner withDisabledAlerts(String disabledAlerts) {
+ this.disabledAlerts = disabledAlerts;
+ return this;
+ }
+
+ /**
+ * Get specifies the semicolon-separated list of e-mail addresses to which the alert is sent.
+ *
+ * @return the emailAddresses value
+ */
+ public String emailAddresses() {
+ return this.emailAddresses;
+ }
+
+ /**
+ * Set specifies the semicolon-separated list of e-mail addresses to which the alert is sent.
+ *
+ * @param emailAddresses the emailAddresses value to set
+ * @return the DatabaseSecurityAlertPolicyInner object itself.
+ */
+ public DatabaseSecurityAlertPolicyInner withEmailAddresses(String emailAddresses) {
+ this.emailAddresses = emailAddresses;
+ return this;
+ }
+
+ /**
+ * Get specifies that the alert is sent to the account administrators. Possible values include: 'Enabled', 'Disabled'.
+ *
+ * @return the emailAccountAdmins value
+ */
+ public SecurityAlertPolicyEmailAccountAdmins emailAccountAdmins() {
+ return this.emailAccountAdmins;
+ }
+
+ /**
+ * Set specifies that the alert is sent to the account administrators. Possible values include: 'Enabled', 'Disabled'.
+ *
+ * @param emailAccountAdmins the emailAccountAdmins value to set
+ * @return the DatabaseSecurityAlertPolicyInner object itself.
+ */
+ public DatabaseSecurityAlertPolicyInner withEmailAccountAdmins(SecurityAlertPolicyEmailAccountAdmins emailAccountAdmins) {
+ this.emailAccountAdmins = emailAccountAdmins;
+ return this;
+ }
+
+ /**
+ * Get specifies the blob storage endpoint (e.g. https://MyAccount.blob.core.windows.net). This blob storage will hold all Threat Detection audit logs. If state is Enabled, storageEndpoint is required.
+ *
+ * @return the storageEndpoint value
+ */
+ public String storageEndpoint() {
+ return this.storageEndpoint;
+ }
+
+ /**
+ * Set specifies the blob storage endpoint (e.g. https://MyAccount.blob.core.windows.net). This blob storage will hold all Threat Detection audit logs. If state is Enabled, storageEndpoint is required.
+ *
+ * @param storageEndpoint the storageEndpoint value to set
+ * @return the DatabaseSecurityAlertPolicyInner object itself.
+ */
+ public DatabaseSecurityAlertPolicyInner withStorageEndpoint(String storageEndpoint) {
+ this.storageEndpoint = storageEndpoint;
+ return this;
+ }
+
+ /**
+ * Get specifies the identifier key of the Threat Detection audit storage account. If state is Enabled, storageAccountAccessKey is required.
+ *
+ * @return the storageAccountAccessKey value
+ */
+ public String storageAccountAccessKey() {
+ return this.storageAccountAccessKey;
+ }
+
+ /**
+ * Set specifies the identifier key of the Threat Detection audit storage account. If state is Enabled, storageAccountAccessKey is required.
+ *
+ * @param storageAccountAccessKey the storageAccountAccessKey value to set
+ * @return the DatabaseSecurityAlertPolicyInner object itself.
+ */
+ public DatabaseSecurityAlertPolicyInner withStorageAccountAccessKey(String storageAccountAccessKey) {
+ this.storageAccountAccessKey = storageAccountAccessKey;
+ return this;
+ }
+
+ /**
+ * Get specifies the number of days to keep in the Threat Detection audit logs.
+ *
+ * @return the retentionDays value
+ */
+ public Integer retentionDays() {
+ return this.retentionDays;
+ }
+
+ /**
+ * Set specifies the number of days to keep in the Threat Detection audit logs.
+ *
+ * @param retentionDays the retentionDays value to set
+ * @return the DatabaseSecurityAlertPolicyInner object itself.
+ */
+ public DatabaseSecurityAlertPolicyInner withRetentionDays(Integer retentionDays) {
+ this.retentionDays = retentionDays;
+ return this;
+ }
+
+ /**
+ * Get specifies whether to use the default server policy. Possible values include: 'Enabled', 'Disabled'.
+ *
+ * @return the useServerDefault value
+ */
+ public SecurityAlertPolicyUseServerDefault useServerDefault() {
+ return this.useServerDefault;
+ }
+
+ /**
+ * Set specifies whether to use the default server policy. Possible values include: 'Enabled', 'Disabled'.
+ *
+ * @param useServerDefault the useServerDefault value to set
+ * @return the DatabaseSecurityAlertPolicyInner object itself.
+ */
+ public DatabaseSecurityAlertPolicyInner withUseServerDefault(SecurityAlertPolicyUseServerDefault useServerDefault) {
+ this.useServerDefault = useServerDefault;
+ return this;
+ }
+
+}
diff --git a/sql/resource-manager/v2014_04_01/src/main/java/com/microsoft/azure/management/sql/v2014_04_01/implementation/DatabaseThreatDetectionPoliciesImpl.java b/sql/resource-manager/v2014_04_01/src/main/java/com/microsoft/azure/management/sql/v2014_04_01/implementation/DatabaseThreatDetectionPoliciesImpl.java
new file mode 100644
index 0000000000000..0fcf96b45a379
--- /dev/null
+++ b/sql/resource-manager/v2014_04_01/src/main/java/com/microsoft/azure/management/sql/v2014_04_01/implementation/DatabaseThreatDetectionPoliciesImpl.java
@@ -0,0 +1,55 @@
+/**
+ * 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.sql.v2014_04_01.implementation;
+
+import com.microsoft.azure.arm.model.implementation.WrapperImpl;
+import com.microsoft.azure.management.sql.v2014_04_01.DatabaseThreatDetectionPolicies;
+import rx.Observable;
+import rx.functions.Func1;
+import com.microsoft.azure.management.sql.v2014_04_01.DatabaseSecurityAlertPolicy;
+
+class DatabaseThreatDetectionPoliciesImpl extends WrapperImpl implements DatabaseThreatDetectionPolicies {
+ private final SqlManager manager;
+
+ DatabaseThreatDetectionPoliciesImpl(SqlManager manager) {
+ super(manager.inner().databaseThreatDetectionPolicies());
+ this.manager = manager;
+ }
+
+ public SqlManager manager() {
+ return this.manager;
+ }
+
+ @Override
+ public DatabaseSecurityAlertPolicyImpl define(String name) {
+ return wrapModel(name);
+ }
+
+ private DatabaseSecurityAlertPolicyImpl wrapModel(DatabaseSecurityAlertPolicyInner inner) {
+ return new DatabaseSecurityAlertPolicyImpl(inner, manager());
+ }
+
+ private DatabaseSecurityAlertPolicyImpl wrapModel(String name) {
+ return new DatabaseSecurityAlertPolicyImpl(name, this.manager());
+ }
+
+ @Override
+ public Observable getAsync(String resourceGroupName, String serverName, String databaseName) {
+ DatabaseThreatDetectionPoliciesInner client = this.inner();
+ return client.getAsync(resourceGroupName, serverName, databaseName)
+ .map(new Func1() {
+ @Override
+ public DatabaseSecurityAlertPolicy call(DatabaseSecurityAlertPolicyInner inner) {
+ return wrapModel(inner);
+ }
+ });
+ }
+
+}
diff --git a/sql/resource-manager/v2014_04_01/src/main/java/com/microsoft/azure/management/sql/v2014_04_01/implementation/DatabaseThreatDetectionPoliciesInner.java b/sql/resource-manager/v2014_04_01/src/main/java/com/microsoft/azure/management/sql/v2014_04_01/implementation/DatabaseThreatDetectionPoliciesInner.java
new file mode 100644
index 0000000000000..75e528ee51d35
--- /dev/null
+++ b/sql/resource-manager/v2014_04_01/src/main/java/com/microsoft/azure/management/sql/v2014_04_01/implementation/DatabaseThreatDetectionPoliciesInner.java
@@ -0,0 +1,264 @@
+/**
+ * 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.sql.v2014_04_01.implementation;
+
+import retrofit2.Retrofit;
+import com.google.common.reflect.TypeToken;
+import com.microsoft.azure.CloudException;
+import com.microsoft.rest.ServiceCallback;
+import com.microsoft.rest.ServiceFuture;
+import com.microsoft.rest.ServiceResponse;
+import com.microsoft.rest.Validator;
+import java.io.IOException;
+import okhttp3.ResponseBody;
+import retrofit2.http.Body;
+import retrofit2.http.GET;
+import retrofit2.http.Header;
+import retrofit2.http.Headers;
+import retrofit2.http.Path;
+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 DatabaseThreatDetectionPolicies.
+ */
+public class DatabaseThreatDetectionPoliciesInner {
+ /** The Retrofit service to perform REST calls. */
+ private DatabaseThreatDetectionPoliciesService service;
+ /** The service client containing this operation class. */
+ private SqlManagementClientImpl client;
+
+ /**
+ * Initializes an instance of DatabaseThreatDetectionPoliciesInner.
+ *
+ * @param retrofit the Retrofit instance built from a Retrofit Builder.
+ * @param client the instance of the service client containing this operation class.
+ */
+ public DatabaseThreatDetectionPoliciesInner(Retrofit retrofit, SqlManagementClientImpl client) {
+ this.service = retrofit.create(DatabaseThreatDetectionPoliciesService.class);
+ this.client = client;
+ }
+
+ /**
+ * The interface defining all the services for DatabaseThreatDetectionPolicies to be
+ * used by Retrofit to perform actually REST calls.
+ */
+ interface DatabaseThreatDetectionPoliciesService {
+ @Headers({ "Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.management.sql.v2014_04_01.DatabaseThreatDetectionPolicies get" })
+ @GET("subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/databases/{databaseName}/securityAlertPolicies/{securityAlertPolicyName}")
+ Observable> get(@Path("subscriptionId") String subscriptionId, @Path("resourceGroupName") String resourceGroupName, @Path("serverName") String serverName, @Path("databaseName") String databaseName, @Path("securityAlertPolicyName") String securityAlertPolicyName, @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.sql.v2014_04_01.DatabaseThreatDetectionPolicies createOrUpdate" })
+ @PUT("subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/databases/{databaseName}/securityAlertPolicies/{securityAlertPolicyName}")
+ Observable> createOrUpdate(@Path("subscriptionId") String subscriptionId, @Path("resourceGroupName") String resourceGroupName, @Path("serverName") String serverName, @Path("databaseName") String databaseName, @Path("securityAlertPolicyName") String securityAlertPolicyName, @Body DatabaseSecurityAlertPolicyInner parameters, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Header("User-Agent") String userAgent);
+
+ }
+
+ /**
+ * Gets a database's threat detection policy.
+ *
+ * @param resourceGroupName The name of the resource group that contains the resource. You can obtain this value from the Azure Resource Manager API or the portal.
+ * @param serverName The name of the server.
+ * @param databaseName The name of the database for which database Threat Detection policy is defined.
+ * @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 DatabaseSecurityAlertPolicyInner object if successful.
+ */
+ public DatabaseSecurityAlertPolicyInner get(String resourceGroupName, String serverName, String databaseName) {
+ return getWithServiceResponseAsync(resourceGroupName, serverName, databaseName).toBlocking().single().body();
+ }
+
+ /**
+ * Gets a database's threat detection policy.
+ *
+ * @param resourceGroupName The name of the resource group that contains the resource. You can obtain this value from the Azure Resource Manager API or the portal.
+ * @param serverName The name of the server.
+ * @param databaseName The name of the database for which database Threat Detection policy is defined.
+ * @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 serverName, String databaseName, final ServiceCallback serviceCallback) {
+ return ServiceFuture.fromResponse(getWithServiceResponseAsync(resourceGroupName, serverName, databaseName), serviceCallback);
+ }
+
+ /**
+ * Gets a database's threat detection policy.
+ *
+ * @param resourceGroupName The name of the resource group that contains the resource. You can obtain this value from the Azure Resource Manager API or the portal.
+ * @param serverName The name of the server.
+ * @param databaseName The name of the database for which database Threat Detection policy is defined.
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @return the observable to the DatabaseSecurityAlertPolicyInner object
+ */
+ public Observable getAsync(String resourceGroupName, String serverName, String databaseName) {
+ return getWithServiceResponseAsync(resourceGroupName, serverName, databaseName).map(new Func1, DatabaseSecurityAlertPolicyInner>() {
+ @Override
+ public DatabaseSecurityAlertPolicyInner call(ServiceResponse response) {
+ return response.body();
+ }
+ });
+ }
+
+ /**
+ * Gets a database's threat detection policy.
+ *
+ * @param resourceGroupName The name of the resource group that contains the resource. You can obtain this value from the Azure Resource Manager API or the portal.
+ * @param serverName The name of the server.
+ * @param databaseName The name of the database for which database Threat Detection policy is defined.
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @return the observable to the DatabaseSecurityAlertPolicyInner object
+ */
+ public Observable> getWithServiceResponseAsync(String resourceGroupName, String serverName, String databaseName) {
+ if (this.client.subscriptionId() == null) {
+ throw new IllegalArgumentException("Parameter this.client.subscriptionId() is required and cannot be null.");
+ }
+ if (resourceGroupName == null) {
+ throw new IllegalArgumentException("Parameter resourceGroupName is required and cannot be null.");
+ }
+ if (serverName == null) {
+ throw new IllegalArgumentException("Parameter serverName is required and cannot be null.");
+ }
+ if (databaseName == null) {
+ throw new IllegalArgumentException("Parameter databaseName 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 String securityAlertPolicyName = "default";
+ return service.get(this.client.subscriptionId(), resourceGroupName, serverName, databaseName, securityAlertPolicyName, 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);
+ }
+
+ /**
+ * Creates or updates a database's threat detection policy.
+ *
+ * @param resourceGroupName The name of the resource group that contains the resource. You can obtain this value from the Azure Resource Manager API or the portal.
+ * @param serverName The name of the server.
+ * @param databaseName The name of the database for which database Threat Detection policy is defined.
+ * @param parameters The database Threat Detection policy.
+ * @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 DatabaseSecurityAlertPolicyInner object if successful.
+ */
+ public DatabaseSecurityAlertPolicyInner createOrUpdate(String resourceGroupName, String serverName, String databaseName, DatabaseSecurityAlertPolicyInner parameters) {
+ return createOrUpdateWithServiceResponseAsync(resourceGroupName, serverName, databaseName, parameters).toBlocking().single().body();
+ }
+
+ /**
+ * Creates or updates a database's threat detection policy.
+ *
+ * @param resourceGroupName The name of the resource group that contains the resource. You can obtain this value from the Azure Resource Manager API or the portal.
+ * @param serverName The name of the server.
+ * @param databaseName The name of the database for which database Threat Detection policy is defined.
+ * @param parameters The database Threat Detection policy.
+ * @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 createOrUpdateAsync(String resourceGroupName, String serverName, String databaseName, DatabaseSecurityAlertPolicyInner parameters, final ServiceCallback serviceCallback) {
+ return ServiceFuture.fromResponse(createOrUpdateWithServiceResponseAsync(resourceGroupName, serverName, databaseName, parameters), serviceCallback);
+ }
+
+ /**
+ * Creates or updates a database's threat detection policy.
+ *
+ * @param resourceGroupName The name of the resource group that contains the resource. You can obtain this value from the Azure Resource Manager API or the portal.
+ * @param serverName The name of the server.
+ * @param databaseName The name of the database for which database Threat Detection policy is defined.
+ * @param parameters The database Threat Detection policy.
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @return the observable to the DatabaseSecurityAlertPolicyInner object
+ */
+ public Observable createOrUpdateAsync(String resourceGroupName, String serverName, String databaseName, DatabaseSecurityAlertPolicyInner parameters) {
+ return createOrUpdateWithServiceResponseAsync(resourceGroupName, serverName, databaseName, parameters).map(new Func1, DatabaseSecurityAlertPolicyInner>() {
+ @Override
+ public DatabaseSecurityAlertPolicyInner call(ServiceResponse response) {
+ return response.body();
+ }
+ });
+ }
+
+ /**
+ * Creates or updates a database's threat detection policy.
+ *
+ * @param resourceGroupName The name of the resource group that contains the resource. You can obtain this value from the Azure Resource Manager API or the portal.
+ * @param serverName The name of the server.
+ * @param databaseName The name of the database for which database Threat Detection policy is defined.
+ * @param parameters The database Threat Detection policy.
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @return the observable to the DatabaseSecurityAlertPolicyInner object
+ */
+ public Observable> createOrUpdateWithServiceResponseAsync(String resourceGroupName, String serverName, String databaseName, DatabaseSecurityAlertPolicyInner parameters) {
+ if (this.client.subscriptionId() == null) {
+ throw new IllegalArgumentException("Parameter this.client.subscriptionId() is required and cannot be null.");
+ }
+ if (resourceGroupName == null) {
+ throw new IllegalArgumentException("Parameter resourceGroupName is required and cannot be null.");
+ }
+ if (serverName == null) {
+ throw new IllegalArgumentException("Parameter serverName is required and cannot be null.");
+ }
+ if (databaseName == null) {
+ throw new IllegalArgumentException("Parameter databaseName is required and cannot be null.");
+ }
+ if (parameters == null) {
+ throw new IllegalArgumentException("Parameter parameters 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(parameters);
+ final String securityAlertPolicyName = "default";
+ return service.createOrUpdate(this.client.subscriptionId(), resourceGroupName, serverName, databaseName, securityAlertPolicyName, parameters, this.client.apiVersion(), this.client.acceptLanguage(), this.client.userAgent())
+ .flatMap(new Func1, Observable>>() {
+ @Override
+ public Observable> call(Response response) {
+ try {
+ ServiceResponse clientResponse = createOrUpdateDelegate(response);
+ return Observable.just(clientResponse);
+ } catch (Throwable t) {
+ return Observable.error(t);
+ }
+ }
+ });
+ }
+
+ private ServiceResponse createOrUpdateDelegate(Response response) throws CloudException, IOException, IllegalArgumentException {
+ return this.client.restClient().responseBuilderFactory().newInstance(this.client.serializerAdapter())
+ .register(200, new TypeToken() { }.getType())
+ .register(201, new TypeToken() { }.getType())
+ .registerError(CloudException.class)
+ .build(response);
+ }
+
+}
diff --git a/sql/resource-manager/v2014_04_01/src/main/java/com/microsoft/azure/management/sql/v2014_04_01/implementation/DatabasesImpl.java b/sql/resource-manager/v2014_04_01/src/main/java/com/microsoft/azure/management/sql/v2014_04_01/implementation/DatabasesImpl.java
new file mode 100644
index 0000000000000..a1e17953b8ea5
--- /dev/null
+++ b/sql/resource-manager/v2014_04_01/src/main/java/com/microsoft/azure/management/sql/v2014_04_01/implementation/DatabasesImpl.java
@@ -0,0 +1,193 @@
+/**
+ * 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.sql.v2014_04_01.implementation;
+
+import com.microsoft.azure.arm.model.implementation.WrapperImpl;
+import com.microsoft.azure.management.sql.v2014_04_01.Databases;
+import rx.Completable;
+import rx.Observable;
+import rx.functions.Func1;
+import java.util.List;
+import com.microsoft.azure.management.sql.v2014_04_01.Database;
+import com.microsoft.azure.management.sql.v2014_04_01.ImportExportResponse;
+import com.microsoft.azure.management.sql.v2014_04_01.ExportRequest;
+import com.microsoft.azure.management.sql.v2014_04_01.ImportRequest;
+
+class DatabasesImpl extends WrapperImpl implements Databases {
+ private final SqlManager manager;
+
+ DatabasesImpl(SqlManager manager) {
+ super(manager.inner().databases());
+ this.manager = manager;
+ }
+
+ public SqlManager manager() {
+ return this.manager;
+ }
+
+ @Override
+ public DatabaseImpl define(String name) {
+ return wrapModel(name);
+ }
+
+ private DatabaseImpl wrapModel(DatabaseInner inner) {
+ return new DatabaseImpl(inner, manager());
+ }
+
+ private DatabaseImpl wrapModel(String name) {
+ return new DatabaseImpl(name, this.manager());
+ }
+
+ @Override
+ public Completable pauseAsync(String resourceGroupName, String serverName, String databaseName) {
+ DatabasesInner client = this.inner();
+ return client.pauseAsync(resourceGroupName, serverName, databaseName).toCompletable();
+ }
+
+ @Override
+ public Completable resumeAsync(String resourceGroupName, String serverName, String databaseName) {
+ DatabasesInner client = this.inner();
+ return client.resumeAsync(resourceGroupName, serverName, databaseName).toCompletable();
+ }
+
+ @Override
+ public Observable getByElasticPoolAsync(String resourceGroupName, String serverName, String elasticPoolName, String databaseName) {
+ DatabasesInner client = this.inner();
+ return client.getByElasticPoolAsync(resourceGroupName, serverName, elasticPoolName, databaseName)
+ .map(new Func1() {
+ @Override
+ public Database call(DatabaseInner inner) {
+ return new DatabaseImpl(inner, manager());
+ }
+ });
+ }
+
+ @Override
+ public Observable listByElasticPoolAsync(String resourceGroupName, String serverName, String elasticPoolName) {
+ DatabasesInner client = this.inner();
+ return client.listByElasticPoolAsync(resourceGroupName, serverName, elasticPoolName)
+ .flatMap(new Func1, Observable>() {
+ @Override
+ public Observable call(List innerList) {
+ return Observable.from(innerList);
+ }
+ })
+ .map(new Func1() {
+ @Override
+ public Database call(DatabaseInner inner) {
+ return new DatabaseImpl(inner, manager());
+ }
+ });
+ }
+
+ @Override
+ public Observable getByRecommendedElasticPoolAsync(String resourceGroupName, String serverName, String recommendedElasticPoolName, String databaseName) {
+ DatabasesInner client = this.inner();
+ return client.getByRecommendedElasticPoolAsync(resourceGroupName, serverName, recommendedElasticPoolName, databaseName)
+ .map(new Func1() {
+ @Override
+ public Database call(DatabaseInner inner) {
+ return new DatabaseImpl(inner, manager());
+ }
+ });
+ }
+
+ @Override
+ public Observable listByRecommendedElasticPoolAsync(String resourceGroupName, String serverName, String recommendedElasticPoolName) {
+ DatabasesInner client = this.inner();
+ return client.listByRecommendedElasticPoolAsync(resourceGroupName, serverName, recommendedElasticPoolName)
+ .flatMap(new Func1, Observable>() {
+ @Override
+ public Observable call(List innerList) {
+ return Observable.from(innerList);
+ }
+ })
+ .map(new Func1() {
+ @Override
+ public Database call(DatabaseInner inner) {
+ return new DatabaseImpl(inner, manager());
+ }
+ });
+ }
+
+ @Override
+ public Observable exportAsync(String resourceGroupName, String serverName, String databaseName, ExportRequest parameters) {
+ DatabasesInner client = this.inner();
+ return client.exportAsync(resourceGroupName, serverName, databaseName, parameters)
+ .map(new Func1() {
+ @Override
+ public ImportExportResponse call(ImportExportResponseInner inner) {
+ return new ImportExportResponseImpl(inner, manager());
+ }
+ });
+ }
+
+ @Override
+ public Observable listByServerAsync(String resourceGroupName, String serverName) {
+ DatabasesInner client = this.inner();
+ return client.listByServerAsync(resourceGroupName, serverName)
+ .flatMap(new Func1, Observable>() {
+ @Override
+ public Observable call(List innerList) {
+ return Observable.from(innerList);
+ }
+ })
+ .map(new Func1() {
+ @Override
+ public Database call(DatabaseInner inner) {
+ return wrapModel(inner);
+ }
+ });
+ }
+
+ @Override
+ public Observable getAsync(String resourceGroupName, String serverName, String databaseName) {
+ DatabasesInner client = this.inner();
+ return client.getAsync(resourceGroupName, serverName, databaseName)
+ .map(new Func1() {
+ @Override
+ public Database call(DatabaseInner inner) {
+ return wrapModel(inner);
+ }
+ });
+ }
+
+ @Override
+ public Completable deleteAsync(String resourceGroupName, String serverName, String databaseName) {
+ DatabasesInner client = this.inner();
+ return client.deleteAsync(resourceGroupName, serverName, databaseName).toCompletable();
+ }
+
+ @Override
+ public ImportExportResponseImpl defineExtension(String name) {
+ return wrapExtensionModel(name);
+ }
+
+ private ImportExportResponseImpl wrapExtensionModel(String name) {
+ return new ImportExportResponseImpl(name, this.manager());
+ }
+
+ private ImportExportResponseImpl wrapImportExportResponseModel(ImportExportResponseInner inner) {
+ return new ImportExportResponseImpl(inner, manager());
+ }
+
+ @Override
+ public Observable importMethodAsync(String resourceGroupName, String serverName, ImportRequest parameters) {
+ DatabasesInner client = this.inner();
+ return client.importMethodAsync(resourceGroupName, serverName, parameters)
+ .map(new Func1() {
+ @Override
+ public ImportExportResponse call(ImportExportResponseInner inner) {
+ return new ImportExportResponseImpl(inner, manager());
+ }
+ });
+ }
+
+}
diff --git a/sql/resource-manager/v2014_04_01/src/main/java/com/microsoft/azure/management/sql/v2014_04_01/implementation/DatabasesInner.java b/sql/resource-manager/v2014_04_01/src/main/java/com/microsoft/azure/management/sql/v2014_04_01/implementation/DatabasesInner.java
new file mode 100644
index 0000000000000..d1ccf2cecc619
--- /dev/null
+++ b/sql/resource-manager/v2014_04_01/src/main/java/com/microsoft/azure/management/sql/v2014_04_01/implementation/DatabasesInner.java
@@ -0,0 +1,2264 @@
+/**
+ * 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.sql.v2014_04_01.implementation;
+
+import retrofit2.Retrofit;
+import com.google.common.reflect.TypeToken;
+import com.microsoft.azure.CloudException;
+import com.microsoft.azure.management.sql.v2014_04_01.DatabaseUpdate;
+import com.microsoft.azure.management.sql.v2014_04_01.ExportRequest;
+import com.microsoft.azure.management.sql.v2014_04_01.ImportExtensionRequest;
+import com.microsoft.azure.management.sql.v2014_04_01.ImportRequest;
+import com.microsoft.rest.ServiceCallback;
+import com.microsoft.rest.ServiceFuture;
+import com.microsoft.rest.ServiceResponse;
+import com.microsoft.rest.Validator;
+import java.io.IOException;
+import java.util.List;
+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 Databases.
+ */
+public class DatabasesInner {
+ /** The Retrofit service to perform REST calls. */
+ private DatabasesService service;
+ /** The service client containing this operation class. */
+ private SqlManagementClientImpl client;
+
+ /**
+ * Initializes an instance of DatabasesInner.
+ *
+ * @param retrofit the Retrofit instance built from a Retrofit Builder.
+ * @param client the instance of the service client containing this operation class.
+ */
+ public DatabasesInner(Retrofit retrofit, SqlManagementClientImpl client) {
+ this.service = retrofit.create(DatabasesService.class);
+ this.client = client;
+ }
+
+ /**
+ * The interface defining all the services for Databases to be
+ * used by Retrofit to perform actually REST calls.
+ */
+ interface DatabasesService {
+ @Headers({ "Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.management.sql.v2014_04_01.Databases pause" })
+ @POST("subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/databases/{databaseName}/pause")
+ Observable> pause(@Path("subscriptionId") String subscriptionId, @Path("resourceGroupName") String resourceGroupName, @Path("serverName") String serverName, @Path("databaseName") String databaseName, @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.sql.v2014_04_01.Databases beginPause" })
+ @POST("subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/databases/{databaseName}/pause")
+ Observable> beginPause(@Path("subscriptionId") String subscriptionId, @Path("resourceGroupName") String resourceGroupName, @Path("serverName") String serverName, @Path("databaseName") String databaseName, @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.sql.v2014_04_01.Databases resume" })
+ @POST("subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/databases/{databaseName}/resume")
+ Observable> resume(@Path("subscriptionId") String subscriptionId, @Path("resourceGroupName") String resourceGroupName, @Path("serverName") String serverName, @Path("databaseName") String databaseName, @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.sql.v2014_04_01.Databases beginResume" })
+ @POST("subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/databases/{databaseName}/resume")
+ Observable> beginResume(@Path("subscriptionId") String subscriptionId, @Path("resourceGroupName") String resourceGroupName, @Path("serverName") String serverName, @Path("databaseName") String databaseName, @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.sql.v2014_04_01.Databases createOrUpdate" })
+ @PUT("subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/databases/{databaseName}")
+ Observable> createOrUpdate(@Path("subscriptionId") String subscriptionId, @Path("resourceGroupName") String resourceGroupName, @Path("serverName") String serverName, @Path("databaseName") String databaseName, @Query("api-version") String apiVersion, @Body DatabaseInner parameters, @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.sql.v2014_04_01.Databases beginCreateOrUpdate" })
+ @PUT("subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/databases/{databaseName}")
+ Observable> beginCreateOrUpdate(@Path("subscriptionId") String subscriptionId, @Path("resourceGroupName") String resourceGroupName, @Path("serverName") String serverName, @Path("databaseName") String databaseName, @Query("api-version") String apiVersion, @Body DatabaseInner parameters, @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.sql.v2014_04_01.Databases update" })
+ @PATCH("subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/databases/{databaseName}")
+ Observable> update(@Path("subscriptionId") String subscriptionId, @Path("resourceGroupName") String resourceGroupName, @Path("serverName") String serverName, @Path("databaseName") String databaseName, @Query("api-version") String apiVersion, @Body DatabaseUpdate parameters, @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.sql.v2014_04_01.Databases beginUpdate" })
+ @PATCH("subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/databases/{databaseName}")
+ Observable> beginUpdate(@Path("subscriptionId") String subscriptionId, @Path("resourceGroupName") String resourceGroupName, @Path("serverName") String serverName, @Path("databaseName") String databaseName, @Query("api-version") String apiVersion, @Body DatabaseUpdate parameters, @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.sql.v2014_04_01.Databases delete" })
+ @HTTP(path = "subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/databases/{databaseName}", method = "DELETE", hasBody = true)
+ Observable> delete(@Path("subscriptionId") String subscriptionId, @Path("resourceGroupName") String resourceGroupName, @Path("serverName") String serverName, @Path("databaseName") String databaseName, @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.sql.v2014_04_01.Databases get" })
+ @GET("subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/databases/{databaseName}")
+ Observable> get(@Path("subscriptionId") String subscriptionId, @Path("resourceGroupName") String resourceGroupName, @Path("serverName") String serverName, @Path("databaseName") String databaseName, @Query("api-version") String apiVersion, @Query("$expand") String expand, @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.sql.v2014_04_01.Databases listByServer" })
+ @GET("subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/databases")
+ Observable> listByServer(@Path("subscriptionId") String subscriptionId, @Path("resourceGroupName") String resourceGroupName, @Path("serverName") String serverName, @Query("api-version") String apiVersion, @Query("$expand") String expand, @Query("$filter") String filter, @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.sql.v2014_04_01.Databases getByElasticPool" })
+ @GET("subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/elasticPools/{elasticPoolName}/databases/{databaseName}")
+ Observable> getByElasticPool(@Path("subscriptionId") String subscriptionId, @Path("resourceGroupName") String resourceGroupName, @Path("serverName") String serverName, @Path("elasticPoolName") String elasticPoolName, @Path("databaseName") String databaseName, @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.sql.v2014_04_01.Databases listByElasticPool" })
+ @GET("subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/elasticPools/{elasticPoolName}/databases")
+ Observable> listByElasticPool(@Path("subscriptionId") String subscriptionId, @Path("resourceGroupName") String resourceGroupName, @Path("serverName") String serverName, @Path("elasticPoolName") String elasticPoolName, @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.sql.v2014_04_01.Databases getByRecommendedElasticPool" })
+ @GET("subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/recommendedElasticPools/{recommendedElasticPoolName}/databases/{databaseName}")
+ Observable> getByRecommendedElasticPool(@Path("subscriptionId") String subscriptionId, @Path("resourceGroupName") String resourceGroupName, @Path("serverName") String serverName, @Path("recommendedElasticPoolName") String recommendedElasticPoolName, @Path("databaseName") String databaseName, @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.sql.v2014_04_01.Databases listByRecommendedElasticPool" })
+ @GET("subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/recommendedElasticPools/{recommendedElasticPoolName}/databases")
+ Observable> listByRecommendedElasticPool(@Path("subscriptionId") String subscriptionId, @Path("resourceGroupName") String resourceGroupName, @Path("serverName") String serverName, @Path("recommendedElasticPoolName") String recommendedElasticPoolName, @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.sql.v2014_04_01.Databases importMethod" })
+ @POST("subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/import")
+ Observable> importMethod(@Path("subscriptionId") String subscriptionId, @Path("resourceGroupName") String resourceGroupName, @Path("serverName") String serverName, @Query("api-version") String apiVersion, @Body ImportRequest parameters, @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.sql.v2014_04_01.Databases beginImportMethod" })
+ @POST("subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/import")
+ Observable> beginImportMethod(@Path("subscriptionId") String subscriptionId, @Path("resourceGroupName") String resourceGroupName, @Path("serverName") String serverName, @Query("api-version") String apiVersion, @Body ImportRequest parameters, @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.sql.v2014_04_01.Databases createImportOperation" })
+ @PUT("subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/databases/{databaseName}/extensions/{extensionName}")
+ Observable> createImportOperation(@Path("subscriptionId") String subscriptionId, @Path("resourceGroupName") String resourceGroupName, @Path("serverName") String serverName, @Path("databaseName") String databaseName, @Path("extensionName") String extensionName, @Query("api-version") String apiVersion, @Body ImportExtensionRequest parameters, @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.sql.v2014_04_01.Databases beginCreateImportOperation" })
+ @PUT("subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/databases/{databaseName}/extensions/{extensionName}")
+ Observable> beginCreateImportOperation(@Path("subscriptionId") String subscriptionId, @Path("resourceGroupName") String resourceGroupName, @Path("serverName") String serverName, @Path("databaseName") String databaseName, @Path("extensionName") String extensionName, @Query("api-version") String apiVersion, @Body ImportExtensionRequest parameters, @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.sql.v2014_04_01.Databases export" })
+ @POST("subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/databases/{databaseName}/export")
+ Observable> export(@Path("subscriptionId") String subscriptionId, @Path("resourceGroupName") String resourceGroupName, @Path("serverName") String serverName, @Path("databaseName") String databaseName, @Query("api-version") String apiVersion, @Body ExportRequest parameters, @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.sql.v2014_04_01.Databases beginExport" })
+ @POST("subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/databases/{databaseName}/export")
+ Observable> beginExport(@Path("subscriptionId") String subscriptionId, @Path("resourceGroupName") String resourceGroupName, @Path("serverName") String serverName, @Path("databaseName") String databaseName, @Query("api-version") String apiVersion, @Body ExportRequest parameters, @Header("accept-language") String acceptLanguage, @Header("User-Agent") String userAgent);
+
+ }
+
+ /**
+ * Pauses a data warehouse.
+ *
+ * @param resourceGroupName The name of the resource group that contains the resource. You can obtain this value from the Azure Resource Manager API or the portal.
+ * @param serverName The name of the server.
+ * @param databaseName The name of the data warehouse to pause.
+ * @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 pause(String resourceGroupName, String serverName, String databaseName) {
+ pauseWithServiceResponseAsync(resourceGroupName, serverName, databaseName).toBlocking().last().body();
+ }
+
+ /**
+ * Pauses a data warehouse.
+ *
+ * @param resourceGroupName The name of the resource group that contains the resource. You can obtain this value from the Azure Resource Manager API or the portal.
+ * @param serverName The name of the server.
+ * @param databaseName The name of the data warehouse to pause.
+ * @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 pauseAsync(String resourceGroupName, String serverName, String databaseName, final ServiceCallback serviceCallback) {
+ return ServiceFuture.fromResponse(pauseWithServiceResponseAsync(resourceGroupName, serverName, databaseName), serviceCallback);
+ }
+
+ /**
+ * Pauses a data warehouse.
+ *
+ * @param resourceGroupName The name of the resource group that contains the resource. You can obtain this value from the Azure Resource Manager API or the portal.
+ * @param serverName The name of the server.
+ * @param databaseName The name of the data warehouse to pause.
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @return the observable for the request
+ */
+ public Observable