diff --git a/sdk/peering/mgmt-v2020_04_01/pom.xml b/sdk/peering/mgmt-v2020_04_01/pom.xml
new file mode 100644
index 0000000000000..ce88a4e847550
--- /dev/null
+++ b/sdk/peering/mgmt-v2020_04_01/pom.xml
@@ -0,0 +1,135 @@
+
+
+ 4.0.0
+ com.microsoft.azure.peering.v2020_04_01
+
+ com.microsoft.azure
+ azure-arm-parent
+ 1.1.0
+ ../../../pom.management.xml
+
+ azure-mgmt-peering
+ 1.0.0-beta
+ jar
+ Microsoft Azure SDK for Peering Management
+ This package contains Microsoft Peering 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/peering/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/peering/v2020_04_01/BgpSession.java b/sdk/peering/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/peering/v2020_04_01/BgpSession.java
new file mode 100644
index 0000000000000..c05dcca55368b
--- /dev/null
+++ b/sdk/peering/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/peering/v2020_04_01/BgpSession.java
@@ -0,0 +1,285 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.peering.v2020_04_01;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/**
+ * The properties that define a BGP session.
+ */
+public class BgpSession {
+ /**
+ * The IPv4 prefix that contains both ends' IPv4 addresses.
+ */
+ @JsonProperty(value = "sessionPrefixV4")
+ private String sessionPrefixV4;
+
+ /**
+ * The IPv6 prefix that contains both ends' IPv6 addresses.
+ */
+ @JsonProperty(value = "sessionPrefixV6")
+ private String sessionPrefixV6;
+
+ /**
+ * The IPv4 session address on Microsoft's end.
+ */
+ @JsonProperty(value = "microsoftSessionIPv4Address")
+ private String microsoftSessionIPv4Address;
+
+ /**
+ * The IPv6 session address on Microsoft's end.
+ */
+ @JsonProperty(value = "microsoftSessionIPv6Address")
+ private String microsoftSessionIPv6Address;
+
+ /**
+ * The IPv4 session address on peer's end.
+ */
+ @JsonProperty(value = "peerSessionIPv4Address")
+ private String peerSessionIPv4Address;
+
+ /**
+ * The IPv6 session address on peer's end.
+ */
+ @JsonProperty(value = "peerSessionIPv6Address")
+ private String peerSessionIPv6Address;
+
+ /**
+ * The state of the IPv4 session. Possible values include: 'None', 'Idle',
+ * 'Connect', 'Active', 'OpenSent', 'OpenConfirm', 'OpenReceived',
+ * 'Established', 'PendingAdd', 'PendingUpdate', 'PendingRemove'.
+ */
+ @JsonProperty(value = "sessionStateV4", access = JsonProperty.Access.WRITE_ONLY)
+ private SessionStateV4 sessionStateV4;
+
+ /**
+ * The state of the IPv6 session. Possible values include: 'None', 'Idle',
+ * 'Connect', 'Active', 'OpenSent', 'OpenConfirm', 'OpenReceived',
+ * 'Established', 'PendingAdd', 'PendingUpdate', 'PendingRemove'.
+ */
+ @JsonProperty(value = "sessionStateV6", access = JsonProperty.Access.WRITE_ONLY)
+ private SessionStateV6 sessionStateV6;
+
+ /**
+ * The maximum number of prefixes advertised over the IPv4 session.
+ */
+ @JsonProperty(value = "maxPrefixesAdvertisedV4")
+ private Integer maxPrefixesAdvertisedV4;
+
+ /**
+ * The maximum number of prefixes advertised over the IPv6 session.
+ */
+ @JsonProperty(value = "maxPrefixesAdvertisedV6")
+ private Integer maxPrefixesAdvertisedV6;
+
+ /**
+ * The MD5 authentication key of the session.
+ */
+ @JsonProperty(value = "md5AuthenticationKey")
+ private String md5AuthenticationKey;
+
+ /**
+ * Get the IPv4 prefix that contains both ends' IPv4 addresses.
+ *
+ * @return the sessionPrefixV4 value
+ */
+ public String sessionPrefixV4() {
+ return this.sessionPrefixV4;
+ }
+
+ /**
+ * Set the IPv4 prefix that contains both ends' IPv4 addresses.
+ *
+ * @param sessionPrefixV4 the sessionPrefixV4 value to set
+ * @return the BgpSession object itself.
+ */
+ public BgpSession withSessionPrefixV4(String sessionPrefixV4) {
+ this.sessionPrefixV4 = sessionPrefixV4;
+ return this;
+ }
+
+ /**
+ * Get the IPv6 prefix that contains both ends' IPv6 addresses.
+ *
+ * @return the sessionPrefixV6 value
+ */
+ public String sessionPrefixV6() {
+ return this.sessionPrefixV6;
+ }
+
+ /**
+ * Set the IPv6 prefix that contains both ends' IPv6 addresses.
+ *
+ * @param sessionPrefixV6 the sessionPrefixV6 value to set
+ * @return the BgpSession object itself.
+ */
+ public BgpSession withSessionPrefixV6(String sessionPrefixV6) {
+ this.sessionPrefixV6 = sessionPrefixV6;
+ return this;
+ }
+
+ /**
+ * Get the IPv4 session address on Microsoft's end.
+ *
+ * @return the microsoftSessionIPv4Address value
+ */
+ public String microsoftSessionIPv4Address() {
+ return this.microsoftSessionIPv4Address;
+ }
+
+ /**
+ * Set the IPv4 session address on Microsoft's end.
+ *
+ * @param microsoftSessionIPv4Address the microsoftSessionIPv4Address value to set
+ * @return the BgpSession object itself.
+ */
+ public BgpSession withMicrosoftSessionIPv4Address(String microsoftSessionIPv4Address) {
+ this.microsoftSessionIPv4Address = microsoftSessionIPv4Address;
+ return this;
+ }
+
+ /**
+ * Get the IPv6 session address on Microsoft's end.
+ *
+ * @return the microsoftSessionIPv6Address value
+ */
+ public String microsoftSessionIPv6Address() {
+ return this.microsoftSessionIPv6Address;
+ }
+
+ /**
+ * Set the IPv6 session address on Microsoft's end.
+ *
+ * @param microsoftSessionIPv6Address the microsoftSessionIPv6Address value to set
+ * @return the BgpSession object itself.
+ */
+ public BgpSession withMicrosoftSessionIPv6Address(String microsoftSessionIPv6Address) {
+ this.microsoftSessionIPv6Address = microsoftSessionIPv6Address;
+ return this;
+ }
+
+ /**
+ * Get the IPv4 session address on peer's end.
+ *
+ * @return the peerSessionIPv4Address value
+ */
+ public String peerSessionIPv4Address() {
+ return this.peerSessionIPv4Address;
+ }
+
+ /**
+ * Set the IPv4 session address on peer's end.
+ *
+ * @param peerSessionIPv4Address the peerSessionIPv4Address value to set
+ * @return the BgpSession object itself.
+ */
+ public BgpSession withPeerSessionIPv4Address(String peerSessionIPv4Address) {
+ this.peerSessionIPv4Address = peerSessionIPv4Address;
+ return this;
+ }
+
+ /**
+ * Get the IPv6 session address on peer's end.
+ *
+ * @return the peerSessionIPv6Address value
+ */
+ public String peerSessionIPv6Address() {
+ return this.peerSessionIPv6Address;
+ }
+
+ /**
+ * Set the IPv6 session address on peer's end.
+ *
+ * @param peerSessionIPv6Address the peerSessionIPv6Address value to set
+ * @return the BgpSession object itself.
+ */
+ public BgpSession withPeerSessionIPv6Address(String peerSessionIPv6Address) {
+ this.peerSessionIPv6Address = peerSessionIPv6Address;
+ return this;
+ }
+
+ /**
+ * Get the state of the IPv4 session. Possible values include: 'None', 'Idle', 'Connect', 'Active', 'OpenSent', 'OpenConfirm', 'OpenReceived', 'Established', 'PendingAdd', 'PendingUpdate', 'PendingRemove'.
+ *
+ * @return the sessionStateV4 value
+ */
+ public SessionStateV4 sessionStateV4() {
+ return this.sessionStateV4;
+ }
+
+ /**
+ * Get the state of the IPv6 session. Possible values include: 'None', 'Idle', 'Connect', 'Active', 'OpenSent', 'OpenConfirm', 'OpenReceived', 'Established', 'PendingAdd', 'PendingUpdate', 'PendingRemove'.
+ *
+ * @return the sessionStateV6 value
+ */
+ public SessionStateV6 sessionStateV6() {
+ return this.sessionStateV6;
+ }
+
+ /**
+ * Get the maximum number of prefixes advertised over the IPv4 session.
+ *
+ * @return the maxPrefixesAdvertisedV4 value
+ */
+ public Integer maxPrefixesAdvertisedV4() {
+ return this.maxPrefixesAdvertisedV4;
+ }
+
+ /**
+ * Set the maximum number of prefixes advertised over the IPv4 session.
+ *
+ * @param maxPrefixesAdvertisedV4 the maxPrefixesAdvertisedV4 value to set
+ * @return the BgpSession object itself.
+ */
+ public BgpSession withMaxPrefixesAdvertisedV4(Integer maxPrefixesAdvertisedV4) {
+ this.maxPrefixesAdvertisedV4 = maxPrefixesAdvertisedV4;
+ return this;
+ }
+
+ /**
+ * Get the maximum number of prefixes advertised over the IPv6 session.
+ *
+ * @return the maxPrefixesAdvertisedV6 value
+ */
+ public Integer maxPrefixesAdvertisedV6() {
+ return this.maxPrefixesAdvertisedV6;
+ }
+
+ /**
+ * Set the maximum number of prefixes advertised over the IPv6 session.
+ *
+ * @param maxPrefixesAdvertisedV6 the maxPrefixesAdvertisedV6 value to set
+ * @return the BgpSession object itself.
+ */
+ public BgpSession withMaxPrefixesAdvertisedV6(Integer maxPrefixesAdvertisedV6) {
+ this.maxPrefixesAdvertisedV6 = maxPrefixesAdvertisedV6;
+ return this;
+ }
+
+ /**
+ * Get the MD5 authentication key of the session.
+ *
+ * @return the md5AuthenticationKey value
+ */
+ public String md5AuthenticationKey() {
+ return this.md5AuthenticationKey;
+ }
+
+ /**
+ * Set the MD5 authentication key of the session.
+ *
+ * @param md5AuthenticationKey the md5AuthenticationKey value to set
+ * @return the BgpSession object itself.
+ */
+ public BgpSession withMd5AuthenticationKey(String md5AuthenticationKey) {
+ this.md5AuthenticationKey = md5AuthenticationKey;
+ return this;
+ }
+
+}
diff --git a/sdk/peering/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/peering/v2020_04_01/CheckServiceProviderAvailabilityInput.java b/sdk/peering/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/peering/v2020_04_01/CheckServiceProviderAvailabilityInput.java
new file mode 100644
index 0000000000000..b639efcf8250f
--- /dev/null
+++ b/sdk/peering/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/peering/v2020_04_01/CheckServiceProviderAvailabilityInput.java
@@ -0,0 +1,69 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.peering.v2020_04_01;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/**
+ * Class for CheckServiceProviderAvailabilityInput.
+ */
+public class CheckServiceProviderAvailabilityInput {
+ /**
+ * Gets or sets the peering service location.
+ */
+ @JsonProperty(value = "peeringServiceLocation")
+ private String peeringServiceLocation;
+
+ /**
+ * Gets or sets the peering service provider.
+ */
+ @JsonProperty(value = "peeringServiceProvider")
+ private String peeringServiceProvider;
+
+ /**
+ * Get gets or sets the peering service location.
+ *
+ * @return the peeringServiceLocation value
+ */
+ public String peeringServiceLocation() {
+ return this.peeringServiceLocation;
+ }
+
+ /**
+ * Set gets or sets the peering service location.
+ *
+ * @param peeringServiceLocation the peeringServiceLocation value to set
+ * @return the CheckServiceProviderAvailabilityInput object itself.
+ */
+ public CheckServiceProviderAvailabilityInput withPeeringServiceLocation(String peeringServiceLocation) {
+ this.peeringServiceLocation = peeringServiceLocation;
+ return this;
+ }
+
+ /**
+ * Get gets or sets the peering service provider.
+ *
+ * @return the peeringServiceProvider value
+ */
+ public String peeringServiceProvider() {
+ return this.peeringServiceProvider;
+ }
+
+ /**
+ * Set gets or sets the peering service provider.
+ *
+ * @param peeringServiceProvider the peeringServiceProvider value to set
+ * @return the CheckServiceProviderAvailabilityInput object itself.
+ */
+ public CheckServiceProviderAvailabilityInput withPeeringServiceProvider(String peeringServiceProvider) {
+ this.peeringServiceProvider = peeringServiceProvider;
+ return this;
+ }
+
+}
diff --git a/sdk/peering/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/peering/v2020_04_01/ConnectionState.java b/sdk/peering/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/peering/v2020_04_01/ConnectionState.java
new file mode 100644
index 0000000000000..fabd27680b90c
--- /dev/null
+++ b/sdk/peering/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/peering/v2020_04_01/ConnectionState.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.peering.v2020_04_01;
+
+import java.util.Collection;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.microsoft.rest.ExpandableStringEnum;
+
+/**
+ * Defines values for ConnectionState.
+ */
+public final class ConnectionState extends ExpandableStringEnum {
+ /** Static value None for ConnectionState. */
+ public static final ConnectionState NONE = fromString("None");
+
+ /** Static value PendingApproval for ConnectionState. */
+ public static final ConnectionState PENDING_APPROVAL = fromString("PendingApproval");
+
+ /** Static value Approved for ConnectionState. */
+ public static final ConnectionState APPROVED = fromString("Approved");
+
+ /** Static value ProvisioningStarted for ConnectionState. */
+ public static final ConnectionState PROVISIONING_STARTED = fromString("ProvisioningStarted");
+
+ /** Static value ProvisioningFailed for ConnectionState. */
+ public static final ConnectionState PROVISIONING_FAILED = fromString("ProvisioningFailed");
+
+ /** Static value ProvisioningCompleted for ConnectionState. */
+ public static final ConnectionState PROVISIONING_COMPLETED = fromString("ProvisioningCompleted");
+
+ /** Static value Validating for ConnectionState. */
+ public static final ConnectionState VALIDATING = fromString("Validating");
+
+ /** Static value Active for ConnectionState. */
+ public static final ConnectionState ACTIVE = fromString("Active");
+
+ /**
+ * Creates or finds a ConnectionState from its string representation.
+ * @param name a name to look for
+ * @return the corresponding ConnectionState
+ */
+ @JsonCreator
+ public static ConnectionState fromString(String name) {
+ return fromString(name, ConnectionState.class);
+ }
+
+ /**
+ * @return known ConnectionState values
+ */
+ public static Collection values() {
+ return values(ConnectionState.class);
+ }
+}
diff --git a/sdk/peering/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/peering/v2020_04_01/ContactDetail.java b/sdk/peering/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/peering/v2020_04_01/ContactDetail.java
new file mode 100644
index 0000000000000..ed25ede5eac40
--- /dev/null
+++ b/sdk/peering/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/peering/v2020_04_01/ContactDetail.java
@@ -0,0 +1,96 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.peering.v2020_04_01;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/**
+ * The contact detail class.
+ */
+public class ContactDetail {
+ /**
+ * The role of the contact. Possible values include: 'Noc', 'Policy',
+ * 'Technical', 'Service', 'Escalation', 'Other'.
+ */
+ @JsonProperty(value = "role")
+ private Role role;
+
+ /**
+ * The e-mail address of the contact.
+ */
+ @JsonProperty(value = "email")
+ private String email;
+
+ /**
+ * The phone number of the contact.
+ */
+ @JsonProperty(value = "phone")
+ private String phone;
+
+ /**
+ * Get the role of the contact. Possible values include: 'Noc', 'Policy', 'Technical', 'Service', 'Escalation', 'Other'.
+ *
+ * @return the role value
+ */
+ public Role role() {
+ return this.role;
+ }
+
+ /**
+ * Set the role of the contact. Possible values include: 'Noc', 'Policy', 'Technical', 'Service', 'Escalation', 'Other'.
+ *
+ * @param role the role value to set
+ * @return the ContactDetail object itself.
+ */
+ public ContactDetail withRole(Role role) {
+ this.role = role;
+ return this;
+ }
+
+ /**
+ * Get the e-mail address of the contact.
+ *
+ * @return the email value
+ */
+ public String email() {
+ return this.email;
+ }
+
+ /**
+ * Set the e-mail address of the contact.
+ *
+ * @param email the email value to set
+ * @return the ContactDetail object itself.
+ */
+ public ContactDetail withEmail(String email) {
+ this.email = email;
+ return this;
+ }
+
+ /**
+ * Get the phone number of the contact.
+ *
+ * @return the phone value
+ */
+ public String phone() {
+ return this.phone;
+ }
+
+ /**
+ * Set the phone number of the contact.
+ *
+ * @param phone the phone value to set
+ * @return the ContactDetail object itself.
+ */
+ public ContactDetail withPhone(String phone) {
+ this.phone = phone;
+ return this;
+ }
+
+}
diff --git a/sdk/peering/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/peering/v2020_04_01/DirectConnection.java b/sdk/peering/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/peering/v2020_04_01/DirectConnection.java
new file mode 100644
index 0000000000000..434c81220bef5
--- /dev/null
+++ b/sdk/peering/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/peering/v2020_04_01/DirectConnection.java
@@ -0,0 +1,223 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.peering.v2020_04_01;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/**
+ * The properties that define a direct connection.
+ */
+public class DirectConnection {
+ /**
+ * The bandwidth of the connection.
+ */
+ @JsonProperty(value = "bandwidthInMbps")
+ private Integer bandwidthInMbps;
+
+ /**
+ * The bandwidth that is actually provisioned.
+ */
+ @JsonProperty(value = "provisionedBandwidthInMbps", access = JsonProperty.Access.WRITE_ONLY)
+ private Integer provisionedBandwidthInMbps;
+
+ /**
+ * The field indicating if Microsoft provides session ip addresses.
+ * Possible values include: 'Microsoft', 'Peer'.
+ */
+ @JsonProperty(value = "sessionAddressProvider")
+ private SessionAddressProvider sessionAddressProvider;
+
+ /**
+ * The flag that indicates whether or not the connection is used for
+ * peering service.
+ */
+ @JsonProperty(value = "useForPeeringService")
+ private Boolean useForPeeringService;
+
+ /**
+ * The PeeringDB.com ID of the facility at which the connection has to be
+ * set up.
+ */
+ @JsonProperty(value = "peeringDBFacilityId")
+ private Integer peeringDBFacilityId;
+
+ /**
+ * The state of the connection. Possible values include: 'None',
+ * 'PendingApproval', 'Approved', 'ProvisioningStarted',
+ * 'ProvisioningFailed', 'ProvisioningCompleted', 'Validating', 'Active'.
+ */
+ @JsonProperty(value = "connectionState", access = JsonProperty.Access.WRITE_ONLY)
+ private ConnectionState connectionState;
+
+ /**
+ * The BGP session associated with the connection.
+ */
+ @JsonProperty(value = "bgpSession")
+ private BgpSession bgpSession;
+
+ /**
+ * The unique identifier (GUID) for the connection.
+ */
+ @JsonProperty(value = "connectionIdentifier")
+ private String connectionIdentifier;
+
+ /**
+ * The error message related to the connection state, if any.
+ */
+ @JsonProperty(value = "errorMessage", access = JsonProperty.Access.WRITE_ONLY)
+ private String errorMessage;
+
+ /**
+ * Get the bandwidth of the connection.
+ *
+ * @return the bandwidthInMbps value
+ */
+ public Integer bandwidthInMbps() {
+ return this.bandwidthInMbps;
+ }
+
+ /**
+ * Set the bandwidth of the connection.
+ *
+ * @param bandwidthInMbps the bandwidthInMbps value to set
+ * @return the DirectConnection object itself.
+ */
+ public DirectConnection withBandwidthInMbps(Integer bandwidthInMbps) {
+ this.bandwidthInMbps = bandwidthInMbps;
+ return this;
+ }
+
+ /**
+ * Get the bandwidth that is actually provisioned.
+ *
+ * @return the provisionedBandwidthInMbps value
+ */
+ public Integer provisionedBandwidthInMbps() {
+ return this.provisionedBandwidthInMbps;
+ }
+
+ /**
+ * Get the field indicating if Microsoft provides session ip addresses. Possible values include: 'Microsoft', 'Peer'.
+ *
+ * @return the sessionAddressProvider value
+ */
+ public SessionAddressProvider sessionAddressProvider() {
+ return this.sessionAddressProvider;
+ }
+
+ /**
+ * Set the field indicating if Microsoft provides session ip addresses. Possible values include: 'Microsoft', 'Peer'.
+ *
+ * @param sessionAddressProvider the sessionAddressProvider value to set
+ * @return the DirectConnection object itself.
+ */
+ public DirectConnection withSessionAddressProvider(SessionAddressProvider sessionAddressProvider) {
+ this.sessionAddressProvider = sessionAddressProvider;
+ return this;
+ }
+
+ /**
+ * Get the flag that indicates whether or not the connection is used for peering service.
+ *
+ * @return the useForPeeringService value
+ */
+ public Boolean useForPeeringService() {
+ return this.useForPeeringService;
+ }
+
+ /**
+ * Set the flag that indicates whether or not the connection is used for peering service.
+ *
+ * @param useForPeeringService the useForPeeringService value to set
+ * @return the DirectConnection object itself.
+ */
+ public DirectConnection withUseForPeeringService(Boolean useForPeeringService) {
+ this.useForPeeringService = useForPeeringService;
+ return this;
+ }
+
+ /**
+ * Get the PeeringDB.com ID of the facility at which the connection has to be set up.
+ *
+ * @return the peeringDBFacilityId value
+ */
+ public Integer peeringDBFacilityId() {
+ return this.peeringDBFacilityId;
+ }
+
+ /**
+ * Set the PeeringDB.com ID of the facility at which the connection has to be set up.
+ *
+ * @param peeringDBFacilityId the peeringDBFacilityId value to set
+ * @return the DirectConnection object itself.
+ */
+ public DirectConnection withPeeringDBFacilityId(Integer peeringDBFacilityId) {
+ this.peeringDBFacilityId = peeringDBFacilityId;
+ return this;
+ }
+
+ /**
+ * Get the state of the connection. Possible values include: 'None', 'PendingApproval', 'Approved', 'ProvisioningStarted', 'ProvisioningFailed', 'ProvisioningCompleted', 'Validating', 'Active'.
+ *
+ * @return the connectionState value
+ */
+ public ConnectionState connectionState() {
+ return this.connectionState;
+ }
+
+ /**
+ * Get the BGP session associated with the connection.
+ *
+ * @return the bgpSession value
+ */
+ public BgpSession bgpSession() {
+ return this.bgpSession;
+ }
+
+ /**
+ * Set the BGP session associated with the connection.
+ *
+ * @param bgpSession the bgpSession value to set
+ * @return the DirectConnection object itself.
+ */
+ public DirectConnection withBgpSession(BgpSession bgpSession) {
+ this.bgpSession = bgpSession;
+ return this;
+ }
+
+ /**
+ * Get the unique identifier (GUID) for the connection.
+ *
+ * @return the connectionIdentifier value
+ */
+ public String connectionIdentifier() {
+ return this.connectionIdentifier;
+ }
+
+ /**
+ * Set the unique identifier (GUID) for the connection.
+ *
+ * @param connectionIdentifier the connectionIdentifier value to set
+ * @return the DirectConnection object itself.
+ */
+ public DirectConnection withConnectionIdentifier(String connectionIdentifier) {
+ this.connectionIdentifier = connectionIdentifier;
+ return this;
+ }
+
+ /**
+ * Get the error message related to the connection state, if any.
+ *
+ * @return the errorMessage value
+ */
+ public String errorMessage() {
+ return this.errorMessage;
+ }
+
+}
diff --git a/sdk/peering/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/peering/v2020_04_01/DirectPeeringFacility.java b/sdk/peering/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/peering/v2020_04_01/DirectPeeringFacility.java
new file mode 100644
index 0000000000000..d635beacb859b
--- /dev/null
+++ b/sdk/peering/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/peering/v2020_04_01/DirectPeeringFacility.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.peering.v2020_04_01;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/**
+ * The properties that define a direct peering facility.
+ */
+public class DirectPeeringFacility {
+ /**
+ * The address of the direct peering facility.
+ */
+ @JsonProperty(value = "address")
+ private String address;
+
+ /**
+ * The type of the direct peering. Possible values include: 'Edge',
+ * 'Transit', 'Cdn', 'Internal', 'Ix', 'IxRs'.
+ */
+ @JsonProperty(value = "directPeeringType")
+ private DirectPeeringType directPeeringType;
+
+ /**
+ * The PeeringDB.com ID of the facility.
+ */
+ @JsonProperty(value = "peeringDBFacilityId")
+ private Integer peeringDBFacilityId;
+
+ /**
+ * The PeeringDB.com URL of the facility.
+ */
+ @JsonProperty(value = "peeringDBFacilityLink")
+ private String peeringDBFacilityLink;
+
+ /**
+ * Get the address of the direct peering facility.
+ *
+ * @return the address value
+ */
+ public String address() {
+ return this.address;
+ }
+
+ /**
+ * Set the address of the direct peering facility.
+ *
+ * @param address the address value to set
+ * @return the DirectPeeringFacility object itself.
+ */
+ public DirectPeeringFacility withAddress(String address) {
+ this.address = address;
+ return this;
+ }
+
+ /**
+ * Get the type of the direct peering. Possible values include: 'Edge', 'Transit', 'Cdn', 'Internal', 'Ix', 'IxRs'.
+ *
+ * @return the directPeeringType value
+ */
+ public DirectPeeringType directPeeringType() {
+ return this.directPeeringType;
+ }
+
+ /**
+ * Set the type of the direct peering. Possible values include: 'Edge', 'Transit', 'Cdn', 'Internal', 'Ix', 'IxRs'.
+ *
+ * @param directPeeringType the directPeeringType value to set
+ * @return the DirectPeeringFacility object itself.
+ */
+ public DirectPeeringFacility withDirectPeeringType(DirectPeeringType directPeeringType) {
+ this.directPeeringType = directPeeringType;
+ return this;
+ }
+
+ /**
+ * Get the PeeringDB.com ID of the facility.
+ *
+ * @return the peeringDBFacilityId value
+ */
+ public Integer peeringDBFacilityId() {
+ return this.peeringDBFacilityId;
+ }
+
+ /**
+ * Set the PeeringDB.com ID of the facility.
+ *
+ * @param peeringDBFacilityId the peeringDBFacilityId value to set
+ * @return the DirectPeeringFacility object itself.
+ */
+ public DirectPeeringFacility withPeeringDBFacilityId(Integer peeringDBFacilityId) {
+ this.peeringDBFacilityId = peeringDBFacilityId;
+ return this;
+ }
+
+ /**
+ * Get the PeeringDB.com URL of the facility.
+ *
+ * @return the peeringDBFacilityLink value
+ */
+ public String peeringDBFacilityLink() {
+ return this.peeringDBFacilityLink;
+ }
+
+ /**
+ * Set the PeeringDB.com URL of the facility.
+ *
+ * @param peeringDBFacilityLink the peeringDBFacilityLink value to set
+ * @return the DirectPeeringFacility object itself.
+ */
+ public DirectPeeringFacility withPeeringDBFacilityLink(String peeringDBFacilityLink) {
+ this.peeringDBFacilityLink = peeringDBFacilityLink;
+ return this;
+ }
+
+}
diff --git a/sdk/peering/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/peering/v2020_04_01/DirectPeeringType.java b/sdk/peering/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/peering/v2020_04_01/DirectPeeringType.java
new file mode 100644
index 0000000000000..a0f28047baf35
--- /dev/null
+++ b/sdk/peering/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/peering/v2020_04_01/DirectPeeringType.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.peering.v2020_04_01;
+
+import java.util.Collection;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.microsoft.rest.ExpandableStringEnum;
+
+/**
+ * Defines values for DirectPeeringType.
+ */
+public final class DirectPeeringType extends ExpandableStringEnum {
+ /** Static value Edge for DirectPeeringType. */
+ public static final DirectPeeringType EDGE = fromString("Edge");
+
+ /** Static value Transit for DirectPeeringType. */
+ public static final DirectPeeringType TRANSIT = fromString("Transit");
+
+ /** Static value Cdn for DirectPeeringType. */
+ public static final DirectPeeringType CDN = fromString("Cdn");
+
+ /** Static value Internal for DirectPeeringType. */
+ public static final DirectPeeringType INTERNAL = fromString("Internal");
+
+ /** Static value Ix for DirectPeeringType. */
+ public static final DirectPeeringType IX = fromString("Ix");
+
+ /** Static value IxRs for DirectPeeringType. */
+ public static final DirectPeeringType IX_RS = fromString("IxRs");
+
+ /**
+ * Creates or finds a DirectPeeringType from its string representation.
+ * @param name a name to look for
+ * @return the corresponding DirectPeeringType
+ */
+ @JsonCreator
+ public static DirectPeeringType fromString(String name) {
+ return fromString(name, DirectPeeringType.class);
+ }
+
+ /**
+ * @return known DirectPeeringType values
+ */
+ public static Collection values() {
+ return values(DirectPeeringType.class);
+ }
+}
diff --git a/sdk/peering/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/peering/v2020_04_01/ErrorDetail.java b/sdk/peering/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/peering/v2020_04_01/ErrorDetail.java
new file mode 100644
index 0000000000000..f733887f26c38
--- /dev/null
+++ b/sdk/peering/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/peering/v2020_04_01/ErrorDetail.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.peering.v2020_04_01;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/**
+ * The error detail that describes why an operation has failed.
+ */
+public class ErrorDetail {
+ /**
+ * The error code.
+ */
+ @JsonProperty(value = "code", access = JsonProperty.Access.WRITE_ONLY)
+ private String code;
+
+ /**
+ * The error message.
+ */
+ @JsonProperty(value = "message", access = JsonProperty.Access.WRITE_ONLY)
+ private String message;
+
+ /**
+ * Get the error code.
+ *
+ * @return the code value
+ */
+ public String code() {
+ return this.code;
+ }
+
+ /**
+ * Get the error message.
+ *
+ * @return the message value
+ */
+ public String message() {
+ return this.message;
+ }
+
+}
diff --git a/sdk/peering/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/peering/v2020_04_01/ErrorResponse.java b/sdk/peering/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/peering/v2020_04_01/ErrorResponse.java
new file mode 100644
index 0000000000000..c0c328c10500c
--- /dev/null
+++ b/sdk/peering/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/peering/v2020_04_01/ErrorResponse.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.peering.v2020_04_01;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/**
+ * The error response that indicates why an operation has failed.
+ */
+public class ErrorResponse {
+ /**
+ * The error detail that describes why an operation has failed.
+ */
+ @JsonProperty(value = "error")
+ private ErrorDetail error;
+
+ /**
+ * Get the error detail that describes why an operation has failed.
+ *
+ * @return the error value
+ */
+ public ErrorDetail error() {
+ return this.error;
+ }
+
+ /**
+ * Set the error detail that describes why an operation has failed.
+ *
+ * @param error the error value to set
+ * @return the ErrorResponse object itself.
+ */
+ public ErrorResponse withError(ErrorDetail error) {
+ this.error = error;
+ return this;
+ }
+
+}
diff --git a/sdk/peering/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/peering/v2020_04_01/ErrorResponseException.java b/sdk/peering/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/peering/v2020_04_01/ErrorResponseException.java
new file mode 100644
index 0000000000000..b991a9a5573a3
--- /dev/null
+++ b/sdk/peering/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/peering/v2020_04_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.peering.v2020_04_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/peering/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/peering/v2020_04_01/ExchangeConnection.java b/sdk/peering/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/peering/v2020_04_01/ExchangeConnection.java
new file mode 100644
index 0000000000000..dcc848d5ce73b
--- /dev/null
+++ b/sdk/peering/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/peering/v2020_04_01/ExchangeConnection.java
@@ -0,0 +1,128 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.peering.v2020_04_01;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/**
+ * The properties that define an exchange connection.
+ */
+public class ExchangeConnection {
+ /**
+ * The PeeringDB.com ID of the facility at which the connection has to be
+ * set up.
+ */
+ @JsonProperty(value = "peeringDBFacilityId")
+ private Integer peeringDBFacilityId;
+
+ /**
+ * The state of the connection. Possible values include: 'None',
+ * 'PendingApproval', 'Approved', 'ProvisioningStarted',
+ * 'ProvisioningFailed', 'ProvisioningCompleted', 'Validating', 'Active'.
+ */
+ @JsonProperty(value = "connectionState", access = JsonProperty.Access.WRITE_ONLY)
+ private ConnectionState connectionState;
+
+ /**
+ * The BGP session associated with the connection.
+ */
+ @JsonProperty(value = "bgpSession")
+ private BgpSession bgpSession;
+
+ /**
+ * The unique identifier (GUID) for the connection.
+ */
+ @JsonProperty(value = "connectionIdentifier")
+ private String connectionIdentifier;
+
+ /**
+ * The error message related to the connection state, if any.
+ */
+ @JsonProperty(value = "errorMessage", access = JsonProperty.Access.WRITE_ONLY)
+ private String errorMessage;
+
+ /**
+ * Get the PeeringDB.com ID of the facility at which the connection has to be set up.
+ *
+ * @return the peeringDBFacilityId value
+ */
+ public Integer peeringDBFacilityId() {
+ return this.peeringDBFacilityId;
+ }
+
+ /**
+ * Set the PeeringDB.com ID of the facility at which the connection has to be set up.
+ *
+ * @param peeringDBFacilityId the peeringDBFacilityId value to set
+ * @return the ExchangeConnection object itself.
+ */
+ public ExchangeConnection withPeeringDBFacilityId(Integer peeringDBFacilityId) {
+ this.peeringDBFacilityId = peeringDBFacilityId;
+ return this;
+ }
+
+ /**
+ * Get the state of the connection. Possible values include: 'None', 'PendingApproval', 'Approved', 'ProvisioningStarted', 'ProvisioningFailed', 'ProvisioningCompleted', 'Validating', 'Active'.
+ *
+ * @return the connectionState value
+ */
+ public ConnectionState connectionState() {
+ return this.connectionState;
+ }
+
+ /**
+ * Get the BGP session associated with the connection.
+ *
+ * @return the bgpSession value
+ */
+ public BgpSession bgpSession() {
+ return this.bgpSession;
+ }
+
+ /**
+ * Set the BGP session associated with the connection.
+ *
+ * @param bgpSession the bgpSession value to set
+ * @return the ExchangeConnection object itself.
+ */
+ public ExchangeConnection withBgpSession(BgpSession bgpSession) {
+ this.bgpSession = bgpSession;
+ return this;
+ }
+
+ /**
+ * Get the unique identifier (GUID) for the connection.
+ *
+ * @return the connectionIdentifier value
+ */
+ public String connectionIdentifier() {
+ return this.connectionIdentifier;
+ }
+
+ /**
+ * Set the unique identifier (GUID) for the connection.
+ *
+ * @param connectionIdentifier the connectionIdentifier value to set
+ * @return the ExchangeConnection object itself.
+ */
+ public ExchangeConnection withConnectionIdentifier(String connectionIdentifier) {
+ this.connectionIdentifier = connectionIdentifier;
+ return this;
+ }
+
+ /**
+ * Get the error message related to the connection state, if any.
+ *
+ * @return the errorMessage value
+ */
+ public String errorMessage() {
+ return this.errorMessage;
+ }
+
+}
diff --git a/sdk/peering/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/peering/v2020_04_01/ExchangePeeringFacility.java b/sdk/peering/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/peering/v2020_04_01/ExchangePeeringFacility.java
new file mode 100644
index 0000000000000..7b81ed2652ecb
--- /dev/null
+++ b/sdk/peering/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/peering/v2020_04_01/ExchangePeeringFacility.java
@@ -0,0 +1,226 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.peering.v2020_04_01;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/**
+ * The properties that define an exchange peering facility.
+ */
+public class ExchangePeeringFacility {
+ /**
+ * The name of the exchange peering facility.
+ */
+ @JsonProperty(value = "exchangeName")
+ private String exchangeName;
+
+ /**
+ * The bandwidth of the connection between Microsoft and the exchange
+ * peering facility.
+ */
+ @JsonProperty(value = "bandwidthInMbps")
+ private Integer bandwidthInMbps;
+
+ /**
+ * The IPv4 address of Microsoft at the exchange peering facility.
+ */
+ @JsonProperty(value = "microsoftIPv4Address")
+ private String microsoftIPv4Address;
+
+ /**
+ * The IPv6 address of Microsoft at the exchange peering facility.
+ */
+ @JsonProperty(value = "microsoftIPv6Address")
+ private String microsoftIPv6Address;
+
+ /**
+ * The IPv4 prefixes associated with the exchange peering facility.
+ */
+ @JsonProperty(value = "facilityIPv4Prefix")
+ private String facilityIPv4Prefix;
+
+ /**
+ * The IPv6 prefixes associated with the exchange peering facility.
+ */
+ @JsonProperty(value = "facilityIPv6Prefix")
+ private String facilityIPv6Prefix;
+
+ /**
+ * The PeeringDB.com ID of the facility.
+ */
+ @JsonProperty(value = "peeringDBFacilityId")
+ private Integer peeringDBFacilityId;
+
+ /**
+ * The PeeringDB.com URL of the facility.
+ */
+ @JsonProperty(value = "peeringDBFacilityLink")
+ private String peeringDBFacilityLink;
+
+ /**
+ * Get the name of the exchange peering facility.
+ *
+ * @return the exchangeName value
+ */
+ public String exchangeName() {
+ return this.exchangeName;
+ }
+
+ /**
+ * Set the name of the exchange peering facility.
+ *
+ * @param exchangeName the exchangeName value to set
+ * @return the ExchangePeeringFacility object itself.
+ */
+ public ExchangePeeringFacility withExchangeName(String exchangeName) {
+ this.exchangeName = exchangeName;
+ return this;
+ }
+
+ /**
+ * Get the bandwidth of the connection between Microsoft and the exchange peering facility.
+ *
+ * @return the bandwidthInMbps value
+ */
+ public Integer bandwidthInMbps() {
+ return this.bandwidthInMbps;
+ }
+
+ /**
+ * Set the bandwidth of the connection between Microsoft and the exchange peering facility.
+ *
+ * @param bandwidthInMbps the bandwidthInMbps value to set
+ * @return the ExchangePeeringFacility object itself.
+ */
+ public ExchangePeeringFacility withBandwidthInMbps(Integer bandwidthInMbps) {
+ this.bandwidthInMbps = bandwidthInMbps;
+ return this;
+ }
+
+ /**
+ * Get the IPv4 address of Microsoft at the exchange peering facility.
+ *
+ * @return the microsoftIPv4Address value
+ */
+ public String microsoftIPv4Address() {
+ return this.microsoftIPv4Address;
+ }
+
+ /**
+ * Set the IPv4 address of Microsoft at the exchange peering facility.
+ *
+ * @param microsoftIPv4Address the microsoftIPv4Address value to set
+ * @return the ExchangePeeringFacility object itself.
+ */
+ public ExchangePeeringFacility withMicrosoftIPv4Address(String microsoftIPv4Address) {
+ this.microsoftIPv4Address = microsoftIPv4Address;
+ return this;
+ }
+
+ /**
+ * Get the IPv6 address of Microsoft at the exchange peering facility.
+ *
+ * @return the microsoftIPv6Address value
+ */
+ public String microsoftIPv6Address() {
+ return this.microsoftIPv6Address;
+ }
+
+ /**
+ * Set the IPv6 address of Microsoft at the exchange peering facility.
+ *
+ * @param microsoftIPv6Address the microsoftIPv6Address value to set
+ * @return the ExchangePeeringFacility object itself.
+ */
+ public ExchangePeeringFacility withMicrosoftIPv6Address(String microsoftIPv6Address) {
+ this.microsoftIPv6Address = microsoftIPv6Address;
+ return this;
+ }
+
+ /**
+ * Get the IPv4 prefixes associated with the exchange peering facility.
+ *
+ * @return the facilityIPv4Prefix value
+ */
+ public String facilityIPv4Prefix() {
+ return this.facilityIPv4Prefix;
+ }
+
+ /**
+ * Set the IPv4 prefixes associated with the exchange peering facility.
+ *
+ * @param facilityIPv4Prefix the facilityIPv4Prefix value to set
+ * @return the ExchangePeeringFacility object itself.
+ */
+ public ExchangePeeringFacility withFacilityIPv4Prefix(String facilityIPv4Prefix) {
+ this.facilityIPv4Prefix = facilityIPv4Prefix;
+ return this;
+ }
+
+ /**
+ * Get the IPv6 prefixes associated with the exchange peering facility.
+ *
+ * @return the facilityIPv6Prefix value
+ */
+ public String facilityIPv6Prefix() {
+ return this.facilityIPv6Prefix;
+ }
+
+ /**
+ * Set the IPv6 prefixes associated with the exchange peering facility.
+ *
+ * @param facilityIPv6Prefix the facilityIPv6Prefix value to set
+ * @return the ExchangePeeringFacility object itself.
+ */
+ public ExchangePeeringFacility withFacilityIPv6Prefix(String facilityIPv6Prefix) {
+ this.facilityIPv6Prefix = facilityIPv6Prefix;
+ return this;
+ }
+
+ /**
+ * Get the PeeringDB.com ID of the facility.
+ *
+ * @return the peeringDBFacilityId value
+ */
+ public Integer peeringDBFacilityId() {
+ return this.peeringDBFacilityId;
+ }
+
+ /**
+ * Set the PeeringDB.com ID of the facility.
+ *
+ * @param peeringDBFacilityId the peeringDBFacilityId value to set
+ * @return the ExchangePeeringFacility object itself.
+ */
+ public ExchangePeeringFacility withPeeringDBFacilityId(Integer peeringDBFacilityId) {
+ this.peeringDBFacilityId = peeringDBFacilityId;
+ return this;
+ }
+
+ /**
+ * Get the PeeringDB.com URL of the facility.
+ *
+ * @return the peeringDBFacilityLink value
+ */
+ public String peeringDBFacilityLink() {
+ return this.peeringDBFacilityLink;
+ }
+
+ /**
+ * Set the PeeringDB.com URL of the facility.
+ *
+ * @param peeringDBFacilityLink the peeringDBFacilityLink value to set
+ * @return the ExchangePeeringFacility object itself.
+ */
+ public ExchangePeeringFacility withPeeringDBFacilityLink(String peeringDBFacilityLink) {
+ this.peeringDBFacilityLink = peeringDBFacilityLink;
+ return this;
+ }
+
+}
diff --git a/sdk/peering/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/peering/v2020_04_01/Family.java b/sdk/peering/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/peering/v2020_04_01/Family.java
new file mode 100644
index 0000000000000..34cba7eae59d5
--- /dev/null
+++ b/sdk/peering/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/peering/v2020_04_01/Family.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.peering.v2020_04_01;
+
+import java.util.Collection;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.microsoft.rest.ExpandableStringEnum;
+
+/**
+ * Defines values for Family.
+ */
+public final class Family extends ExpandableStringEnum {
+ /** Static value Direct for Family. */
+ public static final Family DIRECT = fromString("Direct");
+
+ /** Static value Exchange for Family. */
+ public static final Family EXCHANGE = fromString("Exchange");
+
+ /**
+ * Creates or finds a Family from its string representation.
+ * @param name a name to look for
+ * @return the corresponding Family
+ */
+ @JsonCreator
+ public static Family fromString(String name) {
+ return fromString(name, Family.class);
+ }
+
+ /**
+ * @return known Family values
+ */
+ public static Collection values() {
+ return values(Family.class);
+ }
+}
diff --git a/sdk/peering/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/peering/v2020_04_01/Kind.java b/sdk/peering/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/peering/v2020_04_01/Kind.java
new file mode 100644
index 0000000000000..df64edb8643f7
--- /dev/null
+++ b/sdk/peering/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/peering/v2020_04_01/Kind.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.peering.v2020_04_01;
+
+import java.util.Collection;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.microsoft.rest.ExpandableStringEnum;
+
+/**
+ * Defines values for Kind.
+ */
+public final class Kind extends ExpandableStringEnum {
+ /** Static value Direct for Kind. */
+ public static final Kind DIRECT = fromString("Direct");
+
+ /** Static value Exchange for Kind. */
+ public static final Kind EXCHANGE = fromString("Exchange");
+
+ /**
+ * Creates or finds a Kind from its string representation.
+ * @param name a name to look for
+ * @return the corresponding Kind
+ */
+ @JsonCreator
+ public static Kind fromString(String name) {
+ return fromString(name, Kind.class);
+ }
+
+ /**
+ * @return known Kind values
+ */
+ public static Collection values() {
+ return values(Kind.class);
+ }
+}
diff --git a/sdk/peering/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/peering/v2020_04_01/LearnedType.java b/sdk/peering/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/peering/v2020_04_01/LearnedType.java
new file mode 100644
index 0000000000000..28faf216e5fcf
--- /dev/null
+++ b/sdk/peering/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/peering/v2020_04_01/LearnedType.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.peering.v2020_04_01;
+
+import java.util.Collection;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.microsoft.rest.ExpandableStringEnum;
+
+/**
+ * Defines values for LearnedType.
+ */
+public final class LearnedType extends ExpandableStringEnum {
+ /** Static value None for LearnedType. */
+ public static final LearnedType NONE = fromString("None");
+
+ /** Static value ViaServiceProvider for LearnedType. */
+ public static final LearnedType VIA_SERVICE_PROVIDER = fromString("ViaServiceProvider");
+
+ /** Static value ViaSession for LearnedType. */
+ public static final LearnedType VIA_SESSION = fromString("ViaSession");
+
+ /**
+ * Creates or finds a LearnedType from its string representation.
+ * @param name a name to look for
+ * @return the corresponding LearnedType
+ */
+ @JsonCreator
+ public static LearnedType fromString(String name) {
+ return fromString(name, LearnedType.class);
+ }
+
+ /**
+ * @return known LearnedType values
+ */
+ public static Collection values() {
+ return values(LearnedType.class);
+ }
+}
diff --git a/sdk/peering/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/peering/v2020_04_01/LegacyPeerings.java b/sdk/peering/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/peering/v2020_04_01/LegacyPeerings.java
new file mode 100644
index 0000000000000..07a32ff2047da
--- /dev/null
+++ b/sdk/peering/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/peering/v2020_04_01/LegacyPeerings.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.peering.v2020_04_01;
+
+import rx.Observable;
+import com.microsoft.azure.management.peering.v2020_04_01.implementation.LegacyPeeringsInner;
+import com.microsoft.azure.arm.model.HasInner;
+
+/**
+ * Type representing LegacyPeerings.
+ */
+public interface LegacyPeerings extends HasInner {
+ /**
+ * Lists all of the legacy peerings under the given subscription matching the specified kind and location.
+ *
+ * @param peeringLocation The location of the peering.
+ * @param kind The kind of the peering. Possible values include: 'Direct', 'Exchange'
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @return the observable for the request
+ */
+ Observable listAsync(final String peeringLocation, final String kind);
+
+}
diff --git a/sdk/peering/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/peering/v2020_04_01/Operation.java b/sdk/peering/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/peering/v2020_04_01/Operation.java
new file mode 100644
index 0000000000000..d8d344e743456
--- /dev/null
+++ b/sdk/peering/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/peering/v2020_04_01/Operation.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.peering.v2020_04_01;
+
+import com.microsoft.azure.arm.model.HasInner;
+import com.microsoft.azure.arm.resources.models.HasManager;
+import com.microsoft.azure.management.peering.v2020_04_01.implementation.PeeringManager;
+import com.microsoft.azure.management.peering.v2020_04_01.implementation.OperationInner;
+
+/**
+ * Type representing Operation.
+ */
+public interface Operation extends HasInner, HasManager {
+ /**
+ * @return the display value.
+ */
+ OperationDisplayInfo display();
+
+ /**
+ * @return the isDataAction value.
+ */
+ Boolean isDataAction();
+
+ /**
+ * @return the name value.
+ */
+ String name();
+
+}
diff --git a/sdk/peering/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/peering/v2020_04_01/OperationDisplayInfo.java b/sdk/peering/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/peering/v2020_04_01/OperationDisplayInfo.java
new file mode 100644
index 0000000000000..cd94202cb529b
--- /dev/null
+++ b/sdk/peering/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/peering/v2020_04_01/OperationDisplayInfo.java
@@ -0,0 +1,77 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.peering.v2020_04_01;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/**
+ * The information related to the operation.
+ */
+public class OperationDisplayInfo {
+ /**
+ * The name of the resource provider.
+ */
+ @JsonProperty(value = "provider", access = JsonProperty.Access.WRITE_ONLY)
+ private String provider;
+
+ /**
+ * The type of the resource.
+ */
+ @JsonProperty(value = "resource", access = JsonProperty.Access.WRITE_ONLY)
+ private String resource;
+
+ /**
+ * The name of the operation.
+ */
+ @JsonProperty(value = "operation", access = JsonProperty.Access.WRITE_ONLY)
+ private String operation;
+
+ /**
+ * The description of the operation.
+ */
+ @JsonProperty(value = "description", access = JsonProperty.Access.WRITE_ONLY)
+ private String description;
+
+ /**
+ * Get the name of the resource provider.
+ *
+ * @return the provider value
+ */
+ public String provider() {
+ return this.provider;
+ }
+
+ /**
+ * Get the type of the resource.
+ *
+ * @return the resource value
+ */
+ public String resource() {
+ return this.resource;
+ }
+
+ /**
+ * Get the name of the operation.
+ *
+ * @return the operation value
+ */
+ public String operation() {
+ return this.operation;
+ }
+
+ /**
+ * Get the description of the operation.
+ *
+ * @return the description value
+ */
+ public String description() {
+ return this.description;
+ }
+
+}
diff --git a/sdk/peering/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/peering/v2020_04_01/Operations.java b/sdk/peering/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/peering/v2020_04_01/Operations.java
new file mode 100644
index 0000000000000..98d86902c3c8d
--- /dev/null
+++ b/sdk/peering/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/peering/v2020_04_01/Operations.java
@@ -0,0 +1,27 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.peering.v2020_04_01;
+
+import rx.Observable;
+import com.microsoft.azure.management.peering.v2020_04_01.implementation.OperationsInner;
+import com.microsoft.azure.arm.model.HasInner;
+
+/**
+ * Type representing Operations.
+ */
+public interface Operations extends HasInner {
+ /**
+ * Lists all of the available API operations for peering resources.
+ *
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @return the observable for the request
+ */
+ Observable listAsync();
+
+}
diff --git a/sdk/peering/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/peering/v2020_04_01/PeerAsn.java b/sdk/peering/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/peering/v2020_04_01/PeerAsn.java
new file mode 100644
index 0000000000000..6c6978aa9bc1e
--- /dev/null
+++ b/sdk/peering/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/peering/v2020_04_01/PeerAsn.java
@@ -0,0 +1,197 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.peering.v2020_04_01;
+
+import com.microsoft.azure.arm.model.HasInner;
+import com.microsoft.azure.management.peering.v2020_04_01.implementation.PeerAsnInner;
+import com.microsoft.azure.arm.model.Indexable;
+import com.microsoft.azure.arm.model.Creatable;
+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.peering.v2020_04_01.implementation.PeeringManager;
+import java.util.List;
+
+/**
+ * Type representing PeerAsn.
+ */
+public interface PeerAsn extends HasInner, Indexable, Updatable, Refreshable, HasManager {
+ /**
+ * @return the errorMessage value.
+ */
+ String errorMessage();
+
+ /**
+ * @return the id value.
+ */
+ String id();
+
+ /**
+ * @return the name value.
+ */
+ String name();
+
+ /**
+ * @return the peerAsn value.
+ */
+ Integer peerAsn();
+
+ /**
+ * @return the peerContactDetail value.
+ */
+ List peerContactDetail();
+
+ /**
+ * @return the peerName value.
+ */
+ String peerName();
+
+ /**
+ * @return the type value.
+ */
+ String type();
+
+ /**
+ * @return the validationState value.
+ */
+ ValidationState validationState();
+
+ /**
+ * The entirety of the PeerAsn definition.
+ */
+ interface Definition extends DefinitionStages.Blank, DefinitionStages.WithCreate {
+ }
+
+ /**
+ * Grouping of PeerAsn definition stages.
+ */
+ interface DefinitionStages {
+ /**
+ * The first stage of a PeerAsn definition.
+ */
+ interface Blank extends WithCreate {
+ }
+
+ /**
+ * The stage of the peerasn definition allowing to specify PeerAsn.
+ */
+ interface WithPeerAsn {
+ /**
+ * Specifies peerAsn.
+ * @param peerAsn The Autonomous System Number (ASN) of the peer
+ * @return the next definition stage
+ */
+ WithCreate withPeerAsn(Integer peerAsn);
+ }
+
+ /**
+ * The stage of the peerasn definition allowing to specify PeerContactDetail.
+ */
+ interface WithPeerContactDetail {
+ /**
+ * Specifies peerContactDetail.
+ * @param peerContactDetail The contact details of the peer
+ * @return the next definition stage
+ */
+ WithCreate withPeerContactDetail(List peerContactDetail);
+ }
+
+ /**
+ * The stage of the peerasn definition allowing to specify PeerName.
+ */
+ interface WithPeerName {
+ /**
+ * Specifies peerName.
+ * @param peerName The name of the peer
+ * @return the next definition stage
+ */
+ WithCreate withPeerName(String peerName);
+ }
+
+ /**
+ * The stage of the peerasn definition allowing to specify ValidationState.
+ */
+ interface WithValidationState {
+ /**
+ * Specifies validationState.
+ * @param validationState The validation state of the ASN associated with the peer. Possible values include: 'None', 'Pending', 'Approved', 'Failed'
+ * @return the next definition stage
+ */
+ WithCreate withValidationState(ValidationState validationState);
+ }
+
+ /**
+ * 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.WithPeerAsn, DefinitionStages.WithPeerContactDetail, DefinitionStages.WithPeerName, DefinitionStages.WithValidationState {
+ }
+ }
+ /**
+ * The template for a PeerAsn update operation, containing all the settings that can be modified.
+ */
+ interface Update extends Appliable, UpdateStages.WithPeerAsn, UpdateStages.WithPeerContactDetail, UpdateStages.WithPeerName, UpdateStages.WithValidationState {
+ }
+
+ /**
+ * Grouping of PeerAsn update stages.
+ */
+ interface UpdateStages {
+ /**
+ * The stage of the peerasn update allowing to specify PeerAsn.
+ */
+ interface WithPeerAsn {
+ /**
+ * Specifies peerAsn.
+ * @param peerAsn The Autonomous System Number (ASN) of the peer
+ * @return the next update stage
+ */
+ Update withPeerAsn(Integer peerAsn);
+ }
+
+ /**
+ * The stage of the peerasn update allowing to specify PeerContactDetail.
+ */
+ interface WithPeerContactDetail {
+ /**
+ * Specifies peerContactDetail.
+ * @param peerContactDetail The contact details of the peer
+ * @return the next update stage
+ */
+ Update withPeerContactDetail(List peerContactDetail);
+ }
+
+ /**
+ * The stage of the peerasn update allowing to specify PeerName.
+ */
+ interface WithPeerName {
+ /**
+ * Specifies peerName.
+ * @param peerName The name of the peer
+ * @return the next update stage
+ */
+ Update withPeerName(String peerName);
+ }
+
+ /**
+ * The stage of the peerasn update allowing to specify ValidationState.
+ */
+ interface WithValidationState {
+ /**
+ * Specifies validationState.
+ * @param validationState The validation state of the ASN associated with the peer. Possible values include: 'None', 'Pending', 'Approved', 'Failed'
+ * @return the next update stage
+ */
+ Update withValidationState(ValidationState validationState);
+ }
+
+ }
+}
diff --git a/sdk/peering/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/peering/v2020_04_01/PeerAsns.java b/sdk/peering/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/peering/v2020_04_01/PeerAsns.java
new file mode 100644
index 0000000000000..31039dfd0c7e4
--- /dev/null
+++ b/sdk/peering/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/peering/v2020_04_01/PeerAsns.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.peering.v2020_04_01;
+
+import com.microsoft.azure.arm.collection.SupportsCreating;
+import com.microsoft.azure.arm.collection.SupportsListing;
+import rx.Completable;
+import rx.Observable;
+import com.microsoft.azure.management.peering.v2020_04_01.implementation.PeerAsnsInner;
+import com.microsoft.azure.arm.model.HasInner;
+
+/**
+ * Type representing PeerAsns.
+ */
+public interface PeerAsns extends SupportsCreating, SupportsListing, HasInner {
+ /**
+ * Gets the peer ASN with the specified name under the given subscription.
+ *
+ * @param peerAsnName The peer ASN name.
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @return the observable for the request
+ */
+ Observable getAsync(String peerAsnName);
+
+ /**
+ * Deletes an existing peer ASN with the specified name under the given subscription.
+ *
+ * @param peerAsnName The peer ASN name.
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @return the observable for the request
+ */
+ Completable deleteAsync(String peerAsnName);
+
+}
diff --git a/sdk/peering/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/peering/v2020_04_01/Peering.java b/sdk/peering/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/peering/v2020_04_01/Peering.java
new file mode 100644
index 0000000000000..4ed453268a443
--- /dev/null
+++ b/sdk/peering/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/peering/v2020_04_01/Peering.java
@@ -0,0 +1,194 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.peering.v2020_04_01;
+
+import com.microsoft.azure.arm.model.HasInner;
+import com.microsoft.azure.arm.resources.models.Resource;
+import com.microsoft.azure.arm.resources.models.GroupableResourceCore;
+import com.microsoft.azure.arm.resources.models.HasResourceGroup;
+import com.microsoft.azure.arm.model.Refreshable;
+import com.microsoft.azure.arm.model.Updatable;
+import com.microsoft.azure.arm.model.Appliable;
+import com.microsoft.azure.arm.model.Creatable;
+import com.microsoft.azure.arm.resources.models.HasManager;
+import com.microsoft.azure.management.peering.v2020_04_01.implementation.PeeringManager;
+import com.microsoft.azure.management.peering.v2020_04_01.implementation.PeeringInner;
+
+/**
+ * Type representing Peering.
+ */
+public interface Peering extends HasInner, Resource, GroupableResourceCore, HasResourceGroup, Refreshable, Updatable, HasManager {
+ /**
+ * @return the direct value.
+ */
+ PeeringPropertiesDirect direct();
+
+ /**
+ * @return the exchange value.
+ */
+ PeeringPropertiesExchange exchange();
+
+ /**
+ * @return the kind value.
+ */
+ Kind kind();
+
+ /**
+ * @return the peeringLocation value.
+ */
+ String peeringLocation();
+
+ /**
+ * @return the provisioningState value.
+ */
+ ProvisioningState provisioningState();
+
+ /**
+ * @return the sku value.
+ */
+ PeeringSku sku();
+
+ /**
+ * The entirety of the Peering definition.
+ */
+ interface Definition extends DefinitionStages.Blank, DefinitionStages.WithGroup, DefinitionStages.WithKind, DefinitionStages.WithSku, DefinitionStages.WithCreate {
+ }
+
+ /**
+ * Grouping of Peering definition stages.
+ */
+ interface DefinitionStages {
+ /**
+ * The first stage of a Peering definition.
+ */
+ interface Blank extends GroupableResourceCore.DefinitionWithRegion {
+ }
+
+ /**
+ * The stage of the Peering definition allowing to specify the resource group.
+ */
+ interface WithGroup extends GroupableResourceCore.DefinitionStages.WithGroup {
+ }
+
+ /**
+ * The stage of the peering definition allowing to specify Kind.
+ */
+ interface WithKind {
+ /**
+ * Specifies kind.
+ * @param kind The kind of the peering. Possible values include: 'Direct', 'Exchange'
+ * @return the next definition stage
+*/
+ WithSku withKind(Kind kind);
+ }
+
+ /**
+ * The stage of the peering definition allowing to specify Sku.
+ */
+ interface WithSku {
+ /**
+ * Specifies sku.
+ * @param sku The SKU that defines the tier and kind of the peering
+ * @return the next definition stage
+*/
+ WithCreate withSku(PeeringSku sku);
+ }
+
+ /**
+ * The stage of the peering definition allowing to specify Direct.
+ */
+ interface WithDirect {
+ /**
+ * Specifies direct.
+ * @param direct The properties that define a direct peering
+ * @return the next definition stage
+ */
+ WithCreate withDirect(PeeringPropertiesDirect direct);
+ }
+
+ /**
+ * The stage of the peering definition allowing to specify Exchange.
+ */
+ interface WithExchange {
+ /**
+ * Specifies exchange.
+ * @param exchange The properties that define an exchange peering
+ * @return the next definition stage
+ */
+ WithCreate withExchange(PeeringPropertiesExchange exchange);
+ }
+
+ /**
+ * The stage of the peering definition allowing to specify PeeringLocation.
+ */
+ interface WithPeeringLocation {
+ /**
+ * Specifies peeringLocation.
+ * @param peeringLocation The location of the peering
+ * @return the next definition stage
+ */
+ WithCreate withPeeringLocation(String peeringLocation);
+ }
+
+ /**
+ * The stage of the definition which contains all the minimum required inputs for
+ * the resource to be created (via {@link WithCreate#create()}), but also allows
+ * for any other optional settings to be specified.
+ */
+ interface WithCreate extends Creatable, Resource.DefinitionWithTags, DefinitionStages.WithDirect, DefinitionStages.WithExchange, DefinitionStages.WithPeeringLocation {
+ }
+ }
+ /**
+ * The template for a Peering update operation, containing all the settings that can be modified.
+ */
+ interface Update extends Appliable, Resource.UpdateWithTags, UpdateStages.WithDirect, UpdateStages.WithExchange, UpdateStages.WithPeeringLocation {
+ }
+
+ /**
+ * Grouping of Peering update stages.
+ */
+ interface UpdateStages {
+ /**
+ * The stage of the peering update allowing to specify Direct.
+ */
+ interface WithDirect {
+ /**
+ * Specifies direct.
+ * @param direct The properties that define a direct peering
+ * @return the next update stage
+ */
+ Update withDirect(PeeringPropertiesDirect direct);
+ }
+
+ /**
+ * The stage of the peering update allowing to specify Exchange.
+ */
+ interface WithExchange {
+ /**
+ * Specifies exchange.
+ * @param exchange The properties that define an exchange peering
+ * @return the next update stage
+ */
+ Update withExchange(PeeringPropertiesExchange exchange);
+ }
+
+ /**
+ * The stage of the peering update allowing to specify PeeringLocation.
+ */
+ interface WithPeeringLocation {
+ /**
+ * Specifies peeringLocation.
+ * @param peeringLocation The location of the peering
+ * @return the next update stage
+ */
+ Update withPeeringLocation(String peeringLocation);
+ }
+
+ }
+}
diff --git a/sdk/peering/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/peering/v2020_04_01/PeeringBandwidthOffer.java b/sdk/peering/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/peering/v2020_04_01/PeeringBandwidthOffer.java
new file mode 100644
index 0000000000000..201ec28eeff3a
--- /dev/null
+++ b/sdk/peering/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/peering/v2020_04_01/PeeringBandwidthOffer.java
@@ -0,0 +1,69 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.peering.v2020_04_01;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/**
+ * The properties that define a peering bandwidth offer.
+ */
+public class PeeringBandwidthOffer {
+ /**
+ * The name of the bandwidth offer.
+ */
+ @JsonProperty(value = "offerName")
+ private String offerName;
+
+ /**
+ * The value of the bandwidth offer in Mbps.
+ */
+ @JsonProperty(value = "valueInMbps")
+ private Integer valueInMbps;
+
+ /**
+ * Get the name of the bandwidth offer.
+ *
+ * @return the offerName value
+ */
+ public String offerName() {
+ return this.offerName;
+ }
+
+ /**
+ * Set the name of the bandwidth offer.
+ *
+ * @param offerName the offerName value to set
+ * @return the PeeringBandwidthOffer object itself.
+ */
+ public PeeringBandwidthOffer withOfferName(String offerName) {
+ this.offerName = offerName;
+ return this;
+ }
+
+ /**
+ * Get the value of the bandwidth offer in Mbps.
+ *
+ * @return the valueInMbps value
+ */
+ public Integer valueInMbps() {
+ return this.valueInMbps;
+ }
+
+ /**
+ * Set the value of the bandwidth offer in Mbps.
+ *
+ * @param valueInMbps the valueInMbps value to set
+ * @return the PeeringBandwidthOffer object itself.
+ */
+ public PeeringBandwidthOffer withValueInMbps(Integer valueInMbps) {
+ this.valueInMbps = valueInMbps;
+ return this;
+ }
+
+}
diff --git a/sdk/peering/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/peering/v2020_04_01/PeeringLocation.java b/sdk/peering/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/peering/v2020_04_01/PeeringLocation.java
new file mode 100644
index 0000000000000..b6ce4ff85d825
--- /dev/null
+++ b/sdk/peering/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/peering/v2020_04_01/PeeringLocation.java
@@ -0,0 +1,65 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.peering.v2020_04_01;
+
+import com.microsoft.azure.arm.model.HasInner;
+import com.microsoft.azure.arm.resources.models.HasManager;
+import com.microsoft.azure.management.peering.v2020_04_01.implementation.PeeringManager;
+import com.microsoft.azure.management.peering.v2020_04_01.implementation.PeeringLocationInner;
+
+/**
+ * Type representing PeeringLocation.
+ */
+public interface PeeringLocation extends HasInner, HasManager {
+ /**
+ * @return the azureRegion value.
+ */
+ String azureRegion();
+
+ /**
+ * @return the country value.
+ */
+ String country();
+
+ /**
+ * @return the direct value.
+ */
+ PeeringLocationPropertiesDirect direct();
+
+ /**
+ * @return the exchange value.
+ */
+ PeeringLocationPropertiesExchange exchange();
+
+ /**
+ * @return the id value.
+ */
+ String id();
+
+ /**
+ * @return the kind value.
+ */
+ Kind kind();
+
+ /**
+ * @return the name value.
+ */
+ String name();
+
+ /**
+ * @return the peeringLocation value.
+ */
+ String peeringLocation();
+
+ /**
+ * @return the type value.
+ */
+ String type();
+
+}
diff --git a/sdk/peering/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/peering/v2020_04_01/PeeringLocationPropertiesDirect.java b/sdk/peering/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/peering/v2020_04_01/PeeringLocationPropertiesDirect.java
new file mode 100644
index 0000000000000..bd5fdf9dc47f7
--- /dev/null
+++ b/sdk/peering/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/peering/v2020_04_01/PeeringLocationPropertiesDirect.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.peering.v2020_04_01;
+
+import java.util.List;
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/**
+ * The properties that define a direct peering location.
+ */
+public class PeeringLocationPropertiesDirect {
+ /**
+ * The list of direct peering facilities at the peering location.
+ */
+ @JsonProperty(value = "peeringFacilities")
+ private List peeringFacilities;
+
+ /**
+ * The list of bandwidth offers available at the peering location.
+ */
+ @JsonProperty(value = "bandwidthOffers")
+ private List bandwidthOffers;
+
+ /**
+ * Get the list of direct peering facilities at the peering location.
+ *
+ * @return the peeringFacilities value
+ */
+ public List peeringFacilities() {
+ return this.peeringFacilities;
+ }
+
+ /**
+ * Set the list of direct peering facilities at the peering location.
+ *
+ * @param peeringFacilities the peeringFacilities value to set
+ * @return the PeeringLocationPropertiesDirect object itself.
+ */
+ public PeeringLocationPropertiesDirect withPeeringFacilities(List peeringFacilities) {
+ this.peeringFacilities = peeringFacilities;
+ return this;
+ }
+
+ /**
+ * Get the list of bandwidth offers available at the peering location.
+ *
+ * @return the bandwidthOffers value
+ */
+ public List bandwidthOffers() {
+ return this.bandwidthOffers;
+ }
+
+ /**
+ * Set the list of bandwidth offers available at the peering location.
+ *
+ * @param bandwidthOffers the bandwidthOffers value to set
+ * @return the PeeringLocationPropertiesDirect object itself.
+ */
+ public PeeringLocationPropertiesDirect withBandwidthOffers(List bandwidthOffers) {
+ this.bandwidthOffers = bandwidthOffers;
+ return this;
+ }
+
+}
diff --git a/sdk/peering/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/peering/v2020_04_01/PeeringLocationPropertiesExchange.java b/sdk/peering/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/peering/v2020_04_01/PeeringLocationPropertiesExchange.java
new file mode 100644
index 0000000000000..53b30a04db3aa
--- /dev/null
+++ b/sdk/peering/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/peering/v2020_04_01/PeeringLocationPropertiesExchange.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.peering.v2020_04_01;
+
+import java.util.List;
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/**
+ * The properties that define an exchange peering location.
+ */
+public class PeeringLocationPropertiesExchange {
+ /**
+ * The list of exchange peering facilities at the peering location.
+ */
+ @JsonProperty(value = "peeringFacilities")
+ private List peeringFacilities;
+
+ /**
+ * Get the list of exchange peering facilities at the peering location.
+ *
+ * @return the peeringFacilities value
+ */
+ public List peeringFacilities() {
+ return this.peeringFacilities;
+ }
+
+ /**
+ * Set the list of exchange peering facilities at the peering location.
+ *
+ * @param peeringFacilities the peeringFacilities value to set
+ * @return the PeeringLocationPropertiesExchange object itself.
+ */
+ public PeeringLocationPropertiesExchange withPeeringFacilities(List peeringFacilities) {
+ this.peeringFacilities = peeringFacilities;
+ return this;
+ }
+
+}
diff --git a/sdk/peering/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/peering/v2020_04_01/PeeringLocations.java b/sdk/peering/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/peering/v2020_04_01/PeeringLocations.java
new file mode 100644
index 0000000000000..38769fb9b8d19
--- /dev/null
+++ b/sdk/peering/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/peering/v2020_04_01/PeeringLocations.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.peering.v2020_04_01;
+
+import rx.Observable;
+import com.microsoft.azure.management.peering.v2020_04_01.implementation.PeeringLocationsInner;
+import com.microsoft.azure.arm.model.HasInner;
+
+/**
+ * Type representing PeeringLocations.
+ */
+public interface PeeringLocations extends HasInner {
+ /**
+ * Lists all of the available peering locations for the specified kind of peering.
+ *
+ * @param kind The kind of the peering. Possible values include: 'Direct', 'Exchange'
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @return the observable for the request
+ */
+ Observable listAsync(final String kind);
+
+}
diff --git a/sdk/peering/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/peering/v2020_04_01/PeeringPropertiesDirect.java b/sdk/peering/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/peering/v2020_04_01/PeeringPropertiesDirect.java
new file mode 100644
index 0000000000000..390c4df6a979e
--- /dev/null
+++ b/sdk/peering/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/peering/v2020_04_01/PeeringPropertiesDirect.java
@@ -0,0 +1,114 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.peering.v2020_04_01;
+
+import java.util.List;
+import com.microsoft.azure.SubResource;
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/**
+ * The properties that define a direct peering.
+ */
+public class PeeringPropertiesDirect {
+ /**
+ * The set of connections that constitute a direct peering.
+ */
+ @JsonProperty(value = "connections")
+ private List connections;
+
+ /**
+ * The flag that indicates whether or not the peering is used for peering
+ * service.
+ */
+ @JsonProperty(value = "useForPeeringService", access = JsonProperty.Access.WRITE_ONLY)
+ private Boolean useForPeeringService;
+
+ /**
+ * The reference of the peer ASN.
+ */
+ @JsonProperty(value = "peerAsn")
+ private SubResource peerAsn;
+
+ /**
+ * The type of direct peering. Possible values include: 'Edge', 'Transit',
+ * 'Cdn', 'Internal', 'Ix', 'IxRs'.
+ */
+ @JsonProperty(value = "directPeeringType")
+ private DirectPeeringType directPeeringType;
+
+ /**
+ * Get the set of connections that constitute a direct peering.
+ *
+ * @return the connections value
+ */
+ public List connections() {
+ return this.connections;
+ }
+
+ /**
+ * Set the set of connections that constitute a direct peering.
+ *
+ * @param connections the connections value to set
+ * @return the PeeringPropertiesDirect object itself.
+ */
+ public PeeringPropertiesDirect withConnections(List connections) {
+ this.connections = connections;
+ return this;
+ }
+
+ /**
+ * Get the flag that indicates whether or not the peering is used for peering service.
+ *
+ * @return the useForPeeringService value
+ */
+ public Boolean useForPeeringService() {
+ return this.useForPeeringService;
+ }
+
+ /**
+ * Get the reference of the peer ASN.
+ *
+ * @return the peerAsn value
+ */
+ public SubResource peerAsn() {
+ return this.peerAsn;
+ }
+
+ /**
+ * Set the reference of the peer ASN.
+ *
+ * @param peerAsn the peerAsn value to set
+ * @return the PeeringPropertiesDirect object itself.
+ */
+ public PeeringPropertiesDirect withPeerAsn(SubResource peerAsn) {
+ this.peerAsn = peerAsn;
+ return this;
+ }
+
+ /**
+ * Get the type of direct peering. Possible values include: 'Edge', 'Transit', 'Cdn', 'Internal', 'Ix', 'IxRs'.
+ *
+ * @return the directPeeringType value
+ */
+ public DirectPeeringType directPeeringType() {
+ return this.directPeeringType;
+ }
+
+ /**
+ * Set the type of direct peering. Possible values include: 'Edge', 'Transit', 'Cdn', 'Internal', 'Ix', 'IxRs'.
+ *
+ * @param directPeeringType the directPeeringType value to set
+ * @return the PeeringPropertiesDirect object itself.
+ */
+ public PeeringPropertiesDirect withDirectPeeringType(DirectPeeringType directPeeringType) {
+ this.directPeeringType = directPeeringType;
+ return this;
+ }
+
+}
diff --git a/sdk/peering/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/peering/v2020_04_01/PeeringPropertiesExchange.java b/sdk/peering/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/peering/v2020_04_01/PeeringPropertiesExchange.java
new file mode 100644
index 0000000000000..a8edb1b28fee8
--- /dev/null
+++ b/sdk/peering/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/peering/v2020_04_01/PeeringPropertiesExchange.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.peering.v2020_04_01;
+
+import java.util.List;
+import com.microsoft.azure.SubResource;
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/**
+ * The properties that define an exchange peering.
+ */
+public class PeeringPropertiesExchange {
+ /**
+ * The set of connections that constitute an exchange peering.
+ */
+ @JsonProperty(value = "connections")
+ private List connections;
+
+ /**
+ * The reference of the peer ASN.
+ */
+ @JsonProperty(value = "peerAsn")
+ private SubResource peerAsn;
+
+ /**
+ * Get the set of connections that constitute an exchange peering.
+ *
+ * @return the connections value
+ */
+ public List connections() {
+ return this.connections;
+ }
+
+ /**
+ * Set the set of connections that constitute an exchange peering.
+ *
+ * @param connections the connections value to set
+ * @return the PeeringPropertiesExchange object itself.
+ */
+ public PeeringPropertiesExchange withConnections(List connections) {
+ this.connections = connections;
+ return this;
+ }
+
+ /**
+ * Get the reference of the peer ASN.
+ *
+ * @return the peerAsn value
+ */
+ public SubResource peerAsn() {
+ return this.peerAsn;
+ }
+
+ /**
+ * Set the reference of the peer ASN.
+ *
+ * @param peerAsn the peerAsn value to set
+ * @return the PeeringPropertiesExchange object itself.
+ */
+ public PeeringPropertiesExchange withPeerAsn(SubResource peerAsn) {
+ this.peerAsn = peerAsn;
+ return this;
+ }
+
+}
diff --git a/sdk/peering/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/peering/v2020_04_01/PeeringReceivedRoute.java b/sdk/peering/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/peering/v2020_04_01/PeeringReceivedRoute.java
new file mode 100644
index 0000000000000..c17e53c788d00
--- /dev/null
+++ b/sdk/peering/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/peering/v2020_04_01/PeeringReceivedRoute.java
@@ -0,0 +1,55 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.peering.v2020_04_01;
+
+import com.microsoft.azure.arm.model.HasInner;
+import com.microsoft.azure.management.peering.v2020_04_01.implementation.PeeringReceivedRouteInner;
+import com.microsoft.azure.arm.resources.models.HasManager;
+import com.microsoft.azure.management.peering.v2020_04_01.implementation.PeeringManager;
+
+/**
+ * Type representing PeeringReceivedRoute.
+ */
+public interface PeeringReceivedRoute extends HasInner, HasManager {
+ /**
+ * @return the asPath value.
+ */
+ String asPath();
+
+ /**
+ * @return the nextHop value.
+ */
+ String nextHop();
+
+ /**
+ * @return the originAsValidationState value.
+ */
+ String originAsValidationState();
+
+ /**
+ * @return the prefix value.
+ */
+ String prefix();
+
+ /**
+ * @return the receivedTimestamp value.
+ */
+ String receivedTimestamp();
+
+ /**
+ * @return the rpkiValidationState value.
+ */
+ String rpkiValidationState();
+
+ /**
+ * @return the trustAnchor value.
+ */
+ String trustAnchor();
+
+}
diff --git a/sdk/peering/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/peering/v2020_04_01/PeeringRegisteredAsn.java b/sdk/peering/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/peering/v2020_04_01/PeeringRegisteredAsn.java
new file mode 100644
index 0000000000000..081d3a5444b5b
--- /dev/null
+++ b/sdk/peering/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/peering/v2020_04_01/PeeringRegisteredAsn.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.peering.v2020_04_01;
+
+import com.microsoft.azure.arm.model.HasInner;
+import com.microsoft.azure.management.peering.v2020_04_01.implementation.PeeringRegisteredAsnInner;
+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.peering.v2020_04_01.implementation.PeeringManager;
+
+/**
+ * Type representing PeeringRegisteredAsn.
+ */
+public interface PeeringRegisteredAsn extends HasInner, Indexable, Refreshable, Updatable, HasManager {
+ /**
+ * @return the asn value.
+ */
+ Integer asn();
+
+ /**
+ * @return the id value.
+ */
+ String id();
+
+ /**
+ * @return the name value.
+ */
+ String name();
+
+ /**
+ * @return the peeringServicePrefixKey value.
+ */
+ String peeringServicePrefixKey();
+
+ /**
+ * @return the provisioningState value.
+ */
+ ProvisioningState provisioningState();
+
+ /**
+ * @return the type value.
+ */
+ String type();
+
+ /**
+ * The entirety of the PeeringRegisteredAsn definition.
+ */
+ interface Definition extends DefinitionStages.Blank, DefinitionStages.WithPeering, DefinitionStages.WithAsn, DefinitionStages.WithCreate {
+ }
+
+ /**
+ * Grouping of PeeringRegisteredAsn definition stages.
+ */
+ interface DefinitionStages {
+ /**
+ * The first stage of a PeeringRegisteredAsn definition.
+ */
+ interface Blank extends WithPeering {
+ }
+
+ /**
+ * The stage of the peeringregisteredasn definition allowing to specify Peering.
+ */
+ interface WithPeering {
+ /**
+ * Specifies resourceGroupName, peeringName.
+ * @param resourceGroupName The name of the resource group
+ * @param peeringName The name of the peering
+ * @return the next definition stage
+ */
+ WithAsn withExistingPeering(String resourceGroupName, String peeringName);
+ }
+
+ /**
+ * The stage of the peeringregisteredasn definition allowing to specify Asn.
+ */
+ interface WithAsn {
+ /**
+ * Specifies asn.
+ * @param asn The customer's ASN from which traffic originates
+ * @return the next definition stage
+ */
+ WithCreate withAsn(Integer asn);
+ }
+
+ /**
+ * The stage of the definition which contains all the minimum required inputs for
+ * the resource to be created (via {@link WithCreate#create()}), but also allows
+ * for any other optional settings to be specified.
+ */
+ interface WithCreate extends Creatable {
+ }
+ }
+ /**
+ * The template for a PeeringRegisteredAsn update operation, containing all the settings that can be modified.
+ */
+ interface Update extends Appliable, UpdateStages.WithAsn {
+ }
+
+ /**
+ * Grouping of PeeringRegisteredAsn update stages.
+ */
+ interface UpdateStages {
+ /**
+ * The stage of the peeringregisteredasn update allowing to specify Asn.
+ */
+ interface WithAsn {
+ /**
+ * Specifies asn.
+ * @param asn The customer's ASN from which traffic originates
+ * @return the next update stage
+ */
+ Update withAsn(Integer asn);
+ }
+
+ }
+}
diff --git a/sdk/peering/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/peering/v2020_04_01/PeeringRegisteredPrefix.java b/sdk/peering/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/peering/v2020_04_01/PeeringRegisteredPrefix.java
new file mode 100644
index 0000000000000..23503dba55b95
--- /dev/null
+++ b/sdk/peering/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/peering/v2020_04_01/PeeringRegisteredPrefix.java
@@ -0,0 +1,137 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.peering.v2020_04_01;
+
+import com.microsoft.azure.arm.model.HasInner;
+import com.microsoft.azure.management.peering.v2020_04_01.implementation.PeeringRegisteredPrefixInner;
+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.peering.v2020_04_01.implementation.PeeringManager;
+
+/**
+ * Type representing PeeringRegisteredPrefix.
+ */
+public interface PeeringRegisteredPrefix extends HasInner, Indexable, Refreshable, Updatable, HasManager {
+ /**
+ * @return the errorMessage value.
+ */
+ String errorMessage();
+
+ /**
+ * @return the id value.
+ */
+ String id();
+
+ /**
+ * @return the name value.
+ */
+ String name();
+
+ /**
+ * @return the peeringServicePrefixKey value.
+ */
+ String peeringServicePrefixKey();
+
+ /**
+ * @return the prefix value.
+ */
+ String prefix();
+
+ /**
+ * @return the prefixValidationState value.
+ */
+ PrefixValidationState prefixValidationState();
+
+ /**
+ * @return the provisioningState value.
+ */
+ ProvisioningState provisioningState();
+
+ /**
+ * @return the type value.
+ */
+ String type();
+
+ /**
+ * The entirety of the PeeringRegisteredPrefix definition.
+ */
+ interface Definition extends DefinitionStages.Blank, DefinitionStages.WithPeering, DefinitionStages.WithPrefix, DefinitionStages.WithCreate {
+ }
+
+ /**
+ * Grouping of PeeringRegisteredPrefix definition stages.
+ */
+ interface DefinitionStages {
+ /**
+ * The first stage of a PeeringRegisteredPrefix definition.
+ */
+ interface Blank extends WithPeering {
+ }
+
+ /**
+ * The stage of the peeringregisteredprefix definition allowing to specify Peering.
+ */
+ interface WithPeering {
+ /**
+ * Specifies resourceGroupName, peeringName.
+ * @param resourceGroupName The name of the resource group
+ * @param peeringName The name of the peering
+ * @return the next definition stage
+ */
+ WithPrefix withExistingPeering(String resourceGroupName, String peeringName);
+ }
+
+ /**
+ * The stage of the peeringregisteredprefix definition allowing to specify Prefix.
+ */
+ interface WithPrefix {
+ /**
+ * Specifies prefix.
+ * @param prefix The customer's prefix from which traffic originates
+ * @return the next definition stage
+ */
+ WithCreate withPrefix(String prefix);
+ }
+
+ /**
+ * The stage of the definition which contains all the minimum required inputs for
+ * the resource to be created (via {@link WithCreate#create()}), but also allows
+ * for any other optional settings to be specified.
+ */
+ interface WithCreate extends Creatable {
+ }
+ }
+ /**
+ * The template for a PeeringRegisteredPrefix update operation, containing all the settings that can be modified.
+ */
+ interface Update extends Appliable, UpdateStages.WithPrefix {
+ }
+
+ /**
+ * Grouping of PeeringRegisteredPrefix update stages.
+ */
+ interface UpdateStages {
+ /**
+ * The stage of the peeringregisteredprefix update allowing to specify Prefix.
+ */
+ interface WithPrefix {
+ /**
+ * Specifies prefix.
+ * @param prefix The customer's prefix from which traffic originates
+ * @return the next update stage
+ */
+ Update withPrefix(String prefix);
+ }
+
+ }
+}
diff --git a/sdk/peering/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/peering/v2020_04_01/PeeringService.java b/sdk/peering/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/peering/v2020_04_01/PeeringService.java
new file mode 100644
index 0000000000000..4c7903e3aa786
--- /dev/null
+++ b/sdk/peering/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/peering/v2020_04_01/PeeringService.java
@@ -0,0 +1,160 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.peering.v2020_04_01;
+
+import com.microsoft.azure.arm.model.HasInner;
+import com.microsoft.azure.arm.resources.models.Resource;
+import com.microsoft.azure.arm.resources.models.GroupableResourceCore;
+import com.microsoft.azure.arm.resources.models.HasResourceGroup;
+import com.microsoft.azure.arm.model.Refreshable;
+import com.microsoft.azure.arm.model.Updatable;
+import com.microsoft.azure.arm.model.Appliable;
+import com.microsoft.azure.arm.model.Creatable;
+import com.microsoft.azure.arm.resources.models.HasManager;
+import com.microsoft.azure.management.peering.v2020_04_01.implementation.PeeringManager;
+import com.microsoft.azure.management.peering.v2020_04_01.implementation.PeeringServiceInner;
+
+/**
+ * Type representing PeeringService.
+ */
+public interface PeeringService extends HasInner, Resource, GroupableResourceCore, HasResourceGroup, Refreshable, Updatable, HasManager {
+ /**
+ * @return the peeringServiceLocation value.
+ */
+ String peeringServiceLocation();
+
+ /**
+ * @return the peeringServiceProvider value.
+ */
+ String peeringServiceProvider();
+
+ /**
+ * @return the provisioningState value.
+ */
+ ProvisioningState provisioningState();
+
+ /**
+ * @return the sku value.
+ */
+ PeeringServiceSku sku();
+
+ /**
+ * The entirety of the PeeringService definition.
+ */
+ interface Definition extends DefinitionStages.Blank, DefinitionStages.WithGroup, DefinitionStages.WithCreate {
+ }
+
+ /**
+ * Grouping of PeeringService definition stages.
+ */
+ interface DefinitionStages {
+ /**
+ * The first stage of a PeeringService definition.
+ */
+ interface Blank extends GroupableResourceCore.DefinitionWithRegion {
+ }
+
+ /**
+ * The stage of the PeeringService definition allowing to specify the resource group.
+ */
+ interface WithGroup extends GroupableResourceCore.DefinitionStages.WithGroup {
+ }
+
+ /**
+ * The stage of the peeringservice definition allowing to specify PeeringServiceLocation.
+ */
+ interface WithPeeringServiceLocation {
+ /**
+ * Specifies peeringServiceLocation.
+ * @param peeringServiceLocation The PeeringServiceLocation of the Customer
+ * @return the next definition stage
+ */
+ WithCreate withPeeringServiceLocation(String peeringServiceLocation);
+ }
+
+ /**
+ * The stage of the peeringservice definition allowing to specify PeeringServiceProvider.
+ */
+ interface WithPeeringServiceProvider {
+ /**
+ * Specifies peeringServiceProvider.
+ * @param peeringServiceProvider The MAPS Provider Name
+ * @return the next definition stage
+ */
+ WithCreate withPeeringServiceProvider(String peeringServiceProvider);
+ }
+
+ /**
+ * The stage of the peeringservice definition allowing to specify Sku.
+ */
+ interface WithSku {
+ /**
+ * Specifies sku.
+ * @param sku The SKU that defines the type of the peering service
+ * @return the next definition stage
+ */
+ WithCreate withSku(PeeringServiceSku sku);
+ }
+
+ /**
+ * The stage of the definition which contains all the minimum required inputs for
+ * the resource to be created (via {@link WithCreate#create()}), but also allows
+ * for any other optional settings to be specified.
+ */
+ interface WithCreate extends Creatable, Resource.DefinitionWithTags, DefinitionStages.WithPeeringServiceLocation, DefinitionStages.WithPeeringServiceProvider, DefinitionStages.WithSku {
+ }
+ }
+ /**
+ * The template for a PeeringService update operation, containing all the settings that can be modified.
+ */
+ interface Update extends Appliable, Resource.UpdateWithTags, UpdateStages.WithPeeringServiceLocation, UpdateStages.WithPeeringServiceProvider, UpdateStages.WithSku {
+ }
+
+ /**
+ * Grouping of PeeringService update stages.
+ */
+ interface UpdateStages {
+ /**
+ * The stage of the peeringservice update allowing to specify PeeringServiceLocation.
+ */
+ interface WithPeeringServiceLocation {
+ /**
+ * Specifies peeringServiceLocation.
+ * @param peeringServiceLocation The PeeringServiceLocation of the Customer
+ * @return the next update stage
+ */
+ Update withPeeringServiceLocation(String peeringServiceLocation);
+ }
+
+ /**
+ * The stage of the peeringservice update allowing to specify PeeringServiceProvider.
+ */
+ interface WithPeeringServiceProvider {
+ /**
+ * Specifies peeringServiceProvider.
+ * @param peeringServiceProvider The MAPS Provider Name
+ * @return the next update stage
+ */
+ Update withPeeringServiceProvider(String peeringServiceProvider);
+ }
+
+ /**
+ * The stage of the peeringservice update allowing to specify Sku.
+ */
+ interface WithSku {
+ /**
+ * Specifies sku.
+ * @param sku The SKU that defines the type of the peering service
+ * @return the next update stage
+ */
+ Update withSku(PeeringServiceSku sku);
+ }
+
+ }
+}
diff --git a/sdk/peering/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/peering/v2020_04_01/PeeringServiceCountries.java b/sdk/peering/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/peering/v2020_04_01/PeeringServiceCountries.java
new file mode 100644
index 0000000000000..0eeae2fe59a05
--- /dev/null
+++ b/sdk/peering/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/peering/v2020_04_01/PeeringServiceCountries.java
@@ -0,0 +1,19 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.peering.v2020_04_01;
+
+import com.microsoft.azure.arm.collection.SupportsListing;
+import com.microsoft.azure.management.peering.v2020_04_01.implementation.PeeringServiceCountriesInner;
+import com.microsoft.azure.arm.model.HasInner;
+
+/**
+ * Type representing PeeringServiceCountries.
+ */
+public interface PeeringServiceCountries extends SupportsListing, HasInner {
+}
diff --git a/sdk/peering/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/peering/v2020_04_01/PeeringServiceCountry.java b/sdk/peering/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/peering/v2020_04_01/PeeringServiceCountry.java
new file mode 100644
index 0000000000000..7b9509c979913
--- /dev/null
+++ b/sdk/peering/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/peering/v2020_04_01/PeeringServiceCountry.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.peering.v2020_04_01;
+
+import com.microsoft.azure.arm.model.HasInner;
+import com.microsoft.azure.management.peering.v2020_04_01.implementation.PeeringServiceCountryInner;
+import com.microsoft.azure.arm.resources.models.HasManager;
+import com.microsoft.azure.management.peering.v2020_04_01.implementation.PeeringManager;
+
+/**
+ * Type representing PeeringServiceCountry.
+ */
+public interface PeeringServiceCountry extends HasInner, HasManager {
+ /**
+ * @return the id value.
+ */
+ String id();
+
+ /**
+ * @return the name value.
+ */
+ String name();
+
+ /**
+ * @return the type value.
+ */
+ String type();
+
+}
diff --git a/sdk/peering/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/peering/v2020_04_01/PeeringServiceLocation.java b/sdk/peering/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/peering/v2020_04_01/PeeringServiceLocation.java
new file mode 100644
index 0000000000000..7a572e07c18c0
--- /dev/null
+++ b/sdk/peering/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/peering/v2020_04_01/PeeringServiceLocation.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.peering.v2020_04_01;
+
+import com.microsoft.azure.arm.model.HasInner;
+import com.microsoft.azure.management.peering.v2020_04_01.implementation.PeeringServiceLocationInner;
+import com.microsoft.azure.arm.resources.models.HasManager;
+import com.microsoft.azure.management.peering.v2020_04_01.implementation.PeeringManager;
+
+/**
+ * Type representing PeeringServiceLocation.
+ */
+public interface PeeringServiceLocation extends HasInner, HasManager {
+ /**
+ * @return the azureRegion value.
+ */
+ String azureRegion();
+
+ /**
+ * @return the country value.
+ */
+ String country();
+
+ /**
+ * @return the id value.
+ */
+ String id();
+
+ /**
+ * @return the name value.
+ */
+ String name();
+
+ /**
+ * @return the state value.
+ */
+ String state();
+
+ /**
+ * @return the type value.
+ */
+ String type();
+
+}
diff --git a/sdk/peering/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/peering/v2020_04_01/PeeringServiceLocations.java b/sdk/peering/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/peering/v2020_04_01/PeeringServiceLocations.java
new file mode 100644
index 0000000000000..e1341fdbede11
--- /dev/null
+++ b/sdk/peering/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/peering/v2020_04_01/PeeringServiceLocations.java
@@ -0,0 +1,19 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.peering.v2020_04_01;
+
+import com.microsoft.azure.arm.collection.SupportsListing;
+import com.microsoft.azure.management.peering.v2020_04_01.implementation.PeeringServiceLocationsInner;
+import com.microsoft.azure.arm.model.HasInner;
+
+/**
+ * Type representing PeeringServiceLocations.
+ */
+public interface PeeringServiceLocations extends SupportsListing, HasInner {
+}
diff --git a/sdk/peering/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/peering/v2020_04_01/PeeringServicePrefix.java b/sdk/peering/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/peering/v2020_04_01/PeeringServicePrefix.java
new file mode 100644
index 0000000000000..1f87e12cf3897
--- /dev/null
+++ b/sdk/peering/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/peering/v2020_04_01/PeeringServicePrefix.java
@@ -0,0 +1,172 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.peering.v2020_04_01;
+
+import com.microsoft.azure.arm.model.HasInner;
+import com.microsoft.azure.management.peering.v2020_04_01.implementation.PeeringServicePrefixInner;
+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.peering.v2020_04_01.implementation.PeeringManager;
+import java.util.List;
+
+/**
+ * Type representing PeeringServicePrefix.
+ */
+public interface PeeringServicePrefix extends HasInner, Indexable, Refreshable, Updatable, HasManager {
+ /**
+ * @return the errorMessage value.
+ */
+ String errorMessage();
+
+ /**
+ * @return the events value.
+ */
+ List events();
+
+ /**
+ * @return the id value.
+ */
+ String id();
+
+ /**
+ * @return the learnedType value.
+ */
+ LearnedType learnedType();
+
+ /**
+ * @return the name value.
+ */
+ String name();
+
+ /**
+ * @return the peeringServicePrefixKey value.
+ */
+ String peeringServicePrefixKey();
+
+ /**
+ * @return the prefix value.
+ */
+ String prefix();
+
+ /**
+ * @return the prefixValidationState value.
+ */
+ PrefixValidationState prefixValidationState();
+
+ /**
+ * @return the provisioningState value.
+ */
+ ProvisioningState provisioningState();
+
+ /**
+ * @return the type value.
+ */
+ String type();
+
+ /**
+ * The entirety of the PeeringServicePrefix definition.
+ */
+ interface Definition extends DefinitionStages.Blank, DefinitionStages.WithPeeringService, DefinitionStages.WithCreate {
+ }
+
+ /**
+ * Grouping of PeeringServicePrefix definition stages.
+ */
+ interface DefinitionStages {
+ /**
+ * The first stage of a PeeringServicePrefix definition.
+ */
+ interface Blank extends WithPeeringService {
+ }
+
+ /**
+ * The stage of the peeringserviceprefix definition allowing to specify PeeringService.
+ */
+ interface WithPeeringService {
+ /**
+ * Specifies resourceGroupName, peeringServiceName.
+ * @param resourceGroupName The name of the resource group
+ * @param peeringServiceName The name of the peering service
+ * @return the next definition stage
+ */
+ WithCreate withExistingPeeringService(String resourceGroupName, String peeringServiceName);
+ }
+
+ /**
+ * The stage of the peeringserviceprefix definition allowing to specify PeeringServicePrefixKey.
+ */
+ interface WithPeeringServicePrefixKey {
+ /**
+ * Specifies peeringServicePrefixKey.
+ * @param peeringServicePrefixKey The peering service prefix key
+ * @return the next definition stage
+ */
+ WithCreate withPeeringServicePrefixKey(String peeringServicePrefixKey);
+ }
+
+ /**
+ * The stage of the peeringserviceprefix definition allowing to specify Prefix.
+ */
+ interface WithPrefix {
+ /**
+ * Specifies prefix.
+ * @param prefix The prefix from which your traffic originates
+ * @return the next definition stage
+ */
+ WithCreate withPrefix(String prefix);
+ }
+
+ /**
+ * 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.WithPeeringServicePrefixKey, DefinitionStages.WithPrefix {
+ }
+ }
+ /**
+ * The template for a PeeringServicePrefix update operation, containing all the settings that can be modified.
+ */
+ interface Update extends Appliable, UpdateStages.WithPeeringServicePrefixKey, UpdateStages.WithPrefix {
+ }
+
+ /**
+ * Grouping of PeeringServicePrefix update stages.
+ */
+ interface UpdateStages {
+ /**
+ * The stage of the peeringserviceprefix update allowing to specify PeeringServicePrefixKey.
+ */
+ interface WithPeeringServicePrefixKey {
+ /**
+ * Specifies peeringServicePrefixKey.
+ * @param peeringServicePrefixKey The peering service prefix key
+ * @return the next update stage
+ */
+ Update withPeeringServicePrefixKey(String peeringServicePrefixKey);
+ }
+
+ /**
+ * The stage of the peeringserviceprefix update allowing to specify Prefix.
+ */
+ interface WithPrefix {
+ /**
+ * Specifies prefix.
+ * @param prefix The prefix from which your traffic originates
+ * @return the next update stage
+ */
+ Update withPrefix(String prefix);
+ }
+
+ }
+}
diff --git a/sdk/peering/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/peering/v2020_04_01/PeeringServicePrefixEvent.java b/sdk/peering/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/peering/v2020_04_01/PeeringServicePrefixEvent.java
new file mode 100644
index 0000000000000..0673d4881babb
--- /dev/null
+++ b/sdk/peering/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/peering/v2020_04_01/PeeringServicePrefixEvent.java
@@ -0,0 +1,93 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.peering.v2020_04_01;
+
+import org.joda.time.DateTime;
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/**
+ * The details of the event associated with a prefix.
+ */
+public class PeeringServicePrefixEvent {
+ /**
+ * The timestamp of the event associated with a prefix.
+ */
+ @JsonProperty(value = "eventTimestamp", access = JsonProperty.Access.WRITE_ONLY)
+ private DateTime eventTimestamp;
+
+ /**
+ * The type of the event associated with a prefix.
+ */
+ @JsonProperty(value = "eventType", access = JsonProperty.Access.WRITE_ONLY)
+ private String eventType;
+
+ /**
+ * The summary of the event associated with a prefix.
+ */
+ @JsonProperty(value = "eventSummary", access = JsonProperty.Access.WRITE_ONLY)
+ private String eventSummary;
+
+ /**
+ * The level of the event associated with a prefix.
+ */
+ @JsonProperty(value = "eventLevel", access = JsonProperty.Access.WRITE_ONLY)
+ private String eventLevel;
+
+ /**
+ * The description of the event associated with a prefix.
+ */
+ @JsonProperty(value = "eventDescription", access = JsonProperty.Access.WRITE_ONLY)
+ private String eventDescription;
+
+ /**
+ * Get the timestamp of the event associated with a prefix.
+ *
+ * @return the eventTimestamp value
+ */
+ public DateTime eventTimestamp() {
+ return this.eventTimestamp;
+ }
+
+ /**
+ * Get the type of the event associated with a prefix.
+ *
+ * @return the eventType value
+ */
+ public String eventType() {
+ return this.eventType;
+ }
+
+ /**
+ * Get the summary of the event associated with a prefix.
+ *
+ * @return the eventSummary value
+ */
+ public String eventSummary() {
+ return this.eventSummary;
+ }
+
+ /**
+ * Get the level of the event associated with a prefix.
+ *
+ * @return the eventLevel value
+ */
+ public String eventLevel() {
+ return this.eventLevel;
+ }
+
+ /**
+ * Get the description of the event associated with a prefix.
+ *
+ * @return the eventDescription value
+ */
+ public String eventDescription() {
+ return this.eventDescription;
+ }
+
+}
diff --git a/sdk/peering/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/peering/v2020_04_01/PeeringServiceProvider.java b/sdk/peering/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/peering/v2020_04_01/PeeringServiceProvider.java
new file mode 100644
index 0000000000000..6e9a9dd9cd0fb
--- /dev/null
+++ b/sdk/peering/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/peering/v2020_04_01/PeeringServiceProvider.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.peering.v2020_04_01;
+
+import com.microsoft.azure.arm.model.HasInner;
+import com.microsoft.azure.management.peering.v2020_04_01.implementation.PeeringServiceProviderInner;
+import com.microsoft.azure.arm.resources.models.HasManager;
+import com.microsoft.azure.management.peering.v2020_04_01.implementation.PeeringManager;
+
+/**
+ * Type representing PeeringServiceProvider.
+ */
+public interface PeeringServiceProvider extends HasInner, HasManager {
+ /**
+ * @return the id value.
+ */
+ String id();
+
+ /**
+ * @return the name value.
+ */
+ String name();
+
+ /**
+ * @return the serviceProviderName value.
+ */
+ String serviceProviderName();
+
+ /**
+ * @return the type value.
+ */
+ String type();
+
+}
diff --git a/sdk/peering/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/peering/v2020_04_01/PeeringServiceProviders.java b/sdk/peering/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/peering/v2020_04_01/PeeringServiceProviders.java
new file mode 100644
index 0000000000000..caf4aee395eb7
--- /dev/null
+++ b/sdk/peering/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/peering/v2020_04_01/PeeringServiceProviders.java
@@ -0,0 +1,19 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.peering.v2020_04_01;
+
+import com.microsoft.azure.arm.collection.SupportsListing;
+import com.microsoft.azure.management.peering.v2020_04_01.implementation.PeeringServiceProvidersInner;
+import com.microsoft.azure.arm.model.HasInner;
+
+/**
+ * Type representing PeeringServiceProviders.
+ */
+public interface PeeringServiceProviders extends SupportsListing, HasInner {
+}
diff --git a/sdk/peering/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/peering/v2020_04_01/PeeringServiceSku.java b/sdk/peering/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/peering/v2020_04_01/PeeringServiceSku.java
new file mode 100644
index 0000000000000..b5bc270764a11
--- /dev/null
+++ b/sdk/peering/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/peering/v2020_04_01/PeeringServiceSku.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.peering.v2020_04_01;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/**
+ * The SKU that defines the type of the peering service.
+ */
+public class PeeringServiceSku {
+ /**
+ * The name of the peering service SKU.
+ */
+ @JsonProperty(value = "name")
+ private String name;
+
+ /**
+ * Get the name of the peering service SKU.
+ *
+ * @return the name value
+ */
+ public String name() {
+ return this.name;
+ }
+
+ /**
+ * Set the name of the peering service SKU.
+ *
+ * @param name the name value to set
+ * @return the PeeringServiceSku object itself.
+ */
+ public PeeringServiceSku withName(String name) {
+ this.name = name;
+ return this;
+ }
+
+}
diff --git a/sdk/peering/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/peering/v2020_04_01/PeeringServices.java b/sdk/peering/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/peering/v2020_04_01/PeeringServices.java
new file mode 100644
index 0000000000000..bf8b03b59e1b7
--- /dev/null
+++ b/sdk/peering/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/peering/v2020_04_01/PeeringServices.java
@@ -0,0 +1,25 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.peering.v2020_04_01;
+
+import com.microsoft.azure.arm.collection.SupportsCreating;
+import com.microsoft.azure.arm.resources.collection.SupportsDeletingByResourceGroup;
+import com.microsoft.azure.arm.resources.collection.SupportsBatchDeletion;
+import com.microsoft.azure.arm.resources.collection.SupportsGettingByResourceGroup;
+import rx.Observable;
+import com.microsoft.azure.arm.resources.collection.SupportsListingByResourceGroup;
+import com.microsoft.azure.arm.collection.SupportsListing;
+import com.microsoft.azure.management.peering.v2020_04_01.implementation.PeeringServicesInner;
+import com.microsoft.azure.arm.model.HasInner;
+
+/**
+ * Type representing PeeringServices.
+ */
+public interface PeeringServices extends SupportsCreating, SupportsDeletingByResourceGroup, SupportsBatchDeletion, SupportsGettingByResourceGroup, SupportsListingByResourceGroup, SupportsListing, HasInner {
+}
diff --git a/sdk/peering/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/peering/v2020_04_01/PeeringSku.java b/sdk/peering/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/peering/v2020_04_01/PeeringSku.java
new file mode 100644
index 0000000000000..c1857df8ec302
--- /dev/null
+++ b/sdk/peering/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/peering/v2020_04_01/PeeringSku.java
@@ -0,0 +1,124 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.peering.v2020_04_01;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/**
+ * The SKU that defines the tier and kind of the peering.
+ */
+public class PeeringSku {
+ /**
+ * The name of the peering SKU.
+ */
+ @JsonProperty(value = "name")
+ private String name;
+
+ /**
+ * The tier of the peering SKU. Possible values include: 'Basic',
+ * 'Premium'.
+ */
+ @JsonProperty(value = "tier")
+ private Tier tier;
+
+ /**
+ * The family of the peering SKU. Possible values include: 'Direct',
+ * 'Exchange'.
+ */
+ @JsonProperty(value = "family")
+ private Family family;
+
+ /**
+ * The size of the peering SKU. Possible values include: 'Free', 'Metered',
+ * 'Unlimited'.
+ */
+ @JsonProperty(value = "size")
+ private Size size;
+
+ /**
+ * Get the name of the peering SKU.
+ *
+ * @return the name value
+ */
+ public String name() {
+ return this.name;
+ }
+
+ /**
+ * Set the name of the peering SKU.
+ *
+ * @param name the name value to set
+ * @return the PeeringSku object itself.
+ */
+ public PeeringSku withName(String name) {
+ this.name = name;
+ return this;
+ }
+
+ /**
+ * Get the tier of the peering SKU. Possible values include: 'Basic', 'Premium'.
+ *
+ * @return the tier value
+ */
+ public Tier tier() {
+ return this.tier;
+ }
+
+ /**
+ * Set the tier of the peering SKU. Possible values include: 'Basic', 'Premium'.
+ *
+ * @param tier the tier value to set
+ * @return the PeeringSku object itself.
+ */
+ public PeeringSku withTier(Tier tier) {
+ this.tier = tier;
+ return this;
+ }
+
+ /**
+ * Get the family of the peering SKU. Possible values include: 'Direct', 'Exchange'.
+ *
+ * @return the family value
+ */
+ public Family family() {
+ return this.family;
+ }
+
+ /**
+ * Set the family of the peering SKU. Possible values include: 'Direct', 'Exchange'.
+ *
+ * @param family the family value to set
+ * @return the PeeringSku object itself.
+ */
+ public PeeringSku withFamily(Family family) {
+ this.family = family;
+ return this;
+ }
+
+ /**
+ * Get the size of the peering SKU. Possible values include: 'Free', 'Metered', 'Unlimited'.
+ *
+ * @return the size value
+ */
+ public Size size() {
+ return this.size;
+ }
+
+ /**
+ * Set the size of the peering SKU. Possible values include: 'Free', 'Metered', 'Unlimited'.
+ *
+ * @param size the size value to set
+ * @return the PeeringSku object itself.
+ */
+ public PeeringSku withSize(Size size) {
+ this.size = size;
+ return this;
+ }
+
+}
diff --git a/sdk/peering/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/peering/v2020_04_01/Peerings.java b/sdk/peering/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/peering/v2020_04_01/Peerings.java
new file mode 100644
index 0000000000000..1e9d079e84202
--- /dev/null
+++ b/sdk/peering/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/peering/v2020_04_01/Peerings.java
@@ -0,0 +1,25 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.peering.v2020_04_01;
+
+import com.microsoft.azure.arm.collection.SupportsCreating;
+import com.microsoft.azure.arm.resources.collection.SupportsDeletingByResourceGroup;
+import com.microsoft.azure.arm.resources.collection.SupportsBatchDeletion;
+import com.microsoft.azure.arm.resources.collection.SupportsGettingByResourceGroup;
+import rx.Observable;
+import com.microsoft.azure.arm.resources.collection.SupportsListingByResourceGroup;
+import com.microsoft.azure.arm.collection.SupportsListing;
+import com.microsoft.azure.management.peering.v2020_04_01.implementation.PeeringsInner;
+import com.microsoft.azure.arm.model.HasInner;
+
+/**
+ * Type representing Peerings.
+ */
+public interface Peerings extends SupportsCreating, SupportsDeletingByResourceGroup, SupportsBatchDeletion, SupportsGettingByResourceGroup, SupportsListingByResourceGroup, SupportsListing, HasInner {
+}
diff --git a/sdk/peering/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/peering/v2020_04_01/PrefixValidationState.java b/sdk/peering/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/peering/v2020_04_01/PrefixValidationState.java
new file mode 100644
index 0000000000000..6886705b4afdd
--- /dev/null
+++ b/sdk/peering/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/peering/v2020_04_01/PrefixValidationState.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.peering.v2020_04_01;
+
+import java.util.Collection;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.microsoft.rest.ExpandableStringEnum;
+
+/**
+ * Defines values for PrefixValidationState.
+ */
+public final class PrefixValidationState extends ExpandableStringEnum {
+ /** Static value None for PrefixValidationState. */
+ public static final PrefixValidationState NONE = fromString("None");
+
+ /** Static value Invalid for PrefixValidationState. */
+ public static final PrefixValidationState INVALID = fromString("Invalid");
+
+ /** Static value Verified for PrefixValidationState. */
+ public static final PrefixValidationState VERIFIED = fromString("Verified");
+
+ /** Static value Failed for PrefixValidationState. */
+ public static final PrefixValidationState FAILED = fromString("Failed");
+
+ /** Static value Pending for PrefixValidationState. */
+ public static final PrefixValidationState PENDING = fromString("Pending");
+
+ /** Static value Warning for PrefixValidationState. */
+ public static final PrefixValidationState WARNING = fromString("Warning");
+
+ /** Static value Unknown for PrefixValidationState. */
+ public static final PrefixValidationState UNKNOWN = fromString("Unknown");
+
+ /**
+ * Creates or finds a PrefixValidationState from its string representation.
+ * @param name a name to look for
+ * @return the corresponding PrefixValidationState
+ */
+ @JsonCreator
+ public static PrefixValidationState fromString(String name) {
+ return fromString(name, PrefixValidationState.class);
+ }
+
+ /**
+ * @return known PrefixValidationState values
+ */
+ public static Collection values() {
+ return values(PrefixValidationState.class);
+ }
+}
diff --git a/sdk/peering/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/peering/v2020_04_01/Prefixes.java b/sdk/peering/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/peering/v2020_04_01/Prefixes.java
new file mode 100644
index 0000000000000..596cbb830c1f4
--- /dev/null
+++ b/sdk/peering/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/peering/v2020_04_01/Prefixes.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.peering.v2020_04_01;
+
+import com.microsoft.azure.arm.collection.SupportsCreating;
+import rx.Completable;
+import rx.Observable;
+import com.microsoft.azure.management.peering.v2020_04_01.implementation.PrefixesInner;
+import com.microsoft.azure.arm.model.HasInner;
+
+/**
+ * Type representing Prefixes.
+ */
+public interface Prefixes extends SupportsCreating, HasInner {
+ /**
+ * Gets an existing prefix with the specified name under the given subscription, resource group and peering service.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param peeringServiceName The name of the peering service.
+ * @param prefixName The name of the prefix.
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @return the observable for the request
+ */
+ Observable getAsync(String resourceGroupName, String peeringServiceName, String prefixName);
+
+ /**
+ * Lists all prefixes under the given subscription, resource group and peering service.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param peeringServiceName The name of the peering service.
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @return the observable for the request
+ */
+ Observable listByPeeringServiceAsync(final String resourceGroupName, final String peeringServiceName);
+
+ /**
+ * Deletes an existing prefix with the specified name under the given subscription, resource group and peering service.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param peeringServiceName The name of the peering service.
+ * @param prefixName The name of the prefix.
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @return the observable for the request
+ */
+ Completable deleteAsync(String resourceGroupName, String peeringServiceName, String prefixName);
+
+}
diff --git a/sdk/peering/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/peering/v2020_04_01/ProvisioningState.java b/sdk/peering/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/peering/v2020_04_01/ProvisioningState.java
new file mode 100644
index 0000000000000..028148577f850
--- /dev/null
+++ b/sdk/peering/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/peering/v2020_04_01/ProvisioningState.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.peering.v2020_04_01;
+
+import java.util.Collection;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.microsoft.rest.ExpandableStringEnum;
+
+/**
+ * Defines values for ProvisioningState.
+ */
+public final class ProvisioningState extends ExpandableStringEnum {
+ /** Static value Succeeded for ProvisioningState. */
+ public static final ProvisioningState SUCCEEDED = fromString("Succeeded");
+
+ /** Static value Updating for ProvisioningState. */
+ public static final ProvisioningState UPDATING = fromString("Updating");
+
+ /** Static value Deleting for ProvisioningState. */
+ public static final ProvisioningState DELETING = fromString("Deleting");
+
+ /** Static value Failed for ProvisioningState. */
+ public static final ProvisioningState FAILED = fromString("Failed");
+
+ /**
+ * Creates or finds a ProvisioningState from its string representation.
+ * @param name a name to look for
+ * @return the corresponding ProvisioningState
+ */
+ @JsonCreator
+ public static ProvisioningState fromString(String name) {
+ return fromString(name, ProvisioningState.class);
+ }
+
+ /**
+ * @return known ProvisioningState values
+ */
+ public static Collection values() {
+ return values(ProvisioningState.class);
+ }
+}
diff --git a/sdk/peering/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/peering/v2020_04_01/ReceivedRoutes.java b/sdk/peering/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/peering/v2020_04_01/ReceivedRoutes.java
new file mode 100644
index 0000000000000..4eafb191f49e0
--- /dev/null
+++ b/sdk/peering/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/peering/v2020_04_01/ReceivedRoutes.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.peering.v2020_04_01;
+
+import rx.Observable;
+import com.microsoft.azure.management.peering.v2020_04_01.implementation.ReceivedRoutesInner;
+import com.microsoft.azure.arm.model.HasInner;
+
+/**
+ * Type representing ReceivedRoutes.
+ */
+public interface ReceivedRoutes extends HasInner {
+ /**
+ * Lists the prefixes received over the specified peering under the given subscription and resource group.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param peeringName The name of the peering.
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @return the observable for the request
+ */
+ Observable listByPeeringAsync(final String resourceGroupName, final String peeringName);
+
+}
diff --git a/sdk/peering/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/peering/v2020_04_01/RegisteredAsns.java b/sdk/peering/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/peering/v2020_04_01/RegisteredAsns.java
new file mode 100644
index 0000000000000..d4cad512d5af2
--- /dev/null
+++ b/sdk/peering/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/peering/v2020_04_01/RegisteredAsns.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.peering.v2020_04_01;
+
+import com.microsoft.azure.arm.collection.SupportsCreating;
+import rx.Completable;
+import rx.Observable;
+import com.microsoft.azure.management.peering.v2020_04_01.implementation.RegisteredAsnsInner;
+import com.microsoft.azure.arm.model.HasInner;
+
+/**
+ * Type representing RegisteredAsns.
+ */
+public interface RegisteredAsns extends SupportsCreating, HasInner {
+ /**
+ * Gets an existing registered ASN with the specified name under the given subscription, resource group and peering.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param peeringName The name of the peering.
+ * @param registeredAsnName The name of the registered ASN.
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @return the observable for the request
+ */
+ Observable getAsync(String resourceGroupName, String peeringName, String registeredAsnName);
+
+ /**
+ * Lists all registered ASNs under the given subscription, resource group and peering.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param peeringName The name of the peering.
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @return the observable for the request
+ */
+ Observable listByPeeringAsync(final String resourceGroupName, final String peeringName);
+
+ /**
+ * Deletes an existing registered ASN with the specified name under the given subscription, resource group and peering.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param peeringName The name of the peering.
+ * @param registeredAsnName The name of the registered ASN.
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @return the observable for the request
+ */
+ Completable deleteAsync(String resourceGroupName, String peeringName, String registeredAsnName);
+
+}
diff --git a/sdk/peering/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/peering/v2020_04_01/RegisteredPrefixes.java b/sdk/peering/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/peering/v2020_04_01/RegisteredPrefixes.java
new file mode 100644
index 0000000000000..ebd31cef289d2
--- /dev/null
+++ b/sdk/peering/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/peering/v2020_04_01/RegisteredPrefixes.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.peering.v2020_04_01;
+
+import com.microsoft.azure.arm.collection.SupportsCreating;
+import rx.Completable;
+import rx.Observable;
+import com.microsoft.azure.management.peering.v2020_04_01.implementation.RegisteredPrefixesInner;
+import com.microsoft.azure.arm.model.HasInner;
+
+/**
+ * Type representing RegisteredPrefixes.
+ */
+public interface RegisteredPrefixes extends SupportsCreating, HasInner {
+ /**
+ * Gets an existing registered prefix with the specified name under the given subscription, resource group and peering.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param peeringName The name of the peering.
+ * @param registeredPrefixName The name of the registered prefix.
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @return the observable for the request
+ */
+ Observable getAsync(String resourceGroupName, String peeringName, String registeredPrefixName);
+
+ /**
+ * Lists all registered prefixes under the given subscription, resource group and peering.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param peeringName The name of the peering.
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @return the observable for the request
+ */
+ Observable listByPeeringAsync(final String resourceGroupName, final String peeringName);
+
+ /**
+ * Deletes an existing registered prefix with the specified name under the given subscription, resource group and peering.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param peeringName The name of the peering.
+ * @param registeredPrefixName The name of the registered prefix.
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @return the observable for the request
+ */
+ Completable deleteAsync(String resourceGroupName, String peeringName, String registeredPrefixName);
+
+}
diff --git a/sdk/peering/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/peering/v2020_04_01/ResourceTags.java b/sdk/peering/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/peering/v2020_04_01/ResourceTags.java
new file mode 100644
index 0000000000000..0a333d66fa878
--- /dev/null
+++ b/sdk/peering/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/peering/v2020_04_01/ResourceTags.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.peering.v2020_04_01;
+
+import java.util.Map;
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/**
+ * The resource tags.
+ */
+public class ResourceTags {
+ /**
+ * Gets or sets the tags, a dictionary of descriptors arm object.
+ */
+ @JsonProperty(value = "tags")
+ private Map tags;
+
+ /**
+ * Get gets or sets the tags, a dictionary of descriptors arm object.
+ *
+ * @return the tags value
+ */
+ public Map tags() {
+ return this.tags;
+ }
+
+ /**
+ * Set gets or sets the tags, a dictionary of descriptors arm object.
+ *
+ * @param tags the tags value to set
+ * @return the ResourceTags object itself.
+ */
+ public ResourceTags withTags(Map tags) {
+ this.tags = tags;
+ return this;
+ }
+
+}
diff --git a/sdk/peering/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/peering/v2020_04_01/Role.java b/sdk/peering/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/peering/v2020_04_01/Role.java
new file mode 100644
index 0000000000000..8d6d6adf50d0a
--- /dev/null
+++ b/sdk/peering/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/peering/v2020_04_01/Role.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.peering.v2020_04_01;
+
+import java.util.Collection;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.microsoft.rest.ExpandableStringEnum;
+
+/**
+ * Defines values for Role.
+ */
+public final class Role extends ExpandableStringEnum {
+ /** Static value Noc for Role. */
+ public static final Role NOC = fromString("Noc");
+
+ /** Static value Policy for Role. */
+ public static final Role POLICY = fromString("Policy");
+
+ /** Static value Technical for Role. */
+ public static final Role TECHNICAL = fromString("Technical");
+
+ /** Static value Service for Role. */
+ public static final Role SERVICE = fromString("Service");
+
+ /** Static value Escalation for Role. */
+ public static final Role ESCALATION = fromString("Escalation");
+
+ /** Static value Other for Role. */
+ public static final Role OTHER = fromString("Other");
+
+ /**
+ * Creates or finds a Role from its string representation.
+ * @param name a name to look for
+ * @return the corresponding Role
+ */
+ @JsonCreator
+ public static Role fromString(String name) {
+ return fromString(name, Role.class);
+ }
+
+ /**
+ * @return known Role values
+ */
+ public static Collection values() {
+ return values(Role.class);
+ }
+}
diff --git a/sdk/peering/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/peering/v2020_04_01/SessionAddressProvider.java b/sdk/peering/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/peering/v2020_04_01/SessionAddressProvider.java
new file mode 100644
index 0000000000000..545638cba5a44
--- /dev/null
+++ b/sdk/peering/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/peering/v2020_04_01/SessionAddressProvider.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.peering.v2020_04_01;
+
+import java.util.Collection;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.microsoft.rest.ExpandableStringEnum;
+
+/**
+ * Defines values for SessionAddressProvider.
+ */
+public final class SessionAddressProvider extends ExpandableStringEnum {
+ /** Static value Microsoft for SessionAddressProvider. */
+ public static final SessionAddressProvider MICROSOFT = fromString("Microsoft");
+
+ /** Static value Peer for SessionAddressProvider. */
+ public static final SessionAddressProvider PEER = fromString("Peer");
+
+ /**
+ * Creates or finds a SessionAddressProvider from its string representation.
+ * @param name a name to look for
+ * @return the corresponding SessionAddressProvider
+ */
+ @JsonCreator
+ public static SessionAddressProvider fromString(String name) {
+ return fromString(name, SessionAddressProvider.class);
+ }
+
+ /**
+ * @return known SessionAddressProvider values
+ */
+ public static Collection values() {
+ return values(SessionAddressProvider.class);
+ }
+}
diff --git a/sdk/peering/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/peering/v2020_04_01/SessionStateV4.java b/sdk/peering/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/peering/v2020_04_01/SessionStateV4.java
new file mode 100644
index 0000000000000..2dbfcf88882de
--- /dev/null
+++ b/sdk/peering/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/peering/v2020_04_01/SessionStateV4.java
@@ -0,0 +1,68 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.peering.v2020_04_01;
+
+import java.util.Collection;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.microsoft.rest.ExpandableStringEnum;
+
+/**
+ * Defines values for SessionStateV4.
+ */
+public final class SessionStateV4 extends ExpandableStringEnum {
+ /** Static value None for SessionStateV4. */
+ public static final SessionStateV4 NONE = fromString("None");
+
+ /** Static value Idle for SessionStateV4. */
+ public static final SessionStateV4 IDLE = fromString("Idle");
+
+ /** Static value Connect for SessionStateV4. */
+ public static final SessionStateV4 CONNECT = fromString("Connect");
+
+ /** Static value Active for SessionStateV4. */
+ public static final SessionStateV4 ACTIVE = fromString("Active");
+
+ /** Static value OpenSent for SessionStateV4. */
+ public static final SessionStateV4 OPEN_SENT = fromString("OpenSent");
+
+ /** Static value OpenConfirm for SessionStateV4. */
+ public static final SessionStateV4 OPEN_CONFIRM = fromString("OpenConfirm");
+
+ /** Static value OpenReceived for SessionStateV4. */
+ public static final SessionStateV4 OPEN_RECEIVED = fromString("OpenReceived");
+
+ /** Static value Established for SessionStateV4. */
+ public static final SessionStateV4 ESTABLISHED = fromString("Established");
+
+ /** Static value PendingAdd for SessionStateV4. */
+ public static final SessionStateV4 PENDING_ADD = fromString("PendingAdd");
+
+ /** Static value PendingUpdate for SessionStateV4. */
+ public static final SessionStateV4 PENDING_UPDATE = fromString("PendingUpdate");
+
+ /** Static value PendingRemove for SessionStateV4. */
+ public static final SessionStateV4 PENDING_REMOVE = fromString("PendingRemove");
+
+ /**
+ * Creates or finds a SessionStateV4 from its string representation.
+ * @param name a name to look for
+ * @return the corresponding SessionStateV4
+ */
+ @JsonCreator
+ public static SessionStateV4 fromString(String name) {
+ return fromString(name, SessionStateV4.class);
+ }
+
+ /**
+ * @return known SessionStateV4 values
+ */
+ public static Collection values() {
+ return values(SessionStateV4.class);
+ }
+}
diff --git a/sdk/peering/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/peering/v2020_04_01/SessionStateV6.java b/sdk/peering/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/peering/v2020_04_01/SessionStateV6.java
new file mode 100644
index 0000000000000..424cd9044db0b
--- /dev/null
+++ b/sdk/peering/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/peering/v2020_04_01/SessionStateV6.java
@@ -0,0 +1,68 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.peering.v2020_04_01;
+
+import java.util.Collection;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.microsoft.rest.ExpandableStringEnum;
+
+/**
+ * Defines values for SessionStateV6.
+ */
+public final class SessionStateV6 extends ExpandableStringEnum {
+ /** Static value None for SessionStateV6. */
+ public static final SessionStateV6 NONE = fromString("None");
+
+ /** Static value Idle for SessionStateV6. */
+ public static final SessionStateV6 IDLE = fromString("Idle");
+
+ /** Static value Connect for SessionStateV6. */
+ public static final SessionStateV6 CONNECT = fromString("Connect");
+
+ /** Static value Active for SessionStateV6. */
+ public static final SessionStateV6 ACTIVE = fromString("Active");
+
+ /** Static value OpenSent for SessionStateV6. */
+ public static final SessionStateV6 OPEN_SENT = fromString("OpenSent");
+
+ /** Static value OpenConfirm for SessionStateV6. */
+ public static final SessionStateV6 OPEN_CONFIRM = fromString("OpenConfirm");
+
+ /** Static value OpenReceived for SessionStateV6. */
+ public static final SessionStateV6 OPEN_RECEIVED = fromString("OpenReceived");
+
+ /** Static value Established for SessionStateV6. */
+ public static final SessionStateV6 ESTABLISHED = fromString("Established");
+
+ /** Static value PendingAdd for SessionStateV6. */
+ public static final SessionStateV6 PENDING_ADD = fromString("PendingAdd");
+
+ /** Static value PendingUpdate for SessionStateV6. */
+ public static final SessionStateV6 PENDING_UPDATE = fromString("PendingUpdate");
+
+ /** Static value PendingRemove for SessionStateV6. */
+ public static final SessionStateV6 PENDING_REMOVE = fromString("PendingRemove");
+
+ /**
+ * Creates or finds a SessionStateV6 from its string representation.
+ * @param name a name to look for
+ * @return the corresponding SessionStateV6
+ */
+ @JsonCreator
+ public static SessionStateV6 fromString(String name) {
+ return fromString(name, SessionStateV6.class);
+ }
+
+ /**
+ * @return known SessionStateV6 values
+ */
+ public static Collection values() {
+ return values(SessionStateV6.class);
+ }
+}
diff --git a/sdk/peering/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/peering/v2020_04_01/Size.java b/sdk/peering/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/peering/v2020_04_01/Size.java
new file mode 100644
index 0000000000000..8eaacade52bd5
--- /dev/null
+++ b/sdk/peering/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/peering/v2020_04_01/Size.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.peering.v2020_04_01;
+
+import java.util.Collection;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.microsoft.rest.ExpandableStringEnum;
+
+/**
+ * Defines values for Size.
+ */
+public final class Size extends ExpandableStringEnum {
+ /** Static value Free for Size. */
+ public static final Size FREE = fromString("Free");
+
+ /** Static value Metered for Size. */
+ public static final Size METERED = fromString("Metered");
+
+ /** Static value Unlimited for Size. */
+ public static final Size UNLIMITED = fromString("Unlimited");
+
+ /**
+ * Creates or finds a Size from its string representation.
+ * @param name a name to look for
+ * @return the corresponding Size
+ */
+ @JsonCreator
+ public static Size fromString(String name) {
+ return fromString(name, Size.class);
+ }
+
+ /**
+ * @return known Size values
+ */
+ public static Collection values() {
+ return values(Size.class);
+ }
+}
diff --git a/sdk/peering/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/peering/v2020_04_01/Tier.java b/sdk/peering/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/peering/v2020_04_01/Tier.java
new file mode 100644
index 0000000000000..0f2f1641716b2
--- /dev/null
+++ b/sdk/peering/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/peering/v2020_04_01/Tier.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.peering.v2020_04_01;
+
+import java.util.Collection;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.microsoft.rest.ExpandableStringEnum;
+
+/**
+ * Defines values for Tier.
+ */
+public final class Tier extends ExpandableStringEnum {
+ /** Static value Basic for Tier. */
+ public static final Tier BASIC = fromString("Basic");
+
+ /** Static value Premium for Tier. */
+ public static final Tier PREMIUM = fromString("Premium");
+
+ /**
+ * Creates or finds a Tier from its string representation.
+ * @param name a name to look for
+ * @return the corresponding Tier
+ */
+ @JsonCreator
+ public static Tier fromString(String name) {
+ return fromString(name, Tier.class);
+ }
+
+ /**
+ * @return known Tier values
+ */
+ public static Collection values() {
+ return values(Tier.class);
+ }
+}
diff --git a/sdk/peering/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/peering/v2020_04_01/ValidationState.java b/sdk/peering/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/peering/v2020_04_01/ValidationState.java
new file mode 100644
index 0000000000000..543bf63f9e4ca
--- /dev/null
+++ b/sdk/peering/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/peering/v2020_04_01/ValidationState.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.peering.v2020_04_01;
+
+import java.util.Collection;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.microsoft.rest.ExpandableStringEnum;
+
+/**
+ * Defines values for ValidationState.
+ */
+public final class ValidationState extends ExpandableStringEnum {
+ /** Static value None for ValidationState. */
+ public static final ValidationState NONE = fromString("None");
+
+ /** Static value Pending for ValidationState. */
+ public static final ValidationState PENDING = fromString("Pending");
+
+ /** Static value Approved for ValidationState. */
+ public static final ValidationState APPROVED = fromString("Approved");
+
+ /** Static value Failed for ValidationState. */
+ public static final ValidationState FAILED = fromString("Failed");
+
+ /**
+ * Creates or finds a ValidationState from its string representation.
+ * @param name a name to look for
+ * @return the corresponding ValidationState
+ */
+ @JsonCreator
+ public static ValidationState fromString(String name) {
+ return fromString(name, ValidationState.class);
+ }
+
+ /**
+ * @return known ValidationState values
+ */
+ public static Collection values() {
+ return values(ValidationState.class);
+ }
+}
diff --git a/sdk/peering/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/peering/v2020_04_01/implementation/IdParsingUtils.java b/sdk/peering/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/peering/v2020_04_01/implementation/IdParsingUtils.java
new file mode 100644
index 0000000000000..e0afd39669104
--- /dev/null
+++ b/sdk/peering/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/peering/v2020_04_01/implementation/IdParsingUtils.java
@@ -0,0 +1,57 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.peering.v2020_04_01.implementation;
+import java.util.Arrays;
+import java.util.Iterator;
+
+class IdParsingUtils {
+ public static String getValueFromIdByName(String id, String name) {
+ if (id == null) {
+ return null;
+ }
+ Iterable iterable = Arrays.asList(id.split("/"));
+ Iterator itr = iterable.iterator();
+ while (itr.hasNext()) {
+ String part = itr.next();
+ if (part != null && part.trim() != "") {
+ if (part.equalsIgnoreCase(name)) {
+ if (itr.hasNext()) {
+ return itr.next();
+ } else {
+ return null;
+ }
+ }
+ }
+ }
+ return null;
+ }
+
+ public static String getValueFromIdByPosition(String id, int pos) {
+ if (id == null) {
+ return null;
+ }
+ Iterable iterable = Arrays.asList(id.split("/"));
+ Iterator itr = iterable.iterator();
+ int index = 0;
+ while (itr.hasNext()) {
+ String part = itr.next();
+ if (part != null && part.trim() != "") {
+ if (index == pos) {
+ if (itr.hasNext()) {
+ return itr.next();
+ } else {
+ return null;
+ }
+ }
+ }
+ index++;
+ }
+ return null;
+ }
+}
diff --git a/sdk/peering/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/peering/v2020_04_01/implementation/LegacyPeeringsImpl.java b/sdk/peering/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/peering/v2020_04_01/implementation/LegacyPeeringsImpl.java
new file mode 100644
index 0000000000000..845b5c92c2856
--- /dev/null
+++ b/sdk/peering/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/peering/v2020_04_01/implementation/LegacyPeeringsImpl.java
@@ -0,0 +1,49 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ * abc
+ */
+
+package com.microsoft.azure.management.peering.v2020_04_01.implementation;
+
+import com.microsoft.azure.arm.model.implementation.WrapperImpl;
+import com.microsoft.azure.management.peering.v2020_04_01.LegacyPeerings;
+import rx.functions.Func1;
+import rx.Observable;
+import com.microsoft.azure.Page;
+import com.microsoft.azure.management.peering.v2020_04_01.Peering;
+
+class LegacyPeeringsImpl extends WrapperImpl implements LegacyPeerings {
+ private final PeeringManager manager;
+
+ LegacyPeeringsImpl(PeeringManager manager) {
+ super(manager.inner().legacyPeerings());
+ this.manager = manager;
+ }
+
+ public PeeringManager manager() {
+ return this.manager;
+ }
+
+ @Override
+ public Observable listAsync(final String peeringLocation, final String kind) {
+ LegacyPeeringsInner client = this.inner();
+ return client.listAsync(peeringLocation, kind)
+ .flatMapIterable(new Func1, Iterable>() {
+ @Override
+ public Iterable call(Page page) {
+ return page.items();
+ }
+ })
+ .map(new Func1() {
+ @Override
+ public Peering call(PeeringInner inner) {
+ return new PeeringImpl(inner.name(), inner, manager());
+ }
+ });
+ }
+
+}
diff --git a/sdk/peering/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/peering/v2020_04_01/implementation/LegacyPeeringsInner.java b/sdk/peering/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/peering/v2020_04_01/implementation/LegacyPeeringsInner.java
new file mode 100644
index 0000000000000..5b3d8b60a894d
--- /dev/null
+++ b/sdk/peering/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/peering/v2020_04_01/implementation/LegacyPeeringsInner.java
@@ -0,0 +1,425 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.peering.v2020_04_01.implementation;
+
+import retrofit2.Retrofit;
+import com.google.common.reflect.TypeToken;
+import com.microsoft.azure.AzureServiceFuture;
+import com.microsoft.azure.ListOperationCallback;
+import com.microsoft.azure.management.peering.v2020_04_01.ErrorResponseException;
+import com.microsoft.azure.Page;
+import com.microsoft.azure.PagedList;
+import com.microsoft.rest.ServiceFuture;
+import com.microsoft.rest.ServiceResponse;
+import java.io.IOException;
+import java.util.List;
+import okhttp3.ResponseBody;
+import retrofit2.http.GET;
+import retrofit2.http.Header;
+import retrofit2.http.Headers;
+import retrofit2.http.Path;
+import retrofit2.http.Query;
+import retrofit2.http.Url;
+import retrofit2.Response;
+import rx.functions.Func1;
+import rx.Observable;
+
+/**
+ * An instance of this class provides access to all the operations defined
+ * in LegacyPeerings.
+ */
+public class LegacyPeeringsInner {
+ /** The Retrofit service to perform REST calls. */
+ private LegacyPeeringsService service;
+ /** The service client containing this operation class. */
+ private PeeringManagementClientImpl client;
+
+ /**
+ * Initializes an instance of LegacyPeeringsInner.
+ *
+ * @param retrofit the Retrofit instance built from a Retrofit Builder.
+ * @param client the instance of the service client containing this operation class.
+ */
+ public LegacyPeeringsInner(Retrofit retrofit, PeeringManagementClientImpl client) {
+ this.service = retrofit.create(LegacyPeeringsService.class);
+ this.client = client;
+ }
+
+ /**
+ * The interface defining all the services for LegacyPeerings to be
+ * used by Retrofit to perform actually REST calls.
+ */
+ interface LegacyPeeringsService {
+ @Headers({ "Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.management.peering.v2020_04_01.LegacyPeerings list" })
+ @GET("subscriptions/{subscriptionId}/providers/Microsoft.Peering/legacyPeerings")
+ Observable> list(@Path("subscriptionId") String subscriptionId, @Query("peeringLocation") String peeringLocation, @Query("kind") String kind, @Query("asn") Integer asn, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Header("User-Agent") String userAgent);
+
+ @Headers({ "Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.management.peering.v2020_04_01.LegacyPeerings listNext" })
+ @GET
+ Observable> listNext(@Url String nextUrl, @Header("accept-language") String acceptLanguage, @Header("User-Agent") String userAgent);
+
+ }
+
+ /**
+ * Lists all of the legacy peerings under the given subscription matching the specified kind and location.
+ *
+ * @param peeringLocation The location of the peering.
+ * @param kind The kind of the peering. Possible values include: 'Direct', 'Exchange'
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @throws ErrorResponseException thrown if the request is rejected by server
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent
+ * @return the PagedList<PeeringInner> object if successful.
+ */
+ public PagedList list(final String peeringLocation, final String kind) {
+ ServiceResponse> response = listSinglePageAsync(peeringLocation, kind).toBlocking().single();
+ return new PagedList(response.body()) {
+ @Override
+ public Page nextPage(String nextPageLink) {
+ return listNextSinglePageAsync(nextPageLink).toBlocking().single().body();
+ }
+ };
+ }
+
+ /**
+ * Lists all of the legacy peerings under the given subscription matching the specified kind and location.
+ *
+ * @param peeringLocation The location of the peering.
+ * @param kind The kind of the peering. Possible values include: 'Direct', 'Exchange'
+ * @param serviceCallback the async ServiceCallback to handle successful and failed responses.
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @return the {@link ServiceFuture} object
+ */
+ public ServiceFuture> listAsync(final String peeringLocation, final String kind, final ListOperationCallback serviceCallback) {
+ return AzureServiceFuture.fromPageResponse(
+ listSinglePageAsync(peeringLocation, kind),
+ new Func1>>>() {
+ @Override
+ public Observable>> call(String nextPageLink) {
+ return listNextSinglePageAsync(nextPageLink);
+ }
+ },
+ serviceCallback);
+ }
+
+ /**
+ * Lists all of the legacy peerings under the given subscription matching the specified kind and location.
+ *
+ * @param peeringLocation The location of the peering.
+ * @param kind The kind of the peering. Possible values include: 'Direct', 'Exchange'
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @return the observable to the PagedList<PeeringInner> object
+ */
+ public Observable> listAsync(final String peeringLocation, final String kind) {
+ return listWithServiceResponseAsync(peeringLocation, kind)
+ .map(new Func1>, Page>() {
+ @Override
+ public Page call(ServiceResponse> response) {
+ return response.body();
+ }
+ });
+ }
+
+ /**
+ * Lists all of the legacy peerings under the given subscription matching the specified kind and location.
+ *
+ * @param peeringLocation The location of the peering.
+ * @param kind The kind of the peering. Possible values include: 'Direct', 'Exchange'
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @return the observable to the PagedList<PeeringInner> object
+ */
+ public Observable>> listWithServiceResponseAsync(final String peeringLocation, final String kind) {
+ return listSinglePageAsync(peeringLocation, kind)
+ .concatMap(new Func1>, Observable>>>() {
+ @Override
+ public Observable>> call(ServiceResponse> page) {
+ String nextPageLink = page.body().nextPageLink();
+ if (nextPageLink == null) {
+ return Observable.just(page);
+ }
+ return Observable.just(page).concatWith(listNextWithServiceResponseAsync(nextPageLink));
+ }
+ });
+ }
+
+ /**
+ * Lists all of the legacy peerings under the given subscription matching the specified kind and location.
+ *
+ * @param peeringLocation The location of the peering.
+ * @param kind The kind of the peering. Possible values include: 'Direct', 'Exchange'
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @return the PagedList<PeeringInner> object wrapped in {@link ServiceResponse} if successful.
+ */
+ public Observable>> listSinglePageAsync(final String peeringLocation, final String kind) {
+ if (this.client.subscriptionId() == null) {
+ throw new IllegalArgumentException("Parameter this.client.subscriptionId() is required and cannot be null.");
+ }
+ if (peeringLocation == null) {
+ throw new IllegalArgumentException("Parameter peeringLocation is required and cannot be null.");
+ }
+ if (kind == null) {
+ throw new IllegalArgumentException("Parameter kind is required and cannot be null.");
+ }
+ if (this.client.apiVersion() == null) {
+ throw new IllegalArgumentException("Parameter this.client.apiVersion() is required and cannot be null.");
+ }
+ final Integer asn = null;
+ return service.list(this.client.subscriptionId(), peeringLocation, kind, asn, this.client.apiVersion(), this.client.acceptLanguage(), this.client.userAgent())
+ .flatMap(new Func1, Observable>>>() {
+ @Override
+ public Observable>> call(Response response) {
+ try {
+ ServiceResponse> result = listDelegate(response);
+ return Observable.just(new ServiceResponse>(result.body(), result.response()));
+ } catch (Throwable t) {
+ return Observable.error(t);
+ }
+ }
+ });
+ }
+
+ /**
+ * Lists all of the legacy peerings under the given subscription matching the specified kind and location.
+ *
+ * @param peeringLocation The location of the peering.
+ * @param kind The kind of the peering. Possible values include: 'Direct', 'Exchange'
+ * @param asn The ASN number associated with a legacy peering.
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @throws ErrorResponseException thrown if the request is rejected by server
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent
+ * @return the PagedList<PeeringInner> object if successful.
+ */
+ public PagedList list(final String peeringLocation, final String kind, final Integer asn) {
+ ServiceResponse> response = listSinglePageAsync(peeringLocation, kind, asn).toBlocking().single();
+ return new PagedList(response.body()) {
+ @Override
+ public Page nextPage(String nextPageLink) {
+ return listNextSinglePageAsync(nextPageLink).toBlocking().single().body();
+ }
+ };
+ }
+
+ /**
+ * Lists all of the legacy peerings under the given subscription matching the specified kind and location.
+ *
+ * @param peeringLocation The location of the peering.
+ * @param kind The kind of the peering. Possible values include: 'Direct', 'Exchange'
+ * @param asn The ASN number associated with a legacy peering.
+ * @param serviceCallback the async ServiceCallback to handle successful and failed responses.
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @return the {@link ServiceFuture} object
+ */
+ public ServiceFuture> listAsync(final String peeringLocation, final String kind, final Integer asn, final ListOperationCallback serviceCallback) {
+ return AzureServiceFuture.fromPageResponse(
+ listSinglePageAsync(peeringLocation, kind, asn),
+ new Func1>>>() {
+ @Override
+ public Observable>> call(String nextPageLink) {
+ return listNextSinglePageAsync(nextPageLink);
+ }
+ },
+ serviceCallback);
+ }
+
+ /**
+ * Lists all of the legacy peerings under the given subscription matching the specified kind and location.
+ *
+ * @param peeringLocation The location of the peering.
+ * @param kind The kind of the peering. Possible values include: 'Direct', 'Exchange'
+ * @param asn The ASN number associated with a legacy peering.
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @return the observable to the PagedList<PeeringInner> object
+ */
+ public Observable> listAsync(final String peeringLocation, final String kind, final Integer asn) {
+ return listWithServiceResponseAsync(peeringLocation, kind, asn)
+ .map(new Func1>, Page>() {
+ @Override
+ public Page call(ServiceResponse> response) {
+ return response.body();
+ }
+ });
+ }
+
+ /**
+ * Lists all of the legacy peerings under the given subscription matching the specified kind and location.
+ *
+ * @param peeringLocation The location of the peering.
+ * @param kind The kind of the peering. Possible values include: 'Direct', 'Exchange'
+ * @param asn The ASN number associated with a legacy peering.
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @return the observable to the PagedList<PeeringInner> object
+ */
+ public Observable>> listWithServiceResponseAsync(final String peeringLocation, final String kind, final Integer asn) {
+ return listSinglePageAsync(peeringLocation, kind, asn)
+ .concatMap(new Func1>, Observable>>>() {
+ @Override
+ public Observable>> call(ServiceResponse> page) {
+ String nextPageLink = page.body().nextPageLink();
+ if (nextPageLink == null) {
+ return Observable.just(page);
+ }
+ return Observable.just(page).concatWith(listNextWithServiceResponseAsync(nextPageLink));
+ }
+ });
+ }
+
+ /**
+ * Lists all of the legacy peerings under the given subscription matching the specified kind and location.
+ *
+ ServiceResponse> * @param peeringLocation The location of the peering.
+ ServiceResponse> * @param kind The kind of the peering. Possible values include: 'Direct', 'Exchange'
+ ServiceResponse> * @param asn The ASN number associated with a legacy peering.
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @return the PagedList<PeeringInner> object wrapped in {@link ServiceResponse} if successful.
+ */
+ public Observable>> listSinglePageAsync(final String peeringLocation, final String kind, final Integer asn) {
+ if (this.client.subscriptionId() == null) {
+ throw new IllegalArgumentException("Parameter this.client.subscriptionId() is required and cannot be null.");
+ }
+ if (peeringLocation == null) {
+ throw new IllegalArgumentException("Parameter peeringLocation is required and cannot be null.");
+ }
+ if (kind == null) {
+ throw new IllegalArgumentException("Parameter kind is required and cannot be null.");
+ }
+ if (this.client.apiVersion() == null) {
+ throw new IllegalArgumentException("Parameter this.client.apiVersion() is required and cannot be null.");
+ }
+ return service.list(this.client.subscriptionId(), peeringLocation, kind, asn, this.client.apiVersion(), this.client.acceptLanguage(), this.client.userAgent())
+ .flatMap(new Func1, Observable>>>() {
+ @Override
+ public Observable>> call(Response response) {
+ try {
+ ServiceResponse> result = listDelegate(response);
+ return Observable.just(new ServiceResponse>(result.body(), result.response()));
+ } catch (Throwable t) {
+ return Observable.error(t);
+ }
+ }
+ });
+ }
+
+ private ServiceResponse> listDelegate(Response response) throws ErrorResponseException, IOException, IllegalArgumentException {
+ return this.client.restClient().responseBuilderFactory()., ErrorResponseException>newInstance(this.client.serializerAdapter())
+ .register(200, new TypeToken>() { }.getType())
+ .registerError(ErrorResponseException.class)
+ .build(response);
+ }
+
+ /**
+ * Lists all of the legacy peerings under the given subscription matching the specified kind and location.
+ *
+ * @param nextPageLink The NextLink from the previous successful call to List operation.
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @throws ErrorResponseException thrown if the request is rejected by server
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent
+ * @return the PagedList<PeeringInner> object if successful.
+ */
+ public PagedList listNext(final String nextPageLink) {
+ ServiceResponse> response = listNextSinglePageAsync(nextPageLink).toBlocking().single();
+ return new PagedList(response.body()) {
+ @Override
+ public Page nextPage(String nextPageLink) {
+ return listNextSinglePageAsync(nextPageLink).toBlocking().single().body();
+ }
+ };
+ }
+
+ /**
+ * Lists all of the legacy peerings under the given subscription matching the specified kind and location.
+ *
+ * @param nextPageLink The NextLink from the previous successful call to List operation.
+ * @param serviceFuture the ServiceFuture object tracking the Retrofit calls
+ * @param serviceCallback the async ServiceCallback to handle successful and failed responses.
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @return the {@link ServiceFuture} object
+ */
+ public ServiceFuture> listNextAsync(final String nextPageLink, final ServiceFuture> serviceFuture, final ListOperationCallback serviceCallback) {
+ return AzureServiceFuture.fromPageResponse(
+ listNextSinglePageAsync(nextPageLink),
+ new Func1>>>() {
+ @Override
+ public Observable>> call(String nextPageLink) {
+ return listNextSinglePageAsync(nextPageLink);
+ }
+ },
+ serviceCallback);
+ }
+
+ /**
+ * Lists all of the legacy peerings under the given subscription matching the specified kind and location.
+ *
+ * @param nextPageLink The NextLink from the previous successful call to List operation.
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @return the observable to the PagedList<PeeringInner> object
+ */
+ public Observable> listNextAsync(final String nextPageLink) {
+ return listNextWithServiceResponseAsync(nextPageLink)
+ .map(new Func1>, Page>() {
+ @Override
+ public Page call(ServiceResponse> response) {
+ return response.body();
+ }
+ });
+ }
+
+ /**
+ * Lists all of the legacy peerings under the given subscription matching the specified kind and location.
+ *
+ * @param nextPageLink The NextLink from the previous successful call to List operation.
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @return the observable to the PagedList<PeeringInner> object
+ */
+ public Observable>> listNextWithServiceResponseAsync(final String nextPageLink) {
+ return listNextSinglePageAsync(nextPageLink)
+ .concatMap(new Func1>, Observable>>>() {
+ @Override
+ public Observable>> call(ServiceResponse> page) {
+ String nextPageLink = page.body().nextPageLink();
+ if (nextPageLink == null) {
+ return Observable.just(page);
+ }
+ return Observable.just(page).concatWith(listNextWithServiceResponseAsync(nextPageLink));
+ }
+ });
+ }
+
+ /**
+ * Lists all of the legacy peerings under the given subscription matching the specified kind and location.
+ *
+ ServiceResponse> * @param nextPageLink The NextLink from the previous successful call to List operation.
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @return the PagedList<PeeringInner> object wrapped in {@link ServiceResponse} if successful.
+ */
+ public Observable>> listNextSinglePageAsync(final String nextPageLink) {
+ if (nextPageLink == null) {
+ throw new IllegalArgumentException("Parameter nextPageLink is required and cannot be null.");
+ }
+ String nextUrl = String.format("%s", nextPageLink);
+ return service.listNext(nextUrl, this.client.acceptLanguage(), this.client.userAgent())
+ .flatMap(new Func1, Observable>>>() {
+ @Override
+ public Observable>> call(Response response) {
+ try {
+ ServiceResponse> result = listNextDelegate(response);
+ return Observable.just(new ServiceResponse>(result.body(), result.response()));
+ } catch (Throwable t) {
+ return Observable.error(t);
+ }
+ }
+ });
+ }
+
+ private ServiceResponse> listNextDelegate(Response response) throws ErrorResponseException, IOException, IllegalArgumentException {
+ return this.client.restClient().responseBuilderFactory()., ErrorResponseException>newInstance(this.client.serializerAdapter())
+ .register(200, new TypeToken>() { }.getType())
+ .registerError(ErrorResponseException.class)
+ .build(response);
+ }
+
+}
diff --git a/sdk/peering/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/peering/v2020_04_01/implementation/OperationImpl.java b/sdk/peering/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/peering/v2020_04_01/implementation/OperationImpl.java
new file mode 100644
index 0000000000000..afcbc86519e06
--- /dev/null
+++ b/sdk/peering/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/peering/v2020_04_01/implementation/OperationImpl.java
@@ -0,0 +1,42 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.peering.v2020_04_01.implementation;
+
+import com.microsoft.azure.management.peering.v2020_04_01.Operation;
+import com.microsoft.azure.arm.model.implementation.WrapperImpl;
+import com.microsoft.azure.management.peering.v2020_04_01.OperationDisplayInfo;
+
+class OperationImpl extends WrapperImpl implements Operation {
+ private final PeeringManager manager;
+ OperationImpl(OperationInner inner, PeeringManager manager) {
+ super(inner);
+ this.manager = manager;
+ }
+
+ @Override
+ public PeeringManager manager() {
+ return this.manager;
+ }
+
+ @Override
+ public OperationDisplayInfo display() {
+ return this.inner().display();
+ }
+
+ @Override
+ public Boolean isDataAction() {
+ return this.inner().isDataAction();
+ }
+
+ @Override
+ public String name() {
+ return this.inner().name();
+ }
+
+}
diff --git a/sdk/peering/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/peering/v2020_04_01/implementation/OperationInner.java b/sdk/peering/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/peering/v2020_04_01/implementation/OperationInner.java
new file mode 100644
index 0000000000000..4f2a31434c00e
--- /dev/null
+++ b/sdk/peering/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/peering/v2020_04_01/implementation/OperationInner.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.peering.v2020_04_01.implementation;
+
+import com.microsoft.azure.management.peering.v2020_04_01.OperationDisplayInfo;
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/**
+ * The peering API operation.
+ */
+public class OperationInner {
+ /**
+ * The name of the operation.
+ */
+ @JsonProperty(value = "name", access = JsonProperty.Access.WRITE_ONLY)
+ private String name;
+
+ /**
+ * The information related to the operation.
+ */
+ @JsonProperty(value = "display", access = JsonProperty.Access.WRITE_ONLY)
+ private OperationDisplayInfo display;
+
+ /**
+ * The flag that indicates whether the operation applies to data plane.
+ */
+ @JsonProperty(value = "isDataAction", access = JsonProperty.Access.WRITE_ONLY)
+ private Boolean isDataAction;
+
+ /**
+ * Get the name of the operation.
+ *
+ * @return the name value
+ */
+ public String name() {
+ return this.name;
+ }
+
+ /**
+ * Get the information related to the operation.
+ *
+ * @return the display value
+ */
+ public OperationDisplayInfo display() {
+ return this.display;
+ }
+
+ /**
+ * Get the flag that indicates whether the operation applies to data plane.
+ *
+ * @return the isDataAction value
+ */
+ public Boolean isDataAction() {
+ return this.isDataAction;
+ }
+
+}
diff --git a/sdk/peering/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/peering/v2020_04_01/implementation/OperationsImpl.java b/sdk/peering/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/peering/v2020_04_01/implementation/OperationsImpl.java
new file mode 100644
index 0000000000000..49849ab7bcd0d
--- /dev/null
+++ b/sdk/peering/mgmt-v2020_04_01/src/main/java/com/microsoft/azure/management/peering/v2020_04_01/implementation/OperationsImpl.java
@@ -0,0 +1,49 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ * abc
+ */
+
+package com.microsoft.azure.management.peering.v2020_04_01.implementation;
+
+import com.microsoft.azure.arm.model.implementation.WrapperImpl;
+import com.microsoft.azure.management.peering.v2020_04_01.Operations;
+import rx.functions.Func1;
+import rx.Observable;
+import com.microsoft.azure.Page;
+import com.microsoft.azure.management.peering.v2020_04_01.Operation;
+
+class OperationsImpl extends WrapperImpl implements Operations {
+ private final PeeringManager manager;
+
+ OperationsImpl(PeeringManager manager) {
+ super(manager.inner().operations());
+ this.manager = manager;
+ }
+
+ public PeeringManager manager() {
+ return this.manager;
+ }
+
+ @Override
+ public Observable listAsync() {
+ OperationsInner client = this.inner();
+ return client.listAsync()
+ .flatMapIterable(new Func1