diff --git a/sdk/billing/mgmt-v2020_05_01/pom.xml b/sdk/billing/mgmt-v2020_05_01/pom.xml
new file mode 100644
index 0000000000000..85335405e8fa1
--- /dev/null
+++ b/sdk/billing/mgmt-v2020_05_01/pom.xml
@@ -0,0 +1,135 @@
+
+
+ 4.0.0
+ com.microsoft.azure.billing.v2020_05_01
+
+ com.microsoft.azure
+ azure-arm-parent
+ 1.1.0
+ ../../../pom.management.xml
+
+ azure-mgmt-billing
+ 1.0.0-beta
+ jar
+ Microsoft Azure SDK for Billing Management
+ This package contains Microsoft Billing Management SDK.
+ https://github.com/Azure/azure-sdk-for-java
+
+
+ The MIT License (MIT)
+ http://opensource.org/licenses/MIT
+ repo
+
+
+
+ scm:git:https://github.com/Azure/azure-sdk-for-java
+ scm:git:git@github.com:Azure/azure-sdk-for-java.git
+ HEAD
+
+
+ UTF-8
+
+
+
+
+ microsoft
+ Microsoft
+
+
+
+
+ com.microsoft.azure
+ azure-client-runtime
+
+
+ com.microsoft.azure
+ azure-arm-client-runtime
+
+
+ junit
+ junit
+ test
+
+
+ com.microsoft.azure
+ azure-client-authentication
+ test
+
+
+ com.microsoft.azure
+ azure-mgmt-resources
+ test
+
+
+ com.microsoft.azure
+ azure-arm-client-runtime
+ test-jar
+ test
+
+ 1.6.5
+
+
+
+
+
+ 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/sdk/billing/mgmt-v2020_05_01/src/main/java/com/microsoft/azure/management/billing/v2020_05_01/AcceptanceMode.java b/sdk/billing/mgmt-v2020_05_01/src/main/java/com/microsoft/azure/management/billing/v2020_05_01/AcceptanceMode.java
new file mode 100644
index 0000000000000..1e4eabd0616b9
--- /dev/null
+++ b/sdk/billing/mgmt-v2020_05_01/src/main/java/com/microsoft/azure/management/billing/v2020_05_01/AcceptanceMode.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.billing.v2020_05_01;
+
+import java.util.Collection;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.microsoft.rest.ExpandableStringEnum;
+
+/**
+ * Defines values for AcceptanceMode.
+ */
+public final class AcceptanceMode extends ExpandableStringEnum {
+ /** Static value ClickToAccept for AcceptanceMode. */
+ public static final AcceptanceMode CLICK_TO_ACCEPT = fromString("ClickToAccept");
+
+ /** Static value ESignEmbedded for AcceptanceMode. */
+ public static final AcceptanceMode ESIGN_EMBEDDED = fromString("ESignEmbedded");
+
+ /** Static value ESignOffline for AcceptanceMode. */
+ public static final AcceptanceMode ESIGN_OFFLINE = fromString("ESignOffline");
+
+ /**
+ * Creates or finds a AcceptanceMode from its string representation.
+ * @param name a name to look for
+ * @return the corresponding AcceptanceMode
+ */
+ @JsonCreator
+ public static AcceptanceMode fromString(String name) {
+ return fromString(name, AcceptanceMode.class);
+ }
+
+ /**
+ * @return known AcceptanceMode values
+ */
+ public static Collection values() {
+ return values(AcceptanceMode.class);
+ }
+}
diff --git a/sdk/billing/mgmt-v2020_05_01/src/main/java/com/microsoft/azure/management/billing/v2020_05_01/AccountStatus.java b/sdk/billing/mgmt-v2020_05_01/src/main/java/com/microsoft/azure/management/billing/v2020_05_01/AccountStatus.java
new file mode 100644
index 0000000000000..cd91778fc7689
--- /dev/null
+++ b/sdk/billing/mgmt-v2020_05_01/src/main/java/com/microsoft/azure/management/billing/v2020_05_01/AccountStatus.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.billing.v2020_05_01;
+
+import java.util.Collection;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.microsoft.rest.ExpandableStringEnum;
+
+/**
+ * Defines values for AccountStatus.
+ */
+public final class AccountStatus extends ExpandableStringEnum {
+ /** Static value Active for AccountStatus. */
+ public static final AccountStatus ACTIVE = fromString("Active");
+
+ /** Static value Deleted for AccountStatus. */
+ public static final AccountStatus DELETED = fromString("Deleted");
+
+ /** Static value Disabled for AccountStatus. */
+ public static final AccountStatus DISABLED = fromString("Disabled");
+
+ /** Static value Expired for AccountStatus. */
+ public static final AccountStatus EXPIRED = fromString("Expired");
+
+ /** Static value Transferred for AccountStatus. */
+ public static final AccountStatus TRANSFERRED = fromString("Transferred");
+
+ /** Static value Extended for AccountStatus. */
+ public static final AccountStatus EXTENDED = fromString("Extended");
+
+ /** Static value Terminated for AccountStatus. */
+ public static final AccountStatus TERMINATED = fromString("Terminated");
+
+ /**
+ * Creates or finds a AccountStatus from its string representation.
+ * @param name a name to look for
+ * @return the corresponding AccountStatus
+ */
+ @JsonCreator
+ public static AccountStatus fromString(String name) {
+ return fromString(name, AccountStatus.class);
+ }
+
+ /**
+ * @return known AccountStatus values
+ */
+ public static Collection values() {
+ return values(AccountStatus.class);
+ }
+}
diff --git a/sdk/billing/mgmt-v2020_05_01/src/main/java/com/microsoft/azure/management/billing/v2020_05_01/AccountType.java b/sdk/billing/mgmt-v2020_05_01/src/main/java/com/microsoft/azure/management/billing/v2020_05_01/AccountType.java
new file mode 100644
index 0000000000000..fae5673fcd3fd
--- /dev/null
+++ b/sdk/billing/mgmt-v2020_05_01/src/main/java/com/microsoft/azure/management/billing/v2020_05_01/AccountType.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.billing.v2020_05_01;
+
+import java.util.Collection;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.microsoft.rest.ExpandableStringEnum;
+
+/**
+ * Defines values for AccountType.
+ */
+public final class AccountType extends ExpandableStringEnum {
+ /** Static value Enterprise for AccountType. */
+ public static final AccountType ENTERPRISE = fromString("Enterprise");
+
+ /** Static value Individual for AccountType. */
+ public static final AccountType INDIVIDUAL = fromString("Individual");
+
+ /** Static value Partner for AccountType. */
+ public static final AccountType PARTNER = fromString("Partner");
+
+ /**
+ * Creates or finds a AccountType from its string representation.
+ * @param name a name to look for
+ * @return the corresponding AccountType
+ */
+ @JsonCreator
+ public static AccountType fromString(String name) {
+ return fromString(name, AccountType.class);
+ }
+
+ /**
+ * @return known AccountType values
+ */
+ public static Collection values() {
+ return values(AccountType.class);
+ }
+}
diff --git a/sdk/billing/mgmt-v2020_05_01/src/main/java/com/microsoft/azure/management/billing/v2020_05_01/Address.java b/sdk/billing/mgmt-v2020_05_01/src/main/java/com/microsoft/azure/management/billing/v2020_05_01/Address.java
new file mode 100644
index 0000000000000..f27cdc6015697
--- /dev/null
+++ b/sdk/billing/mgmt-v2020_05_01/src/main/java/com/microsoft/azure/management/billing/v2020_05_01/Address.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.billing.v2020_05_01;
+
+import rx.Observable;
+import com.microsoft.azure.management.billing.v2020_05_01.implementation.AddressInner;
+import com.microsoft.azure.arm.model.HasInner;
+
+/**
+ * Type representing Address.
+ */
+public interface Address extends HasInner {
+ /**
+ * Validates an address. Use the operation to validate an address before using it as soldTo or a billTo address.
+ *
+ * @param address the AddressDetails value
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @return the observable for the request
+ */
+ Observable validateAsync(AddressDetails address);
+
+}
diff --git a/sdk/billing/mgmt-v2020_05_01/src/main/java/com/microsoft/azure/management/billing/v2020_05_01/AddressDetails.java b/sdk/billing/mgmt-v2020_05_01/src/main/java/com/microsoft/azure/management/billing/v2020_05_01/AddressDetails.java
new file mode 100644
index 0000000000000..ae0f22a34d2ef
--- /dev/null
+++ b/sdk/billing/mgmt-v2020_05_01/src/main/java/com/microsoft/azure/management/billing/v2020_05_01/AddressDetails.java
@@ -0,0 +1,355 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.billing.v2020_05_01;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/**
+ * Address details.
+ */
+public class AddressDetails {
+ /**
+ * First name.
+ */
+ @JsonProperty(value = "firstName")
+ private String firstName;
+
+ /**
+ * Last name.
+ */
+ @JsonProperty(value = "lastName")
+ private String lastName;
+
+ /**
+ * Company name.
+ */
+ @JsonProperty(value = "companyName")
+ private String companyName;
+
+ /**
+ * Address line 1.
+ */
+ @JsonProperty(value = "addressLine1", required = true)
+ private String addressLine1;
+
+ /**
+ * Address line 2.
+ */
+ @JsonProperty(value = "addressLine2")
+ private String addressLine2;
+
+ /**
+ * Address line 3.
+ */
+ @JsonProperty(value = "addressLine3")
+ private String addressLine3;
+
+ /**
+ * Address city.
+ */
+ @JsonProperty(value = "city")
+ private String city;
+
+ /**
+ * Address district.
+ */
+ @JsonProperty(value = "district")
+ private String district;
+
+ /**
+ * Address region.
+ */
+ @JsonProperty(value = "region")
+ private String region;
+
+ /**
+ * Country code uses ISO2, 2-digit format.
+ */
+ @JsonProperty(value = "country", required = true)
+ private String country;
+
+ /**
+ * Postal code.
+ */
+ @JsonProperty(value = "postalCode")
+ private String postalCode;
+
+ /**
+ * Email address.
+ */
+ @JsonProperty(value = "email")
+ private String email;
+
+ /**
+ * Phone number.
+ */
+ @JsonProperty(value = "phoneNumber")
+ private String phoneNumber;
+
+ /**
+ * Get first name.
+ *
+ * @return the firstName value
+ */
+ public String firstName() {
+ return this.firstName;
+ }
+
+ /**
+ * Set first name.
+ *
+ * @param firstName the firstName value to set
+ * @return the AddressDetails object itself.
+ */
+ public AddressDetails withFirstName(String firstName) {
+ this.firstName = firstName;
+ return this;
+ }
+
+ /**
+ * Get last name.
+ *
+ * @return the lastName value
+ */
+ public String lastName() {
+ return this.lastName;
+ }
+
+ /**
+ * Set last name.
+ *
+ * @param lastName the lastName value to set
+ * @return the AddressDetails object itself.
+ */
+ public AddressDetails withLastName(String lastName) {
+ this.lastName = lastName;
+ return this;
+ }
+
+ /**
+ * Get company name.
+ *
+ * @return the companyName value
+ */
+ public String companyName() {
+ return this.companyName;
+ }
+
+ /**
+ * Set company name.
+ *
+ * @param companyName the companyName value to set
+ * @return the AddressDetails object itself.
+ */
+ public AddressDetails withCompanyName(String companyName) {
+ this.companyName = companyName;
+ return this;
+ }
+
+ /**
+ * Get address line 1.
+ *
+ * @return the addressLine1 value
+ */
+ public String addressLine1() {
+ return this.addressLine1;
+ }
+
+ /**
+ * Set address line 1.
+ *
+ * @param addressLine1 the addressLine1 value to set
+ * @return the AddressDetails object itself.
+ */
+ public AddressDetails withAddressLine1(String addressLine1) {
+ this.addressLine1 = addressLine1;
+ return this;
+ }
+
+ /**
+ * Get address line 2.
+ *
+ * @return the addressLine2 value
+ */
+ public String addressLine2() {
+ return this.addressLine2;
+ }
+
+ /**
+ * Set address line 2.
+ *
+ * @param addressLine2 the addressLine2 value to set
+ * @return the AddressDetails object itself.
+ */
+ public AddressDetails withAddressLine2(String addressLine2) {
+ this.addressLine2 = addressLine2;
+ return this;
+ }
+
+ /**
+ * Get address line 3.
+ *
+ * @return the addressLine3 value
+ */
+ public String addressLine3() {
+ return this.addressLine3;
+ }
+
+ /**
+ * Set address line 3.
+ *
+ * @param addressLine3 the addressLine3 value to set
+ * @return the AddressDetails object itself.
+ */
+ public AddressDetails withAddressLine3(String addressLine3) {
+ this.addressLine3 = addressLine3;
+ return this;
+ }
+
+ /**
+ * Get address city.
+ *
+ * @return the city value
+ */
+ public String city() {
+ return this.city;
+ }
+
+ /**
+ * Set address city.
+ *
+ * @param city the city value to set
+ * @return the AddressDetails object itself.
+ */
+ public AddressDetails withCity(String city) {
+ this.city = city;
+ return this;
+ }
+
+ /**
+ * Get address district.
+ *
+ * @return the district value
+ */
+ public String district() {
+ return this.district;
+ }
+
+ /**
+ * Set address district.
+ *
+ * @param district the district value to set
+ * @return the AddressDetails object itself.
+ */
+ public AddressDetails withDistrict(String district) {
+ this.district = district;
+ return this;
+ }
+
+ /**
+ * Get address region.
+ *
+ * @return the region value
+ */
+ public String region() {
+ return this.region;
+ }
+
+ /**
+ * Set address region.
+ *
+ * @param region the region value to set
+ * @return the AddressDetails object itself.
+ */
+ public AddressDetails withRegion(String region) {
+ this.region = region;
+ return this;
+ }
+
+ /**
+ * Get country code uses ISO2, 2-digit format.
+ *
+ * @return the country value
+ */
+ public String country() {
+ return this.country;
+ }
+
+ /**
+ * Set country code uses ISO2, 2-digit format.
+ *
+ * @param country the country value to set
+ * @return the AddressDetails object itself.
+ */
+ public AddressDetails withCountry(String country) {
+ this.country = country;
+ return this;
+ }
+
+ /**
+ * Get postal code.
+ *
+ * @return the postalCode value
+ */
+ public String postalCode() {
+ return this.postalCode;
+ }
+
+ /**
+ * Set postal code.
+ *
+ * @param postalCode the postalCode value to set
+ * @return the AddressDetails object itself.
+ */
+ public AddressDetails withPostalCode(String postalCode) {
+ this.postalCode = postalCode;
+ return this;
+ }
+
+ /**
+ * Get email address.
+ *
+ * @return the email value
+ */
+ public String email() {
+ return this.email;
+ }
+
+ /**
+ * Set email address.
+ *
+ * @param email the email value to set
+ * @return the AddressDetails object itself.
+ */
+ public AddressDetails withEmail(String email) {
+ this.email = email;
+ return this;
+ }
+
+ /**
+ * Get phone number.
+ *
+ * @return the phoneNumber value
+ */
+ public String phoneNumber() {
+ return this.phoneNumber;
+ }
+
+ /**
+ * Set phone number.
+ *
+ * @param phoneNumber the phoneNumber value to set
+ * @return the AddressDetails object itself.
+ */
+ public AddressDetails withPhoneNumber(String phoneNumber) {
+ this.phoneNumber = phoneNumber;
+ return this;
+ }
+
+}
diff --git a/sdk/billing/mgmt-v2020_05_01/src/main/java/com/microsoft/azure/management/billing/v2020_05_01/AddressValidationStatus.java b/sdk/billing/mgmt-v2020_05_01/src/main/java/com/microsoft/azure/management/billing/v2020_05_01/AddressValidationStatus.java
new file mode 100644
index 0000000000000..5061430e150ef
--- /dev/null
+++ b/sdk/billing/mgmt-v2020_05_01/src/main/java/com/microsoft/azure/management/billing/v2020_05_01/AddressValidationStatus.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.billing.v2020_05_01;
+
+import java.util.Collection;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.microsoft.rest.ExpandableStringEnum;
+
+/**
+ * Defines values for AddressValidationStatus.
+ */
+public final class AddressValidationStatus extends ExpandableStringEnum {
+ /** Static value Valid for AddressValidationStatus. */
+ public static final AddressValidationStatus VALID = fromString("Valid");
+
+ /** Static value Invalid for AddressValidationStatus. */
+ public static final AddressValidationStatus INVALID = fromString("Invalid");
+
+ /**
+ * Creates or finds a AddressValidationStatus from its string representation.
+ * @param name a name to look for
+ * @return the corresponding AddressValidationStatus
+ */
+ @JsonCreator
+ public static AddressValidationStatus fromString(String name) {
+ return fromString(name, AddressValidationStatus.class);
+ }
+
+ /**
+ * @return known AddressValidationStatus values
+ */
+ public static Collection values() {
+ return values(AddressValidationStatus.class);
+ }
+}
diff --git a/sdk/billing/mgmt-v2020_05_01/src/main/java/com/microsoft/azure/management/billing/v2020_05_01/Agreement.java b/sdk/billing/mgmt-v2020_05_01/src/main/java/com/microsoft/azure/management/billing/v2020_05_01/Agreement.java
new file mode 100644
index 0000000000000..b3b3bebdc0d07
--- /dev/null
+++ b/sdk/billing/mgmt-v2020_05_01/src/main/java/com/microsoft/azure/management/billing/v2020_05_01/Agreement.java
@@ -0,0 +1,74 @@
+/**
+ * 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.billing.v2020_05_01;
+
+import com.microsoft.azure.arm.model.HasInner;
+import com.microsoft.azure.management.billing.v2020_05_01.implementation.AgreementInner;
+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.billing.v2020_05_01.implementation.BillingManager;
+import org.joda.time.DateTime;
+import java.util.List;
+
+/**
+ * Type representing Agreement.
+ */
+public interface Agreement extends HasInner, Indexable, Refreshable, HasManager {
+ /**
+ * @return the acceptanceMode value.
+ */
+ AcceptanceMode acceptanceMode();
+
+ /**
+ * @return the agreementLink value.
+ */
+ String agreementLink();
+
+ /**
+ * @return the category value.
+ */
+ Category category();
+
+ /**
+ * @return the effectiveDate value.
+ */
+ DateTime effectiveDate();
+
+ /**
+ * @return the expirationDate value.
+ */
+ DateTime expirationDate();
+
+ /**
+ * @return the id value.
+ */
+ String id();
+
+ /**
+ * @return the name value.
+ */
+ String name();
+
+ /**
+ * @return the participants value.
+ */
+ List participants();
+
+ /**
+ * @return the status value.
+ */
+ String status();
+
+ /**
+ * @return the type value.
+ */
+ String type();
+
+}
diff --git a/sdk/billing/mgmt-v2020_05_01/src/main/java/com/microsoft/azure/management/billing/v2020_05_01/AgreementType.java b/sdk/billing/mgmt-v2020_05_01/src/main/java/com/microsoft/azure/management/billing/v2020_05_01/AgreementType.java
new file mode 100644
index 0000000000000..8923115825a81
--- /dev/null
+++ b/sdk/billing/mgmt-v2020_05_01/src/main/java/com/microsoft/azure/management/billing/v2020_05_01/AgreementType.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.billing.v2020_05_01;
+
+import java.util.Collection;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.microsoft.rest.ExpandableStringEnum;
+
+/**
+ * Defines values for AgreementType.
+ */
+public final class AgreementType extends ExpandableStringEnum {
+ /** Static value MicrosoftCustomerAgreement for AgreementType. */
+ public static final AgreementType MICROSOFT_CUSTOMER_AGREEMENT = fromString("MicrosoftCustomerAgreement");
+
+ /** Static value EnterpriseAgreement for AgreementType. */
+ public static final AgreementType ENTERPRISE_AGREEMENT = fromString("EnterpriseAgreement");
+
+ /** Static value MicrosoftOnlineServicesProgram for AgreementType. */
+ public static final AgreementType MICROSOFT_ONLINE_SERVICES_PROGRAM = fromString("MicrosoftOnlineServicesProgram");
+
+ /** Static value MicrosoftPartnerAgreement for AgreementType. */
+ public static final AgreementType MICROSOFT_PARTNER_AGREEMENT = fromString("MicrosoftPartnerAgreement");
+
+ /**
+ * Creates or finds a AgreementType from its string representation.
+ * @param name a name to look for
+ * @return the corresponding AgreementType
+ */
+ @JsonCreator
+ public static AgreementType fromString(String name) {
+ return fromString(name, AgreementType.class);
+ }
+
+ /**
+ * @return known AgreementType values
+ */
+ public static Collection values() {
+ return values(AgreementType.class);
+ }
+}
diff --git a/sdk/billing/mgmt-v2020_05_01/src/main/java/com/microsoft/azure/management/billing/v2020_05_01/Agreements.java b/sdk/billing/mgmt-v2020_05_01/src/main/java/com/microsoft/azure/management/billing/v2020_05_01/Agreements.java
new file mode 100644
index 0000000000000..73c19aa88690d
--- /dev/null
+++ b/sdk/billing/mgmt-v2020_05_01/src/main/java/com/microsoft/azure/management/billing/v2020_05_01/Agreements.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.billing.v2020_05_01;
+
+import rx.Observable;
+import com.microsoft.azure.management.billing.v2020_05_01.implementation.AgreementsInner;
+import com.microsoft.azure.arm.model.HasInner;
+
+/**
+ * Type representing Agreements.
+ */
+public interface Agreements extends HasInner {
+ /**
+ * Gets an agreement by ID.
+ *
+ * @param billingAccountName The ID that uniquely identifies a billing account.
+ * @param agreementName The ID that uniquely identifies an agreement.
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @return the observable for the request
+ */
+ Observable getAsync(String billingAccountName, String agreementName);
+
+ /**
+ * Lists the agreements for a billing account.
+ *
+ * @param billingAccountName The ID that uniquely identifies a billing account.
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @return the observable for the request
+ */
+ Observable listByBillingAccountAsync(final String billingAccountName);
+
+}
diff --git a/sdk/billing/mgmt-v2020_05_01/src/main/java/com/microsoft/azure/management/billing/v2020_05_01/Amount.java b/sdk/billing/mgmt-v2020_05_01/src/main/java/com/microsoft/azure/management/billing/v2020_05_01/Amount.java
new file mode 100644
index 0000000000000..93b494d7349db
--- /dev/null
+++ b/sdk/billing/mgmt-v2020_05_01/src/main/java/com/microsoft/azure/management/billing/v2020_05_01/Amount.java
@@ -0,0 +1,58 @@
+/**
+ * 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.billing.v2020_05_01;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/**
+ * The amount.
+ */
+public class Amount {
+ /**
+ * The currency for the amount value.
+ */
+ @JsonProperty(value = "currency", access = JsonProperty.Access.WRITE_ONLY)
+ private String currency;
+
+ /**
+ * Amount value.
+ */
+ @JsonProperty(value = "value")
+ private Double value;
+
+ /**
+ * Get the currency for the amount value.
+ *
+ * @return the currency value
+ */
+ public String currency() {
+ return this.currency;
+ }
+
+ /**
+ * Get amount value.
+ *
+ * @return the value value
+ */
+ public Double value() {
+ return this.value;
+ }
+
+ /**
+ * Set amount value.
+ *
+ * @param value the value value to set
+ * @return the Amount object itself.
+ */
+ public Amount withValue(Double value) {
+ this.value = value;
+ return this;
+ }
+
+}
diff --git a/sdk/billing/mgmt-v2020_05_01/src/main/java/com/microsoft/azure/management/billing/v2020_05_01/AutoRenew.java b/sdk/billing/mgmt-v2020_05_01/src/main/java/com/microsoft/azure/management/billing/v2020_05_01/AutoRenew.java
new file mode 100644
index 0000000000000..27ae4e1b01329
--- /dev/null
+++ b/sdk/billing/mgmt-v2020_05_01/src/main/java/com/microsoft/azure/management/billing/v2020_05_01/AutoRenew.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.billing.v2020_05_01;
+
+import java.util.Collection;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.microsoft.rest.ExpandableStringEnum;
+
+/**
+ * Defines values for AutoRenew.
+ */
+public final class AutoRenew extends ExpandableStringEnum {
+ /** Static value Off for AutoRenew. */
+ public static final AutoRenew OFF = fromString("Off");
+
+ /** Static value On for AutoRenew. */
+ public static final AutoRenew ON = fromString("On");
+
+ /**
+ * Creates or finds a AutoRenew from its string representation.
+ * @param name a name to look for
+ * @return the corresponding AutoRenew
+ */
+ @JsonCreator
+ public static AutoRenew fromString(String name) {
+ return fromString(name, AutoRenew.class);
+ }
+
+ /**
+ * @return known AutoRenew values
+ */
+ public static Collection values() {
+ return values(AutoRenew.class);
+ }
+}
diff --git a/sdk/billing/mgmt-v2020_05_01/src/main/java/com/microsoft/azure/management/billing/v2020_05_01/AvailableBalance.java b/sdk/billing/mgmt-v2020_05_01/src/main/java/com/microsoft/azure/management/billing/v2020_05_01/AvailableBalance.java
new file mode 100644
index 0000000000000..103d55a610589
--- /dev/null
+++ b/sdk/billing/mgmt-v2020_05_01/src/main/java/com/microsoft/azure/management/billing/v2020_05_01/AvailableBalance.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.billing.v2020_05_01;
+
+import com.microsoft.azure.arm.model.HasInner;
+import com.microsoft.azure.arm.resources.models.HasManager;
+import com.microsoft.azure.management.billing.v2020_05_01.implementation.BillingManager;
+import com.microsoft.azure.management.billing.v2020_05_01.implementation.AvailableBalanceInner;
+
+/**
+ * Type representing AvailableBalance.
+ */
+public interface AvailableBalance extends HasInner, HasManager {
+ /**
+ * @return the amount value.
+ */
+ Amount amount();
+
+ /**
+ * @return the id value.
+ */
+ String id();
+
+ /**
+ * @return the name value.
+ */
+ String name();
+
+ /**
+ * @return the type value.
+ */
+ String type();
+
+}
diff --git a/sdk/billing/mgmt-v2020_05_01/src/main/java/com/microsoft/azure/management/billing/v2020_05_01/AvailableBalances.java b/sdk/billing/mgmt-v2020_05_01/src/main/java/com/microsoft/azure/management/billing/v2020_05_01/AvailableBalances.java
new file mode 100644
index 0000000000000..4ad701e4b0375
--- /dev/null
+++ b/sdk/billing/mgmt-v2020_05_01/src/main/java/com/microsoft/azure/management/billing/v2020_05_01/AvailableBalances.java
@@ -0,0 +1,29 @@
+/**
+ * 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.billing.v2020_05_01;
+
+import rx.Observable;
+import com.microsoft.azure.management.billing.v2020_05_01.implementation.AvailableBalancesInner;
+import com.microsoft.azure.arm.model.HasInner;
+
+/**
+ * Type representing AvailableBalances.
+ */
+public interface AvailableBalances extends HasInner {
+ /**
+ * The available credit balance for a billing profile. This is the balance that can be used for pay now to settle due or past due invoices. The operation is supported only for billing accounts with agreement type Microsoft Customer Agreement.
+ *
+ * @param billingAccountName The ID that uniquely identifies a billing account.
+ * @param billingProfileName The ID that uniquely identifies a billing profile.
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @return the observable for the request
+ */
+ Observable getAsync(String billingAccountName, String billingProfileName);
+
+}
diff --git a/sdk/billing/mgmt-v2020_05_01/src/main/java/com/microsoft/azure/management/billing/v2020_05_01/AzurePlan.java b/sdk/billing/mgmt-v2020_05_01/src/main/java/com/microsoft/azure/management/billing/v2020_05_01/AzurePlan.java
new file mode 100644
index 0000000000000..9181aec081aee
--- /dev/null
+++ b/sdk/billing/mgmt-v2020_05_01/src/main/java/com/microsoft/azure/management/billing/v2020_05_01/AzurePlan.java
@@ -0,0 +1,58 @@
+/**
+ * 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.billing.v2020_05_01;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/**
+ * Details of the Azure plan.
+ */
+public class AzurePlan {
+ /**
+ * The sku id.
+ */
+ @JsonProperty(value = "skuId")
+ private String skuId;
+
+ /**
+ * The sku description.
+ */
+ @JsonProperty(value = "skuDescription", access = JsonProperty.Access.WRITE_ONLY)
+ private String skuDescription;
+
+ /**
+ * Get the sku id.
+ *
+ * @return the skuId value
+ */
+ public String skuId() {
+ return this.skuId;
+ }
+
+ /**
+ * Set the sku id.
+ *
+ * @param skuId the skuId value to set
+ * @return the AzurePlan object itself.
+ */
+ public AzurePlan withSkuId(String skuId) {
+ this.skuId = skuId;
+ return this;
+ }
+
+ /**
+ * Get the sku description.
+ *
+ * @return the skuDescription value
+ */
+ public String skuDescription() {
+ return this.skuDescription;
+ }
+
+}
diff --git a/sdk/billing/mgmt-v2020_05_01/src/main/java/com/microsoft/azure/management/billing/v2020_05_01/BillingAccount.java b/sdk/billing/mgmt-v2020_05_01/src/main/java/com/microsoft/azure/management/billing/v2020_05_01/BillingAccount.java
new file mode 100644
index 0000000000000..8950dc419162b
--- /dev/null
+++ b/sdk/billing/mgmt-v2020_05_01/src/main/java/com/microsoft/azure/management/billing/v2020_05_01/BillingAccount.java
@@ -0,0 +1,162 @@
+/**
+ * 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.billing.v2020_05_01;
+
+import com.microsoft.azure.arm.model.HasInner;
+import com.microsoft.azure.management.billing.v2020_05_01.implementation.BillingAccountInner;
+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.Refreshable;
+import com.microsoft.azure.arm.resources.models.HasManager;
+import com.microsoft.azure.management.billing.v2020_05_01.implementation.BillingManager;
+import java.util.List;
+import com.microsoft.azure.management.billing.v2020_05_01.implementation.EnrollmentAccountInner;
+
+/**
+ * Type representing BillingAccount.
+ */
+public interface BillingAccount extends HasInner, Indexable, Updatable, Refreshable, HasManager {
+ /**
+ * @return the accountStatus value.
+ */
+ AccountStatus accountStatus();
+
+ /**
+ * @return the accountType value.
+ */
+ AccountType accountType();
+
+ /**
+ * @return the agreementType value.
+ */
+ AgreementType agreementType();
+
+ /**
+ * @return the billingProfiles value.
+ */
+ BillingProfilesOnExpand billingProfiles();
+
+ /**
+ * @return the departments value.
+ */
+ List departments();
+
+ /**
+ * @return the displayName value.
+ */
+ String displayName();
+
+ /**
+ * @return the enrollmentAccounts value.
+ */
+ List enrollmentAccounts();
+
+ /**
+ * @return the enrollmentDetails value.
+ */
+ Enrollment enrollmentDetails();
+
+ /**
+ * @return the hasReadAccess value.
+ */
+ Boolean hasReadAccess();
+
+ /**
+ * @return the id value.
+ */
+ String id();
+
+ /**
+ * @return the name value.
+ */
+ String name();
+
+ /**
+ * @return the soldTo value.
+ */
+ AddressDetails soldTo();
+
+ /**
+ * @return the type value.
+ */
+ String type();
+
+ /**
+ * The template for a BillingAccount update operation, containing all the settings that can be modified.
+ */
+ interface Update extends Appliable, UpdateStages.WithBillingProfiles, UpdateStages.WithDepartments, UpdateStages.WithDisplayName, UpdateStages.WithEnrollmentAccounts, UpdateStages.WithSoldTo {
+ }
+
+ /**
+ * Grouping of BillingAccount update stages.
+ */
+ interface UpdateStages {
+ /**
+ * The stage of the billingaccount update allowing to specify BillingProfiles.
+ */
+ interface WithBillingProfiles {
+ /**
+ * Specifies billingProfiles.
+ * @param billingProfiles The billing profiles associated with the billing account. By default this is not populated, unless it's specified in $expand
+ * @return the next update stage
+ */
+ Update withBillingProfiles(BillingProfilesOnExpand billingProfiles);
+ }
+
+ /**
+ * The stage of the billingaccount update allowing to specify Departments.
+ */
+ interface WithDepartments {
+ /**
+ * Specifies departments.
+ * @param departments The departments associated to the enrollment
+ * @return the next update stage
+ */
+ Update withDepartments(List departments);
+ }
+
+ /**
+ * The stage of the billingaccount update allowing to specify DisplayName.
+ */
+ interface WithDisplayName {
+ /**
+ * Specifies displayName.
+ * @param displayName The billing account name
+ * @return the next update stage
+ */
+ Update withDisplayName(String displayName);
+ }
+
+ /**
+ * The stage of the billingaccount update allowing to specify EnrollmentAccounts.
+ */
+ interface WithEnrollmentAccounts {
+ /**
+ * Specifies enrollmentAccounts.
+ * @param enrollmentAccounts The accounts associated to the enrollment
+ * @return the next update stage
+ */
+ Update withEnrollmentAccounts(List enrollmentAccounts);
+ }
+
+ /**
+ * The stage of the billingaccount update allowing to specify SoldTo.
+ */
+ interface WithSoldTo {
+ /**
+ * Specifies soldTo.
+ * @param soldTo The address of the individual or organization that is responsible for the billing account
+ * @return the next update stage
+ */
+ Update withSoldTo(AddressDetails soldTo);
+ }
+
+ }
+}
diff --git a/sdk/billing/mgmt-v2020_05_01/src/main/java/com/microsoft/azure/management/billing/v2020_05_01/BillingAccountUpdateRequest.java b/sdk/billing/mgmt-v2020_05_01/src/main/java/com/microsoft/azure/management/billing/v2020_05_01/BillingAccountUpdateRequest.java
new file mode 100644
index 0000000000000..2b1b2a02eaaca
--- /dev/null
+++ b/sdk/billing/mgmt-v2020_05_01/src/main/java/com/microsoft/azure/management/billing/v2020_05_01/BillingAccountUpdateRequest.java
@@ -0,0 +1,234 @@
+/**
+ * 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.billing.v2020_05_01;
+
+import java.util.List;
+import com.microsoft.azure.management.billing.v2020_05_01.implementation.EnrollmentAccountInner;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.microsoft.rest.serializer.JsonFlatten;
+
+/**
+ * The request properties of the billing account that can be updated.
+ */
+@JsonFlatten
+public class BillingAccountUpdateRequest {
+ /**
+ * The billing account name.
+ */
+ @JsonProperty(value = "properties.displayName")
+ private String displayName;
+
+ /**
+ * The address of the individual or organization that is responsible for
+ * the billing account.
+ */
+ @JsonProperty(value = "properties.soldTo")
+ private AddressDetails soldTo;
+
+ /**
+ * The type of agreement. Possible values include:
+ * 'MicrosoftCustomerAgreement', 'EnterpriseAgreement',
+ * 'MicrosoftOnlineServicesProgram', 'MicrosoftPartnerAgreement'.
+ */
+ @JsonProperty(value = "properties.agreementType", access = JsonProperty.Access.WRITE_ONLY)
+ private AgreementType agreementType;
+
+ /**
+ * The type of customer. Possible values include: 'Enterprise',
+ * 'Individual', 'Partner'.
+ */
+ @JsonProperty(value = "properties.accountType", access = JsonProperty.Access.WRITE_ONLY)
+ private AccountType accountType;
+
+ /**
+ * The current status of the billing account. Possible values include:
+ * 'Active', 'Deleted', 'Disabled', 'Expired', 'Transferred', 'Extended',
+ * 'Terminated'.
+ */
+ @JsonProperty(value = "properties.accountStatus", access = JsonProperty.Access.WRITE_ONLY)
+ private AccountStatus accountStatus;
+
+ /**
+ * The billing profiles associated with the billing account. By default
+ * this is not populated, unless it's specified in $expand.
+ */
+ @JsonProperty(value = "properties.billingProfiles")
+ private BillingProfilesOnExpand billingProfiles;
+
+ /**
+ * The details about the associated legacy enrollment. By default this is
+ * not populated, unless it's specified in $expand.
+ */
+ @JsonProperty(value = "properties.enrollmentDetails", access = JsonProperty.Access.WRITE_ONLY)
+ private Enrollment enrollmentDetails;
+
+ /**
+ * The departments associated to the enrollment.
+ */
+ @JsonProperty(value = "properties.departments")
+ private List departments;
+
+ /**
+ * The accounts associated to the enrollment.
+ */
+ @JsonProperty(value = "properties.enrollmentAccounts")
+ private List enrollmentAccounts;
+
+ /**
+ * Indicates whether user has read access to the billing account.
+ */
+ @JsonProperty(value = "properties.hasReadAccess", access = JsonProperty.Access.WRITE_ONLY)
+ private Boolean hasReadAccess;
+
+ /**
+ * Get the billing account name.
+ *
+ * @return the displayName value
+ */
+ public String displayName() {
+ return this.displayName;
+ }
+
+ /**
+ * Set the billing account name.
+ *
+ * @param displayName the displayName value to set
+ * @return the BillingAccountUpdateRequest object itself.
+ */
+ public BillingAccountUpdateRequest withDisplayName(String displayName) {
+ this.displayName = displayName;
+ return this;
+ }
+
+ /**
+ * Get the address of the individual or organization that is responsible for the billing account.
+ *
+ * @return the soldTo value
+ */
+ public AddressDetails soldTo() {
+ return this.soldTo;
+ }
+
+ /**
+ * Set the address of the individual or organization that is responsible for the billing account.
+ *
+ * @param soldTo the soldTo value to set
+ * @return the BillingAccountUpdateRequest object itself.
+ */
+ public BillingAccountUpdateRequest withSoldTo(AddressDetails soldTo) {
+ this.soldTo = soldTo;
+ return this;
+ }
+
+ /**
+ * Get the type of agreement. Possible values include: 'MicrosoftCustomerAgreement', 'EnterpriseAgreement', 'MicrosoftOnlineServicesProgram', 'MicrosoftPartnerAgreement'.
+ *
+ * @return the agreementType value
+ */
+ public AgreementType agreementType() {
+ return this.agreementType;
+ }
+
+ /**
+ * Get the type of customer. Possible values include: 'Enterprise', 'Individual', 'Partner'.
+ *
+ * @return the accountType value
+ */
+ public AccountType accountType() {
+ return this.accountType;
+ }
+
+ /**
+ * Get the current status of the billing account. Possible values include: 'Active', 'Deleted', 'Disabled', 'Expired', 'Transferred', 'Extended', 'Terminated'.
+ *
+ * @return the accountStatus value
+ */
+ public AccountStatus accountStatus() {
+ return this.accountStatus;
+ }
+
+ /**
+ * Get the billing profiles associated with the billing account. By default this is not populated, unless it's specified in $expand.
+ *
+ * @return the billingProfiles value
+ */
+ public BillingProfilesOnExpand billingProfiles() {
+ return this.billingProfiles;
+ }
+
+ /**
+ * Set the billing profiles associated with the billing account. By default this is not populated, unless it's specified in $expand.
+ *
+ * @param billingProfiles the billingProfiles value to set
+ * @return the BillingAccountUpdateRequest object itself.
+ */
+ public BillingAccountUpdateRequest withBillingProfiles(BillingProfilesOnExpand billingProfiles) {
+ this.billingProfiles = billingProfiles;
+ return this;
+ }
+
+ /**
+ * Get the details about the associated legacy enrollment. By default this is not populated, unless it's specified in $expand.
+ *
+ * @return the enrollmentDetails value
+ */
+ public Enrollment enrollmentDetails() {
+ return this.enrollmentDetails;
+ }
+
+ /**
+ * Get the departments associated to the enrollment.
+ *
+ * @return the departments value
+ */
+ public List departments() {
+ return this.departments;
+ }
+
+ /**
+ * Set the departments associated to the enrollment.
+ *
+ * @param departments the departments value to set
+ * @return the BillingAccountUpdateRequest object itself.
+ */
+ public BillingAccountUpdateRequest withDepartments(List departments) {
+ this.departments = departments;
+ return this;
+ }
+
+ /**
+ * Get the accounts associated to the enrollment.
+ *
+ * @return the enrollmentAccounts value
+ */
+ public List enrollmentAccounts() {
+ return this.enrollmentAccounts;
+ }
+
+ /**
+ * Set the accounts associated to the enrollment.
+ *
+ * @param enrollmentAccounts the enrollmentAccounts value to set
+ * @return the BillingAccountUpdateRequest object itself.
+ */
+ public BillingAccountUpdateRequest withEnrollmentAccounts(List enrollmentAccounts) {
+ this.enrollmentAccounts = enrollmentAccounts;
+ return this;
+ }
+
+ /**
+ * Get indicates whether user has read access to the billing account.
+ *
+ * @return the hasReadAccess value
+ */
+ public Boolean hasReadAccess() {
+ return this.hasReadAccess;
+ }
+
+}
diff --git a/sdk/billing/mgmt-v2020_05_01/src/main/java/com/microsoft/azure/management/billing/v2020_05_01/BillingAccounts.java b/sdk/billing/mgmt-v2020_05_01/src/main/java/com/microsoft/azure/management/billing/v2020_05_01/BillingAccounts.java
new file mode 100644
index 0000000000000..75e541c0dcd0a
--- /dev/null
+++ b/sdk/billing/mgmt-v2020_05_01/src/main/java/com/microsoft/azure/management/billing/v2020_05_01/BillingAccounts.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.billing.v2020_05_01;
+
+import rx.Observable;
+import com.microsoft.azure.management.billing.v2020_05_01.implementation.BillingAccountsInner;
+import com.microsoft.azure.arm.model.HasInner;
+
+/**
+ * Type representing BillingAccounts.
+ */
+public interface BillingAccounts extends HasInner {
+ /**
+ * Gets a billing account by its ID.
+ *
+ * @param billingAccountName The ID that uniquely identifies a billing account.
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @return the observable for the request
+ */
+ Observable getAsync(String billingAccountName);
+
+ /**
+ * Lists the invoice sections for which the user has permission to create Azure subscriptions. The operation is supported only for billing accounts with agreement type Microsoft Customer Agreement.
+ *
+ * @param billingAccountName The ID that uniquely identifies a billing account.
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @return the observable for the request
+ */
+ Observable listInvoiceSectionsByCreateSubscriptionPermissionAsync(final String billingAccountName);
+
+ /**
+ * Lists the billing accounts that a user has access to.
+ *
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @return the observable for the request
+ */
+ Observable listAsync();
+
+}
diff --git a/sdk/billing/mgmt-v2020_05_01/src/main/java/com/microsoft/azure/management/billing/v2020_05_01/BillingFrequency.java b/sdk/billing/mgmt-v2020_05_01/src/main/java/com/microsoft/azure/management/billing/v2020_05_01/BillingFrequency.java
new file mode 100644
index 0000000000000..f6d7b1908431d
--- /dev/null
+++ b/sdk/billing/mgmt-v2020_05_01/src/main/java/com/microsoft/azure/management/billing/v2020_05_01/BillingFrequency.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.billing.v2020_05_01;
+
+import java.util.Collection;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.microsoft.rest.ExpandableStringEnum;
+
+/**
+ * Defines values for BillingFrequency.
+ */
+public final class BillingFrequency extends ExpandableStringEnum {
+ /** Static value OneTime for BillingFrequency. */
+ public static final BillingFrequency ONE_TIME = fromString("OneTime");
+
+ /** Static value Monthly for BillingFrequency. */
+ public static final BillingFrequency MONTHLY = fromString("Monthly");
+
+ /** Static value UsageBased for BillingFrequency. */
+ public static final BillingFrequency USAGE_BASED = fromString("UsageBased");
+
+ /**
+ * Creates or finds a BillingFrequency from its string representation.
+ * @param name a name to look for
+ * @return the corresponding BillingFrequency
+ */
+ @JsonCreator
+ public static BillingFrequency fromString(String name) {
+ return fromString(name, BillingFrequency.class);
+ }
+
+ /**
+ * @return known BillingFrequency values
+ */
+ public static Collection values() {
+ return values(BillingFrequency.class);
+ }
+}
diff --git a/sdk/billing/mgmt-v2020_05_01/src/main/java/com/microsoft/azure/management/billing/v2020_05_01/BillingPeriod.java b/sdk/billing/mgmt-v2020_05_01/src/main/java/com/microsoft/azure/management/billing/v2020_05_01/BillingPeriod.java
new file mode 100644
index 0000000000000..85291702ff1df
--- /dev/null
+++ b/sdk/billing/mgmt-v2020_05_01/src/main/java/com/microsoft/azure/management/billing/v2020_05_01/BillingPeriod.java
@@ -0,0 +1,54 @@
+/**
+ * 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.billing.v2020_05_01;
+
+import com.microsoft.azure.arm.model.HasInner;
+import com.microsoft.azure.management.billing.v2020_05_01.implementation.BillingPeriodInner;
+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.billing.v2020_05_01.implementation.BillingManager;
+import org.joda.time.LocalDate;
+import java.util.List;
+
+/**
+ * Type representing BillingPeriod.
+ */
+public interface BillingPeriod extends HasInner, Indexable, Refreshable, HasManager {
+ /**
+ * @return the billingPeriodEndDate value.
+ */
+ LocalDate billingPeriodEndDate();
+
+ /**
+ * @return the billingPeriodStartDate value.
+ */
+ LocalDate billingPeriodStartDate();
+
+ /**
+ * @return the id value.
+ */
+ String id();
+
+ /**
+ * @return the invoiceIds value.
+ */
+ List invoiceIds();
+
+ /**
+ * @return the name value.
+ */
+ String name();
+
+ /**
+ * @return the type value.
+ */
+ String type();
+
+}
diff --git a/sdk/billing/mgmt-v2020_05_01/src/main/java/com/microsoft/azure/management/billing/v2020_05_01/BillingPeriods.java b/sdk/billing/mgmt-v2020_05_01/src/main/java/com/microsoft/azure/management/billing/v2020_05_01/BillingPeriods.java
new file mode 100644
index 0000000000000..23fb172ea4909
--- /dev/null
+++ b/sdk/billing/mgmt-v2020_05_01/src/main/java/com/microsoft/azure/management/billing/v2020_05_01/BillingPeriods.java
@@ -0,0 +1,29 @@
+/**
+ * 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.billing.v2020_05_01;
+
+import com.microsoft.azure.arm.collection.SupportsListing;
+import rx.Observable;
+import com.microsoft.azure.management.billing.v2020_05_01.implementation.BillingPeriodsInner;
+import com.microsoft.azure.arm.model.HasInner;
+
+/**
+ * Type representing BillingPeriods.
+ */
+public interface BillingPeriods extends SupportsListing, HasInner {
+ /**
+ * Gets a named billing period. This is only supported for Azure Web-Direct subscriptions. Other subscription types which were not purchased directly through the Azure web portal are not supported through this preview API.
+ *
+ * @param billingPeriodName The name of a BillingPeriod resource.
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @return the observable for the request
+ */
+ Observable getAsync(String billingPeriodName);
+
+}
diff --git a/sdk/billing/mgmt-v2020_05_01/src/main/java/com/microsoft/azure/management/billing/v2020_05_01/BillingPermissions.java b/sdk/billing/mgmt-v2020_05_01/src/main/java/com/microsoft/azure/management/billing/v2020_05_01/BillingPermissions.java
new file mode 100644
index 0000000000000..bbe520dc4843f
--- /dev/null
+++ b/sdk/billing/mgmt-v2020_05_01/src/main/java/com/microsoft/azure/management/billing/v2020_05_01/BillingPermissions.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.billing.v2020_05_01;
+
+import rx.Observable;
+import com.microsoft.azure.management.billing.v2020_05_01.implementation.BillingPermissionsInner;
+import com.microsoft.azure.arm.model.HasInner;
+
+/**
+ * Type representing BillingPermissions.
+ */
+public interface BillingPermissions extends HasInner {
+ /**
+ * Lists the billing permissions the caller has on a billing account.
+ *
+ * @param billingAccountName The ID that uniquely identifies a billing account.
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @return the observable for the request
+ */
+ Observable listByBillingAccountAsync(final String billingAccountName);
+
+ /**
+ * Lists the billing permissions the caller has on an invoice section.
+ *
+ * @param billingAccountName The ID that uniquely identifies a billing account.
+ * @param billingProfileName The ID that uniquely identifies a billing profile.
+ * @param invoiceSectionName The ID that uniquely identifies an invoice section.
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @return the observable for the request
+ */
+ Observable listByInvoiceSectionsAsync(final String billingAccountName, final String billingProfileName, final String invoiceSectionName);
+
+ /**
+ * Lists the billing permissions the caller has on a billing profile.
+ *
+ * @param billingAccountName The ID that uniquely identifies a billing account.
+ * @param billingProfileName The ID that uniquely identifies a billing profile.
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @return the observable for the request
+ */
+ Observable listByBillingProfileAsync(final String billingAccountName, final String billingProfileName);
+
+ /**
+ * Lists the billing permissions the caller has for a customer.
+ *
+ * @param billingAccountName The ID that uniquely identifies a billing account.
+ * @param customerName The ID that uniquely identifies a customer.
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @return the observable for the request
+ */
+ Observable listByCustomerAsync(final String billingAccountName, final String customerName);
+
+}
diff --git a/sdk/billing/mgmt-v2020_05_01/src/main/java/com/microsoft/azure/management/billing/v2020_05_01/BillingPermissionsProperties.java b/sdk/billing/mgmt-v2020_05_01/src/main/java/com/microsoft/azure/management/billing/v2020_05_01/BillingPermissionsProperties.java
new file mode 100644
index 0000000000000..04fa5204363ba
--- /dev/null
+++ b/sdk/billing/mgmt-v2020_05_01/src/main/java/com/microsoft/azure/management/billing/v2020_05_01/BillingPermissionsProperties.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.billing.v2020_05_01;
+
+import com.microsoft.azure.arm.model.HasInner;
+import com.microsoft.azure.management.billing.v2020_05_01.implementation.BillingPermissionsPropertiesInner;
+import com.microsoft.azure.arm.resources.models.HasManager;
+import com.microsoft.azure.management.billing.v2020_05_01.implementation.BillingManager;
+import java.util.List;
+
+/**
+ * Type representing BillingPermissionsProperties.
+ */
+public interface BillingPermissionsProperties extends HasInner, HasManager {
+ /**
+ * @return the actions value.
+ */
+ List actions();
+
+ /**
+ * @return the notActions value.
+ */
+ List notActions();
+
+}
diff --git a/sdk/billing/mgmt-v2020_05_01/src/main/java/com/microsoft/azure/management/billing/v2020_05_01/BillingProfile.java b/sdk/billing/mgmt-v2020_05_01/src/main/java/com/microsoft/azure/management/billing/v2020_05_01/BillingProfile.java
new file mode 100644
index 0000000000000..f311f36e9904e
--- /dev/null
+++ b/sdk/billing/mgmt-v2020_05_01/src/main/java/com/microsoft/azure/management/billing/v2020_05_01/BillingProfile.java
@@ -0,0 +1,312 @@
+/**
+ * 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.billing.v2020_05_01;
+
+import com.microsoft.azure.arm.model.HasInner;
+import com.microsoft.azure.management.billing.v2020_05_01.implementation.BillingProfileInner;
+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.billing.v2020_05_01.implementation.BillingManager;
+import java.util.List;
+
+/**
+ * Type representing BillingProfile.
+ */
+public interface BillingProfile extends HasInner, Indexable, Refreshable, Updatable, HasManager {
+ /**
+ * @return the billingRelationshipType value.
+ */
+ BillingRelationshipType billingRelationshipType();
+
+ /**
+ * @return the billTo value.
+ */
+ AddressDetails billTo();
+
+ /**
+ * @return the currency value.
+ */
+ String currency();
+
+ /**
+ * @return the displayName value.
+ */
+ String displayName();
+
+ /**
+ * @return the enabledAzurePlans value.
+ */
+ List enabledAzurePlans();
+
+ /**
+ * @return the hasReadAccess value.
+ */
+ Boolean hasReadAccess();
+
+ /**
+ * @return the id value.
+ */
+ String id();
+
+ /**
+ * @return the indirectRelationshipInfo value.
+ */
+ IndirectRelationshipInfo indirectRelationshipInfo();
+
+ /**
+ * @return the invoiceDay value.
+ */
+ Integer invoiceDay();
+
+ /**
+ * @return the invoiceEmailOptIn value.
+ */
+ Boolean invoiceEmailOptIn();
+
+ /**
+ * @return the invoiceSections value.
+ */
+ InvoiceSectionsOnExpand invoiceSections();
+
+ /**
+ * @return the name value.
+ */
+ String name();
+
+ /**
+ * @return the poNumber value.
+ */
+ String poNumber();
+
+ /**
+ * @return the spendingLimit value.
+ */
+ SpendingLimit spendingLimit();
+
+ /**
+ * @return the status value.
+ */
+ BillingProfileStatus status();
+
+ /**
+ * @return the statusReasonCode value.
+ */
+ StatusReasonCode statusReasonCode();
+
+ /**
+ * @return the systemId value.
+ */
+ String systemId();
+
+ /**
+ * @return the targetClouds value.
+ */
+ List targetClouds();
+
+ /**
+ * @return the type value.
+ */
+ String type();
+
+ /**
+ * The entirety of the BillingProfile definition.
+ */
+ interface Definition extends DefinitionStages.Blank, DefinitionStages.WithBillingAccount, DefinitionStages.WithCreate {
+ }
+
+ /**
+ * Grouping of BillingProfile definition stages.
+ */
+ interface DefinitionStages {
+ /**
+ * The first stage of a BillingProfile definition.
+ */
+ interface Blank extends WithBillingAccount {
+ }
+
+ /**
+ * The stage of the billingprofile definition allowing to specify BillingAccount.
+ */
+ interface WithBillingAccount {
+ /**
+ * Specifies billingAccountName.
+ * @param billingAccountName The ID that uniquely identifies a billing account
+ * @return the next definition stage
+ */
+ WithCreate withExistingBillingAccount(String billingAccountName);
+ }
+
+ /**
+ * The stage of the billingprofile definition allowing to specify BillTo.
+ */
+ interface WithBillTo {
+ /**
+ * Specifies billTo.
+ * @param billTo Billing address
+ * @return the next definition stage
+ */
+ WithCreate withBillTo(AddressDetails billTo);
+ }
+
+ /**
+ * The stage of the billingprofile definition allowing to specify DisplayName.
+ */
+ interface WithDisplayName {
+ /**
+ * Specifies displayName.
+ * @param displayName The name of the billing profile
+ * @return the next definition stage
+ */
+ WithCreate withDisplayName(String displayName);
+ }
+
+ /**
+ * The stage of the billingprofile definition allowing to specify EnabledAzurePlans.
+ */
+ interface WithEnabledAzurePlans {
+ /**
+ * Specifies enabledAzurePlans.
+ * @param enabledAzurePlans Information about the enabled azure plans
+ * @return the next definition stage
+ */
+ WithCreate withEnabledAzurePlans(List enabledAzurePlans);
+ }
+
+ /**
+ * The stage of the billingprofile definition allowing to specify InvoiceEmailOptIn.
+ */
+ interface WithInvoiceEmailOptIn {
+ /**
+ * Specifies invoiceEmailOptIn.
+ * @param invoiceEmailOptIn Flag controlling whether the invoices for the billing profile are sent through email
+ * @return the next definition stage
+ */
+ WithCreate withInvoiceEmailOptIn(Boolean invoiceEmailOptIn);
+ }
+
+ /**
+ * The stage of the billingprofile definition allowing to specify InvoiceSections.
+ */
+ interface WithInvoiceSections {
+ /**
+ * Specifies invoiceSections.
+ * @param invoiceSections The invoice sections associated to the billing profile. By default this is not populated, unless it's specified in $expand
+ * @return the next definition stage
+ */
+ WithCreate withInvoiceSections(InvoiceSectionsOnExpand invoiceSections);
+ }
+
+ /**
+ * The stage of the billingprofile definition allowing to specify PoNumber.
+ */
+ interface WithPoNumber {
+ /**
+ * Specifies poNumber.
+ * @param poNumber The purchase order name that will appear on the invoices generated for the billing profile
+ * @return the next definition stage
+ */
+ WithCreate withPoNumber(String poNumber);
+ }
+
+ /**
+ * 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.WithBillTo, DefinitionStages.WithDisplayName, DefinitionStages.WithEnabledAzurePlans, DefinitionStages.WithInvoiceEmailOptIn, DefinitionStages.WithInvoiceSections, DefinitionStages.WithPoNumber {
+ }
+ }
+ /**
+ * The template for a BillingProfile update operation, containing all the settings that can be modified.
+ */
+ interface Update extends Appliable, UpdateStages.WithBillTo, UpdateStages.WithDisplayName, UpdateStages.WithEnabledAzurePlans, UpdateStages.WithInvoiceEmailOptIn, UpdateStages.WithInvoiceSections, UpdateStages.WithPoNumber {
+ }
+
+ /**
+ * Grouping of BillingProfile update stages.
+ */
+ interface UpdateStages {
+ /**
+ * The stage of the billingprofile update allowing to specify BillTo.
+ */
+ interface WithBillTo {
+ /**
+ * Specifies billTo.
+ * @param billTo Billing address
+ * @return the next update stage
+ */
+ Update withBillTo(AddressDetails billTo);
+ }
+
+ /**
+ * The stage of the billingprofile update allowing to specify DisplayName.
+ */
+ interface WithDisplayName {
+ /**
+ * Specifies displayName.
+ * @param displayName The name of the billing profile
+ * @return the next update stage
+ */
+ Update withDisplayName(String displayName);
+ }
+
+ /**
+ * The stage of the billingprofile update allowing to specify EnabledAzurePlans.
+ */
+ interface WithEnabledAzurePlans {
+ /**
+ * Specifies enabledAzurePlans.
+ * @param enabledAzurePlans Information about the enabled azure plans
+ * @return the next update stage
+ */
+ Update withEnabledAzurePlans(List enabledAzurePlans);
+ }
+
+ /**
+ * The stage of the billingprofile update allowing to specify InvoiceEmailOptIn.
+ */
+ interface WithInvoiceEmailOptIn {
+ /**
+ * Specifies invoiceEmailOptIn.
+ * @param invoiceEmailOptIn Flag controlling whether the invoices for the billing profile are sent through email
+ * @return the next update stage
+ */
+ Update withInvoiceEmailOptIn(Boolean invoiceEmailOptIn);
+ }
+
+ /**
+ * The stage of the billingprofile update allowing to specify InvoiceSections.
+ */
+ interface WithInvoiceSections {
+ /**
+ * Specifies invoiceSections.
+ * @param invoiceSections The invoice sections associated to the billing profile. By default this is not populated, unless it's specified in $expand
+ * @return the next update stage
+ */
+ Update withInvoiceSections(InvoiceSectionsOnExpand invoiceSections);
+ }
+
+ /**
+ * The stage of the billingprofile update allowing to specify PoNumber.
+ */
+ interface WithPoNumber {
+ /**
+ * Specifies poNumber.
+ * @param poNumber The purchase order name that will appear on the invoices generated for the billing profile
+ * @return the next update stage
+ */
+ Update withPoNumber(String poNumber);
+ }
+
+ }
+}
diff --git a/sdk/billing/mgmt-v2020_05_01/src/main/java/com/microsoft/azure/management/billing/v2020_05_01/BillingProfileCreationRequest.java b/sdk/billing/mgmt-v2020_05_01/src/main/java/com/microsoft/azure/management/billing/v2020_05_01/BillingProfileCreationRequest.java
new file mode 100644
index 0000000000000..04c6493dac026
--- /dev/null
+++ b/sdk/billing/mgmt-v2020_05_01/src/main/java/com/microsoft/azure/management/billing/v2020_05_01/BillingProfileCreationRequest.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.billing.v2020_05_01;
+
+import java.util.List;
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/**
+ * The request parameters for creating a new billing profile.
+ */
+public class BillingProfileCreationRequest {
+ /**
+ * The name of the billing profile.
+ */
+ @JsonProperty(value = "displayName")
+ private String displayName;
+
+ /**
+ * The purchase order name that will appear on the invoices generated for
+ * the billing profile.
+ */
+ @JsonProperty(value = "poNumber")
+ private String poNumber;
+
+ /**
+ * The address of the individual or organization that is responsible for
+ * the billing profile.
+ */
+ @JsonProperty(value = "billTo")
+ private AddressDetails billTo;
+
+ /**
+ * Flag controlling whether the invoices for the billing profile are sent
+ * through email.
+ */
+ @JsonProperty(value = "invoiceEmailOptIn")
+ private Boolean invoiceEmailOptIn;
+
+ /**
+ * Enabled azure plans for the billing profile.
+ */
+ @JsonProperty(value = "enabledAzurePlans")
+ private List enabledAzurePlans;
+
+ /**
+ * Get the name of the billing profile.
+ *
+ * @return the displayName value
+ */
+ public String displayName() {
+ return this.displayName;
+ }
+
+ /**
+ * Set the name of the billing profile.
+ *
+ * @param displayName the displayName value to set
+ * @return the BillingProfileCreationRequest object itself.
+ */
+ public BillingProfileCreationRequest withDisplayName(String displayName) {
+ this.displayName = displayName;
+ return this;
+ }
+
+ /**
+ * Get the purchase order name that will appear on the invoices generated for the billing profile.
+ *
+ * @return the poNumber value
+ */
+ public String poNumber() {
+ return this.poNumber;
+ }
+
+ /**
+ * Set the purchase order name that will appear on the invoices generated for the billing profile.
+ *
+ * @param poNumber the poNumber value to set
+ * @return the BillingProfileCreationRequest object itself.
+ */
+ public BillingProfileCreationRequest withPoNumber(String poNumber) {
+ this.poNumber = poNumber;
+ return this;
+ }
+
+ /**
+ * Get the address of the individual or organization that is responsible for the billing profile.
+ *
+ * @return the billTo value
+ */
+ public AddressDetails billTo() {
+ return this.billTo;
+ }
+
+ /**
+ * Set the address of the individual or organization that is responsible for the billing profile.
+ *
+ * @param billTo the billTo value to set
+ * @return the BillingProfileCreationRequest object itself.
+ */
+ public BillingProfileCreationRequest withBillTo(AddressDetails billTo) {
+ this.billTo = billTo;
+ return this;
+ }
+
+ /**
+ * Get flag controlling whether the invoices for the billing profile are sent through email.
+ *
+ * @return the invoiceEmailOptIn value
+ */
+ public Boolean invoiceEmailOptIn() {
+ return this.invoiceEmailOptIn;
+ }
+
+ /**
+ * Set flag controlling whether the invoices for the billing profile are sent through email.
+ *
+ * @param invoiceEmailOptIn the invoiceEmailOptIn value to set
+ * @return the BillingProfileCreationRequest object itself.
+ */
+ public BillingProfileCreationRequest withInvoiceEmailOptIn(Boolean invoiceEmailOptIn) {
+ this.invoiceEmailOptIn = invoiceEmailOptIn;
+ return this;
+ }
+
+ /**
+ * Get enabled azure plans for the billing profile.
+ *
+ * @return the enabledAzurePlans value
+ */
+ public List enabledAzurePlans() {
+ return this.enabledAzurePlans;
+ }
+
+ /**
+ * Set enabled azure plans for the billing profile.
+ *
+ * @param enabledAzurePlans the enabledAzurePlans value to set
+ * @return the BillingProfileCreationRequest object itself.
+ */
+ public BillingProfileCreationRequest withEnabledAzurePlans(List enabledAzurePlans) {
+ this.enabledAzurePlans = enabledAzurePlans;
+ return this;
+ }
+
+}
diff --git a/sdk/billing/mgmt-v2020_05_01/src/main/java/com/microsoft/azure/management/billing/v2020_05_01/BillingProfileSpendingLimit.java b/sdk/billing/mgmt-v2020_05_01/src/main/java/com/microsoft/azure/management/billing/v2020_05_01/BillingProfileSpendingLimit.java
new file mode 100644
index 0000000000000..b2d711dc8ee49
--- /dev/null
+++ b/sdk/billing/mgmt-v2020_05_01/src/main/java/com/microsoft/azure/management/billing/v2020_05_01/BillingProfileSpendingLimit.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.billing.v2020_05_01;
+
+import java.util.Collection;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.microsoft.rest.ExpandableStringEnum;
+
+/**
+ * Defines values for BillingProfileSpendingLimit.
+ */
+public final class BillingProfileSpendingLimit extends ExpandableStringEnum {
+ /** Static value Off for BillingProfileSpendingLimit. */
+ public static final BillingProfileSpendingLimit OFF = fromString("Off");
+
+ /** Static value On for BillingProfileSpendingLimit. */
+ public static final BillingProfileSpendingLimit ON = fromString("On");
+
+ /**
+ * Creates or finds a BillingProfileSpendingLimit from its string representation.
+ * @param name a name to look for
+ * @return the corresponding BillingProfileSpendingLimit
+ */
+ @JsonCreator
+ public static BillingProfileSpendingLimit fromString(String name) {
+ return fromString(name, BillingProfileSpendingLimit.class);
+ }
+
+ /**
+ * @return known BillingProfileSpendingLimit values
+ */
+ public static Collection values() {
+ return values(BillingProfileSpendingLimit.class);
+ }
+}
diff --git a/sdk/billing/mgmt-v2020_05_01/src/main/java/com/microsoft/azure/management/billing/v2020_05_01/BillingProfileStatus.java b/sdk/billing/mgmt-v2020_05_01/src/main/java/com/microsoft/azure/management/billing/v2020_05_01/BillingProfileStatus.java
new file mode 100644
index 0000000000000..dca2cc4529284
--- /dev/null
+++ b/sdk/billing/mgmt-v2020_05_01/src/main/java/com/microsoft/azure/management/billing/v2020_05_01/BillingProfileStatus.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.billing.v2020_05_01;
+
+import java.util.Collection;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.microsoft.rest.ExpandableStringEnum;
+
+/**
+ * Defines values for BillingProfileStatus.
+ */
+public final class BillingProfileStatus extends ExpandableStringEnum {
+ /** Static value Active for BillingProfileStatus. */
+ public static final BillingProfileStatus ACTIVE = fromString("Active");
+
+ /** Static value Disabled for BillingProfileStatus. */
+ public static final BillingProfileStatus DISABLED = fromString("Disabled");
+
+ /** Static value Warned for BillingProfileStatus. */
+ public static final BillingProfileStatus WARNED = fromString("Warned");
+
+ /**
+ * Creates or finds a BillingProfileStatus from its string representation.
+ * @param name a name to look for
+ * @return the corresponding BillingProfileStatus
+ */
+ @JsonCreator
+ public static BillingProfileStatus fromString(String name) {
+ return fromString(name, BillingProfileStatus.class);
+ }
+
+ /**
+ * @return known BillingProfileStatus values
+ */
+ public static Collection values() {
+ return values(BillingProfileStatus.class);
+ }
+}
diff --git a/sdk/billing/mgmt-v2020_05_01/src/main/java/com/microsoft/azure/management/billing/v2020_05_01/BillingProfileStatusReasonCode.java b/sdk/billing/mgmt-v2020_05_01/src/main/java/com/microsoft/azure/management/billing/v2020_05_01/BillingProfileStatusReasonCode.java
new file mode 100644
index 0000000000000..d133939c74d90
--- /dev/null
+++ b/sdk/billing/mgmt-v2020_05_01/src/main/java/com/microsoft/azure/management/billing/v2020_05_01/BillingProfileStatusReasonCode.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.billing.v2020_05_01;
+
+import java.util.Collection;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.microsoft.rest.ExpandableStringEnum;
+
+/**
+ * Defines values for BillingProfileStatusReasonCode.
+ */
+public final class BillingProfileStatusReasonCode extends ExpandableStringEnum {
+ /** Static value PastDue for BillingProfileStatusReasonCode. */
+ public static final BillingProfileStatusReasonCode PAST_DUE = fromString("PastDue");
+
+ /** Static value SpendingLimitReached for BillingProfileStatusReasonCode. */
+ public static final BillingProfileStatusReasonCode SPENDING_LIMIT_REACHED = fromString("SpendingLimitReached");
+
+ /** Static value SpendingLimitExpired for BillingProfileStatusReasonCode. */
+ public static final BillingProfileStatusReasonCode SPENDING_LIMIT_EXPIRED = fromString("SpendingLimitExpired");
+
+ /**
+ * Creates or finds a BillingProfileStatusReasonCode from its string representation.
+ * @param name a name to look for
+ * @return the corresponding BillingProfileStatusReasonCode
+ */
+ @JsonCreator
+ public static BillingProfileStatusReasonCode fromString(String name) {
+ return fromString(name, BillingProfileStatusReasonCode.class);
+ }
+
+ /**
+ * @return known BillingProfileStatusReasonCode values
+ */
+ public static Collection values() {
+ return values(BillingProfileStatusReasonCode.class);
+ }
+}
diff --git a/sdk/billing/mgmt-v2020_05_01/src/main/java/com/microsoft/azure/management/billing/v2020_05_01/BillingProfiles.java b/sdk/billing/mgmt-v2020_05_01/src/main/java/com/microsoft/azure/management/billing/v2020_05_01/BillingProfiles.java
new file mode 100644
index 0000000000000..164b143e22a59
--- /dev/null
+++ b/sdk/billing/mgmt-v2020_05_01/src/main/java/com/microsoft/azure/management/billing/v2020_05_01/BillingProfiles.java
@@ -0,0 +1,39 @@
+/**
+ * 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.billing.v2020_05_01;
+
+import com.microsoft.azure.arm.collection.SupportsCreating;
+import rx.Observable;
+import com.microsoft.azure.management.billing.v2020_05_01.implementation.BillingProfilesInner;
+import com.microsoft.azure.arm.model.HasInner;
+
+/**
+ * Type representing BillingProfiles.
+ */
+public interface BillingProfiles extends SupportsCreating, HasInner {
+ /**
+ * Gets a billing profile by its ID. The operation is supported for billing accounts with agreement type Microsoft Customer Agreement or Microsoft Partner Agreement.
+ *
+ * @param billingAccountName The ID that uniquely identifies a billing account.
+ * @param billingProfileName The ID that uniquely identifies a billing profile.
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @return the observable for the request
+ */
+ Observable getAsync(String billingAccountName, String billingProfileName);
+
+ /**
+ * Lists the billing profiles that a user has access to. The operation is supported for billing accounts with agreement type Microsoft Customer Agreement or Microsoft Partner Agreement.
+ *
+ * @param billingAccountName The ID that uniquely identifies a billing account.
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @return the observable for the request
+ */
+ Observable listByBillingAccountAsync(final String billingAccountName);
+
+}
diff --git a/sdk/billing/mgmt-v2020_05_01/src/main/java/com/microsoft/azure/management/billing/v2020_05_01/BillingProfilesCreateOrUpdateHeaders.java b/sdk/billing/mgmt-v2020_05_01/src/main/java/com/microsoft/azure/management/billing/v2020_05_01/BillingProfilesCreateOrUpdateHeaders.java
new file mode 100644
index 0000000000000..bfa6db5e4ea20
--- /dev/null
+++ b/sdk/billing/mgmt-v2020_05_01/src/main/java/com/microsoft/azure/management/billing/v2020_05_01/BillingProfilesCreateOrUpdateHeaders.java
@@ -0,0 +1,70 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.billing.v2020_05_01;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/**
+ * Defines headers for CreateOrUpdate operation.
+ */
+public class BillingProfilesCreateOrUpdateHeaders {
+ /**
+ * Location URI to poll for result.
+ */
+ @JsonProperty(value = "Location")
+ private String location;
+
+ /**
+ * Recommended time to wait before making another request to check the
+ * status of the operation. The time is specified in seconds.
+ */
+ @JsonProperty(value = "Retry-After")
+ private Integer retryAfter;
+
+ /**
+ * Get location URI to poll for result.
+ *
+ * @return the location value
+ */
+ public String location() {
+ return this.location;
+ }
+
+ /**
+ * Set location URI to poll for result.
+ *
+ * @param location the location value to set
+ * @return the BillingProfilesCreateOrUpdateHeaders object itself.
+ */
+ public BillingProfilesCreateOrUpdateHeaders withLocation(String location) {
+ this.location = location;
+ return this;
+ }
+
+ /**
+ * Get recommended time to wait before making another request to check the status of the operation. The time is specified in seconds.
+ *
+ * @return the retryAfter value
+ */
+ public Integer retryAfter() {
+ return this.retryAfter;
+ }
+
+ /**
+ * Set recommended time to wait before making another request to check the status of the operation. The time is specified in seconds.
+ *
+ * @param retryAfter the retryAfter value to set
+ * @return the BillingProfilesCreateOrUpdateHeaders object itself.
+ */
+ public BillingProfilesCreateOrUpdateHeaders withRetryAfter(Integer retryAfter) {
+ this.retryAfter = retryAfter;
+ return this;
+ }
+
+}
diff --git a/sdk/billing/mgmt-v2020_05_01/src/main/java/com/microsoft/azure/management/billing/v2020_05_01/BillingProfilesOnExpand.java b/sdk/billing/mgmt-v2020_05_01/src/main/java/com/microsoft/azure/management/billing/v2020_05_01/BillingProfilesOnExpand.java
new file mode 100644
index 0000000000000..0442856dcbe58
--- /dev/null
+++ b/sdk/billing/mgmt-v2020_05_01/src/main/java/com/microsoft/azure/management/billing/v2020_05_01/BillingProfilesOnExpand.java
@@ -0,0 +1,64 @@
+/**
+ * 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.billing.v2020_05_01;
+
+import java.util.List;
+import com.microsoft.azure.management.billing.v2020_05_01.implementation.BillingProfileInner;
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/**
+ * The billing profiles associated with the billing account. By default this is
+ * not populated, unless it's specified in $expand.
+ */
+public class BillingProfilesOnExpand {
+ /**
+ * Indicates whether there are more billing profiles than the ones listed
+ * in this collection. The collection lists a maximum of 50 billing
+ * profiles. To get all billing profiles, use the list billing profiles
+ * API.
+ */
+ @JsonProperty(value = "hasMoreResults", access = JsonProperty.Access.WRITE_ONLY)
+ private Boolean hasMoreResults;
+
+ /**
+ * The billing profiles associated with the billing account.
+ */
+ @JsonProperty(value = "value")
+ private List value;
+
+ /**
+ * Get indicates whether there are more billing profiles than the ones listed in this collection. The collection lists a maximum of 50 billing profiles. To get all billing profiles, use the list billing profiles API.
+ *
+ * @return the hasMoreResults value
+ */
+ public Boolean hasMoreResults() {
+ return this.hasMoreResults;
+ }
+
+ /**
+ * Get the billing profiles associated with the billing account.
+ *
+ * @return the value value
+ */
+ public List value() {
+ return this.value;
+ }
+
+ /**
+ * Set the billing profiles associated with the billing account.
+ *
+ * @param value the value value to set
+ * @return the BillingProfilesOnExpand object itself.
+ */
+ public BillingProfilesOnExpand withValue(List value) {
+ this.value = value;
+ return this;
+ }
+
+}
diff --git a/sdk/billing/mgmt-v2020_05_01/src/main/java/com/microsoft/azure/management/billing/v2020_05_01/BillingProperty.java b/sdk/billing/mgmt-v2020_05_01/src/main/java/com/microsoft/azure/management/billing/v2020_05_01/BillingProperty.java
new file mode 100644
index 0000000000000..26511433bb79b
--- /dev/null
+++ b/sdk/billing/mgmt-v2020_05_01/src/main/java/com/microsoft/azure/management/billing/v2020_05_01/BillingProperty.java
@@ -0,0 +1,120 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.billing.v2020_05_01;
+
+import com.microsoft.azure.arm.model.HasInner;
+import com.microsoft.azure.arm.resources.models.HasManager;
+import com.microsoft.azure.management.billing.v2020_05_01.implementation.BillingManager;
+import com.microsoft.azure.management.billing.v2020_05_01.implementation.BillingPropertyInner;
+
+/**
+ * Type representing BillingProperty.
+ */
+public interface BillingProperty extends HasInner, HasManager {
+ /**
+ * @return the accountAdminNotificationEmailAddress value.
+ */
+ String accountAdminNotificationEmailAddress();
+
+ /**
+ * @return the billingAccountDisplayName value.
+ */
+ String billingAccountDisplayName();
+
+ /**
+ * @return the billingAccountId value.
+ */
+ String billingAccountId();
+
+ /**
+ * @return the billingProfileDisplayName value.
+ */
+ String billingProfileDisplayName();
+
+ /**
+ * @return the billingProfileId value.
+ */
+ String billingProfileId();
+
+ /**
+ * @return the billingProfileSpendingLimit value.
+ */
+ BillingProfileSpendingLimit billingProfileSpendingLimit();
+
+ /**
+ * @return the billingProfileStatus value.
+ */
+ BillingProfileStatus billingProfileStatus();
+
+ /**
+ * @return the billingProfileStatusReasonCode value.
+ */
+ BillingProfileStatusReasonCode billingProfileStatusReasonCode();
+
+ /**
+ * @return the billingTenantId value.
+ */
+ String billingTenantId();
+
+ /**
+ * @return the costCenter value.
+ */
+ String costCenter();
+
+ /**
+ * @return the id value.
+ */
+ String id();
+
+ /**
+ * @return the invoiceSectionDisplayName value.
+ */
+ String invoiceSectionDisplayName();
+
+ /**
+ * @return the invoiceSectionId value.
+ */
+ String invoiceSectionId();
+
+ /**
+ * @return the isAccountAdmin value.
+ */
+ Boolean isAccountAdmin();
+
+ /**
+ * @return the name value.
+ */
+ String name();
+
+ /**
+ * @return the productId value.
+ */
+ String productId();
+
+ /**
+ * @return the productName value.
+ */
+ String productName();
+
+ /**
+ * @return the skuDescription value.
+ */
+ String skuDescription();
+
+ /**
+ * @return the skuId value.
+ */
+ String skuId();
+
+ /**
+ * @return the type value.
+ */
+ String type();
+
+}
diff --git a/sdk/billing/mgmt-v2020_05_01/src/main/java/com/microsoft/azure/management/billing/v2020_05_01/BillingPropertys.java b/sdk/billing/mgmt-v2020_05_01/src/main/java/com/microsoft/azure/management/billing/v2020_05_01/BillingPropertys.java
new file mode 100644
index 0000000000000..58cad34ccd847
--- /dev/null
+++ b/sdk/billing/mgmt-v2020_05_01/src/main/java/com/microsoft/azure/management/billing/v2020_05_01/BillingPropertys.java
@@ -0,0 +1,35 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.billing.v2020_05_01;
+
+import rx.Observable;
+import com.microsoft.azure.management.billing.v2020_05_01.implementation.BillingPropertysInner;
+import com.microsoft.azure.arm.model.HasInner;
+
+/**
+ * Type representing BillingPropertys.
+ */
+public interface BillingPropertys extends HasInner {
+ /**
+ * Get the billing properties for a subscription. This operation is not supported for billing accounts with agreement type Enterprise Agreement.
+ *
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @return the observable for the request
+ */
+ Observable getAsync();
+
+ /**
+ * Updates the billing property of a subscription. Currently, cost center can be updated. The operation is supported only for billing accounts with agreement type Microsoft Customer Agreement.
+ *
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @return the observable for the request
+ */
+ Observable updateAsync();
+
+}
diff --git a/sdk/billing/mgmt-v2020_05_01/src/main/java/com/microsoft/azure/management/billing/v2020_05_01/BillingRelationshipType.java b/sdk/billing/mgmt-v2020_05_01/src/main/java/com/microsoft/azure/management/billing/v2020_05_01/BillingRelationshipType.java
new file mode 100644
index 0000000000000..71e5640bfbade
--- /dev/null
+++ b/sdk/billing/mgmt-v2020_05_01/src/main/java/com/microsoft/azure/management/billing/v2020_05_01/BillingRelationshipType.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.billing.v2020_05_01;
+
+import java.util.Collection;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.microsoft.rest.ExpandableStringEnum;
+
+/**
+ * Defines values for BillingRelationshipType.
+ */
+public final class BillingRelationshipType extends ExpandableStringEnum {
+ /** Static value Direct for BillingRelationshipType. */
+ public static final BillingRelationshipType DIRECT = fromString("Direct");
+
+ /** Static value IndirectCustomer for BillingRelationshipType. */
+ public static final BillingRelationshipType INDIRECT_CUSTOMER = fromString("IndirectCustomer");
+
+ /** Static value IndirectPartner for BillingRelationshipType. */
+ public static final BillingRelationshipType INDIRECT_PARTNER = fromString("IndirectPartner");
+
+ /** Static value CSPPartner for BillingRelationshipType. */
+ public static final BillingRelationshipType CSPPARTNER = fromString("CSPPartner");
+
+ /**
+ * Creates or finds a BillingRelationshipType from its string representation.
+ * @param name a name to look for
+ * @return the corresponding BillingRelationshipType
+ */
+ @JsonCreator
+ public static BillingRelationshipType fromString(String name) {
+ return fromString(name, BillingRelationshipType.class);
+ }
+
+ /**
+ * @return known BillingRelationshipType values
+ */
+ public static Collection values() {
+ return values(BillingRelationshipType.class);
+ }
+}
diff --git a/sdk/billing/mgmt-v2020_05_01/src/main/java/com/microsoft/azure/management/billing/v2020_05_01/BillingRoleAssignment.java b/sdk/billing/mgmt-v2020_05_01/src/main/java/com/microsoft/azure/management/billing/v2020_05_01/BillingRoleAssignment.java
new file mode 100644
index 0000000000000..159d9abefbffa
--- /dev/null
+++ b/sdk/billing/mgmt-v2020_05_01/src/main/java/com/microsoft/azure/management/billing/v2020_05_01/BillingRoleAssignment.java
@@ -0,0 +1,87 @@
+/**
+ * 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.billing.v2020_05_01;
+
+import com.microsoft.azure.arm.model.HasInner;
+import com.microsoft.azure.management.billing.v2020_05_01.implementation.BillingRoleAssignmentInner;
+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.billing.v2020_05_01.implementation.BillingManager;
+
+/**
+ * Type representing BillingRoleAssignment.
+ */
+public interface BillingRoleAssignment extends HasInner, Indexable, Refreshable, HasManager {
+ /**
+ * @return the createdByPrincipalId value.
+ */
+ String createdByPrincipalId();
+
+ /**
+ * @return the createdByPrincipalTenantId value.
+ */
+ String createdByPrincipalTenantId();
+
+ /**
+ * @return the createdByUserEmailAddress value.
+ */
+ String createdByUserEmailAddress();
+
+ /**
+ * @return the createdOn value.
+ */
+ String createdOn();
+
+ /**
+ * @return the id value.
+ */
+ String id();
+
+ /**
+ * @return the name value.
+ */
+ String name();
+
+ /**
+ * @return the principalId value.
+ */
+ String principalId();
+
+ /**
+ * @return the principalTenantId value.
+ */
+ String principalTenantId();
+
+ /**
+ * @return the roleDefinitionId value.
+ */
+ String roleDefinitionId();
+
+ /**
+ * @return the scope value.
+ */
+ String scope();
+
+ /**
+ * @return the type value.
+ */
+ String type();
+
+ /**
+ * @return the userAuthenticationType value.
+ */
+ String userAuthenticationType();
+
+ /**
+ * @return the userEmailAddress value.
+ */
+ String userEmailAddress();
+
+}
diff --git a/sdk/billing/mgmt-v2020_05_01/src/main/java/com/microsoft/azure/management/billing/v2020_05_01/BillingRoleAssignments.java b/sdk/billing/mgmt-v2020_05_01/src/main/java/com/microsoft/azure/management/billing/v2020_05_01/BillingRoleAssignments.java
new file mode 100644
index 0000000000000..69945abe00206
--- /dev/null
+++ b/sdk/billing/mgmt-v2020_05_01/src/main/java/com/microsoft/azure/management/billing/v2020_05_01/BillingRoleAssignments.java
@@ -0,0 +1,116 @@
+/**
+ * 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.billing.v2020_05_01;
+
+import rx.Completable;
+import rx.Observable;
+import com.microsoft.azure.management.billing.v2020_05_01.implementation.BillingRoleAssignmentsInner;
+import com.microsoft.azure.arm.model.HasInner;
+
+/**
+ * Type representing BillingRoleAssignments.
+ */
+public interface BillingRoleAssignments extends HasInner {
+ /**
+ * Gets a role assignment for the caller on an invoice section. The operation is supported for billing accounts with agreement type Microsoft Customer Agreement.
+ *
+ * @param billingAccountName The ID that uniquely identifies a billing account.
+ * @param billingProfileName The ID that uniquely identifies a billing profile.
+ * @param invoiceSectionName The ID that uniquely identifies an invoice section.
+ * @param billingRoleAssignmentName The ID that uniquely identifies a role assignment.
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @return the observable for the request
+ */
+ Observable getByInvoiceSectionAsync(String billingAccountName, String billingProfileName, String invoiceSectionName, String billingRoleAssignmentName);
+
+ /**
+ * Deletes a role assignment for the caller on an invoice section. The operation is supported for billing accounts with agreement type Microsoft Customer Agreement.
+ *
+ * @param billingAccountName The ID that uniquely identifies a billing account.
+ * @param billingProfileName The ID that uniquely identifies a billing profile.
+ * @param invoiceSectionName The ID that uniquely identifies an invoice section.
+ * @param billingRoleAssignmentName The ID that uniquely identifies a role assignment.
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @return the observable for the request
+ */
+ Observable deleteByInvoiceSectionAsync(String billingAccountName, String billingProfileName, String invoiceSectionName, String billingRoleAssignmentName);
+
+ /**
+ * Gets a role assignment for the caller on a billing profile. The operation is supported for billing accounts with agreement type Microsoft Partner Agreement or Microsoft Customer Agreement.
+ *
+ * @param billingAccountName The ID that uniquely identifies a billing account.
+ * @param billingProfileName The ID that uniquely identifies a billing profile.
+ * @param billingRoleAssignmentName The ID that uniquely identifies a role assignment.
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @return the observable for the request
+ */
+ Observable getByBillingProfileAsync(String billingAccountName, String billingProfileName, String billingRoleAssignmentName);
+
+ /**
+ * Deletes a role assignment for the caller on a billing profile. The operation is supported for billing accounts with agreement type Microsoft Partner Agreement or Microsoft Customer Agreement.
+ *
+ * @param billingAccountName The ID that uniquely identifies a billing account.
+ * @param billingProfileName The ID that uniquely identifies a billing profile.
+ * @param billingRoleAssignmentName The ID that uniquely identifies a role assignment.
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @return the observable for the request
+ */
+ Observable deleteByBillingProfileAsync(String billingAccountName, String billingProfileName, String billingRoleAssignmentName);
+
+ /**
+ * Lists the role assignments for the caller on an invoice section. The operation is supported for billing accounts with agreement type Microsoft Customer Agreement.
+ *
+ * @param billingAccountName The ID that uniquely identifies a billing account.
+ * @param billingProfileName The ID that uniquely identifies a billing profile.
+ * @param invoiceSectionName The ID that uniquely identifies an invoice section.
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @return the observable for the request
+ */
+ Observable listByInvoiceSectionAsync(final String billingAccountName, final String billingProfileName, final String invoiceSectionName);
+
+ /**
+ * Lists the role assignments for the caller on a billing profile. The operation is supported for billing accounts with agreement type Microsoft Customer Agreement.
+ *
+ * @param billingAccountName The ID that uniquely identifies a billing account.
+ * @param billingProfileName The ID that uniquely identifies a billing profile.
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @return the observable for the request
+ */
+ Observable listByBillingProfileAsync(final String billingAccountName, final String billingProfileName);
+
+ /**
+ * Gets a role assignment for the caller on a billing account. The operation is supported for billing accounts with agreement type Microsoft Partner Agreement or Microsoft Customer Agreement.
+ *
+ * @param billingAccountName The ID that uniquely identifies a billing account.
+ * @param billingRoleAssignmentName The ID that uniquely identifies a role assignment.
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @return the observable for the request
+ */
+ Observable getByBillingAccountAsync(String billingAccountName, String billingRoleAssignmentName);
+
+ /**
+ * Lists the role assignments for the caller on a billing account. The operation is supported for billing accounts with agreement type Microsoft Partner Agreement or Microsoft Customer Agreement.
+ *
+ * @param billingAccountName The ID that uniquely identifies a billing account.
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @return the observable for the request
+ */
+ Observable listByBillingAccountAsync(final String billingAccountName);
+
+ /**
+ * Deletes a role assignment for the caller on a billing account. The operation is supported for billing accounts with agreement type Microsoft Partner Agreement or Microsoft Customer Agreement.
+ *
+ * @param billingAccountName The ID that uniquely identifies a billing account.
+ * @param billingRoleAssignmentName The ID that uniquely identifies a role assignment.
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @return the observable for the request
+ */
+ Completable deleteByBillingAccountAsync(String billingAccountName, String billingRoleAssignmentName);
+
+}
diff --git a/sdk/billing/mgmt-v2020_05_01/src/main/java/com/microsoft/azure/management/billing/v2020_05_01/BillingRoleDefinition.java b/sdk/billing/mgmt-v2020_05_01/src/main/java/com/microsoft/azure/management/billing/v2020_05_01/BillingRoleDefinition.java
new file mode 100644
index 0000000000000..8fc248cecc6d5
--- /dev/null
+++ b/sdk/billing/mgmt-v2020_05_01/src/main/java/com/microsoft/azure/management/billing/v2020_05_01/BillingRoleDefinition.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.billing.v2020_05_01;
+
+import com.microsoft.azure.arm.model.HasInner;
+import com.microsoft.azure.management.billing.v2020_05_01.implementation.BillingRoleDefinitionInner;
+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.billing.v2020_05_01.implementation.BillingManager;
+import java.util.List;
+
+/**
+ * Type representing BillingRoleDefinition.
+ */
+public interface BillingRoleDefinition extends HasInner, Indexable, Refreshable, HasManager {
+ /**
+ * @return the description value.
+ */
+ String description();
+
+ /**
+ * @return the id value.
+ */
+ String id();
+
+ /**
+ * @return the name value.
+ */
+ String name();
+
+ /**
+ * @return the permissions value.
+ */
+ List permissions();
+
+ /**
+ * @return the roleName value.
+ */
+ String roleName();
+
+ /**
+ * @return the type value.
+ */
+ String type();
+
+}
diff --git a/sdk/billing/mgmt-v2020_05_01/src/main/java/com/microsoft/azure/management/billing/v2020_05_01/BillingRoleDefinitions.java b/sdk/billing/mgmt-v2020_05_01/src/main/java/com/microsoft/azure/management/billing/v2020_05_01/BillingRoleDefinitions.java
new file mode 100644
index 0000000000000..e1537f2a895f6
--- /dev/null
+++ b/sdk/billing/mgmt-v2020_05_01/src/main/java/com/microsoft/azure/management/billing/v2020_05_01/BillingRoleDefinitions.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.billing.v2020_05_01;
+
+import rx.Observable;
+import com.microsoft.azure.management.billing.v2020_05_01.implementation.BillingRoleDefinitionsInner;
+import com.microsoft.azure.arm.model.HasInner;
+
+/**
+ * Type representing BillingRoleDefinitions.
+ */
+public interface BillingRoleDefinitions extends HasInner {
+ /**
+ * Gets the definition for a role on an invoice section. The operation is supported only for billing accounts with agreement type Microsoft Customer Agreement.
+ *
+ * @param billingAccountName The ID that uniquely identifies a billing account.
+ * @param billingProfileName The ID that uniquely identifies a billing profile.
+ * @param invoiceSectionName The ID that uniquely identifies an invoice section.
+ * @param billingRoleDefinitionName The ID that uniquely identifies a role definition.
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @return the observable for the request
+ */
+ Observable getByInvoiceSectionAsync(String billingAccountName, String billingProfileName, String invoiceSectionName, String billingRoleDefinitionName);
+
+ /**
+ * Gets the definition for a role on a billing profile. The operation is supported for billing accounts with agreement type Microsoft Partner Agreement or Microsoft Customer Agreement.
+ *
+ * @param billingAccountName The ID that uniquely identifies a billing account.
+ * @param billingProfileName The ID that uniquely identifies a billing profile.
+ * @param billingRoleDefinitionName The ID that uniquely identifies a role definition.
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @return the observable for the request
+ */
+ Observable getByBillingProfileAsync(String billingAccountName, String billingProfileName, String billingRoleDefinitionName);
+
+ /**
+ * Lists the role definitions for an invoice section. The operation is supported for billing accounts with agreement type Microsoft Partner Agreement or Microsoft Customer Agreement.
+ *
+ * @param billingAccountName The ID that uniquely identifies a billing account.
+ * @param billingProfileName The ID that uniquely identifies a billing profile.
+ * @param invoiceSectionName The ID that uniquely identifies an invoice section.
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @return the observable for the request
+ */
+ Observable listByInvoiceSectionAsync(final String billingAccountName, final String billingProfileName, final String invoiceSectionName);
+
+ /**
+ * Lists the role definitions for a billing profile. The operation is supported for billing accounts with agreement type Microsoft Partner Agreement or Microsoft Customer Agreement.
+ *
+ * @param billingAccountName The ID that uniquely identifies a billing account.
+ * @param billingProfileName The ID that uniquely identifies a billing profile.
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @return the observable for the request
+ */
+ Observable listByBillingProfileAsync(final String billingAccountName, final String billingProfileName);
+
+ /**
+ * Gets the definition for a role on a billing account. The operation is supported for billing accounts with agreement type Microsoft Partner Agreement or Microsoft Customer Agreement.
+ *
+ * @param billingAccountName The ID that uniquely identifies a billing account.
+ * @param billingRoleDefinitionName The ID that uniquely identifies a role definition.
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @return the observable for the request
+ */
+ Observable getByBillingAccountAsync(String billingAccountName, String billingRoleDefinitionName);
+
+ /**
+ * Lists the role definitions for a billing account. The operation is supported for billing accounts with agreement type Microsoft Partner Agreement or Microsoft Customer Agreement.
+ *
+ * @param billingAccountName The ID that uniquely identifies a billing account.
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @return the observable for the request
+ */
+ Observable listByBillingAccountAsync(final String billingAccountName);
+
+}
diff --git a/sdk/billing/mgmt-v2020_05_01/src/main/java/com/microsoft/azure/management/billing/v2020_05_01/BillingSubscription.java b/sdk/billing/mgmt-v2020_05_01/src/main/java/com/microsoft/azure/management/billing/v2020_05_01/BillingSubscription.java
new file mode 100644
index 0000000000000..51b4d62032f73
--- /dev/null
+++ b/sdk/billing/mgmt-v2020_05_01/src/main/java/com/microsoft/azure/management/billing/v2020_05_01/BillingSubscription.java
@@ -0,0 +1,161 @@
+/**
+ * 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.billing.v2020_05_01;
+
+import com.microsoft.azure.arm.model.HasInner;
+import com.microsoft.azure.management.billing.v2020_05_01.implementation.BillingSubscriptionInner;
+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.resources.models.HasManager;
+import com.microsoft.azure.management.billing.v2020_05_01.implementation.BillingManager;
+import java.util.UUID;
+
+/**
+ * Type representing BillingSubscription.
+ */
+public interface BillingSubscription extends HasInner, Indexable, Updatable, HasManager {
+ /**
+ * @return the billingProfileDisplayName value.
+ */
+ String billingProfileDisplayName();
+
+ /**
+ * @return the billingProfileId value.
+ */
+ String billingProfileId();
+
+ /**
+ * @return the costCenter value.
+ */
+ String costCenter();
+
+ /**
+ * @return the customerDisplayName value.
+ */
+ String customerDisplayName();
+
+ /**
+ * @return the customerId value.
+ */
+ String customerId();
+
+ /**
+ * @return the displayName value.
+ */
+ String displayName();
+
+ /**
+ * @return the id value.
+ */
+ String id();
+
+ /**
+ * @return the invoiceSectionDisplayName value.
+ */
+ String invoiceSectionDisplayName();
+
+ /**
+ * @return the invoiceSectionId value.
+ */
+ String invoiceSectionId();
+
+ /**
+ * @return the lastMonthCharges value.
+ */
+ Amount lastMonthCharges();
+
+ /**
+ * @return the monthToDateCharges value.
+ */
+ Amount monthToDateCharges();
+
+ /**
+ * @return the name value.
+ */
+ String name();
+
+ /**
+ * @return the reseller value.
+ */
+ Reseller reseller();
+
+ /**
+ * @return the skuDescription value.
+ */
+ String skuDescription();
+
+ /**
+ * @return the skuId value.
+ */
+ String skuId();
+
+ /**
+ * @return the subscriptionBillingStatus value.
+ */
+ BillingSubscriptionStatusType subscriptionBillingStatus();
+
+ /**
+ * @return the subscriptionId value.
+ */
+ UUID subscriptionId();
+
+ /**
+ * @return the type value.
+ */
+ String type();
+
+ /**
+ * The template for a BillingSubscription update operation, containing all the settings that can be modified.
+ */
+ interface Update extends Appliable, UpdateStages.WithCostCenter, UpdateStages.WithSkuId, UpdateStages.WithSubscriptionBillingStatus {
+ }
+
+ /**
+ * Grouping of BillingSubscription update stages.
+ */
+ interface UpdateStages {
+ /**
+ * The stage of the billingsubscription update allowing to specify CostCenter.
+ */
+ interface WithCostCenter {
+ /**
+ * Specifies costCenter.
+ * @param costCenter The cost center applied to the subscription
+ * @return the next update stage
+ */
+ Update withCostCenter(String costCenter);
+ }
+
+ /**
+ * The stage of the billingsubscription update allowing to specify SkuId.
+ */
+ interface WithSkuId {
+ /**
+ * Specifies skuId.
+ * @param skuId The sku ID of the Azure plan for the subscription
+ * @return the next update stage
+ */
+ Update withSkuId(String skuId);
+ }
+
+ /**
+ * The stage of the billingsubscription update allowing to specify SubscriptionBillingStatus.
+ */
+ interface WithSubscriptionBillingStatus {
+ /**
+ * Specifies subscriptionBillingStatus.
+ * @param subscriptionBillingStatus The current billing status of the subscription. Possible values include: 'Active', 'Inactive', 'Abandoned', 'Deleted', 'Warning'
+ * @return the next update stage
+ */
+ Update withSubscriptionBillingStatus(BillingSubscriptionStatusType subscriptionBillingStatus);
+ }
+
+ }
+}
diff --git a/sdk/billing/mgmt-v2020_05_01/src/main/java/com/microsoft/azure/management/billing/v2020_05_01/BillingSubscriptionStatusType.java b/sdk/billing/mgmt-v2020_05_01/src/main/java/com/microsoft/azure/management/billing/v2020_05_01/BillingSubscriptionStatusType.java
new file mode 100644
index 0000000000000..696d6a057a913
--- /dev/null
+++ b/sdk/billing/mgmt-v2020_05_01/src/main/java/com/microsoft/azure/management/billing/v2020_05_01/BillingSubscriptionStatusType.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.billing.v2020_05_01;
+
+import java.util.Collection;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.microsoft.rest.ExpandableStringEnum;
+
+/**
+ * Defines values for BillingSubscriptionStatusType.
+ */
+public final class BillingSubscriptionStatusType extends ExpandableStringEnum {
+ /** Static value Active for BillingSubscriptionStatusType. */
+ public static final BillingSubscriptionStatusType ACTIVE = fromString("Active");
+
+ /** Static value Inactive for BillingSubscriptionStatusType. */
+ public static final BillingSubscriptionStatusType INACTIVE = fromString("Inactive");
+
+ /** Static value Abandoned for BillingSubscriptionStatusType. */
+ public static final BillingSubscriptionStatusType ABANDONED = fromString("Abandoned");
+
+ /** Static value Deleted for BillingSubscriptionStatusType. */
+ public static final BillingSubscriptionStatusType DELETED = fromString("Deleted");
+
+ /** Static value Warning for BillingSubscriptionStatusType. */
+ public static final BillingSubscriptionStatusType WARNING = fromString("Warning");
+
+ /**
+ * Creates or finds a BillingSubscriptionStatusType from its string representation.
+ * @param name a name to look for
+ * @return the corresponding BillingSubscriptionStatusType
+ */
+ @JsonCreator
+ public static BillingSubscriptionStatusType fromString(String name) {
+ return fromString(name, BillingSubscriptionStatusType.class);
+ }
+
+ /**
+ * @return known BillingSubscriptionStatusType values
+ */
+ public static Collection values() {
+ return values(BillingSubscriptionStatusType.class);
+ }
+}
diff --git a/sdk/billing/mgmt-v2020_05_01/src/main/java/com/microsoft/azure/management/billing/v2020_05_01/BillingSubscriptions.java b/sdk/billing/mgmt-v2020_05_01/src/main/java/com/microsoft/azure/management/billing/v2020_05_01/BillingSubscriptions.java
new file mode 100644
index 0000000000000..8270ea74b0c02
--- /dev/null
+++ b/sdk/billing/mgmt-v2020_05_01/src/main/java/com/microsoft/azure/management/billing/v2020_05_01/BillingSubscriptions.java
@@ -0,0 +1,88 @@
+/**
+ * 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.billing.v2020_05_01;
+
+import rx.Observable;
+import com.microsoft.azure.management.billing.v2020_05_01.implementation.BillingSubscriptionsInner;
+import com.microsoft.azure.arm.model.HasInner;
+
+/**
+ * Type representing BillingSubscriptions.
+ */
+public interface BillingSubscriptions extends HasInner {
+ /**
+ * Lists the subscriptions for a billing account. The operation is supported for billing accounts with agreement type Microsoft Customer Agreement or Microsoft Partner Agreement.
+ *
+ * @param billingAccountName The ID that uniquely identifies a billing account.
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @return the observable for the request
+ */
+ Observable listByBillingAccountAsync(final String billingAccountName);
+
+ /**
+ * Lists the subscriptions that are billed to a billing profile. The operation is supported for billing accounts with agreement type Microsoft Customer Agreement or Microsoft Partner Agreement.
+ *
+ * @param billingAccountName The ID that uniquely identifies a billing account.
+ * @param billingProfileName The ID that uniquely identifies a billing profile.
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @return the observable for the request
+ */
+ Observable listByBillingProfileAsync(final String billingAccountName, final String billingProfileName);
+
+ /**
+ * Lists the subscriptions that are billed to an invoice section. The operation is supported only for billing accounts with agreement type Microsoft Customer Agreement.
+ *
+ * @param billingAccountName The ID that uniquely identifies a billing account.
+ * @param billingProfileName The ID that uniquely identifies a billing profile.
+ * @param invoiceSectionName The ID that uniquely identifies an invoice section.
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @return the observable for the request
+ */
+ Observable listByInvoiceSectionAsync(final String billingAccountName, final String billingProfileName, final String invoiceSectionName);
+
+ /**
+ * Gets a subscription by its ID. The operation is supported for billing accounts with agreement type Microsoft Customer Agreement and Microsoft Partner Agreement.
+ *
+ * @param billingAccountName The ID that uniquely identifies a billing account.
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @return the observable for the request
+ */
+ Observable getAsync(String billingAccountName);
+
+ /**
+ * Moves a subscription's charges to a new invoice section. The new invoice section must belong to the same billing profile as the existing invoice section. This operation is supported for billing accounts with agreement type Microsoft Customer Agreement.
+ *
+ * @param billingAccountName The ID that uniquely identifies a billing account.
+ * @param destinationInvoiceSectionId The destination invoice section id.
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @return the observable for the request
+ */
+ Observable moveAsync(String billingAccountName, String destinationInvoiceSectionId);
+
+ /**
+ * Validates if a subscription's charges can be moved to a new invoice section. This operation is supported for billing accounts with agreement type Microsoft Customer Agreement.
+ *
+ * @param billingAccountName The ID that uniquely identifies a billing account.
+ * @param destinationInvoiceSectionId The destination invoice section id.
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @return the observable for the request
+ */
+ Observable validateMoveAsync(String billingAccountName, String destinationInvoiceSectionId);
+
+ /**
+ * Lists the subscriptions for a customer. The operation is supported only for billing accounts with agreement type Microsoft Partner Agreement.
+ *
+ * @param billingAccountName The ID that uniquely identifies a billing account.
+ * @param customerName The ID that uniquely identifies a customer.
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @return the observable for the request
+ */
+ Observable listByCustomerAsync(final String billingAccountName, final String customerName);
+
+}
diff --git a/sdk/billing/mgmt-v2020_05_01/src/main/java/com/microsoft/azure/management/billing/v2020_05_01/BillingSubscriptionsMoveHeaders.java b/sdk/billing/mgmt-v2020_05_01/src/main/java/com/microsoft/azure/management/billing/v2020_05_01/BillingSubscriptionsMoveHeaders.java
new file mode 100644
index 0000000000000..e319e4b94433a
--- /dev/null
+++ b/sdk/billing/mgmt-v2020_05_01/src/main/java/com/microsoft/azure/management/billing/v2020_05_01/BillingSubscriptionsMoveHeaders.java
@@ -0,0 +1,70 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.billing.v2020_05_01;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/**
+ * Defines headers for Move operation.
+ */
+public class BillingSubscriptionsMoveHeaders {
+ /**
+ * Location URI to poll for result.
+ */
+ @JsonProperty(value = "Location")
+ private String location;
+
+ /**
+ * Recommended time to wait before making another request to check the
+ * status of the operation. The time is specified in seconds.
+ */
+ @JsonProperty(value = "Retry-After")
+ private Integer retryAfter;
+
+ /**
+ * Get location URI to poll for result.
+ *
+ * @return the location value
+ */
+ public String location() {
+ return this.location;
+ }
+
+ /**
+ * Set location URI to poll for result.
+ *
+ * @param location the location value to set
+ * @return the BillingSubscriptionsMoveHeaders object itself.
+ */
+ public BillingSubscriptionsMoveHeaders withLocation(String location) {
+ this.location = location;
+ return this;
+ }
+
+ /**
+ * Get recommended time to wait before making another request to check the status of the operation. The time is specified in seconds.
+ *
+ * @return the retryAfter value
+ */
+ public Integer retryAfter() {
+ return this.retryAfter;
+ }
+
+ /**
+ * Set recommended time to wait before making another request to check the status of the operation. The time is specified in seconds.
+ *
+ * @param retryAfter the retryAfter value to set
+ * @return the BillingSubscriptionsMoveHeaders object itself.
+ */
+ public BillingSubscriptionsMoveHeaders withRetryAfter(Integer retryAfter) {
+ this.retryAfter = retryAfter;
+ return this;
+ }
+
+}
diff --git a/sdk/billing/mgmt-v2020_05_01/src/main/java/com/microsoft/azure/management/billing/v2020_05_01/Category.java b/sdk/billing/mgmt-v2020_05_01/src/main/java/com/microsoft/azure/management/billing/v2020_05_01/Category.java
new file mode 100644
index 0000000000000..f84f97de3a8f7
--- /dev/null
+++ b/sdk/billing/mgmt-v2020_05_01/src/main/java/com/microsoft/azure/management/billing/v2020_05_01/Category.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.billing.v2020_05_01;
+
+import java.util.Collection;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.microsoft.rest.ExpandableStringEnum;
+
+/**
+ * Defines values for Category.
+ */
+public final class Category extends ExpandableStringEnum {
+ /** Static value MicrosoftCustomerAgreement for Category. */
+ public static final Category MICROSOFT_CUSTOMER_AGREEMENT = fromString("MicrosoftCustomerAgreement");
+
+ /** Static value AffiliatePurchaseTerms for Category. */
+ public static final Category AFFILIATE_PURCHASE_TERMS = fromString("AffiliatePurchaseTerms");
+
+ /** Static value Other for Category. */
+ public static final Category OTHER = fromString("Other");
+
+ /**
+ * Creates or finds a Category from its string representation.
+ * @param name a name to look for
+ * @return the corresponding Category
+ */
+ @JsonCreator
+ public static Category fromString(String name) {
+ return fromString(name, Category.class);
+ }
+
+ /**
+ * @return known Category values
+ */
+ public static Collection values() {
+ return values(Category.class);
+ }
+}
diff --git a/sdk/billing/mgmt-v2020_05_01/src/main/java/com/microsoft/azure/management/billing/v2020_05_01/Customer.java b/sdk/billing/mgmt-v2020_05_01/src/main/java/com/microsoft/azure/management/billing/v2020_05_01/Customer.java
new file mode 100644
index 0000000000000..d8122c02230d3
--- /dev/null
+++ b/sdk/billing/mgmt-v2020_05_01/src/main/java/com/microsoft/azure/management/billing/v2020_05_01/Customer.java
@@ -0,0 +1,61 @@
+/**
+ * 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.billing.v2020_05_01;
+
+import com.microsoft.azure.arm.model.HasInner;
+import com.microsoft.azure.management.billing.v2020_05_01.implementation.CustomerInner;
+import com.microsoft.azure.arm.resources.models.HasManager;
+import com.microsoft.azure.management.billing.v2020_05_01.implementation.BillingManager;
+import java.util.List;
+
+/**
+ * Type representing Customer.
+ */
+public interface Customer extends HasInner, HasManager {
+ /**
+ * @return the billingProfileDisplayName value.
+ */
+ String billingProfileDisplayName();
+
+ /**
+ * @return the billingProfileId value.
+ */
+ String billingProfileId();
+
+ /**
+ * @return the displayName value.
+ */
+ String displayName();
+
+ /**
+ * @return the enabledAzurePlans value.
+ */
+ List enabledAzurePlans();
+
+ /**
+ * @return the id value.
+ */
+ String id();
+
+ /**
+ * @return the name value.
+ */
+ String name();
+
+ /**
+ * @return the resellers value.
+ */
+ List resellers();
+
+ /**
+ * @return the type value.
+ */
+ String type();
+
+}
diff --git a/sdk/billing/mgmt-v2020_05_01/src/main/java/com/microsoft/azure/management/billing/v2020_05_01/CustomerPolicy.java b/sdk/billing/mgmt-v2020_05_01/src/main/java/com/microsoft/azure/management/billing/v2020_05_01/CustomerPolicy.java
new file mode 100644
index 0000000000000..e41a0a709802c
--- /dev/null
+++ b/sdk/billing/mgmt-v2020_05_01/src/main/java/com/microsoft/azure/management/billing/v2020_05_01/CustomerPolicy.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.billing.v2020_05_01;
+
+import com.microsoft.azure.arm.model.HasInner;
+import com.microsoft.azure.arm.resources.models.HasManager;
+import com.microsoft.azure.management.billing.v2020_05_01.implementation.BillingManager;
+import com.microsoft.azure.management.billing.v2020_05_01.implementation.CustomerPolicyInner;
+
+/**
+ * Type representing CustomerPolicy.
+ */
+public interface CustomerPolicy extends HasInner, HasManager {
+ /**
+ * @return the id value.
+ */
+ String id();
+
+ /**
+ * @return the name value.
+ */
+ String name();
+
+ /**
+ * @return the type value.
+ */
+ String type();
+
+ /**
+ * @return the viewCharges value.
+ */
+ ViewCharges viewCharges();
+
+}
diff --git a/sdk/billing/mgmt-v2020_05_01/src/main/java/com/microsoft/azure/management/billing/v2020_05_01/Customers.java b/sdk/billing/mgmt-v2020_05_01/src/main/java/com/microsoft/azure/management/billing/v2020_05_01/Customers.java
new file mode 100644
index 0000000000000..f54dd331183d3
--- /dev/null
+++ b/sdk/billing/mgmt-v2020_05_01/src/main/java/com/microsoft/azure/management/billing/v2020_05_01/Customers.java
@@ -0,0 +1,48 @@
+/**
+ * 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.billing.v2020_05_01;
+
+import rx.Observable;
+import com.microsoft.azure.management.billing.v2020_05_01.implementation.CustomersInner;
+import com.microsoft.azure.arm.model.HasInner;
+
+/**
+ * Type representing Customers.
+ */
+public interface Customers extends HasInner {
+ /**
+ * Lists the customers that are billed to a billing account. The operation is supported only for billing accounts with agreement type Microsoft Partner Agreement.
+ *
+ * @param billingAccountName The ID that uniquely identifies a billing account.
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @return the observable for the request
+ */
+ Observable listByBillingAccountAsync(final String billingAccountName);
+
+ /**
+ * Gets a customer by its ID. The operation is supported only for billing accounts with agreement type Microsoft Partner Agreement.
+ *
+ * @param billingAccountName The ID that uniquely identifies a billing account.
+ * @param customerName The ID that uniquely identifies a customer.
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @return the observable for the request
+ */
+ Observable getAsync(String billingAccountName, String customerName);
+
+ /**
+ * Lists the customers that are billed to a billing profile. The operation is supported only for billing accounts with agreement type Microsoft Partner Agreement.
+ *
+ * @param billingAccountName The ID that uniquely identifies a billing account.
+ * @param billingProfileName The ID that uniquely identifies a billing profile.
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @return the observable for the request
+ */
+ Observable listByBillingProfileAsync(final String billingAccountName, final String billingProfileName);
+
+}
diff --git a/sdk/billing/mgmt-v2020_05_01/src/main/java/com/microsoft/azure/management/billing/v2020_05_01/Department.java b/sdk/billing/mgmt-v2020_05_01/src/main/java/com/microsoft/azure/management/billing/v2020_05_01/Department.java
new file mode 100644
index 0000000000000..2cf7ac82159d0
--- /dev/null
+++ b/sdk/billing/mgmt-v2020_05_01/src/main/java/com/microsoft/azure/management/billing/v2020_05_01/Department.java
@@ -0,0 +1,127 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.billing.v2020_05_01;
+
+import java.util.List;
+import com.microsoft.azure.management.billing.v2020_05_01.implementation.EnrollmentAccountInner;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.microsoft.rest.serializer.JsonFlatten;
+import com.microsoft.azure.ProxyResource;
+
+/**
+ * A department.
+ */
+@JsonFlatten
+public class Department extends ProxyResource {
+ /**
+ * The name of the department.
+ */
+ @JsonProperty(value = "properties.departmentName")
+ private String departmentName;
+
+ /**
+ * The cost center associated with the department.
+ */
+ @JsonProperty(value = "properties.costCenter")
+ private String costCenter;
+
+ /**
+ * The status of the department.
+ */
+ @JsonProperty(value = "properties.status")
+ private String status;
+
+ /**
+ * Associated enrollment accounts. By default this is not populated, unless
+ * it's specified in $expand.
+ */
+ @JsonProperty(value = "properties.enrollmentAccounts")
+ private List enrollmentAccounts;
+
+ /**
+ * Get the name of the department.
+ *
+ * @return the departmentName value
+ */
+ public String departmentName() {
+ return this.departmentName;
+ }
+
+ /**
+ * Set the name of the department.
+ *
+ * @param departmentName the departmentName value to set
+ * @return the Department object itself.
+ */
+ public Department withDepartmentName(String departmentName) {
+ this.departmentName = departmentName;
+ return this;
+ }
+
+ /**
+ * Get the cost center associated with the department.
+ *
+ * @return the costCenter value
+ */
+ public String costCenter() {
+ return this.costCenter;
+ }
+
+ /**
+ * Set the cost center associated with the department.
+ *
+ * @param costCenter the costCenter value to set
+ * @return the Department object itself.
+ */
+ public Department withCostCenter(String costCenter) {
+ this.costCenter = costCenter;
+ return this;
+ }
+
+ /**
+ * Get the status of the department.
+ *
+ * @return the status value
+ */
+ public String status() {
+ return this.status;
+ }
+
+ /**
+ * Set the status of the department.
+ *
+ * @param status the status value to set
+ * @return the Department object itself.
+ */
+ public Department withStatus(String status) {
+ this.status = status;
+ return this;
+ }
+
+ /**
+ * Get associated enrollment accounts. By default this is not populated, unless it's specified in $expand.
+ *
+ * @return the enrollmentAccounts value
+ */
+ public List enrollmentAccounts() {
+ return this.enrollmentAccounts;
+ }
+
+ /**
+ * Set associated enrollment accounts. By default this is not populated, unless it's specified in $expand.
+ *
+ * @param enrollmentAccounts the enrollmentAccounts value to set
+ * @return the Department object itself.
+ */
+ public Department withEnrollmentAccounts(List enrollmentAccounts) {
+ this.enrollmentAccounts = enrollmentAccounts;
+ return this;
+ }
+
+}
diff --git a/sdk/billing/mgmt-v2020_05_01/src/main/java/com/microsoft/azure/management/billing/v2020_05_01/Document.java b/sdk/billing/mgmt-v2020_05_01/src/main/java/com/microsoft/azure/management/billing/v2020_05_01/Document.java
new file mode 100644
index 0000000000000..f2246aa074982
--- /dev/null
+++ b/sdk/billing/mgmt-v2020_05_01/src/main/java/com/microsoft/azure/management/billing/v2020_05_01/Document.java
@@ -0,0 +1,64 @@
+/**
+ * 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.billing.v2020_05_01;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/**
+ * The properties of a document.
+ */
+public class Document {
+ /**
+ * The type of the document. Possible values include: 'Invoice',
+ * 'VoidNote', 'TaxReceipt', 'CreditNote'.
+ */
+ @JsonProperty(value = "kind", access = JsonProperty.Access.WRITE_ONLY)
+ private DocumentType kind;
+
+ /**
+ * Document URL.
+ */
+ @JsonProperty(value = "url", access = JsonProperty.Access.WRITE_ONLY)
+ private String url;
+
+ /**
+ * The source of the document. ENF for Brazil and DRS for rest of the
+ * world. Possible values include: 'DRS', 'ENF'.
+ */
+ @JsonProperty(value = "source", access = JsonProperty.Access.WRITE_ONLY)
+ private DocumentSource source;
+
+ /**
+ * Get the type of the document. Possible values include: 'Invoice', 'VoidNote', 'TaxReceipt', 'CreditNote'.
+ *
+ * @return the kind value
+ */
+ public DocumentType kind() {
+ return this.kind;
+ }
+
+ /**
+ * Get document URL.
+ *
+ * @return the url value
+ */
+ public String url() {
+ return this.url;
+ }
+
+ /**
+ * Get the source of the document. ENF for Brazil and DRS for rest of the world. Possible values include: 'DRS', 'ENF'.
+ *
+ * @return the source value
+ */
+ public DocumentSource source() {
+ return this.source;
+ }
+
+}
diff --git a/sdk/billing/mgmt-v2020_05_01/src/main/java/com/microsoft/azure/management/billing/v2020_05_01/DocumentSource.java b/sdk/billing/mgmt-v2020_05_01/src/main/java/com/microsoft/azure/management/billing/v2020_05_01/DocumentSource.java
new file mode 100644
index 0000000000000..59ebd30ba4a65
--- /dev/null
+++ b/sdk/billing/mgmt-v2020_05_01/src/main/java/com/microsoft/azure/management/billing/v2020_05_01/DocumentSource.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.billing.v2020_05_01;
+
+import java.util.Collection;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.microsoft.rest.ExpandableStringEnum;
+
+/**
+ * Defines values for DocumentSource.
+ */
+public final class DocumentSource extends ExpandableStringEnum {
+ /** Static value DRS for DocumentSource. */
+ public static final DocumentSource DRS = fromString("DRS");
+
+ /** Static value ENF for DocumentSource. */
+ public static final DocumentSource ENF = fromString("ENF");
+
+ /**
+ * Creates or finds a DocumentSource from its string representation.
+ * @param name a name to look for
+ * @return the corresponding DocumentSource
+ */
+ @JsonCreator
+ public static DocumentSource fromString(String name) {
+ return fromString(name, DocumentSource.class);
+ }
+
+ /**
+ * @return known DocumentSource values
+ */
+ public static Collection values() {
+ return values(DocumentSource.class);
+ }
+}
diff --git a/sdk/billing/mgmt-v2020_05_01/src/main/java/com/microsoft/azure/management/billing/v2020_05_01/DocumentType.java b/sdk/billing/mgmt-v2020_05_01/src/main/java/com/microsoft/azure/management/billing/v2020_05_01/DocumentType.java
new file mode 100644
index 0000000000000..9a3a1c58c8733
--- /dev/null
+++ b/sdk/billing/mgmt-v2020_05_01/src/main/java/com/microsoft/azure/management/billing/v2020_05_01/DocumentType.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.billing.v2020_05_01;
+
+import java.util.Collection;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.microsoft.rest.ExpandableStringEnum;
+
+/**
+ * Defines values for DocumentType.
+ */
+public final class DocumentType extends ExpandableStringEnum {
+ /** Static value Invoice for DocumentType. */
+ public static final DocumentType INVOICE = fromString("Invoice");
+
+ /** Static value VoidNote for DocumentType. */
+ public static final DocumentType VOID_NOTE = fromString("VoidNote");
+
+ /** Static value TaxReceipt for DocumentType. */
+ public static final DocumentType TAX_RECEIPT = fromString("TaxReceipt");
+
+ /** Static value CreditNote for DocumentType. */
+ public static final DocumentType CREDIT_NOTE = fromString("CreditNote");
+
+ /**
+ * Creates or finds a DocumentType from its string representation.
+ * @param name a name to look for
+ * @return the corresponding DocumentType
+ */
+ @JsonCreator
+ public static DocumentType fromString(String name) {
+ return fromString(name, DocumentType.class);
+ }
+
+ /**
+ * @return known DocumentType values
+ */
+ public static Collection values() {
+ return values(DocumentType.class);
+ }
+}
diff --git a/sdk/billing/mgmt-v2020_05_01/src/main/java/com/microsoft/azure/management/billing/v2020_05_01/DownloadUrl.java b/sdk/billing/mgmt-v2020_05_01/src/main/java/com/microsoft/azure/management/billing/v2020_05_01/DownloadUrl.java
new file mode 100644
index 0000000000000..bf1263200e0e8
--- /dev/null
+++ b/sdk/billing/mgmt-v2020_05_01/src/main/java/com/microsoft/azure/management/billing/v2020_05_01/DownloadUrl.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.billing.v2020_05_01;
+
+import com.microsoft.azure.arm.model.HasInner;
+import com.microsoft.azure.arm.resources.models.HasManager;
+import com.microsoft.azure.management.billing.v2020_05_01.implementation.BillingManager;
+import com.microsoft.azure.management.billing.v2020_05_01.implementation.DownloadUrlInner;
+import org.joda.time.DateTime;
+
+/**
+ * Type representing DownloadUrl.
+ */
+public interface DownloadUrl extends HasInner, HasManager {
+ /**
+ * @return the expiryTime value.
+ */
+ DateTime expiryTime();
+
+ /**
+ * @return the url value.
+ */
+ String url();
+
+}
diff --git a/sdk/billing/mgmt-v2020_05_01/src/main/java/com/microsoft/azure/management/billing/v2020_05_01/Enrollment.java b/sdk/billing/mgmt-v2020_05_01/src/main/java/com/microsoft/azure/management/billing/v2020_05_01/Enrollment.java
new file mode 100644
index 0000000000000..d33b6620ed1fd
--- /dev/null
+++ b/sdk/billing/mgmt-v2020_05_01/src/main/java/com/microsoft/azure/management/billing/v2020_05_01/Enrollment.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.billing.v2020_05_01;
+
+import org.joda.time.DateTime;
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/**
+ * The properties of an enrollment.
+ */
+public class Enrollment {
+ /**
+ * The start date of the enrollment.
+ */
+ @JsonProperty(value = "startDate")
+ private DateTime startDate;
+
+ /**
+ * The end date of the enrollment.
+ */
+ @JsonProperty(value = "endDate")
+ private DateTime endDate;
+
+ /**
+ * The billing currency for the enrollment.
+ */
+ @JsonProperty(value = "currency", access = JsonProperty.Access.WRITE_ONLY)
+ private String currency;
+
+ /**
+ * The channel type of the enrollment.
+ */
+ @JsonProperty(value = "channel", access = JsonProperty.Access.WRITE_ONLY)
+ private String channel;
+
+ /**
+ * The policies for Enterprise Agreement enrollments.
+ */
+ @JsonProperty(value = "policies", access = JsonProperty.Access.WRITE_ONLY)
+ private EnrollmentPolicies policies;
+
+ /**
+ * The language for the enrollment.
+ */
+ @JsonProperty(value = "language", access = JsonProperty.Access.WRITE_ONLY)
+ private String language;
+
+ /**
+ * The country code of the enrollment.
+ */
+ @JsonProperty(value = "countryCode", access = JsonProperty.Access.WRITE_ONLY)
+ private String countryCode;
+
+ /**
+ * The current status of the enrollment.
+ */
+ @JsonProperty(value = "status", access = JsonProperty.Access.WRITE_ONLY)
+ private String status;
+
+ /**
+ * The billing cycle for the enrollment.
+ */
+ @JsonProperty(value = "billingCycle", access = JsonProperty.Access.WRITE_ONLY)
+ private String billingCycle;
+
+ /**
+ * Get the start date of the enrollment.
+ *
+ * @return the startDate value
+ */
+ public DateTime startDate() {
+ return this.startDate;
+ }
+
+ /**
+ * Set the start date of the enrollment.
+ *
+ * @param startDate the startDate value to set
+ * @return the Enrollment object itself.
+ */
+ public Enrollment withStartDate(DateTime startDate) {
+ this.startDate = startDate;
+ return this;
+ }
+
+ /**
+ * Get the end date of the enrollment.
+ *
+ * @return the endDate value
+ */
+ public DateTime endDate() {
+ return this.endDate;
+ }
+
+ /**
+ * Set the end date of the enrollment.
+ *
+ * @param endDate the endDate value to set
+ * @return the Enrollment object itself.
+ */
+ public Enrollment withEndDate(DateTime endDate) {
+ this.endDate = endDate;
+ return this;
+ }
+
+ /**
+ * Get the billing currency for the enrollment.
+ *
+ * @return the currency value
+ */
+ public String currency() {
+ return this.currency;
+ }
+
+ /**
+ * Get the channel type of the enrollment.
+ *
+ * @return the channel value
+ */
+ public String channel() {
+ return this.channel;
+ }
+
+ /**
+ * Get the policies for Enterprise Agreement enrollments.
+ *
+ * @return the policies value
+ */
+ public EnrollmentPolicies policies() {
+ return this.policies;
+ }
+
+ /**
+ * Get the language for the enrollment.
+ *
+ * @return the language value
+ */
+ public String language() {
+ return this.language;
+ }
+
+ /**
+ * Get the country code of the enrollment.
+ *
+ * @return the countryCode value
+ */
+ public String countryCode() {
+ return this.countryCode;
+ }
+
+ /**
+ * Get the current status of the enrollment.
+ *
+ * @return the status value
+ */
+ public String status() {
+ return this.status;
+ }
+
+ /**
+ * Get the billing cycle for the enrollment.
+ *
+ * @return the billingCycle value
+ */
+ public String billingCycle() {
+ return this.billingCycle;
+ }
+
+}
diff --git a/sdk/billing/mgmt-v2020_05_01/src/main/java/com/microsoft/azure/management/billing/v2020_05_01/EnrollmentAccountContext.java b/sdk/billing/mgmt-v2020_05_01/src/main/java/com/microsoft/azure/management/billing/v2020_05_01/EnrollmentAccountContext.java
new file mode 100644
index 0000000000000..082929b803fbf
--- /dev/null
+++ b/sdk/billing/mgmt-v2020_05_01/src/main/java/com/microsoft/azure/management/billing/v2020_05_01/EnrollmentAccountContext.java
@@ -0,0 +1,122 @@
+/**
+ * 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.billing.v2020_05_01;
+
+import org.joda.time.DateTime;
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/**
+ * The enrollment account context.
+ */
+public class EnrollmentAccountContext {
+ /**
+ * The cost center associated with the enrollment account.
+ */
+ @JsonProperty(value = "costCenter")
+ private String costCenter;
+
+ /**
+ * The start date of the enrollment account.
+ */
+ @JsonProperty(value = "startDate")
+ private DateTime startDate;
+
+ /**
+ * The end date of the enrollment account.
+ */
+ @JsonProperty(value = "endDate")
+ private DateTime endDate;
+
+ /**
+ * The ID of the enrollment account.
+ */
+ @JsonProperty(value = "enrollmentAccountName")
+ private String enrollmentAccountName;
+
+ /**
+ * Get the cost center associated with the enrollment account.
+ *
+ * @return the costCenter value
+ */
+ public String costCenter() {
+ return this.costCenter;
+ }
+
+ /**
+ * Set the cost center associated with the enrollment account.
+ *
+ * @param costCenter the costCenter value to set
+ * @return the EnrollmentAccountContext object itself.
+ */
+ public EnrollmentAccountContext withCostCenter(String costCenter) {
+ this.costCenter = costCenter;
+ return this;
+ }
+
+ /**
+ * Get the start date of the enrollment account.
+ *
+ * @return the startDate value
+ */
+ public DateTime startDate() {
+ return this.startDate;
+ }
+
+ /**
+ * Set the start date of the enrollment account.
+ *
+ * @param startDate the startDate value to set
+ * @return the EnrollmentAccountContext object itself.
+ */
+ public EnrollmentAccountContext withStartDate(DateTime startDate) {
+ this.startDate = startDate;
+ return this;
+ }
+
+ /**
+ * Get the end date of the enrollment account.
+ *
+ * @return the endDate value
+ */
+ public DateTime endDate() {
+ return this.endDate;
+ }
+
+ /**
+ * Set the end date of the enrollment account.
+ *
+ * @param endDate the endDate value to set
+ * @return the EnrollmentAccountContext object itself.
+ */
+ public EnrollmentAccountContext withEndDate(DateTime endDate) {
+ this.endDate = endDate;
+ return this;
+ }
+
+ /**
+ * Get the ID of the enrollment account.
+ *
+ * @return the enrollmentAccountName value
+ */
+ public String enrollmentAccountName() {
+ return this.enrollmentAccountName;
+ }
+
+ /**
+ * Set the ID of the enrollment account.
+ *
+ * @param enrollmentAccountName the enrollmentAccountName value to set
+ * @return the EnrollmentAccountContext object itself.
+ */
+ public EnrollmentAccountContext withEnrollmentAccountName(String enrollmentAccountName) {
+ this.enrollmentAccountName = enrollmentAccountName;
+ return this;
+ }
+
+}
diff --git a/sdk/billing/mgmt-v2020_05_01/src/main/java/com/microsoft/azure/management/billing/v2020_05_01/EnrollmentAccountSummary.java b/sdk/billing/mgmt-v2020_05_01/src/main/java/com/microsoft/azure/management/billing/v2020_05_01/EnrollmentAccountSummary.java
new file mode 100644
index 0000000000000..532856118e06d
--- /dev/null
+++ b/sdk/billing/mgmt-v2020_05_01/src/main/java/com/microsoft/azure/management/billing/v2020_05_01/EnrollmentAccountSummary.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.billing.v2020_05_01;
+
+import com.microsoft.azure.arm.model.HasInner;
+import com.microsoft.azure.arm.resources.models.HasManager;
+import com.microsoft.azure.management.billing.v2020_05_01.implementation.BillingManager;
+import com.microsoft.azure.management.billing.v2020_05_01.implementation.EnrollmentAccountSummaryInner;
+
+/**
+ * Type representing EnrollmentAccountSummary.
+ */
+public interface EnrollmentAccountSummary extends HasInner, HasManager {
+ /**
+ * @return the id value.
+ */
+ String id();
+
+ /**
+ * @return the name value.
+ */
+ String name();
+
+ /**
+ * @return the principalName value.
+ */
+ String principalName();
+
+ /**
+ * @return the type value.
+ */
+ String type();
+
+}
diff --git a/sdk/billing/mgmt-v2020_05_01/src/main/java/com/microsoft/azure/management/billing/v2020_05_01/EnrollmentAccounts.java b/sdk/billing/mgmt-v2020_05_01/src/main/java/com/microsoft/azure/management/billing/v2020_05_01/EnrollmentAccounts.java
new file mode 100644
index 0000000000000..077d26cbbbaf3
--- /dev/null
+++ b/sdk/billing/mgmt-v2020_05_01/src/main/java/com/microsoft/azure/management/billing/v2020_05_01/EnrollmentAccounts.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.billing.v2020_05_01;
+
+import rx.Observable;
+import com.microsoft.azure.management.billing.v2020_05_01.implementation.EnrollmentAccountsInner;
+import com.microsoft.azure.arm.model.HasInner;
+
+/**
+ * Type representing EnrollmentAccounts.
+ */
+public interface EnrollmentAccounts extends HasInner {
+ /**
+ * Gets a enrollment account by name.
+ *
+ * @param name Enrollment Account name.
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @return the observable for the request
+ */
+ Observable getAsync(String name);
+
+ /**
+ * Lists the enrollment accounts the caller has access to.
+ *
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @return the observable for the request
+ */
+ Observable listAsync();
+
+}
diff --git a/sdk/billing/mgmt-v2020_05_01/src/main/java/com/microsoft/azure/management/billing/v2020_05_01/EnrollmentPolicies.java b/sdk/billing/mgmt-v2020_05_01/src/main/java/com/microsoft/azure/management/billing/v2020_05_01/EnrollmentPolicies.java
new file mode 100644
index 0000000000000..bf27fedaa8352
--- /dev/null
+++ b/sdk/billing/mgmt-v2020_05_01/src/main/java/com/microsoft/azure/management/billing/v2020_05_01/EnrollmentPolicies.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.billing.v2020_05_01;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/**
+ * The policies for Enterprise Agreement enrollments.
+ */
+public class EnrollmentPolicies {
+ /**
+ * The policy that controls whether Account Owners can view charges.
+ */
+ @JsonProperty(value = "accountOwnerViewCharges", access = JsonProperty.Access.WRITE_ONLY)
+ private Boolean accountOwnerViewCharges;
+
+ /**
+ * The policy that controls whether Department Administrators can view
+ * charges.
+ */
+ @JsonProperty(value = "departmentAdminViewCharges", access = JsonProperty.Access.WRITE_ONLY)
+ private Boolean departmentAdminViewCharges;
+
+ /**
+ * The policy that controls whether Azure marketplace purchases are allowed
+ * in the enrollment.
+ */
+ @JsonProperty(value = "marketplacesEnabled", access = JsonProperty.Access.WRITE_ONLY)
+ private Boolean marketplacesEnabled;
+
+ /**
+ * The policy that controls whether Azure reservation purchases are allowed
+ * in the enrollment.
+ */
+ @JsonProperty(value = "reservedInstancesEnabled", access = JsonProperty.Access.WRITE_ONLY)
+ private Boolean reservedInstancesEnabled;
+
+ /**
+ * Get the policy that controls whether Account Owners can view charges.
+ *
+ * @return the accountOwnerViewCharges value
+ */
+ public Boolean accountOwnerViewCharges() {
+ return this.accountOwnerViewCharges;
+ }
+
+ /**
+ * Get the policy that controls whether Department Administrators can view charges.
+ *
+ * @return the departmentAdminViewCharges value
+ */
+ public Boolean departmentAdminViewCharges() {
+ return this.departmentAdminViewCharges;
+ }
+
+ /**
+ * Get the policy that controls whether Azure marketplace purchases are allowed in the enrollment.
+ *
+ * @return the marketplacesEnabled value
+ */
+ public Boolean marketplacesEnabled() {
+ return this.marketplacesEnabled;
+ }
+
+ /**
+ * Get the policy that controls whether Azure reservation purchases are allowed in the enrollment.
+ *
+ * @return the reservedInstancesEnabled value
+ */
+ public Boolean reservedInstancesEnabled() {
+ return this.reservedInstancesEnabled;
+ }
+
+}
diff --git a/sdk/billing/mgmt-v2020_05_01/src/main/java/com/microsoft/azure/management/billing/v2020_05_01/ErrorDetails.java b/sdk/billing/mgmt-v2020_05_01/src/main/java/com/microsoft/azure/management/billing/v2020_05_01/ErrorDetails.java
new file mode 100644
index 0000000000000..4dc257cf83df7
--- /dev/null
+++ b/sdk/billing/mgmt-v2020_05_01/src/main/java/com/microsoft/azure/management/billing/v2020_05_01/ErrorDetails.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.billing.v2020_05_01;
+
+import java.util.List;
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/**
+ * The details of the error.
+ */
+public class ErrorDetails {
+ /**
+ * Error code.
+ */
+ @JsonProperty(value = "code", access = JsonProperty.Access.WRITE_ONLY)
+ private String code;
+
+ /**
+ * Error message indicating why the operation failed.
+ */
+ @JsonProperty(value = "message", access = JsonProperty.Access.WRITE_ONLY)
+ private String message;
+
+ /**
+ * The target of the particular error.
+ */
+ @JsonProperty(value = "target", access = JsonProperty.Access.WRITE_ONLY)
+ private String target;
+
+ /**
+ * The sub details of the error.
+ */
+ @JsonProperty(value = "details", access = JsonProperty.Access.WRITE_ONLY)
+ private List details;
+
+ /**
+ * Get error code.
+ *
+ * @return the code value
+ */
+ public String code() {
+ return this.code;
+ }
+
+ /**
+ * Get error message indicating why the operation failed.
+ *
+ * @return the message value
+ */
+ public String message() {
+ return this.message;
+ }
+
+ /**
+ * Get the target of the particular error.
+ *
+ * @return the target value
+ */
+ public String target() {
+ return this.target;
+ }
+
+ /**
+ * Get the sub details of the error.
+ *
+ * @return the details value
+ */
+ public List details() {
+ return this.details;
+ }
+
+}
diff --git a/sdk/billing/mgmt-v2020_05_01/src/main/java/com/microsoft/azure/management/billing/v2020_05_01/ErrorResponse.java b/sdk/billing/mgmt-v2020_05_01/src/main/java/com/microsoft/azure/management/billing/v2020_05_01/ErrorResponse.java
new file mode 100644
index 0000000000000..25ece1e59ca40
--- /dev/null
+++ b/sdk/billing/mgmt-v2020_05_01/src/main/java/com/microsoft/azure/management/billing/v2020_05_01/ErrorResponse.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.billing.v2020_05_01;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/**
+ * Error response indicates that the service is not able to process the
+ * incoming request. The reason is provided in the error message.
+ */
+public class ErrorResponse {
+ /**
+ * The details of the error.
+ */
+ @JsonProperty(value = "error")
+ private ErrorDetails error;
+
+ /**
+ * Get the details of the error.
+ *
+ * @return the error value
+ */
+ public ErrorDetails error() {
+ return this.error;
+ }
+
+ /**
+ * Set the details of the error.
+ *
+ * @param error the error value to set
+ * @return the ErrorResponse object itself.
+ */
+ public ErrorResponse withError(ErrorDetails error) {
+ this.error = error;
+ return this;
+ }
+
+}
diff --git a/sdk/billing/mgmt-v2020_05_01/src/main/java/com/microsoft/azure/management/billing/v2020_05_01/ErrorResponseException.java b/sdk/billing/mgmt-v2020_05_01/src/main/java/com/microsoft/azure/management/billing/v2020_05_01/ErrorResponseException.java
new file mode 100644
index 0000000000000..5d453171ed24e
--- /dev/null
+++ b/sdk/billing/mgmt-v2020_05_01/src/main/java/com/microsoft/azure/management/billing/v2020_05_01/ErrorResponseException.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.billing.v2020_05_01;
+
+import com.microsoft.rest.RestException;
+import okhttp3.ResponseBody;
+import retrofit2.Response;
+
+/**
+ * Exception thrown for an invalid response with ErrorResponse information.
+ */
+public class ErrorResponseException extends RestException {
+ /**
+ * Initializes a new instance of the ErrorResponseException class.
+ *
+ * @param message the exception message or the response content if a message is not available
+ * @param response the HTTP response
+ */
+ public ErrorResponseException(final String message, final Response response) {
+ super(message, response);
+ }
+
+ /**
+ * Initializes a new instance of the ErrorResponseException class.
+ *
+ * @param message the exception message or the response content if a message is not available
+ * @param response the HTTP response
+ * @param body the deserialized response body
+ */
+ public ErrorResponseException(final String message, final Response response, final ErrorResponse body) {
+ super(message, response, body);
+ }
+
+ @Override
+ public ErrorResponse body() {
+ return (ErrorResponse) super.body();
+ }
+}
diff --git a/sdk/billing/mgmt-v2020_05_01/src/main/java/com/microsoft/azure/management/billing/v2020_05_01/ErrorSubDetailsItem.java b/sdk/billing/mgmt-v2020_05_01/src/main/java/com/microsoft/azure/management/billing/v2020_05_01/ErrorSubDetailsItem.java
new file mode 100644
index 0000000000000..3944b32d98589
--- /dev/null
+++ b/sdk/billing/mgmt-v2020_05_01/src/main/java/com/microsoft/azure/management/billing/v2020_05_01/ErrorSubDetailsItem.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.billing.v2020_05_01;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/**
+ * The ErrorSubDetailsItem model.
+ */
+public class ErrorSubDetailsItem {
+ /**
+ * Error code.
+ */
+ @JsonProperty(value = "code", access = JsonProperty.Access.WRITE_ONLY)
+ private String code;
+
+ /**
+ * Error message indicating why the operation failed.
+ */
+ @JsonProperty(value = "message", access = JsonProperty.Access.WRITE_ONLY)
+ private String message;
+
+ /**
+ * The target of the particular error.
+ */
+ @JsonProperty(value = "target", access = JsonProperty.Access.WRITE_ONLY)
+ private String target;
+
+ /**
+ * Get error code.
+ *
+ * @return the code value
+ */
+ public String code() {
+ return this.code;
+ }
+
+ /**
+ * Get error message indicating why the operation failed.
+ *
+ * @return the message value
+ */
+ public String message() {
+ return this.message;
+ }
+
+ /**
+ * Get the target of the particular error.
+ *
+ * @return the target value
+ */
+ public String target() {
+ return this.target;
+ }
+
+}
diff --git a/sdk/billing/mgmt-v2020_05_01/src/main/java/com/microsoft/azure/management/billing/v2020_05_01/IndirectRelationshipInfo.java b/sdk/billing/mgmt-v2020_05_01/src/main/java/com/microsoft/azure/management/billing/v2020_05_01/IndirectRelationshipInfo.java
new file mode 100644
index 0000000000000..897c6650bbed9
--- /dev/null
+++ b/sdk/billing/mgmt-v2020_05_01/src/main/java/com/microsoft/azure/management/billing/v2020_05_01/IndirectRelationshipInfo.java
@@ -0,0 +1,98 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.billing.v2020_05_01;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/**
+ * The billing profile details of the partner of the customer for an indirect
+ * motion.
+ */
+public class IndirectRelationshipInfo {
+ /**
+ * The billing account name of the partner or the customer for an indirect
+ * motion.
+ */
+ @JsonProperty(value = "billingAccountName")
+ private String billingAccountName;
+
+ /**
+ * The billing profile name of the partner or the customer for an indirect
+ * motion.
+ */
+ @JsonProperty(value = "billingProfileName")
+ private String billingProfileName;
+
+ /**
+ * The display name of the partner or customer for an indirect motion.
+ */
+ @JsonProperty(value = "displayName")
+ private String displayName;
+
+ /**
+ * Get the billing account name of the partner or the customer for an indirect motion.
+ *
+ * @return the billingAccountName value
+ */
+ public String billingAccountName() {
+ return this.billingAccountName;
+ }
+
+ /**
+ * Set the billing account name of the partner or the customer for an indirect motion.
+ *
+ * @param billingAccountName the billingAccountName value to set
+ * @return the IndirectRelationshipInfo object itself.
+ */
+ public IndirectRelationshipInfo withBillingAccountName(String billingAccountName) {
+ this.billingAccountName = billingAccountName;
+ return this;
+ }
+
+ /**
+ * Get the billing profile name of the partner or the customer for an indirect motion.
+ *
+ * @return the billingProfileName value
+ */
+ public String billingProfileName() {
+ return this.billingProfileName;
+ }
+
+ /**
+ * Set the billing profile name of the partner or the customer for an indirect motion.
+ *
+ * @param billingProfileName the billingProfileName value to set
+ * @return the IndirectRelationshipInfo object itself.
+ */
+ public IndirectRelationshipInfo withBillingProfileName(String billingProfileName) {
+ this.billingProfileName = billingProfileName;
+ return this;
+ }
+
+ /**
+ * Get the display name of the partner or customer for an indirect motion.
+ *
+ * @return the displayName value
+ */
+ public String displayName() {
+ return this.displayName;
+ }
+
+ /**
+ * Set the display name of the partner or customer for an indirect motion.
+ *
+ * @param displayName the displayName value to set
+ * @return the IndirectRelationshipInfo object itself.
+ */
+ public IndirectRelationshipInfo withDisplayName(String displayName) {
+ this.displayName = displayName;
+ return this;
+ }
+
+}
diff --git a/sdk/billing/mgmt-v2020_05_01/src/main/java/com/microsoft/azure/management/billing/v2020_05_01/Instruction.java b/sdk/billing/mgmt-v2020_05_01/src/main/java/com/microsoft/azure/management/billing/v2020_05_01/Instruction.java
new file mode 100644
index 0000000000000..3eea06324ff01
--- /dev/null
+++ b/sdk/billing/mgmt-v2020_05_01/src/main/java/com/microsoft/azure/management/billing/v2020_05_01/Instruction.java
@@ -0,0 +1,169 @@
+/**
+ * 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.billing.v2020_05_01;
+
+import com.microsoft.azure.arm.model.HasInner;
+import com.microsoft.azure.management.billing.v2020_05_01.implementation.InstructionInner;
+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.billing.v2020_05_01.implementation.BillingManager;
+import org.joda.time.DateTime;
+
+/**
+ * Type representing Instruction.
+ */
+public interface Instruction extends HasInner, Indexable, Refreshable, Updatable, HasManager {
+ /**
+ * @return the amount value.
+ */
+ double amount();
+
+ /**
+ * @return the creationDate value.
+ */
+ DateTime creationDate();
+
+ /**
+ * @return the endDate value.
+ */
+ DateTime endDate();
+
+ /**
+ * @return the id value.
+ */
+ String id();
+
+ /**
+ * @return the name value.
+ */
+ String name();
+
+ /**
+ * @return the startDate value.
+ */
+ DateTime startDate();
+
+ /**
+ * @return the type value.
+ */
+ String type();
+
+ /**
+ * The entirety of the Instruction definition.
+ */
+ interface Definition extends DefinitionStages.Blank, DefinitionStages.WithBillingProfile, DefinitionStages.WithAmount, DefinitionStages.WithEndDate, DefinitionStages.WithStartDate, DefinitionStages.WithCreate {
+ }
+
+ /**
+ * Grouping of Instruction definition stages.
+ */
+ interface DefinitionStages {
+ /**
+ * The first stage of a Instruction definition.
+ */
+ interface Blank extends WithBillingProfile {
+ }
+
+ /**
+ * The stage of the instruction definition allowing to specify BillingProfile.
+ */
+ interface WithBillingProfile {
+ /**
+ * Specifies billingAccountName, billingProfileName.
+ * @param billingAccountName The ID that uniquely identifies a billing account
+ * @param billingProfileName The ID that uniquely identifies a billing profile
+ * @return the next definition stage
+ */
+ WithAmount withExistingBillingProfile(String billingAccountName, String billingProfileName);
+ }
+
+ /**
+ * The stage of the instruction definition allowing to specify Amount.
+ */
+ interface WithAmount {
+ /**
+ * Specifies amount.
+ * @param amount The amount budgeted for this billing instruction
+ * @return the next definition stage
+ */
+ WithEndDate withAmount(double amount);
+ }
+
+ /**
+ * The stage of the instruction definition allowing to specify EndDate.
+ */
+ interface WithEndDate {
+ /**
+ * Specifies endDate.
+ * @param endDate The date this billing instruction is no longer in effect
+ * @return the next definition stage
+ */
+ WithStartDate withEndDate(DateTime endDate);
+ }
+
+ /**
+ * The stage of the instruction definition allowing to specify StartDate.
+ */
+ interface WithStartDate {
+ /**
+ * Specifies startDate.
+ * @param startDate The date this billing instruction goes into effect
+ * @return the next definition stage
+ */
+ WithCreate withStartDate(DateTime startDate);
+ }
+
+ /**
+ * The stage of the instruction definition allowing to specify CreationDate.
+ */
+ interface WithCreationDate {
+ /**
+ * Specifies creationDate.
+ * @param creationDate The date this billing instruction was created
+ * @return the next definition stage
+ */
+ WithCreate withCreationDate(DateTime creationDate);
+ }
+
+ /**
+ * 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.WithCreationDate {
+ }
+ }
+ /**
+ * The template for a Instruction update operation, containing all the settings that can be modified.
+ */
+ interface Update extends Appliable, UpdateStages.WithCreationDate {
+ }
+
+ /**
+ * Grouping of Instruction update stages.
+ */
+ interface UpdateStages {
+ /**
+ * The stage of the instruction update allowing to specify CreationDate.
+ */
+ interface WithCreationDate {
+ /**
+ * Specifies creationDate.
+ * @param creationDate The date this billing instruction was created
+ * @return the next update stage
+ */
+ Update withCreationDate(DateTime creationDate);
+ }
+
+ }
+}
diff --git a/sdk/billing/mgmt-v2020_05_01/src/main/java/com/microsoft/azure/management/billing/v2020_05_01/Instructions.java b/sdk/billing/mgmt-v2020_05_01/src/main/java/com/microsoft/azure/management/billing/v2020_05_01/Instructions.java
new file mode 100644
index 0000000000000..2f75e501c1dae
--- /dev/null
+++ b/sdk/billing/mgmt-v2020_05_01/src/main/java/com/microsoft/azure/management/billing/v2020_05_01/Instructions.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.billing.v2020_05_01;
+
+import com.microsoft.azure.arm.collection.SupportsCreating;
+import rx.Observable;
+import com.microsoft.azure.management.billing.v2020_05_01.implementation.InstructionsInner;
+import com.microsoft.azure.arm.model.HasInner;
+
+/**
+ * Type representing Instructions.
+ */
+public interface Instructions extends SupportsCreating, HasInner {
+ /**
+ * Get the instruction by name. These are custom billing instructions and are only applicable for certain customers.
+ *
+ * @param billingAccountName The ID that uniquely identifies a billing account.
+ * @param billingProfileName The ID that uniquely identifies a billing profile.
+ * @param instructionName Instruction Name.
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @return the observable for the request
+ */
+ Observable getAsync(String billingAccountName, String billingProfileName, String instructionName);
+
+ /**
+ * Lists the instructions by billing profile id.
+ *
+ * @param billingAccountName The ID that uniquely identifies a billing account.
+ * @param billingProfileName The ID that uniquely identifies a billing profile.
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @return the observable for the request
+ */
+ Observable listByBillingProfileAsync(final String billingAccountName, final String billingProfileName);
+
+}
diff --git a/sdk/billing/mgmt-v2020_05_01/src/main/java/com/microsoft/azure/management/billing/v2020_05_01/Invoice.java b/sdk/billing/mgmt-v2020_05_01/src/main/java/com/microsoft/azure/management/billing/v2020_05_01/Invoice.java
new file mode 100644
index 0000000000000..b7c0f61c71f99
--- /dev/null
+++ b/sdk/billing/mgmt-v2020_05_01/src/main/java/com/microsoft/azure/management/billing/v2020_05_01/Invoice.java
@@ -0,0 +1,165 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.billing.v2020_05_01;
+
+import com.microsoft.azure.arm.model.HasInner;
+import com.microsoft.azure.management.billing.v2020_05_01.implementation.InvoiceInner;
+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.billing.v2020_05_01.implementation.BillingManager;
+import java.util.List;
+import org.joda.time.DateTime;
+import java.util.Map;
+
+/**
+ * Type representing Invoice.
+ */
+public interface Invoice extends HasInner, Indexable, Refreshable, HasManager {
+ /**
+ * @return the amountDue value.
+ */
+ Amount amountDue();
+
+ /**
+ * @return the azurePrepaymentApplied value.
+ */
+ Amount azurePrepaymentApplied();
+
+ /**
+ * @return the billedAmount value.
+ */
+ Amount billedAmount();
+
+ /**
+ * @return the billedDocumentId value.
+ */
+ String billedDocumentId();
+
+ /**
+ * @return the billingProfileDisplayName value.
+ */
+ String billingProfileDisplayName();
+
+ /**
+ * @return the billingProfileId value.
+ */
+ String billingProfileId();
+
+ /**
+ * @return the creditAmount value.
+ */
+ Amount creditAmount();
+
+ /**
+ * @return the creditForDocumentId value.
+ */
+ String creditForDocumentId();
+
+ /**
+ * @return the documents value.
+ */
+ List documents();
+
+ /**
+ * @return the documentType value.
+ */
+ InvoiceDocumentType documentType();
+
+ /**
+ * @return the dueDate value.
+ */
+ DateTime dueDate();
+
+ /**
+ * @return the freeAzureCreditApplied value.
+ */
+ Amount freeAzureCreditApplied();
+
+ /**
+ * @return the id value.
+ */
+ String id();
+
+ /**
+ * @return the invoiceDate value.
+ */
+ DateTime invoiceDate();
+
+ /**
+ * @return the invoicePeriodEndDate value.
+ */
+ DateTime invoicePeriodEndDate();
+
+ /**
+ * @return the invoicePeriodStartDate value.
+ */
+ DateTime invoicePeriodStartDate();
+
+ /**
+ * @return the invoiceType value.
+ */
+ InvoiceType invoiceType();
+
+ /**
+ * @return the isMonthlyInvoice value.
+ */
+ Boolean isMonthlyInvoice();
+
+ /**
+ * @return the name value.
+ */
+ String name();
+
+ /**
+ * @return the payments value.
+ */
+ List payments();
+
+ /**
+ * @return the purchaseOrderNumber value.
+ */
+ String purchaseOrderNumber();
+
+ /**
+ * @return the rebillDetails value.
+ */
+ Map rebillDetails();
+
+ /**
+ * @return the status value.
+ */
+ InvoiceStatus status();
+
+ /**
+ * @return the subscriptionId value.
+ */
+ String subscriptionId();
+
+ /**
+ * @return the subTotal value.
+ */
+ Amount subTotal();
+
+ /**
+ * @return the taxAmount value.
+ */
+ Amount taxAmount();
+
+ /**
+ * @return the totalAmount value.
+ */
+ Amount totalAmount();
+
+ /**
+ * @return the type value.
+ */
+ String type();
+
+}
diff --git a/sdk/billing/mgmt-v2020_05_01/src/main/java/com/microsoft/azure/management/billing/v2020_05_01/InvoiceDocumentType.java b/sdk/billing/mgmt-v2020_05_01/src/main/java/com/microsoft/azure/management/billing/v2020_05_01/InvoiceDocumentType.java
new file mode 100644
index 0000000000000..8be29474ea420
--- /dev/null
+++ b/sdk/billing/mgmt-v2020_05_01/src/main/java/com/microsoft/azure/management/billing/v2020_05_01/InvoiceDocumentType.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.billing.v2020_05_01;
+
+import java.util.Collection;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.microsoft.rest.ExpandableStringEnum;
+
+/**
+ * Defines values for InvoiceDocumentType.
+ */
+public final class InvoiceDocumentType extends ExpandableStringEnum {
+ /** Static value Invoice for InvoiceDocumentType. */
+ public static final InvoiceDocumentType INVOICE = fromString("Invoice");
+
+ /** Static value CreditNote for InvoiceDocumentType. */
+ public static final InvoiceDocumentType CREDIT_NOTE = fromString("CreditNote");
+
+ /**
+ * Creates or finds a InvoiceDocumentType from its string representation.
+ * @param name a name to look for
+ * @return the corresponding InvoiceDocumentType
+ */
+ @JsonCreator
+ public static InvoiceDocumentType fromString(String name) {
+ return fromString(name, InvoiceDocumentType.class);
+ }
+
+ /**
+ * @return known InvoiceDocumentType values
+ */
+ public static Collection values() {
+ return values(InvoiceDocumentType.class);
+ }
+}
diff --git a/sdk/billing/mgmt-v2020_05_01/src/main/java/com/microsoft/azure/management/billing/v2020_05_01/InvoiceSection.java b/sdk/billing/mgmt-v2020_05_01/src/main/java/com/microsoft/azure/management/billing/v2020_05_01/InvoiceSection.java
new file mode 100644
index 0000000000000..a7db6b1116bc0
--- /dev/null
+++ b/sdk/billing/mgmt-v2020_05_01/src/main/java/com/microsoft/azure/management/billing/v2020_05_01/InvoiceSection.java
@@ -0,0 +1,162 @@
+/**
+ * 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.billing.v2020_05_01;
+
+import com.microsoft.azure.arm.model.HasInner;
+import com.microsoft.azure.management.billing.v2020_05_01.implementation.InvoiceSectionInner;
+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.billing.v2020_05_01.implementation.BillingManager;
+import java.util.Map;
+
+/**
+ * Type representing InvoiceSection.
+ */
+public interface InvoiceSection extends HasInner, Indexable, Refreshable, Updatable, HasManager {
+ /**
+ * @return the displayName value.
+ */
+ String displayName();
+
+ /**
+ * @return the id value.
+ */
+ String id();
+
+ /**
+ * @return the labels value.
+ */
+ Map labels();
+
+ /**
+ * @return the name value.
+ */
+ String name();
+
+ /**
+ * @return the state value.
+ */
+ InvoiceSectionState state();
+
+ /**
+ * @return the systemId value.
+ */
+ String systemId();
+
+ /**
+ * @return the targetCloud value.
+ */
+ TargetCloud targetCloud();
+
+ /**
+ * @return the type value.
+ */
+ String type();
+
+ /**
+ * The entirety of the InvoiceSection definition.
+ */
+ interface Definition extends DefinitionStages.Blank, DefinitionStages.WithBillingProfile, DefinitionStages.WithCreate {
+ }
+
+ /**
+ * Grouping of InvoiceSection definition stages.
+ */
+ interface DefinitionStages {
+ /**
+ * The first stage of a InvoiceSection definition.
+ */
+ interface Blank extends WithBillingProfile {
+ }
+
+ /**
+ * The stage of the invoicesection definition allowing to specify BillingProfile.
+ */
+ interface WithBillingProfile {
+ /**
+ * Specifies billingAccountName, billingProfileName.
+ * @param billingAccountName The ID that uniquely identifies a billing account
+ * @param billingProfileName The ID that uniquely identifies a billing profile
+ * @return the next definition stage
+ */
+ WithCreate withExistingBillingProfile(String billingAccountName, String billingProfileName);
+ }
+
+ /**
+ * The stage of the invoicesection definition allowing to specify DisplayName.
+ */
+ interface WithDisplayName {
+ /**
+ * Specifies displayName.
+ * @param displayName The name of the invoice section
+ * @return the next definition stage
+ */
+ WithCreate withDisplayName(String displayName);
+ }
+
+ /**
+ * The stage of the invoicesection definition allowing to specify Labels.
+ */
+ interface WithLabels {
+ /**
+ * Specifies labels.
+ * @param labels Dictionary of metadata associated with the invoice section
+ * @return the next definition stage
+ */
+ WithCreate withLabels(Map labels);
+ }
+
+ /**
+ * 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.WithDisplayName, DefinitionStages.WithLabels {
+ }
+ }
+ /**
+ * The template for a InvoiceSection update operation, containing all the settings that can be modified.
+ */
+ interface Update extends Appliable, UpdateStages.WithDisplayName, UpdateStages.WithLabels {
+ }
+
+ /**
+ * Grouping of InvoiceSection update stages.
+ */
+ interface UpdateStages {
+ /**
+ * The stage of the invoicesection update allowing to specify DisplayName.
+ */
+ interface WithDisplayName {
+ /**
+ * Specifies displayName.
+ * @param displayName The name of the invoice section
+ * @return the next update stage
+ */
+ Update withDisplayName(String displayName);
+ }
+
+ /**
+ * The stage of the invoicesection update allowing to specify Labels.
+ */
+ interface WithLabels {
+ /**
+ * Specifies labels.
+ * @param labels Dictionary of metadata associated with the invoice section
+ * @return the next update stage
+ */
+ Update withLabels(Map labels);
+ }
+
+ }
+}
diff --git a/sdk/billing/mgmt-v2020_05_01/src/main/java/com/microsoft/azure/management/billing/v2020_05_01/InvoiceSectionCreationRequest.java b/sdk/billing/mgmt-v2020_05_01/src/main/java/com/microsoft/azure/management/billing/v2020_05_01/InvoiceSectionCreationRequest.java
new file mode 100644
index 0000000000000..417bb4efc9780
--- /dev/null
+++ b/sdk/billing/mgmt-v2020_05_01/src/main/java/com/microsoft/azure/management/billing/v2020_05_01/InvoiceSectionCreationRequest.java
@@ -0,0 +1,43 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.billing.v2020_05_01;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/**
+ * The properties of the invoice section.
+ */
+public class InvoiceSectionCreationRequest {
+ /**
+ * The name of the invoice section.
+ */
+ @JsonProperty(value = "displayName")
+ private String displayName;
+
+ /**
+ * Get the name of the invoice section.
+ *
+ * @return the displayName value
+ */
+ public String displayName() {
+ return this.displayName;
+ }
+
+ /**
+ * Set the name of the invoice section.
+ *
+ * @param displayName the displayName value to set
+ * @return the InvoiceSectionCreationRequest object itself.
+ */
+ public InvoiceSectionCreationRequest withDisplayName(String displayName) {
+ this.displayName = displayName;
+ return this;
+ }
+
+}
diff --git a/sdk/billing/mgmt-v2020_05_01/src/main/java/com/microsoft/azure/management/billing/v2020_05_01/InvoiceSectionState.java b/sdk/billing/mgmt-v2020_05_01/src/main/java/com/microsoft/azure/management/billing/v2020_05_01/InvoiceSectionState.java
new file mode 100644
index 0000000000000..6e8fbc9a50361
--- /dev/null
+++ b/sdk/billing/mgmt-v2020_05_01/src/main/java/com/microsoft/azure/management/billing/v2020_05_01/InvoiceSectionState.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.billing.v2020_05_01;
+
+import java.util.Collection;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.microsoft.rest.ExpandableStringEnum;
+
+/**
+ * Defines values for InvoiceSectionState.
+ */
+public final class InvoiceSectionState extends ExpandableStringEnum {
+ /** Static value Active for InvoiceSectionState. */
+ public static final InvoiceSectionState ACTIVE = fromString("Active");
+
+ /** Static value Restricted for InvoiceSectionState. */
+ public static final InvoiceSectionState RESTRICTED = fromString("Restricted");
+
+ /**
+ * Creates or finds a InvoiceSectionState from its string representation.
+ * @param name a name to look for
+ * @return the corresponding InvoiceSectionState
+ */
+ @JsonCreator
+ public static InvoiceSectionState fromString(String name) {
+ return fromString(name, InvoiceSectionState.class);
+ }
+
+ /**
+ * @return known InvoiceSectionState values
+ */
+ public static Collection values() {
+ return values(InvoiceSectionState.class);
+ }
+}
diff --git a/sdk/billing/mgmt-v2020_05_01/src/main/java/com/microsoft/azure/management/billing/v2020_05_01/InvoiceSectionWithCreateSubPermission.java b/sdk/billing/mgmt-v2020_05_01/src/main/java/com/microsoft/azure/management/billing/v2020_05_01/InvoiceSectionWithCreateSubPermission.java
new file mode 100644
index 0000000000000..2427daee503c9
--- /dev/null
+++ b/sdk/billing/mgmt-v2020_05_01/src/main/java/com/microsoft/azure/management/billing/v2020_05_01/InvoiceSectionWithCreateSubPermission.java
@@ -0,0 +1,71 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.billing.v2020_05_01;
+
+import com.microsoft.azure.arm.model.HasInner;
+import com.microsoft.azure.arm.resources.models.HasManager;
+import com.microsoft.azure.management.billing.v2020_05_01.implementation.BillingManager;
+import com.microsoft.azure.management.billing.v2020_05_01.implementation.InvoiceSectionWithCreateSubPermissionInner;
+import java.util.List;
+
+/**
+ * Type representing InvoiceSectionWithCreateSubPermission.
+ */
+public interface InvoiceSectionWithCreateSubPermission extends HasInner, HasManager {
+ /**
+ * @return the billingProfileDisplayName value.
+ */
+ String billingProfileDisplayName();
+
+ /**
+ * @return the billingProfileId value.
+ */
+ String billingProfileId();
+
+ /**
+ * @return the billingProfileSpendingLimit value.
+ */
+ SpendingLimitForBillingProfile billingProfileSpendingLimit();
+
+ /**
+ * @return the billingProfileStatus value.
+ */
+ BillingProfileStatus billingProfileStatus();
+
+ /**
+ * @return the billingProfileStatusReasonCode value.
+ */
+ StatusReasonCodeForBillingProfile billingProfileStatusReasonCode();
+
+ /**
+ * @return the billingProfileSystemId value.
+ */
+ String billingProfileSystemId();
+
+ /**
+ * @return the enabledAzurePlans value.
+ */
+ List enabledAzurePlans();
+
+ /**
+ * @return the invoiceSectionDisplayName value.
+ */
+ String invoiceSectionDisplayName();
+
+ /**
+ * @return the invoiceSectionId value.
+ */
+ String invoiceSectionId();
+
+ /**
+ * @return the invoiceSectionSystemId value.
+ */
+ String invoiceSectionSystemId();
+
+}
diff --git a/sdk/billing/mgmt-v2020_05_01/src/main/java/com/microsoft/azure/management/billing/v2020_05_01/InvoiceSections.java b/sdk/billing/mgmt-v2020_05_01/src/main/java/com/microsoft/azure/management/billing/v2020_05_01/InvoiceSections.java
new file mode 100644
index 0000000000000..2b710b0a86f9c
--- /dev/null
+++ b/sdk/billing/mgmt-v2020_05_01/src/main/java/com/microsoft/azure/management/billing/v2020_05_01/InvoiceSections.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.billing.v2020_05_01;
+
+import com.microsoft.azure.arm.collection.SupportsCreating;
+import rx.Observable;
+import com.microsoft.azure.management.billing.v2020_05_01.implementation.InvoiceSectionsInner;
+import com.microsoft.azure.arm.model.HasInner;
+
+/**
+ * Type representing InvoiceSections.
+ */
+public interface InvoiceSections extends SupportsCreating, HasInner {
+ /**
+ * Gets an invoice section by its ID. The operation is supported only for billing accounts with agreement type Microsoft Customer Agreement.
+ *
+ * @param billingAccountName The ID that uniquely identifies a billing account.
+ * @param billingProfileName The ID that uniquely identifies a billing profile.
+ * @param invoiceSectionName The ID that uniquely identifies an invoice section.
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @return the observable for the request
+ */
+ Observable getAsync(String billingAccountName, String billingProfileName, String invoiceSectionName);
+
+ /**
+ * Lists the invoice sections that a user has access to. The operation is supported only for billing accounts with agreement type Microsoft Customer Agreement.
+ *
+ * @param billingAccountName The ID that uniquely identifies a billing account.
+ * @param billingProfileName The ID that uniquely identifies a billing profile.
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @return the observable for the request
+ */
+ Observable listByBillingProfileAsync(final String billingAccountName, final String billingProfileName);
+
+}
diff --git a/sdk/billing/mgmt-v2020_05_01/src/main/java/com/microsoft/azure/management/billing/v2020_05_01/InvoiceSectionsCreateOrUpdateHeaders.java b/sdk/billing/mgmt-v2020_05_01/src/main/java/com/microsoft/azure/management/billing/v2020_05_01/InvoiceSectionsCreateOrUpdateHeaders.java
new file mode 100644
index 0000000000000..b014b0136ee86
--- /dev/null
+++ b/sdk/billing/mgmt-v2020_05_01/src/main/java/com/microsoft/azure/management/billing/v2020_05_01/InvoiceSectionsCreateOrUpdateHeaders.java
@@ -0,0 +1,70 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.billing.v2020_05_01;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/**
+ * Defines headers for CreateOrUpdate operation.
+ */
+public class InvoiceSectionsCreateOrUpdateHeaders {
+ /**
+ * Location URI to poll for result.
+ */
+ @JsonProperty(value = "Location")
+ private String location;
+
+ /**
+ * Recommended time to wait before making another request to check the
+ * status of the operation. The time is specified in seconds.
+ */
+ @JsonProperty(value = "Retry-After")
+ private Integer retryAfter;
+
+ /**
+ * Get location URI to poll for result.
+ *
+ * @return the location value
+ */
+ public String location() {
+ return this.location;
+ }
+
+ /**
+ * Set location URI to poll for result.
+ *
+ * @param location the location value to set
+ * @return the InvoiceSectionsCreateOrUpdateHeaders object itself.
+ */
+ public InvoiceSectionsCreateOrUpdateHeaders withLocation(String location) {
+ this.location = location;
+ return this;
+ }
+
+ /**
+ * Get recommended time to wait before making another request to check the status of the operation. The time is specified in seconds.
+ *
+ * @return the retryAfter value
+ */
+ public Integer retryAfter() {
+ return this.retryAfter;
+ }
+
+ /**
+ * Set recommended time to wait before making another request to check the status of the operation. The time is specified in seconds.
+ *
+ * @param retryAfter the retryAfter value to set
+ * @return the InvoiceSectionsCreateOrUpdateHeaders object itself.
+ */
+ public InvoiceSectionsCreateOrUpdateHeaders withRetryAfter(Integer retryAfter) {
+ this.retryAfter = retryAfter;
+ return this;
+ }
+
+}
diff --git a/sdk/billing/mgmt-v2020_05_01/src/main/java/com/microsoft/azure/management/billing/v2020_05_01/InvoiceSectionsOnExpand.java b/sdk/billing/mgmt-v2020_05_01/src/main/java/com/microsoft/azure/management/billing/v2020_05_01/InvoiceSectionsOnExpand.java
new file mode 100644
index 0000000000000..8a8c400187f38
--- /dev/null
+++ b/sdk/billing/mgmt-v2020_05_01/src/main/java/com/microsoft/azure/management/billing/v2020_05_01/InvoiceSectionsOnExpand.java
@@ -0,0 +1,64 @@
+/**
+ * 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.billing.v2020_05_01;
+
+import java.util.List;
+import com.microsoft.azure.management.billing.v2020_05_01.implementation.InvoiceSectionInner;
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/**
+ * The invoice sections associated to the billing profile. By default this is
+ * not populated, unless it's specified in $expand.
+ */
+public class InvoiceSectionsOnExpand {
+ /**
+ * Indicates whether there are more invoice sections than the ones listed
+ * in this collection. The collection lists a maximum of 50 invoice
+ * sections. To get all invoice sections, use the list invoice sections
+ * API.
+ */
+ @JsonProperty(value = "hasMoreResults", access = JsonProperty.Access.WRITE_ONLY)
+ private Boolean hasMoreResults;
+
+ /**
+ * The invoice sections associated to the billing profile.
+ */
+ @JsonProperty(value = "value")
+ private List value;
+
+ /**
+ * Get indicates whether there are more invoice sections than the ones listed in this collection. The collection lists a maximum of 50 invoice sections. To get all invoice sections, use the list invoice sections API.
+ *
+ * @return the hasMoreResults value
+ */
+ public Boolean hasMoreResults() {
+ return this.hasMoreResults;
+ }
+
+ /**
+ * Get the invoice sections associated to the billing profile.
+ *
+ * @return the value value
+ */
+ public List value() {
+ return this.value;
+ }
+
+ /**
+ * Set the invoice sections associated to the billing profile.
+ *
+ * @param value the value value to set
+ * @return the InvoiceSectionsOnExpand object itself.
+ */
+ public InvoiceSectionsOnExpand withValue(List value) {
+ this.value = value;
+ return this;
+ }
+
+}
diff --git a/sdk/billing/mgmt-v2020_05_01/src/main/java/com/microsoft/azure/management/billing/v2020_05_01/InvoiceStatus.java b/sdk/billing/mgmt-v2020_05_01/src/main/java/com/microsoft/azure/management/billing/v2020_05_01/InvoiceStatus.java
new file mode 100644
index 0000000000000..034e478556f89
--- /dev/null
+++ b/sdk/billing/mgmt-v2020_05_01/src/main/java/com/microsoft/azure/management/billing/v2020_05_01/InvoiceStatus.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.billing.v2020_05_01;
+
+import java.util.Collection;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.microsoft.rest.ExpandableStringEnum;
+
+/**
+ * Defines values for InvoiceStatus.
+ */
+public final class InvoiceStatus extends ExpandableStringEnum {
+ /** Static value Due for InvoiceStatus. */
+ public static final InvoiceStatus DUE = fromString("Due");
+
+ /** Static value OverDue for InvoiceStatus. */
+ public static final InvoiceStatus OVER_DUE = fromString("OverDue");
+
+ /** Static value Paid for InvoiceStatus. */
+ public static final InvoiceStatus PAID = fromString("Paid");
+
+ /** Static value Void for InvoiceStatus. */
+ public static final InvoiceStatus VOID = fromString("Void");
+
+ /**
+ * Creates or finds a InvoiceStatus from its string representation.
+ * @param name a name to look for
+ * @return the corresponding InvoiceStatus
+ */
+ @JsonCreator
+ public static InvoiceStatus fromString(String name) {
+ return fromString(name, InvoiceStatus.class);
+ }
+
+ /**
+ * @return known InvoiceStatus values
+ */
+ public static Collection values() {
+ return values(InvoiceStatus.class);
+ }
+}
diff --git a/sdk/billing/mgmt-v2020_05_01/src/main/java/com/microsoft/azure/management/billing/v2020_05_01/InvoiceType.java b/sdk/billing/mgmt-v2020_05_01/src/main/java/com/microsoft/azure/management/billing/v2020_05_01/InvoiceType.java
new file mode 100644
index 0000000000000..7f33827dcdbf9
--- /dev/null
+++ b/sdk/billing/mgmt-v2020_05_01/src/main/java/com/microsoft/azure/management/billing/v2020_05_01/InvoiceType.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.billing.v2020_05_01;
+
+import java.util.Collection;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.microsoft.rest.ExpandableStringEnum;
+
+/**
+ * Defines values for InvoiceType.
+ */
+public final class InvoiceType extends ExpandableStringEnum {
+ /** Static value AzureService for InvoiceType. */
+ public static final InvoiceType AZURE_SERVICE = fromString("AzureService");
+
+ /** Static value AzureMarketplace for InvoiceType. */
+ public static final InvoiceType AZURE_MARKETPLACE = fromString("AzureMarketplace");
+
+ /** Static value AzureSupport for InvoiceType. */
+ public static final InvoiceType AZURE_SUPPORT = fromString("AzureSupport");
+
+ /**
+ * Creates or finds a InvoiceType from its string representation.
+ * @param name a name to look for
+ * @return the corresponding InvoiceType
+ */
+ @JsonCreator
+ public static InvoiceType fromString(String name) {
+ return fromString(name, InvoiceType.class);
+ }
+
+ /**
+ * @return known InvoiceType values
+ */
+ public static Collection values() {
+ return values(InvoiceType.class);
+ }
+}
diff --git a/sdk/billing/mgmt-v2020_05_01/src/main/java/com/microsoft/azure/management/billing/v2020_05_01/Invoices.java b/sdk/billing/mgmt-v2020_05_01/src/main/java/com/microsoft/azure/management/billing/v2020_05_01/Invoices.java
new file mode 100644
index 0000000000000..4855788305256
--- /dev/null
+++ b/sdk/billing/mgmt-v2020_05_01/src/main/java/com/microsoft/azure/management/billing/v2020_05_01/Invoices.java
@@ -0,0 +1,121 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.billing.v2020_05_01;
+
+import rx.Observable;
+import com.microsoft.azure.management.billing.v2020_05_01.implementation.InvoicesInner;
+import com.microsoft.azure.arm.model.HasInner;
+import java.util.List;
+
+/**
+ * Type representing Invoices.
+ */
+public interface Invoices extends HasInner {
+ /**
+ * Lists the invoices for a billing profile for a given start date and end date. The operation is supported for billing accounts with agreement type Microsoft Partner Agreement or Microsoft Customer Agreement.
+ *
+ * @param billingAccountName The ID that uniquely identifies a billing account.
+ * @param billingProfileName The ID that uniquely identifies a billing profile.
+ * @param periodStartDate The start date to fetch the invoices. The date should be specified in MM-DD-YYYY format.
+ * @param periodEndDate The end date to fetch the invoices. The date should be specified in MM-DD-YYYY format.
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @return the observable for the request
+ */
+ Observable listByBillingProfileAsync(final String billingAccountName, final String billingProfileName, final String periodStartDate, final String periodEndDate);
+
+ /**
+ * Gets an invoice by ID. The operation is supported for billing accounts with agreement type Microsoft Partner Agreement or Microsoft Customer Agreement.
+ *
+ * @param invoiceName The ID that uniquely identifies an invoice.
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @return the observable for the request
+ */
+ Observable getByIdAsync(String invoiceName);
+
+ /**
+ * Gets a URL to download an invoice. The operation is supported for billing accounts with agreement type Microsoft Partner Agreement or Microsoft Customer Agreement.
+ *
+ * @param billingAccountName The ID that uniquely identifies a billing account.
+ * @param invoiceName The ID that uniquely identifies an invoice.
+ * @param downloadToken Download token with document source and document ID.
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @return the observable for the request
+ */
+ Observable downloadInvoiceAsync(String billingAccountName, String invoiceName, String downloadToken);
+
+ /**
+ * Lists the invoices for a subscription.
+ *
+ * @param periodStartDate Invoice period start date.
+ * @param periodEndDate Invoice period end date.
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @return the observable for the request
+ */
+ Observable listByBillingSubscriptionAsync(final String periodStartDate, final String periodEndDate);
+
+ /**
+ * Gets an invoice by subscription ID and invoice ID.
+ *
+ * @param invoiceName The ID that uniquely identifies an invoice.
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @return the observable for the request
+ */
+ Observable getBySubscriptionAndInvoiceIdAsync(String invoiceName);
+
+ /**
+ * Gets a URL to download an invoice.
+ *
+ * @param invoiceName The ID that uniquely identifies an invoice.
+ * @param downloadToken Download token with document source and document ID.
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @return the observable for the request
+ */
+ Observable downloadBillingSubscriptionInvoiceAsync(String invoiceName, String downloadToken);
+
+ /**
+ * Gets an invoice by billing account name and ID. The operation is supported for billing accounts with agreement type Microsoft Partner Agreement or Microsoft Customer Agreement.
+ *
+ * @param billingAccountName The ID that uniquely identifies a billing account.
+ * @param invoiceName The ID that uniquely identifies an invoice.
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @return the observable for the request
+ */
+ Observable getAsync(String billingAccountName, String invoiceName);
+
+ /**
+ * Lists the invoices for a billing account for a given start date and end date. The operation is supported for billing accounts with agreement type Microsoft Partner Agreement or Microsoft Customer Agreement.
+ *
+ * @param billingAccountName The ID that uniquely identifies a billing account.
+ * @param periodStartDate The start date to fetch the invoices. The date should be specified in MM-DD-YYYY format.
+ * @param periodEndDate The end date to fetch the invoices. The date should be specified in MM-DD-YYYY format.
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @return the observable for the request
+ */
+ Observable listByBillingAccountAsync(final String billingAccountName, final String periodStartDate, final String periodEndDate);
+
+ /**
+ * Gets a URL to download multiple invoice documents (invoice pdf, tax receipts, credit notes) as a zip file. The operation is supported for billing accounts with agreement type Microsoft Partner Agreement or Microsoft Customer Agreement.
+ *
+ * @param billingAccountName The ID that uniquely identifies a billing account.
+ * @param downloadUrls An array of download urls for individual documents
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @return the observable for the request
+ */
+ Observable downloadMultipleBillingProfileInvoicesAsync(String billingAccountName, List downloadUrls);
+
+ /**
+ * Gets a URL to download multiple invoice documents (invoice pdf, tax receipts, credit notes) as a zip file.
+ *
+ * @param downloadUrls An array of download urls for individual documents
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @return the observable for the request
+ */
+ Observable downloadMultipleBillingSubscriptionInvoicesAsync(List downloadUrls);
+
+}
diff --git a/sdk/billing/mgmt-v2020_05_01/src/main/java/com/microsoft/azure/management/billing/v2020_05_01/InvoicesDownloadBillingSubscriptionInvoiceHeaders.java b/sdk/billing/mgmt-v2020_05_01/src/main/java/com/microsoft/azure/management/billing/v2020_05_01/InvoicesDownloadBillingSubscriptionInvoiceHeaders.java
new file mode 100644
index 0000000000000..a5cc84683e276
--- /dev/null
+++ b/sdk/billing/mgmt-v2020_05_01/src/main/java/com/microsoft/azure/management/billing/v2020_05_01/InvoicesDownloadBillingSubscriptionInvoiceHeaders.java
@@ -0,0 +1,70 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.billing.v2020_05_01;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/**
+ * Defines headers for DownloadBillingSubscriptionInvoice operation.
+ */
+public class InvoicesDownloadBillingSubscriptionInvoiceHeaders {
+ /**
+ * GET this URL to retrieve the status of the asynchronous operation.
+ */
+ @JsonProperty(value = "Location")
+ private String location;
+
+ /**
+ * The amount of delay to use while the status of the operation is checked.
+ * The value is expressed in seconds.
+ */
+ @JsonProperty(value = "Retry-After")
+ private String retryAfter;
+
+ /**
+ * Get gET this URL to retrieve the status of the asynchronous operation.
+ *
+ * @return the location value
+ */
+ public String location() {
+ return this.location;
+ }
+
+ /**
+ * Set gET this URL to retrieve the status of the asynchronous operation.
+ *
+ * @param location the location value to set
+ * @return the InvoicesDownloadBillingSubscriptionInvoiceHeaders object itself.
+ */
+ public InvoicesDownloadBillingSubscriptionInvoiceHeaders withLocation(String location) {
+ this.location = location;
+ return this;
+ }
+
+ /**
+ * Get the amount of delay to use while the status of the operation is checked. The value is expressed in seconds.
+ *
+ * @return the retryAfter value
+ */
+ public String retryAfter() {
+ return this.retryAfter;
+ }
+
+ /**
+ * Set the amount of delay to use while the status of the operation is checked. The value is expressed in seconds.
+ *
+ * @param retryAfter the retryAfter value to set
+ * @return the InvoicesDownloadBillingSubscriptionInvoiceHeaders object itself.
+ */
+ public InvoicesDownloadBillingSubscriptionInvoiceHeaders withRetryAfter(String retryAfter) {
+ this.retryAfter = retryAfter;
+ return this;
+ }
+
+}
diff --git a/sdk/billing/mgmt-v2020_05_01/src/main/java/com/microsoft/azure/management/billing/v2020_05_01/InvoicesDownloadInvoiceHeaders.java b/sdk/billing/mgmt-v2020_05_01/src/main/java/com/microsoft/azure/management/billing/v2020_05_01/InvoicesDownloadInvoiceHeaders.java
new file mode 100644
index 0000000000000..f03cb618475ec
--- /dev/null
+++ b/sdk/billing/mgmt-v2020_05_01/src/main/java/com/microsoft/azure/management/billing/v2020_05_01/InvoicesDownloadInvoiceHeaders.java
@@ -0,0 +1,70 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.billing.v2020_05_01;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/**
+ * Defines headers for DownloadInvoice operation.
+ */
+public class InvoicesDownloadInvoiceHeaders {
+ /**
+ * GET this URL to retrieve the status of the asynchronous operation.
+ */
+ @JsonProperty(value = "Location")
+ private String location;
+
+ /**
+ * The amount of delay to use while the status of the operation is checked.
+ * The value is expressed in seconds.
+ */
+ @JsonProperty(value = "Retry-After")
+ private String retryAfter;
+
+ /**
+ * Get gET this URL to retrieve the status of the asynchronous operation.
+ *
+ * @return the location value
+ */
+ public String location() {
+ return this.location;
+ }
+
+ /**
+ * Set gET this URL to retrieve the status of the asynchronous operation.
+ *
+ * @param location the location value to set
+ * @return the InvoicesDownloadInvoiceHeaders object itself.
+ */
+ public InvoicesDownloadInvoiceHeaders withLocation(String location) {
+ this.location = location;
+ return this;
+ }
+
+ /**
+ * Get the amount of delay to use while the status of the operation is checked. The value is expressed in seconds.
+ *
+ * @return the retryAfter value
+ */
+ public String retryAfter() {
+ return this.retryAfter;
+ }
+
+ /**
+ * Set the amount of delay to use while the status of the operation is checked. The value is expressed in seconds.
+ *
+ * @param retryAfter the retryAfter value to set
+ * @return the InvoicesDownloadInvoiceHeaders object itself.
+ */
+ public InvoicesDownloadInvoiceHeaders withRetryAfter(String retryAfter) {
+ this.retryAfter = retryAfter;
+ return this;
+ }
+
+}
diff --git a/sdk/billing/mgmt-v2020_05_01/src/main/java/com/microsoft/azure/management/billing/v2020_05_01/InvoicesDownloadMultipleBillingProfileInvoicesHeaders.java b/sdk/billing/mgmt-v2020_05_01/src/main/java/com/microsoft/azure/management/billing/v2020_05_01/InvoicesDownloadMultipleBillingProfileInvoicesHeaders.java
new file mode 100644
index 0000000000000..c4c8fab966b6d
--- /dev/null
+++ b/sdk/billing/mgmt-v2020_05_01/src/main/java/com/microsoft/azure/management/billing/v2020_05_01/InvoicesDownloadMultipleBillingProfileInvoicesHeaders.java
@@ -0,0 +1,70 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.billing.v2020_05_01;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/**
+ * Defines headers for DownloadMultipleBillingProfileInvoices operation.
+ */
+public class InvoicesDownloadMultipleBillingProfileInvoicesHeaders {
+ /**
+ * GET this URL to retrieve the status of the asynchronous operation.
+ */
+ @JsonProperty(value = "Location")
+ private String location;
+
+ /**
+ * The amount of delay to use while the status of the operation is checked.
+ * The value is expressed in seconds.
+ */
+ @JsonProperty(value = "Retry-After")
+ private String retryAfter;
+
+ /**
+ * Get gET this URL to retrieve the status of the asynchronous operation.
+ *
+ * @return the location value
+ */
+ public String location() {
+ return this.location;
+ }
+
+ /**
+ * Set gET this URL to retrieve the status of the asynchronous operation.
+ *
+ * @param location the location value to set
+ * @return the InvoicesDownloadMultipleBillingProfileInvoicesHeaders object itself.
+ */
+ public InvoicesDownloadMultipleBillingProfileInvoicesHeaders withLocation(String location) {
+ this.location = location;
+ return this;
+ }
+
+ /**
+ * Get the amount of delay to use while the status of the operation is checked. The value is expressed in seconds.
+ *
+ * @return the retryAfter value
+ */
+ public String retryAfter() {
+ return this.retryAfter;
+ }
+
+ /**
+ * Set the amount of delay to use while the status of the operation is checked. The value is expressed in seconds.
+ *
+ * @param retryAfter the retryAfter value to set
+ * @return the InvoicesDownloadMultipleBillingProfileInvoicesHeaders object itself.
+ */
+ public InvoicesDownloadMultipleBillingProfileInvoicesHeaders withRetryAfter(String retryAfter) {
+ this.retryAfter = retryAfter;
+ return this;
+ }
+
+}
diff --git a/sdk/billing/mgmt-v2020_05_01/src/main/java/com/microsoft/azure/management/billing/v2020_05_01/InvoicesDownloadMultipleBillingSubscriptionInvoicesHeaders.java b/sdk/billing/mgmt-v2020_05_01/src/main/java/com/microsoft/azure/management/billing/v2020_05_01/InvoicesDownloadMultipleBillingSubscriptionInvoicesHeaders.java
new file mode 100644
index 0000000000000..c8df397c30140
--- /dev/null
+++ b/sdk/billing/mgmt-v2020_05_01/src/main/java/com/microsoft/azure/management/billing/v2020_05_01/InvoicesDownloadMultipleBillingSubscriptionInvoicesHeaders.java
@@ -0,0 +1,70 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.billing.v2020_05_01;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/**
+ * Defines headers for DownloadMultipleBillingSubscriptionInvoices operation.
+ */
+public class InvoicesDownloadMultipleBillingSubscriptionInvoicesHeaders {
+ /**
+ * GET this URL to retrieve the status of the asynchronous operation.
+ */
+ @JsonProperty(value = "Location")
+ private String location;
+
+ /**
+ * The amount of delay to use while the status of the operation is checked.
+ * The value is expressed in seconds.
+ */
+ @JsonProperty(value = "Retry-After")
+ private String retryAfter;
+
+ /**
+ * Get gET this URL to retrieve the status of the asynchronous operation.
+ *
+ * @return the location value
+ */
+ public String location() {
+ return this.location;
+ }
+
+ /**
+ * Set gET this URL to retrieve the status of the asynchronous operation.
+ *
+ * @param location the location value to set
+ * @return the InvoicesDownloadMultipleBillingSubscriptionInvoicesHeaders object itself.
+ */
+ public InvoicesDownloadMultipleBillingSubscriptionInvoicesHeaders withLocation(String location) {
+ this.location = location;
+ return this;
+ }
+
+ /**
+ * Get the amount of delay to use while the status of the operation is checked. The value is expressed in seconds.
+ *
+ * @return the retryAfter value
+ */
+ public String retryAfter() {
+ return this.retryAfter;
+ }
+
+ /**
+ * Set the amount of delay to use while the status of the operation is checked. The value is expressed in seconds.
+ *
+ * @param retryAfter the retryAfter value to set
+ * @return the InvoicesDownloadMultipleBillingSubscriptionInvoicesHeaders object itself.
+ */
+ public InvoicesDownloadMultipleBillingSubscriptionInvoicesHeaders withRetryAfter(String retryAfter) {
+ this.retryAfter = retryAfter;
+ return this;
+ }
+
+}
diff --git a/sdk/billing/mgmt-v2020_05_01/src/main/java/com/microsoft/azure/management/billing/v2020_05_01/MarketplacePurchasesPolicy.java b/sdk/billing/mgmt-v2020_05_01/src/main/java/com/microsoft/azure/management/billing/v2020_05_01/MarketplacePurchasesPolicy.java
new file mode 100644
index 0000000000000..fe2a105e68d2a
--- /dev/null
+++ b/sdk/billing/mgmt-v2020_05_01/src/main/java/com/microsoft/azure/management/billing/v2020_05_01/MarketplacePurchasesPolicy.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.billing.v2020_05_01;
+
+import java.util.Collection;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.microsoft.rest.ExpandableStringEnum;
+
+/**
+ * Defines values for MarketplacePurchasesPolicy.
+ */
+public final class MarketplacePurchasesPolicy extends ExpandableStringEnum {
+ /** Static value AllAllowed for MarketplacePurchasesPolicy. */
+ public static final MarketplacePurchasesPolicy ALL_ALLOWED = fromString("AllAllowed");
+
+ /** Static value OnlyFreeAllowed for MarketplacePurchasesPolicy. */
+ public static final MarketplacePurchasesPolicy ONLY_FREE_ALLOWED = fromString("OnlyFreeAllowed");
+
+ /** Static value NotAllowed for MarketplacePurchasesPolicy. */
+ public static final MarketplacePurchasesPolicy NOT_ALLOWED = fromString("NotAllowed");
+
+ /**
+ * Creates or finds a MarketplacePurchasesPolicy from its string representation.
+ * @param name a name to look for
+ * @return the corresponding MarketplacePurchasesPolicy
+ */
+ @JsonCreator
+ public static MarketplacePurchasesPolicy fromString(String name) {
+ return fromString(name, MarketplacePurchasesPolicy.class);
+ }
+
+ /**
+ * @return known MarketplacePurchasesPolicy values
+ */
+ public static Collection values() {
+ return values(MarketplacePurchasesPolicy.class);
+ }
+}
diff --git a/sdk/billing/mgmt-v2020_05_01/src/main/java/com/microsoft/azure/management/billing/v2020_05_01/Operation.java b/sdk/billing/mgmt-v2020_05_01/src/main/java/com/microsoft/azure/management/billing/v2020_05_01/Operation.java
new file mode 100644
index 0000000000000..8932e809c8589
--- /dev/null
+++ b/sdk/billing/mgmt-v2020_05_01/src/main/java/com/microsoft/azure/management/billing/v2020_05_01/Operation.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.billing.v2020_05_01;
+
+import com.microsoft.azure.arm.model.HasInner;
+import com.microsoft.azure.arm.resources.models.HasManager;
+import com.microsoft.azure.management.billing.v2020_05_01.implementation.BillingManager;
+import com.microsoft.azure.management.billing.v2020_05_01.implementation.OperationInner;
+
+/**
+ * Type representing Operation.
+ */
+public interface Operation extends HasInner, HasManager {
+ /**
+ * @return the display value.
+ */
+ OperationDisplay display();
+
+ /**
+ * @return the name value.
+ */
+ String name();
+
+}
diff --git a/sdk/billing/mgmt-v2020_05_01/src/main/java/com/microsoft/azure/management/billing/v2020_05_01/OperationDisplay.java b/sdk/billing/mgmt-v2020_05_01/src/main/java/com/microsoft/azure/management/billing/v2020_05_01/OperationDisplay.java
new file mode 100644
index 0000000000000..839a3210076de
--- /dev/null
+++ b/sdk/billing/mgmt-v2020_05_01/src/main/java/com/microsoft/azure/management/billing/v2020_05_01/OperationDisplay.java
@@ -0,0 +1,63 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.billing.v2020_05_01;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/**
+ * The object that represents the operation.
+ */
+public class OperationDisplay {
+ /**
+ * Service provider: Microsoft.Billing.
+ */
+ @JsonProperty(value = "provider", access = JsonProperty.Access.WRITE_ONLY)
+ private String provider;
+
+ /**
+ * Resource on which the operation is performed such as invoice and billing
+ * subscription.
+ */
+ @JsonProperty(value = "resource", access = JsonProperty.Access.WRITE_ONLY)
+ private String resource;
+
+ /**
+ * Operation type such as read, write and delete.
+ */
+ @JsonProperty(value = "operation", access = JsonProperty.Access.WRITE_ONLY)
+ private String operation;
+
+ /**
+ * Get service provider: Microsoft.Billing.
+ *
+ * @return the provider value
+ */
+ public String provider() {
+ return this.provider;
+ }
+
+ /**
+ * Get resource on which the operation is performed such as invoice and billing subscription.
+ *
+ * @return the resource value
+ */
+ public String resource() {
+ return this.resource;
+ }
+
+ /**
+ * Get operation type such as read, write and delete.
+ *
+ * @return the operation value
+ */
+ public String operation() {
+ return this.operation;
+ }
+
+}
diff --git a/sdk/billing/mgmt-v2020_05_01/src/main/java/com/microsoft/azure/management/billing/v2020_05_01/Operations.java b/sdk/billing/mgmt-v2020_05_01/src/main/java/com/microsoft/azure/management/billing/v2020_05_01/Operations.java
new file mode 100644
index 0000000000000..bb5f4844c5520
--- /dev/null
+++ b/sdk/billing/mgmt-v2020_05_01/src/main/java/com/microsoft/azure/management/billing/v2020_05_01/Operations.java
@@ -0,0 +1,27 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.billing.v2020_05_01;
+
+import rx.Observable;
+import com.microsoft.azure.management.billing.v2020_05_01.implementation.OperationsInner;
+import com.microsoft.azure.arm.model.HasInner;
+
+/**
+ * Type representing Operations.
+ */
+public interface Operations extends HasInner {
+ /**
+ * Lists the available billing REST API operations.
+ *
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @return the observable for the request
+ */
+ Observable listAsync();
+
+}
diff --git a/sdk/billing/mgmt-v2020_05_01/src/main/java/com/microsoft/azure/management/billing/v2020_05_01/Participants.java b/sdk/billing/mgmt-v2020_05_01/src/main/java/com/microsoft/azure/management/billing/v2020_05_01/Participants.java
new file mode 100644
index 0000000000000..096ebcbc48e4e
--- /dev/null
+++ b/sdk/billing/mgmt-v2020_05_01/src/main/java/com/microsoft/azure/management/billing/v2020_05_01/Participants.java
@@ -0,0 +1,63 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.billing.v2020_05_01;
+
+import org.joda.time.DateTime;
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/**
+ * The details about a participant.
+ */
+public class Participants {
+ /**
+ * The acceptance status of the participant.
+ */
+ @JsonProperty(value = "status", access = JsonProperty.Access.WRITE_ONLY)
+ private String status;
+
+ /**
+ * The date when the status got changed.
+ */
+ @JsonProperty(value = "statusDate", access = JsonProperty.Access.WRITE_ONLY)
+ private DateTime statusDate;
+
+ /**
+ * The email address of the participant.
+ */
+ @JsonProperty(value = "email", access = JsonProperty.Access.WRITE_ONLY)
+ private String email;
+
+ /**
+ * Get the acceptance status of the participant.
+ *
+ * @return the status value
+ */
+ public String status() {
+ return this.status;
+ }
+
+ /**
+ * Get the date when the status got changed.
+ *
+ * @return the statusDate value
+ */
+ public DateTime statusDate() {
+ return this.statusDate;
+ }
+
+ /**
+ * Get the email address of the participant.
+ *
+ * @return the email value
+ */
+ public String email() {
+ return this.email;
+ }
+
+}
diff --git a/sdk/billing/mgmt-v2020_05_01/src/main/java/com/microsoft/azure/management/billing/v2020_05_01/PaymentMethodFamily.java b/sdk/billing/mgmt-v2020_05_01/src/main/java/com/microsoft/azure/management/billing/v2020_05_01/PaymentMethodFamily.java
new file mode 100644
index 0000000000000..ba3b4a345bf78
--- /dev/null
+++ b/sdk/billing/mgmt-v2020_05_01/src/main/java/com/microsoft/azure/management/billing/v2020_05_01/PaymentMethodFamily.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.billing.v2020_05_01;
+
+import java.util.Collection;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.microsoft.rest.ExpandableStringEnum;
+
+/**
+ * Defines values for PaymentMethodFamily.
+ */
+public final class PaymentMethodFamily extends ExpandableStringEnum {
+ /** Static value Credits for PaymentMethodFamily. */
+ public static final PaymentMethodFamily CREDITS = fromString("Credits");
+
+ /** Static value CheckWire for PaymentMethodFamily. */
+ public static final PaymentMethodFamily CHECK_WIRE = fromString("CheckWire");
+
+ /** Static value CreditCard for PaymentMethodFamily. */
+ public static final PaymentMethodFamily CREDIT_CARD = fromString("CreditCard");
+
+ /** Static value None for PaymentMethodFamily. */
+ public static final PaymentMethodFamily NONE = fromString("None");
+
+ /**
+ * Creates or finds a PaymentMethodFamily from its string representation.
+ * @param name a name to look for
+ * @return the corresponding PaymentMethodFamily
+ */
+ @JsonCreator
+ public static PaymentMethodFamily fromString(String name) {
+ return fromString(name, PaymentMethodFamily.class);
+ }
+
+ /**
+ * @return known PaymentMethodFamily values
+ */
+ public static Collection values() {
+ return values(PaymentMethodFamily.class);
+ }
+}
diff --git a/sdk/billing/mgmt-v2020_05_01/src/main/java/com/microsoft/azure/management/billing/v2020_05_01/PaymentProperties.java b/sdk/billing/mgmt-v2020_05_01/src/main/java/com/microsoft/azure/management/billing/v2020_05_01/PaymentProperties.java
new file mode 100644
index 0000000000000..4c4f5afeb6d96
--- /dev/null
+++ b/sdk/billing/mgmt-v2020_05_01/src/main/java/com/microsoft/azure/management/billing/v2020_05_01/PaymentProperties.java
@@ -0,0 +1,105 @@
+/**
+ * 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.billing.v2020_05_01;
+
+import org.joda.time.DateTime;
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/**
+ * The properties of a payment.
+ */
+public class PaymentProperties {
+ /**
+ * The type of payment.
+ */
+ @JsonProperty(value = "paymentType", access = JsonProperty.Access.WRITE_ONLY)
+ private String paymentType;
+
+ /**
+ * The paid amount.
+ */
+ @JsonProperty(value = "amount", access = JsonProperty.Access.WRITE_ONLY)
+ private Amount amount;
+
+ /**
+ * The date when the payment was made.
+ */
+ @JsonProperty(value = "date", access = JsonProperty.Access.WRITE_ONLY)
+ private DateTime dateProperty;
+
+ /**
+ * The family of payment method. Possible values include: 'Credits',
+ * 'CheckWire', 'CreditCard', 'None'.
+ */
+ @JsonProperty(value = "paymentMethodFamily")
+ private PaymentMethodFamily paymentMethodFamily;
+
+ /**
+ * The type of payment method.
+ */
+ @JsonProperty(value = "paymentMethodType", access = JsonProperty.Access.WRITE_ONLY)
+ private String paymentMethodType;
+
+ /**
+ * Get the type of payment.
+ *
+ * @return the paymentType value
+ */
+ public String paymentType() {
+ return this.paymentType;
+ }
+
+ /**
+ * Get the paid amount.
+ *
+ * @return the amount value
+ */
+ public Amount amount() {
+ return this.amount;
+ }
+
+ /**
+ * Get the date when the payment was made.
+ *
+ * @return the dateProperty value
+ */
+ public DateTime dateProperty() {
+ return this.dateProperty;
+ }
+
+ /**
+ * Get the family of payment method. Possible values include: 'Credits', 'CheckWire', 'CreditCard', 'None'.
+ *
+ * @return the paymentMethodFamily value
+ */
+ public PaymentMethodFamily paymentMethodFamily() {
+ return this.paymentMethodFamily;
+ }
+
+ /**
+ * Set the family of payment method. Possible values include: 'Credits', 'CheckWire', 'CreditCard', 'None'.
+ *
+ * @param paymentMethodFamily the paymentMethodFamily value to set
+ * @return the PaymentProperties object itself.
+ */
+ public PaymentProperties withPaymentMethodFamily(PaymentMethodFamily paymentMethodFamily) {
+ this.paymentMethodFamily = paymentMethodFamily;
+ return this;
+ }
+
+ /**
+ * Get the type of payment method.
+ *
+ * @return the paymentMethodType value
+ */
+ public String paymentMethodType() {
+ return this.paymentMethodType;
+ }
+
+}
diff --git a/sdk/billing/mgmt-v2020_05_01/src/main/java/com/microsoft/azure/management/billing/v2020_05_01/Policies.java b/sdk/billing/mgmt-v2020_05_01/src/main/java/com/microsoft/azure/management/billing/v2020_05_01/Policies.java
new file mode 100644
index 0000000000000..7cc90b82a6ac8
--- /dev/null
+++ b/sdk/billing/mgmt-v2020_05_01/src/main/java/com/microsoft/azure/management/billing/v2020_05_01/Policies.java
@@ -0,0 +1,61 @@
+/**
+ * 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.billing.v2020_05_01;
+
+import rx.Observable;
+import com.microsoft.azure.management.billing.v2020_05_01.implementation.PolicyInner;
+import com.microsoft.azure.management.billing.v2020_05_01.implementation.PoliciesInner;
+import com.microsoft.azure.arm.model.HasInner;
+
+/**
+ * Type representing Policies.
+ */
+public interface Policies extends HasInner {
+ /**
+ * Lists the policies for a billing profile. This operation is supported only for billing accounts with agreement type Microsoft Customer Agreement.
+ *
+ * @param billingAccountName The ID that uniquely identifies a billing account.
+ * @param billingProfileName The ID that uniquely identifies a billing profile.
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @return the observable for the request
+ */
+ Observable getByBillingProfileAsync(String billingAccountName, String billingProfileName);
+
+ /**
+ * Updates the policies for a billing profile. This operation is supported only for billing accounts with agreement type Microsoft Customer Agreement.
+ *
+ * @param billingAccountName The ID that uniquely identifies a billing account.
+ * @param billingProfileName The ID that uniquely identifies a billing profile.
+ * @param parameters Request parameters that are provided to the update policies operation.
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @return the observable for the request
+ */
+ Observable updateAsync(String billingAccountName, String billingProfileName, PolicyInner parameters);
+
+ /**
+ * Lists the policies for a customer. This operation is supported only for billing accounts with agreement type Microsoft Partner Agreement.
+ *
+ * @param billingAccountName The ID that uniquely identifies a billing account.
+ * @param customerName The ID that uniquely identifies a customer.
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @return the observable for the request
+ */
+ Observable getByCustomerAsync(String billingAccountName, String customerName);
+
+ /**
+ * Updates the policies for a customer. This operation is supported only for billing accounts with agreement type Microsoft Partner Agreement.
+ *
+ * @param billingAccountName The ID that uniquely identifies a billing account.
+ * @param customerName The ID that uniquely identifies a customer.
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @return the observable for the request
+ */
+ Observable updateCustomerAsync(String billingAccountName, String customerName);
+
+}
diff --git a/sdk/billing/mgmt-v2020_05_01/src/main/java/com/microsoft/azure/management/billing/v2020_05_01/Policy.java b/sdk/billing/mgmt-v2020_05_01/src/main/java/com/microsoft/azure/management/billing/v2020_05_01/Policy.java
new file mode 100644
index 0000000000000..e6770015f1e21
--- /dev/null
+++ b/sdk/billing/mgmt-v2020_05_01/src/main/java/com/microsoft/azure/management/billing/v2020_05_01/Policy.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.billing.v2020_05_01;
+
+import com.microsoft.azure.arm.model.HasInner;
+import com.microsoft.azure.arm.resources.models.HasManager;
+import com.microsoft.azure.management.billing.v2020_05_01.implementation.BillingManager;
+import com.microsoft.azure.management.billing.v2020_05_01.implementation.PolicyInner;
+
+/**
+ * Type representing Policy.
+ */
+public interface Policy extends HasInner, HasManager {
+ /**
+ * @return the id value.
+ */
+ String id();
+
+ /**
+ * @return the marketplacePurchases value.
+ */
+ MarketplacePurchasesPolicy marketplacePurchases();
+
+ /**
+ * @return the name value.
+ */
+ String name();
+
+ /**
+ * @return the reservationPurchases value.
+ */
+ ReservationPurchasesPolicy reservationPurchases();
+
+ /**
+ * @return the type value.
+ */
+ String type();
+
+ /**
+ * @return the viewCharges value.
+ */
+ ViewChargesPolicy viewCharges();
+
+}
diff --git a/sdk/billing/mgmt-v2020_05_01/src/main/java/com/microsoft/azure/management/billing/v2020_05_01/Product.java b/sdk/billing/mgmt-v2020_05_01/src/main/java/com/microsoft/azure/management/billing/v2020_05_01/Product.java
new file mode 100644
index 0000000000000..ecbf956163aa8
--- /dev/null
+++ b/sdk/billing/mgmt-v2020_05_01/src/main/java/com/microsoft/azure/management/billing/v2020_05_01/Product.java
@@ -0,0 +1,196 @@
+/**
+ * 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.billing.v2020_05_01;
+
+import com.microsoft.azure.arm.model.HasInner;
+import com.microsoft.azure.management.billing.v2020_05_01.implementation.ProductInner;
+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.resources.models.HasManager;
+import com.microsoft.azure.management.billing.v2020_05_01.implementation.BillingManager;
+import org.joda.time.DateTime;
+
+/**
+ * Type representing Product.
+ */
+public interface Product extends HasInner, Indexable, Updatable, HasManager {
+ /**
+ * @return the autoRenew value.
+ */
+ AutoRenew autoRenew();
+
+ /**
+ * @return the availabilityId value.
+ */
+ String availabilityId();
+
+ /**
+ * @return the billingFrequency value.
+ */
+ BillingFrequency billingFrequency();
+
+ /**
+ * @return the billingProfileDisplayName value.
+ */
+ String billingProfileDisplayName();
+
+ /**
+ * @return the billingProfileId value.
+ */
+ String billingProfileId();
+
+ /**
+ * @return the customerDisplayName value.
+ */
+ String customerDisplayName();
+
+ /**
+ * @return the customerId value.
+ */
+ String customerId();
+
+ /**
+ * @return the displayName value.
+ */
+ String displayName();
+
+ /**
+ * @return the endDate value.
+ */
+ DateTime endDate();
+
+ /**
+ * @return the id value.
+ */
+ String id();
+
+ /**
+ * @return the invoiceSectionDisplayName value.
+ */
+ String invoiceSectionDisplayName();
+
+ /**
+ * @return the invoiceSectionId value.
+ */
+ String invoiceSectionId();
+
+ /**
+ * @return the lastCharge value.
+ */
+ Amount lastCharge();
+
+ /**
+ * @return the lastChargeDate value.
+ */
+ DateTime lastChargeDate();
+
+ /**
+ * @return the name value.
+ */
+ String name();
+
+ /**
+ * @return the productType value.
+ */
+ String productType();
+
+ /**
+ * @return the productTypeId value.
+ */
+ String productTypeId();
+
+ /**
+ * @return the purchaseDate value.
+ */
+ DateTime purchaseDate();
+
+ /**
+ * @return the quantity value.
+ */
+ Double quantity();
+
+ /**
+ * @return the reseller value.
+ */
+ Reseller reseller();
+
+ /**
+ * @return the skuDescription value.
+ */
+ String skuDescription();
+
+ /**
+ * @return the skuId value.
+ */
+ String skuId();
+
+ /**
+ * @return the status value.
+ */
+ ProductStatusType status();
+
+ /**
+ * @return the tenantId value.
+ */
+ String tenantId();
+
+ /**
+ * @return the type value.
+ */
+ String type();
+
+ /**
+ * The template for a Product update operation, containing all the settings that can be modified.
+ */
+ interface Update extends Appliable, UpdateStages.WithAutoRenew, UpdateStages.WithBillingFrequency, UpdateStages.WithStatus {
+ }
+
+ /**
+ * Grouping of Product update stages.
+ */
+ interface UpdateStages {
+ /**
+ * The stage of the product update allowing to specify AutoRenew.
+ */
+ interface WithAutoRenew {
+ /**
+ * Specifies autoRenew.
+ * @param autoRenew Indicates whether auto renewal is turned on or off for a product. Possible values include: 'Off', 'On'
+ * @return the next update stage
+ */
+ Update withAutoRenew(AutoRenew autoRenew);
+ }
+
+ /**
+ * The stage of the product update allowing to specify BillingFrequency.
+ */
+ interface WithBillingFrequency {
+ /**
+ * Specifies billingFrequency.
+ * @param billingFrequency The frequency at which the product will be billed. Possible values include: 'OneTime', 'Monthly', 'UsageBased'
+ * @return the next update stage
+ */
+ Update withBillingFrequency(BillingFrequency billingFrequency);
+ }
+
+ /**
+ * The stage of the product update allowing to specify Status.
+ */
+ interface WithStatus {
+ /**
+ * Specifies status.
+ * @param status The current status of the product. Possible values include: 'Active', 'Inactive', 'PastDue', 'Expiring', 'Expired', 'Disabled', 'Cancelled', 'AutoRenew'
+ * @return the next update stage
+ */
+ Update withStatus(ProductStatusType status);
+ }
+
+ }
+}
diff --git a/sdk/billing/mgmt-v2020_05_01/src/main/java/com/microsoft/azure/management/billing/v2020_05_01/ProductStatusType.java b/sdk/billing/mgmt-v2020_05_01/src/main/java/com/microsoft/azure/management/billing/v2020_05_01/ProductStatusType.java
new file mode 100644
index 0000000000000..81eac2f9ba1af
--- /dev/null
+++ b/sdk/billing/mgmt-v2020_05_01/src/main/java/com/microsoft/azure/management/billing/v2020_05_01/ProductStatusType.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.billing.v2020_05_01;
+
+import java.util.Collection;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.microsoft.rest.ExpandableStringEnum;
+
+/**
+ * Defines values for ProductStatusType.
+ */
+public final class ProductStatusType extends ExpandableStringEnum {
+ /** Static value Active for ProductStatusType. */
+ public static final ProductStatusType ACTIVE = fromString("Active");
+
+ /** Static value Inactive for ProductStatusType. */
+ public static final ProductStatusType INACTIVE = fromString("Inactive");
+
+ /** Static value PastDue for ProductStatusType. */
+ public static final ProductStatusType PAST_DUE = fromString("PastDue");
+
+ /** Static value Expiring for ProductStatusType. */
+ public static final ProductStatusType EXPIRING = fromString("Expiring");
+
+ /** Static value Expired for ProductStatusType. */
+ public static final ProductStatusType EXPIRED = fromString("Expired");
+
+ /** Static value Disabled for ProductStatusType. */
+ public static final ProductStatusType DISABLED = fromString("Disabled");
+
+ /** Static value Cancelled for ProductStatusType. */
+ public static final ProductStatusType CANCELLED = fromString("Cancelled");
+
+ /** Static value AutoRenew for ProductStatusType. */
+ public static final ProductStatusType AUTO_RENEW = fromString("AutoRenew");
+
+ /**
+ * Creates or finds a ProductStatusType from its string representation.
+ * @param name a name to look for
+ * @return the corresponding ProductStatusType
+ */
+ @JsonCreator
+ public static ProductStatusType fromString(String name) {
+ return fromString(name, ProductStatusType.class);
+ }
+
+ /**
+ * @return known ProductStatusType values
+ */
+ public static Collection values() {
+ return values(ProductStatusType.class);
+ }
+}
diff --git a/sdk/billing/mgmt-v2020_05_01/src/main/java/com/microsoft/azure/management/billing/v2020_05_01/ProductTransferValidationErrorCode.java b/sdk/billing/mgmt-v2020_05_01/src/main/java/com/microsoft/azure/management/billing/v2020_05_01/ProductTransferValidationErrorCode.java
new file mode 100644
index 0000000000000..ffc08d0791001
--- /dev/null
+++ b/sdk/billing/mgmt-v2020_05_01/src/main/java/com/microsoft/azure/management/billing/v2020_05_01/ProductTransferValidationErrorCode.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.billing.v2020_05_01;
+
+import java.util.Collection;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.microsoft.rest.ExpandableStringEnum;
+
+/**
+ * Defines values for ProductTransferValidationErrorCode.
+ */
+public final class ProductTransferValidationErrorCode extends ExpandableStringEnum {
+ /** Static value InvalidSource for ProductTransferValidationErrorCode. */
+ public static final ProductTransferValidationErrorCode INVALID_SOURCE = fromString("InvalidSource");
+
+ /** Static value ProductNotActive for ProductTransferValidationErrorCode. */
+ public static final ProductTransferValidationErrorCode PRODUCT_NOT_ACTIVE = fromString("ProductNotActive");
+
+ /** Static value InsufficientPermissionOnSource for ProductTransferValidationErrorCode. */
+ public static final ProductTransferValidationErrorCode INSUFFICIENT_PERMISSION_ON_SOURCE = fromString("InsufficientPermissionOnSource");
+
+ /** Static value InsufficientPermissionOnDestination for ProductTransferValidationErrorCode. */
+ public static final ProductTransferValidationErrorCode INSUFFICIENT_PERMISSION_ON_DESTINATION = fromString("InsufficientPermissionOnDestination");
+
+ /** Static value DestinationBillingProfilePastDue for ProductTransferValidationErrorCode. */
+ public static final ProductTransferValidationErrorCode DESTINATION_BILLING_PROFILE_PAST_DUE = fromString("DestinationBillingProfilePastDue");
+
+ /** Static value ProductTypeNotSupported for ProductTransferValidationErrorCode. */
+ public static final ProductTransferValidationErrorCode PRODUCT_TYPE_NOT_SUPPORTED = fromString("ProductTypeNotSupported");
+
+ /** Static value CrossBillingAccountNotAllowed for ProductTransferValidationErrorCode. */
+ public static final ProductTransferValidationErrorCode CROSS_BILLING_ACCOUNT_NOT_ALLOWED = fromString("CrossBillingAccountNotAllowed");
+
+ /** Static value NotAvailableForDestinationMarket for ProductTransferValidationErrorCode. */
+ public static final ProductTransferValidationErrorCode NOT_AVAILABLE_FOR_DESTINATION_MARKET = fromString("NotAvailableForDestinationMarket");
+
+ /** Static value OneTimePurchaseProductTransferNotAllowed for ProductTransferValidationErrorCode. */
+ public static final ProductTransferValidationErrorCode ONE_TIME_PURCHASE_PRODUCT_TRANSFER_NOT_ALLOWED = fromString("OneTimePurchaseProductTransferNotAllowed");
+
+ /**
+ * Creates or finds a ProductTransferValidationErrorCode from its string representation.
+ * @param name a name to look for
+ * @return the corresponding ProductTransferValidationErrorCode
+ */
+ @JsonCreator
+ public static ProductTransferValidationErrorCode fromString(String name) {
+ return fromString(name, ProductTransferValidationErrorCode.class);
+ }
+
+ /**
+ * @return known ProductTransferValidationErrorCode values
+ */
+ public static Collection values() {
+ return values(ProductTransferValidationErrorCode.class);
+ }
+}
diff --git a/sdk/billing/mgmt-v2020_05_01/src/main/java/com/microsoft/azure/management/billing/v2020_05_01/Products.java b/sdk/billing/mgmt-v2020_05_01/src/main/java/com/microsoft/azure/management/billing/v2020_05_01/Products.java
new file mode 100644
index 0000000000000..5f352f6226f1c
--- /dev/null
+++ b/sdk/billing/mgmt-v2020_05_01/src/main/java/com/microsoft/azure/management/billing/v2020_05_01/Products.java
@@ -0,0 +1,89 @@
+/**
+ * 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.billing.v2020_05_01;
+
+import rx.Observable;
+import com.microsoft.azure.management.billing.v2020_05_01.implementation.ProductsInner;
+import com.microsoft.azure.arm.model.HasInner;
+
+/**
+ * Type representing Products.
+ */
+public interface Products extends HasInner {
+ /**
+ * Lists the products for a billing account. These don't include products billed based on usage. The operation is supported for billing accounts with agreement type Microsoft Customer Agreement or Microsoft Partner Agreement.
+ *
+ * @param billingAccountName The ID that uniquely identifies a billing account.
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @return the observable for the request
+ */
+ Observable listByBillingAccountAsync(final String billingAccountName);
+
+ /**
+ * Lists the products for a billing profile. These don't include products billed based on usage. The operation is supported for billing accounts with agreement type Microsoft Customer Agreement or Microsoft Partner Agreement.
+ *
+ * @param billingAccountName The ID that uniquely identifies a billing account.
+ * @param billingProfileName The ID that uniquely identifies a billing profile.
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @return the observable for the request
+ */
+ Observable listByBillingProfileAsync(final String billingAccountName, final String billingProfileName);
+
+ /**
+ * Lists the products for an invoice section. These don't include products billed based on usage. The operation is supported only for billing accounts with agreement type Microsoft Customer Agreement.
+ *
+ * @param billingAccountName The ID that uniquely identifies a billing account.
+ * @param billingProfileName The ID that uniquely identifies a billing profile.
+ * @param invoiceSectionName The ID that uniquely identifies an invoice section.
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @return the observable for the request
+ */
+ Observable listByInvoiceSectionAsync(final String billingAccountName, final String billingProfileName, final String invoiceSectionName);
+
+ /**
+ * Gets a product by ID. The operation is supported only for billing accounts with agreement type Microsoft Customer Agreement.
+ *
+ * @param billingAccountName The ID that uniquely identifies a billing account.
+ * @param productName The ID that uniquely identifies a product.
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @return the observable for the request
+ */
+ Observable getAsync(String billingAccountName, String productName);
+
+ /**
+ * Moves a product's charges to a new invoice section. The new invoice section must belong to the same billing profile as the existing invoice section. This operation is supported only for products that are purchased with a recurring charge and for billing accounts with agreement type Microsoft Customer Agreement.
+ *
+ * @param billingAccountName The ID that uniquely identifies a billing account.
+ * @param productName The ID that uniquely identifies a product.
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @return the observable for the request
+ */
+ Observable moveAsync(String billingAccountName, String productName);
+
+ /**
+ * Validates if a product's charges can be moved to a new invoice section. This operation is supported only for products that are purchased with a recurring charge and for billing accounts with agreement type Microsoft Customer Agreement.
+ *
+ * @param billingAccountName The ID that uniquely identifies a billing account.
+ * @param productName The ID that uniquely identifies a product.
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @return the observable for the request
+ */
+ Observable validateMoveAsync(String billingAccountName, String productName);
+
+ /**
+ * Lists the products for a customer. These don't include products billed based on usage.The operation is supported only for billing accounts with agreement type Microsoft Partner Agreement.
+ *
+ * @param billingAccountName The ID that uniquely identifies a billing account.
+ * @param customerName The ID that uniquely identifies a customer.
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @return the observable for the request
+ */
+ Observable listByCustomerAsync(final String billingAccountName, final String customerName);
+
+}
diff --git a/sdk/billing/mgmt-v2020_05_01/src/main/java/com/microsoft/azure/management/billing/v2020_05_01/ProductsMoveHeaders.java b/sdk/billing/mgmt-v2020_05_01/src/main/java/com/microsoft/azure/management/billing/v2020_05_01/ProductsMoveHeaders.java
new file mode 100644
index 0000000000000..68036691a7a1d
--- /dev/null
+++ b/sdk/billing/mgmt-v2020_05_01/src/main/java/com/microsoft/azure/management/billing/v2020_05_01/ProductsMoveHeaders.java
@@ -0,0 +1,70 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.billing.v2020_05_01;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/**
+ * Defines headers for Move operation.
+ */
+public class ProductsMoveHeaders {
+ /**
+ * Location URI to poll for result.
+ */
+ @JsonProperty(value = "Location")
+ private String location;
+
+ /**
+ * Recommended time to wait before making another request to check the
+ * status of the operation. The time is specified in seconds.
+ */
+ @JsonProperty(value = "Retry-After")
+ private Integer retryAfter;
+
+ /**
+ * Get location URI to poll for result.
+ *
+ * @return the location value
+ */
+ public String location() {
+ return this.location;
+ }
+
+ /**
+ * Set location URI to poll for result.
+ *
+ * @param location the location value to set
+ * @return the ProductsMoveHeaders object itself.
+ */
+ public ProductsMoveHeaders withLocation(String location) {
+ this.location = location;
+ return this;
+ }
+
+ /**
+ * Get recommended time to wait before making another request to check the status of the operation. The time is specified in seconds.
+ *
+ * @return the retryAfter value
+ */
+ public Integer retryAfter() {
+ return this.retryAfter;
+ }
+
+ /**
+ * Set recommended time to wait before making another request to check the status of the operation. The time is specified in seconds.
+ *
+ * @param retryAfter the retryAfter value to set
+ * @return the ProductsMoveHeaders object itself.
+ */
+ public ProductsMoveHeaders withRetryAfter(Integer retryAfter) {
+ this.retryAfter = retryAfter;
+ return this;
+ }
+
+}
diff --git a/sdk/billing/mgmt-v2020_05_01/src/main/java/com/microsoft/azure/management/billing/v2020_05_01/RebillDetails.java b/sdk/billing/mgmt-v2020_05_01/src/main/java/com/microsoft/azure/management/billing/v2020_05_01/RebillDetails.java
new file mode 100644
index 0000000000000..d92b73e970463
--- /dev/null
+++ b/sdk/billing/mgmt-v2020_05_01/src/main/java/com/microsoft/azure/management/billing/v2020_05_01/RebillDetails.java
@@ -0,0 +1,63 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.billing.v2020_05_01;
+
+import java.util.Map;
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/**
+ * The rebill details of an invoice.
+ */
+public class RebillDetails {
+ /**
+ * The ID of credit note.
+ */
+ @JsonProperty(value = "creditNoteDocumentId", access = JsonProperty.Access.WRITE_ONLY)
+ private String creditNoteDocumentId;
+
+ /**
+ * The ID of invoice.
+ */
+ @JsonProperty(value = "invoiceDocumentId", access = JsonProperty.Access.WRITE_ONLY)
+ private String invoiceDocumentId;
+
+ /**
+ * Rebill details for an invoice.
+ */
+ @JsonProperty(value = "rebillDetails", access = JsonProperty.Access.WRITE_ONLY)
+ private Map rebillDetails;
+
+ /**
+ * Get the ID of credit note.
+ *
+ * @return the creditNoteDocumentId value
+ */
+ public String creditNoteDocumentId() {
+ return this.creditNoteDocumentId;
+ }
+
+ /**
+ * Get the ID of invoice.
+ *
+ * @return the invoiceDocumentId value
+ */
+ public String invoiceDocumentId() {
+ return this.invoiceDocumentId;
+ }
+
+ /**
+ * Get rebill details for an invoice.
+ *
+ * @return the rebillDetails value
+ */
+ public Map rebillDetails() {
+ return this.rebillDetails;
+ }
+
+}
diff --git a/sdk/billing/mgmt-v2020_05_01/src/main/java/com/microsoft/azure/management/billing/v2020_05_01/Reseller.java b/sdk/billing/mgmt-v2020_05_01/src/main/java/com/microsoft/azure/management/billing/v2020_05_01/Reseller.java
new file mode 100644
index 0000000000000..6580b97a56684
--- /dev/null
+++ b/sdk/billing/mgmt-v2020_05_01/src/main/java/com/microsoft/azure/management/billing/v2020_05_01/Reseller.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.billing.v2020_05_01;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/**
+ * Details of the reseller.
+ */
+public class Reseller {
+ /**
+ * The MPN ID of the reseller.
+ */
+ @JsonProperty(value = "resellerId", access = JsonProperty.Access.WRITE_ONLY)
+ private String resellerId;
+
+ /**
+ * The name of the reseller.
+ */
+ @JsonProperty(value = "description", access = JsonProperty.Access.WRITE_ONLY)
+ private String description;
+
+ /**
+ * Get the MPN ID of the reseller.
+ *
+ * @return the resellerId value
+ */
+ public String resellerId() {
+ return this.resellerId;
+ }
+
+ /**
+ * Get the name of the reseller.
+ *
+ * @return the description value
+ */
+ public String description() {
+ return this.description;
+ }
+
+}
diff --git a/sdk/billing/mgmt-v2020_05_01/src/main/java/com/microsoft/azure/management/billing/v2020_05_01/ReservationPurchasesPolicy.java b/sdk/billing/mgmt-v2020_05_01/src/main/java/com/microsoft/azure/management/billing/v2020_05_01/ReservationPurchasesPolicy.java
new file mode 100644
index 0000000000000..3548c95413ae9
--- /dev/null
+++ b/sdk/billing/mgmt-v2020_05_01/src/main/java/com/microsoft/azure/management/billing/v2020_05_01/ReservationPurchasesPolicy.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.billing.v2020_05_01;
+
+import java.util.Collection;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.microsoft.rest.ExpandableStringEnum;
+
+/**
+ * Defines values for ReservationPurchasesPolicy.
+ */
+public final class ReservationPurchasesPolicy extends ExpandableStringEnum {
+ /** Static value Allowed for ReservationPurchasesPolicy. */
+ public static final ReservationPurchasesPolicy ALLOWED = fromString("Allowed");
+
+ /** Static value NotAllowed for ReservationPurchasesPolicy. */
+ public static final ReservationPurchasesPolicy NOT_ALLOWED = fromString("NotAllowed");
+
+ /**
+ * Creates or finds a ReservationPurchasesPolicy from its string representation.
+ * @param name a name to look for
+ * @return the corresponding ReservationPurchasesPolicy
+ */
+ @JsonCreator
+ public static ReservationPurchasesPolicy fromString(String name) {
+ return fromString(name, ReservationPurchasesPolicy.class);
+ }
+
+ /**
+ * @return known ReservationPurchasesPolicy values
+ */
+ public static Collection values() {
+ return values(ReservationPurchasesPolicy.class);
+ }
+}
diff --git a/sdk/billing/mgmt-v2020_05_01/src/main/java/com/microsoft/azure/management/billing/v2020_05_01/ReservationType.java b/sdk/billing/mgmt-v2020_05_01/src/main/java/com/microsoft/azure/management/billing/v2020_05_01/ReservationType.java
new file mode 100644
index 0000000000000..7673d95f6ef79
--- /dev/null
+++ b/sdk/billing/mgmt-v2020_05_01/src/main/java/com/microsoft/azure/management/billing/v2020_05_01/ReservationType.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.billing.v2020_05_01;
+
+import java.util.Collection;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.microsoft.rest.ExpandableStringEnum;
+
+/**
+ * Defines values for ReservationType.
+ */
+public final class ReservationType extends ExpandableStringEnum {
+ /** Static value Purchase for ReservationType. */
+ public static final ReservationType PURCHASE = fromString("Purchase");
+
+ /** Static value Usage Charge for ReservationType. */
+ public static final ReservationType USAGE_CHARGE = fromString("Usage Charge");
+
+ /**
+ * Creates or finds a ReservationType from its string representation.
+ * @param name a name to look for
+ * @return the corresponding ReservationType
+ */
+ @JsonCreator
+ public static ReservationType fromString(String name) {
+ return fromString(name, ReservationType.class);
+ }
+
+ /**
+ * @return known ReservationType values
+ */
+ public static Collection