diff --git a/eng/versioning/version_client.txt b/eng/versioning/version_client.txt
index b43c01ab041d0..5a2ef18109f66 100644
--- a/eng/versioning/version_client.txt
+++ b/eng/versioning/version_client.txt
@@ -191,6 +191,7 @@ com.azure.resourcemanager:azure-resourcemanager-kusto;1.0.0-beta.1;1.0.0-beta.2
com.azure.resourcemanager:azure-resourcemanager-loganalytics;1.0.0-beta.1;1.0.0-beta.2
com.azure.resourcemanager:azure-resourcemanager-eventgrid;1.0.0-beta.1;1.0.0-beta.2
com.azure.resourcemanager:azure-resourcemanager-healthbot;1.0.0-beta.1;1.0.0-beta.1
+com.azure.resourcemanager:azure-resourcemanager-windowsiot;1.0.0-beta.1;1.0.0-beta.1
# Unreleased dependencies: Copy the entry from above, prepend "unreleased_" and remove the current
diff --git a/pom.xml b/pom.xml
index a14b9daf5ead6..9290e8a52083b 100644
--- a/pom.xml
+++ b/pom.xml
@@ -584,6 +584,7 @@
sdk/tablessdk/templatesdk/textanalytics
+ sdk/windowsiot
diff --git a/sdk/windowsiot/azure-resourcemanager-windowsiot/CHANGELOG.md b/sdk/windowsiot/azure-resourcemanager-windowsiot/CHANGELOG.md
new file mode 100644
index 0000000000000..3a53b50320477
--- /dev/null
+++ b/sdk/windowsiot/azure-resourcemanager-windowsiot/CHANGELOG.md
@@ -0,0 +1,5 @@
+# Release History
+
+## 1.0.0-beta.1 (2021-01-12)
+
+- Azure Resource Manager Windowsiot client library for Java. This package contains Microsoft Azure SDK for Windowsiot Management SDK. Use this API to manage the Windows IoT device services in your Azure subscription. Package tag package-2019-06. For documentation on how to use this package, please see [Azure Management Libraries for Java](https://aka.ms/azsdk/java/mgmt).
\ No newline at end of file
diff --git a/sdk/windowsiot/azure-resourcemanager-windowsiot/README.md b/sdk/windowsiot/azure-resourcemanager-windowsiot/README.md
new file mode 100644
index 0000000000000..1aa8fc031306f
--- /dev/null
+++ b/sdk/windowsiot/azure-resourcemanager-windowsiot/README.md
@@ -0,0 +1,83 @@
+# Azure Resource Manager Windowsiot client library for Java
+
+Azure Resource Manager Windowsiot client library for Java.
+
+This package contains Microsoft Azure SDK for Windowsiot Management SDK. Use this API to manage the Windows IoT device services in your Azure subscription. Package tag package-2019-06. For documentation on how to use this package, please see [Azure Management Libraries for Java](https://aka.ms/azsdk/java/mgmt).
+
+## Getting started
+
+### Prerequisites
+
+- [Java Development Kit (JDK)][jdk] with version 8 or above
+- [Azure Subscription][azure_subscription]
+
+### Adding the package to your product
+
+[//]: # ({x-version-update-start;com.azure.resourcemanager:azure-resourcemanager-windowsiot;current})
+```xml
+
+ com.azure.resourcemanager
+ azure-resourcemanager-windowsiot
+ 1.0.0-beta.1
+
+```
+[//]: # ({x-version-update-end})
+
+### Include the recommended packages
+
+Azure Management Libraries require a `TokenCredential` implementation for authentication and an `HttpClient` implementation for HTTP client.
+
+[Azure Identity][azure_identity] package and [Azure Core Netty HTTP][azure_core_http_netty] package provide the default implementation.
+
+### Authentication
+
+By default, Azure Active Directory token authentication depends on correct configure of following environment variables.
+
+- `AZURE_CLIENT_ID` for Azure client ID.
+- `AZURE_TENANT_ID` for Azure tenant ID.
+- `AZURE_CLIENT_SECRET` or `AZURE_CLIENT_CERTIFICATE_PATH` for client secret or client certificate.
+
+In addition, Azure subscription ID can be configured via environment variable `AZURE_SUBSCRIPTION_ID`.
+
+With above configuration, `azure` client can be authenticated by following code:
+
+```java
+AzureProfile profile = new AzureProfile(AzureEnvironment.AZURE);
+TokenCredential credential = new DefaultAzureCredentialBuilder()
+ .authorityHost(profile.getEnvironment().getActiveDirectoryEndpoint())
+ .build();
+WindowsiotManager manager = WindowsiotManager
+ .authenticate(credential, profile);
+```
+
+The sample code assumes global Azure. Please change `AzureEnvironment.AZURE` variable if otherwise.
+
+See [Authentication][authenticate] for more options.
+
+## Key concepts
+
+See [API design][design] for general introduction on design and key concepts on Azure Management Libraries.
+
+## Examples
+
+## Troubleshooting
+
+## Next steps
+
+## Contributing
+
+For details on contributing to this repository, see the [contributing guide](https://github.com/Azure/azure-sdk-for-java/blob/master/CONTRIBUTING.md).
+
+1. Fork it
+1. Create your feature branch (`git checkout -b my-new-feature`)
+1. Commit your changes (`git commit -am 'Add some feature'`)
+1. Push to the branch (`git push origin my-new-feature`)
+1. Create new Pull Request
+
+
+[jdk]: https://docs.microsoft.com/java/azure/jdk/
+[azure_subscription]: https://azure.microsoft.com/free/
+[azure_identity]: https://github.com/Azure/azure-sdk-for-java/blob/master/sdk/identity/azure-identity
+[azure_core_http_netty]: https://github.com/Azure/azure-sdk-for-java/blob/master/sdk/core/azure-core-http-netty
+[authenticate]: https://github.com/Azure/azure-sdk-for-java/blob/master/sdk/resourcemanager/docs/AUTH.md
+[design]: https://github.com/Azure/azure-sdk-for-java/blob/master/sdk/resourcemanager/docs/DESIGN.md
diff --git a/sdk/windowsiot/azure-resourcemanager-windowsiot/pom.xml b/sdk/windowsiot/azure-resourcemanager-windowsiot/pom.xml
new file mode 100644
index 0000000000000..f0df5407bacce
--- /dev/null
+++ b/sdk/windowsiot/azure-resourcemanager-windowsiot/pom.xml
@@ -0,0 +1,62 @@
+
+ 4.0.0
+
+ com.azure
+ azure-client-sdk-parent
+ 1.7.0
+ ../../parents/azure-client-sdk-parent
+
+
+ com.azure.resourcemanager
+ azure-resourcemanager-windowsiot
+ 1.0.0-beta.1
+ jar
+
+ Microsoft Azure SDK for Windowsiot Management
+ This package contains Microsoft Azure SDK for Windowsiot Management SDK. Use this API to manage the Windows IoT device services in your Azure subscription. Package tag package-2019-06. For documentation on how to use this package, please see https://aka.ms/azsdk/java/mgmt
+ https://github.com/Azure/azure-sdk-for-java
+
+
+
+ The MIT License (MIT)
+ http://opensource.org/licenses/MIT
+ repo
+
+
+
+
+ https://github.com/Azure/azure-sdk-for-java
+ scm:git:git@github.com:Azure/azure-sdk-for-java.git
+ scm:git:git@github.com:Azure/azure-sdk-for-java.git
+ HEAD
+
+
+
+ microsoft
+ Microsoft
+
+
+
+ UTF-8
+
+
+
+
+ com.azure
+ azure-core-management
+ 1.1.0
+
+
+
+
+
+ org.jacoco
+ jacoco-maven-plugin
+ 0.8.5
+
+ true
+
+
+
+
+
diff --git a/sdk/windowsiot/azure-resourcemanager-windowsiot/src/main/java/com/azure/resourcemanager/windowsiot/WindowsiotManager.java b/sdk/windowsiot/azure-resourcemanager-windowsiot/src/main/java/com/azure/resourcemanager/windowsiot/WindowsiotManager.java
new file mode 100644
index 0000000000000..46ae468029838
--- /dev/null
+++ b/sdk/windowsiot/azure-resourcemanager-windowsiot/src/main/java/com/azure/resourcemanager/windowsiot/WindowsiotManager.java
@@ -0,0 +1,214 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.windowsiot;
+
+import com.azure.core.credential.TokenCredential;
+import com.azure.core.http.HttpClient;
+import com.azure.core.http.HttpPipeline;
+import com.azure.core.http.HttpPipelineBuilder;
+import com.azure.core.http.policy.AddDatePolicy;
+import com.azure.core.http.policy.BearerTokenAuthenticationPolicy;
+import com.azure.core.http.policy.HttpLogOptions;
+import com.azure.core.http.policy.HttpLoggingPolicy;
+import com.azure.core.http.policy.HttpPipelinePolicy;
+import com.azure.core.http.policy.HttpPolicyProviders;
+import com.azure.core.http.policy.RequestIdPolicy;
+import com.azure.core.http.policy.RetryPolicy;
+import com.azure.core.http.policy.UserAgentPolicy;
+import com.azure.core.management.profile.AzureProfile;
+import com.azure.core.util.Configuration;
+import com.azure.core.util.logging.ClientLogger;
+import com.azure.resourcemanager.windowsiot.fluent.DeviceServices;
+import com.azure.resourcemanager.windowsiot.implementation.DeviceServicesBuilder;
+import com.azure.resourcemanager.windowsiot.implementation.OperationsImpl;
+import com.azure.resourcemanager.windowsiot.implementation.ServicesImpl;
+import com.azure.resourcemanager.windowsiot.models.Operations;
+import com.azure.resourcemanager.windowsiot.models.Services;
+import java.time.Duration;
+import java.time.temporal.ChronoUnit;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Objects;
+
+/**
+ * Entry point to WindowsiotManager. Use this API to manage the Windows IoT device services in your Azure subscription.
+ */
+public final class WindowsiotManager {
+ private Operations operations;
+
+ private Services services;
+
+ private final DeviceServices clientObject;
+
+ private WindowsiotManager(HttpPipeline httpPipeline, AzureProfile profile, Duration defaultPollInterval) {
+ Objects.requireNonNull(httpPipeline, "'httpPipeline' cannot be null.");
+ Objects.requireNonNull(profile, "'profile' cannot be null.");
+ this.clientObject =
+ new DeviceServicesBuilder()
+ .pipeline(httpPipeline)
+ .endpoint(profile.getEnvironment().getResourceManagerEndpoint())
+ .subscriptionId(profile.getSubscriptionId())
+ .defaultPollInterval(defaultPollInterval)
+ .buildClient();
+ }
+
+ /**
+ * Creates an instance of Windowsiot service API entry point.
+ *
+ * @param credential the credential to use.
+ * @param profile the Azure profile for client.
+ * @return the Windowsiot service API instance.
+ */
+ public static WindowsiotManager authenticate(TokenCredential credential, AzureProfile profile) {
+ Objects.requireNonNull(credential, "'credential' cannot be null.");
+ Objects.requireNonNull(profile, "'profile' cannot be null.");
+ return configure().authenticate(credential, profile);
+ }
+
+ /**
+ * Gets a Configurable instance that can be used to create WindowsiotManager with optional configuration.
+ *
+ * @return the Configurable instance allowing configurations.
+ */
+ public static Configurable configure() {
+ return new WindowsiotManager.Configurable();
+ }
+
+ /** The Configurable allowing configurations to be set. */
+ public static final class Configurable {
+ private final ClientLogger logger = new ClientLogger(Configurable.class);
+
+ private HttpClient httpClient;
+ private HttpLogOptions httpLogOptions;
+ private final List policies = new ArrayList<>();
+ private RetryPolicy retryPolicy;
+ private Duration defaultPollInterval;
+
+ private Configurable() {
+ }
+
+ /**
+ * Sets the http client.
+ *
+ * @param httpClient the HTTP client.
+ * @return the configurable object itself.
+ */
+ public Configurable withHttpClient(HttpClient httpClient) {
+ this.httpClient = Objects.requireNonNull(httpClient, "'httpClient' cannot be null.");
+ return this;
+ }
+
+ /**
+ * Sets the logging options to the HTTP pipeline.
+ *
+ * @param httpLogOptions the HTTP log options.
+ * @return the configurable object itself.
+ */
+ public Configurable withLogOptions(HttpLogOptions httpLogOptions) {
+ this.httpLogOptions = Objects.requireNonNull(httpLogOptions, "'httpLogOptions' cannot be null.");
+ return this;
+ }
+
+ /**
+ * Adds the pipeline policy to the HTTP pipeline.
+ *
+ * @param policy the HTTP pipeline policy.
+ * @return the configurable object itself.
+ */
+ public Configurable withPolicy(HttpPipelinePolicy policy) {
+ this.policies.add(Objects.requireNonNull(policy, "'policy' cannot be null."));
+ return this;
+ }
+
+ /**
+ * Sets the retry policy to the HTTP pipeline.
+ *
+ * @param retryPolicy the HTTP pipeline retry policy.
+ * @return the configurable object itself.
+ */
+ public Configurable withRetryPolicy(RetryPolicy retryPolicy) {
+ this.retryPolicy = Objects.requireNonNull(retryPolicy, "'retryPolicy' cannot be null.");
+ return this;
+ }
+
+ /**
+ * Sets the default poll interval, used when service does not provide "Retry-After" header.
+ *
+ * @param defaultPollInterval the default poll interval.
+ * @return the configurable object itself.
+ */
+ public Configurable withDefaultPollInterval(Duration defaultPollInterval) {
+ this.defaultPollInterval = Objects.requireNonNull(defaultPollInterval, "'retryPolicy' cannot be null.");
+ if (this.defaultPollInterval.isNegative()) {
+ throw logger.logExceptionAsError(new IllegalArgumentException("'httpPipeline' cannot be negative"));
+ }
+ return this;
+ }
+
+ /**
+ * Creates an instance of Windowsiot service API entry point.
+ *
+ * @param credential the credential to use.
+ * @param profile the Azure profile for client.
+ * @return the Windowsiot service API instance.
+ */
+ public WindowsiotManager authenticate(TokenCredential credential, AzureProfile profile) {
+ Objects.requireNonNull(credential, "'credential' cannot be null.");
+ Objects.requireNonNull(profile, "'profile' cannot be null.");
+
+ if (retryPolicy == null) {
+ retryPolicy = new RetryPolicy("Retry-After", ChronoUnit.SECONDS);
+ }
+ List policies = new ArrayList<>();
+ policies
+ .add(
+ new UserAgentPolicy(
+ null,
+ "com.azure.resourcemanager.windowsiot",
+ "1.0.0-beta.1",
+ Configuration.getGlobalConfiguration()));
+ policies.add(new RequestIdPolicy());
+ HttpPolicyProviders.addBeforeRetryPolicies(policies);
+ policies.add(retryPolicy);
+ policies.add(new AddDatePolicy());
+ policies
+ .add(
+ new BearerTokenAuthenticationPolicy(
+ credential, profile.getEnvironment().getManagementEndpoint() + "/.default"));
+ HttpPolicyProviders.addAfterRetryPolicies(policies);
+ policies.add(new HttpLoggingPolicy(httpLogOptions));
+ HttpPipeline httpPipeline =
+ new HttpPipelineBuilder()
+ .httpClient(httpClient)
+ .policies(policies.toArray(new HttpPipelinePolicy[0]))
+ .build();
+ return new WindowsiotManager(httpPipeline, profile, defaultPollInterval);
+ }
+ }
+
+ /** @return Resource collection API of Operations. */
+ public Operations operations() {
+ if (this.operations == null) {
+ this.operations = new OperationsImpl(clientObject.getOperations(), this);
+ }
+ return operations;
+ }
+
+ /** @return Resource collection API of Services. */
+ public Services services() {
+ if (this.services == null) {
+ this.services = new ServicesImpl(clientObject.getServices(), this);
+ }
+ return services;
+ }
+
+ /**
+ * @return Wrapped service client DeviceServices providing direct access to the underlying auto-generated API
+ * implementation, based on Azure REST API.
+ */
+ public DeviceServices serviceClient() {
+ return this.clientObject;
+ }
+}
diff --git a/sdk/windowsiot/azure-resourcemanager-windowsiot/src/main/java/com/azure/resourcemanager/windowsiot/fluent/DeviceServices.java b/sdk/windowsiot/azure-resourcemanager-windowsiot/src/main/java/com/azure/resourcemanager/windowsiot/fluent/DeviceServices.java
new file mode 100644
index 0000000000000..c36a26a43aa02
--- /dev/null
+++ b/sdk/windowsiot/azure-resourcemanager-windowsiot/src/main/java/com/azure/resourcemanager/windowsiot/fluent/DeviceServices.java
@@ -0,0 +1,60 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.windowsiot.fluent;
+
+import com.azure.core.http.HttpPipeline;
+import java.time.Duration;
+
+/** The interface for DeviceServices class. */
+public interface DeviceServices {
+ /**
+ * Gets The subscription identifier.
+ *
+ * @return the subscriptionId value.
+ */
+ String getSubscriptionId();
+
+ /**
+ * Gets server parameter.
+ *
+ * @return the endpoint value.
+ */
+ String getEndpoint();
+
+ /**
+ * Gets Api Version.
+ *
+ * @return the apiVersion value.
+ */
+ String getApiVersion();
+
+ /**
+ * Gets The HTTP pipeline to send requests through.
+ *
+ * @return the httpPipeline value.
+ */
+ HttpPipeline getHttpPipeline();
+
+ /**
+ * Gets The default poll interval for long-running operation.
+ *
+ * @return the defaultPollInterval value.
+ */
+ Duration getDefaultPollInterval();
+
+ /**
+ * Gets the OperationsClient object to access its operations.
+ *
+ * @return the OperationsClient object.
+ */
+ OperationsClient getOperations();
+
+ /**
+ * Gets the ServicesClient object to access its operations.
+ *
+ * @return the ServicesClient object.
+ */
+ ServicesClient getServices();
+}
diff --git a/sdk/windowsiot/azure-resourcemanager-windowsiot/src/main/java/com/azure/resourcemanager/windowsiot/fluent/OperationsClient.java b/sdk/windowsiot/azure-resourcemanager-windowsiot/src/main/java/com/azure/resourcemanager/windowsiot/fluent/OperationsClient.java
new file mode 100644
index 0000000000000..270e4e5552c5d
--- /dev/null
+++ b/sdk/windowsiot/azure-resourcemanager-windowsiot/src/main/java/com/azure/resourcemanager/windowsiot/fluent/OperationsClient.java
@@ -0,0 +1,36 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.windowsiot.fluent;
+
+import com.azure.core.annotation.ReturnType;
+import com.azure.core.annotation.ServiceMethod;
+import com.azure.core.http.rest.PagedIterable;
+import com.azure.core.util.Context;
+import com.azure.resourcemanager.windowsiot.fluent.models.OperationEntityInner;
+
+/** An instance of this class provides access to all the operations defined in OperationsClient. */
+public interface OperationsClient {
+ /**
+ * Lists all of the available Windows IoT Services REST API operations.
+ *
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return result of the request to list Windows IoT Device Service operations.
+ */
+ @ServiceMethod(returns = ReturnType.COLLECTION)
+ PagedIterable list();
+
+ /**
+ * Lists all of the available Windows IoT Services REST API operations.
+ *
+ * @param context The context to associate with this operation.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return result of the request to list Windows IoT Device Service operations.
+ */
+ @ServiceMethod(returns = ReturnType.COLLECTION)
+ PagedIterable list(Context context);
+}
diff --git a/sdk/windowsiot/azure-resourcemanager-windowsiot/src/main/java/com/azure/resourcemanager/windowsiot/fluent/ServicesClient.java b/sdk/windowsiot/azure-resourcemanager-windowsiot/src/main/java/com/azure/resourcemanager/windowsiot/fluent/ServicesClient.java
new file mode 100644
index 0000000000000..ec8d24d9ac052
--- /dev/null
+++ b/sdk/windowsiot/azure-resourcemanager-windowsiot/src/main/java/com/azure/resourcemanager/windowsiot/fluent/ServicesClient.java
@@ -0,0 +1,222 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.windowsiot.fluent;
+
+import com.azure.core.annotation.ReturnType;
+import com.azure.core.annotation.ServiceMethod;
+import com.azure.core.http.rest.PagedIterable;
+import com.azure.core.http.rest.Response;
+import com.azure.core.util.Context;
+import com.azure.resourcemanager.windowsiot.fluent.models.DeviceServiceInner;
+import com.azure.resourcemanager.windowsiot.fluent.models.DeviceServiceNameAvailabilityInfoInner;
+import com.azure.resourcemanager.windowsiot.models.DeviceServiceCheckNameAvailabilityParameters;
+
+/** An instance of this class provides access to all the operations defined in ServicesClient. */
+public interface ServicesClient {
+ /**
+ * Get the non-security related metadata of a Windows IoT Device Service.
+ *
+ * @param resourceGroupName The name of the resource group that contains the Windows IoT Device Service.
+ * @param deviceName The name of the Windows IoT Device Service.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return the non-security related metadata of a Windows IoT Device Service.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ DeviceServiceInner getByResourceGroup(String resourceGroupName, String deviceName);
+
+ /**
+ * Get the non-security related metadata of a Windows IoT Device Service.
+ *
+ * @param resourceGroupName The name of the resource group that contains the Windows IoT Device Service.
+ * @param deviceName The name of the Windows IoT Device Service.
+ * @param context The context to associate with this operation.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return the non-security related metadata of a Windows IoT Device Service.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ Response getByResourceGroupWithResponse(
+ String resourceGroupName, String deviceName, Context context);
+
+ /**
+ * Create or update the metadata of a Windows IoT Device Service. The usual pattern to modify a property is to
+ * retrieve the Windows IoT Device Service metadata and security metadata, and then combine them with the modified
+ * values in a new body to update the Windows IoT Device Service.
+ *
+ * @param resourceGroupName The name of the resource group that contains the Windows IoT Device Service.
+ * @param deviceName The name of the Windows IoT Device Service.
+ * @param deviceService The Windows IoT Device Service metadata and security metadata.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return the description of the Windows IoT Device Service.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ DeviceServiceInner createOrUpdate(String resourceGroupName, String deviceName, DeviceServiceInner deviceService);
+
+ /**
+ * Create or update the metadata of a Windows IoT Device Service. The usual pattern to modify a property is to
+ * retrieve the Windows IoT Device Service metadata and security metadata, and then combine them with the modified
+ * values in a new body to update the Windows IoT Device Service.
+ *
+ * @param resourceGroupName The name of the resource group that contains the Windows IoT Device Service.
+ * @param deviceName The name of the Windows IoT Device Service.
+ * @param deviceService The Windows IoT Device Service metadata and security metadata.
+ * @param ifMatch ETag of the Windows IoT Device Service. Do not specify for creating a new Windows IoT Device
+ * Service. Required to update an existing Windows IoT Device Service.
+ * @param context The context to associate with this operation.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return the description of the Windows IoT Device Service.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ Response createOrUpdateWithResponse(
+ String resourceGroupName, String deviceName, DeviceServiceInner deviceService, String ifMatch, Context context);
+
+ /**
+ * Updates the metadata of a Windows IoT Device Service. The usual pattern to modify a property is to retrieve the
+ * Windows IoT Device Service metadata and security metadata, and then combine them with the modified values in a
+ * new body to update the Windows IoT Device Service.
+ *
+ * @param resourceGroupName The name of the resource group that contains the Windows IoT Device Service.
+ * @param deviceName The name of the Windows IoT Device Service.
+ * @param deviceService The Windows IoT Device Service metadata and security metadata.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return the description of the Windows IoT Device Service.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ DeviceServiceInner update(String resourceGroupName, String deviceName, DeviceServiceInner deviceService);
+
+ /**
+ * Updates the metadata of a Windows IoT Device Service. The usual pattern to modify a property is to retrieve the
+ * Windows IoT Device Service metadata and security metadata, and then combine them with the modified values in a
+ * new body to update the Windows IoT Device Service.
+ *
+ * @param resourceGroupName The name of the resource group that contains the Windows IoT Device Service.
+ * @param deviceName The name of the Windows IoT Device Service.
+ * @param deviceService The Windows IoT Device Service metadata and security metadata.
+ * @param ifMatch ETag of the Windows IoT Device Service. Do not specify for creating a brand new Windows IoT Device
+ * Service. Required to update an existing Windows IoT Device Service.
+ * @param context The context to associate with this operation.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return the description of the Windows IoT Device Service.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ Response updateWithResponse(
+ String resourceGroupName, String deviceName, DeviceServiceInner deviceService, String ifMatch, Context context);
+
+ /**
+ * Delete a Windows IoT Device Service.
+ *
+ * @param resourceGroupName The name of the resource group that contains the Windows IoT Device Service.
+ * @param deviceName The name of the Windows IoT Device Service.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return the description of the Windows IoT Device Service.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ DeviceServiceInner delete(String resourceGroupName, String deviceName);
+
+ /**
+ * Delete a Windows IoT Device Service.
+ *
+ * @param resourceGroupName The name of the resource group that contains the Windows IoT Device Service.
+ * @param deviceName The name of the Windows IoT Device Service.
+ * @param context The context to associate with this operation.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return the description of the Windows IoT Device Service.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ Response deleteWithResponse(String resourceGroupName, String deviceName, Context context);
+
+ /**
+ * Get all the IoT hubs in a resource group.
+ *
+ * @param resourceGroupName The name of the resource group that contains the Windows IoT Device Service.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return all the IoT hubs in a resource group.
+ */
+ @ServiceMethod(returns = ReturnType.COLLECTION)
+ PagedIterable listByResourceGroup(String resourceGroupName);
+
+ /**
+ * Get all the IoT hubs in a resource group.
+ *
+ * @param resourceGroupName The name of the resource group that contains the Windows IoT Device Service.
+ * @param context The context to associate with this operation.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return all the IoT hubs in a resource group.
+ */
+ @ServiceMethod(returns = ReturnType.COLLECTION)
+ PagedIterable listByResourceGroup(String resourceGroupName, Context context);
+
+ /**
+ * Get all the IoT hubs in a subscription.
+ *
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return all the IoT hubs in a subscription.
+ */
+ @ServiceMethod(returns = ReturnType.COLLECTION)
+ PagedIterable list();
+
+ /**
+ * Get all the IoT hubs in a subscription.
+ *
+ * @param context The context to associate with this operation.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return all the IoT hubs in a subscription.
+ */
+ @ServiceMethod(returns = ReturnType.COLLECTION)
+ PagedIterable list(Context context);
+
+ /**
+ * Check if a Windows IoT Device Service name is available.
+ *
+ * @param deviceServiceCheckNameAvailabilityParameters Set the name parameter in the
+ * DeviceServiceCheckNameAvailabilityParameters structure to the name of the Windows IoT Device Service to
+ * check.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return the properties indicating whether a given Windows IoT Device Service name is available.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ DeviceServiceNameAvailabilityInfoInner checkDeviceServiceNameAvailability(
+ DeviceServiceCheckNameAvailabilityParameters deviceServiceCheckNameAvailabilityParameters);
+
+ /**
+ * Check if a Windows IoT Device Service name is available.
+ *
+ * @param deviceServiceCheckNameAvailabilityParameters Set the name parameter in the
+ * DeviceServiceCheckNameAvailabilityParameters structure to the name of the Windows IoT Device Service to
+ * check.
+ * @param context The context to associate with this operation.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return the properties indicating whether a given Windows IoT Device Service name is available.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ Response checkDeviceServiceNameAvailabilityWithResponse(
+ DeviceServiceCheckNameAvailabilityParameters deviceServiceCheckNameAvailabilityParameters, Context context);
+}
diff --git a/sdk/windowsiot/azure-resourcemanager-windowsiot/src/main/java/com/azure/resourcemanager/windowsiot/fluent/models/DeviceServiceInner.java b/sdk/windowsiot/azure-resourcemanager-windowsiot/src/main/java/com/azure/resourcemanager/windowsiot/fluent/models/DeviceServiceInner.java
new file mode 100644
index 0000000000000..4d8c801c96be4
--- /dev/null
+++ b/sdk/windowsiot/azure-resourcemanager-windowsiot/src/main/java/com/azure/resourcemanager/windowsiot/fluent/models/DeviceServiceInner.java
@@ -0,0 +1,192 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.windowsiot.fluent.models;
+
+import com.azure.core.annotation.Fluent;
+import com.azure.core.annotation.JsonFlatten;
+import com.azure.core.management.Resource;
+import com.azure.core.util.logging.ClientLogger;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import java.time.OffsetDateTime;
+import java.util.Map;
+
+/** The description of the Windows IoT Device Service. */
+@JsonFlatten
+@Fluent
+public class DeviceServiceInner extends Resource {
+ @JsonIgnore private final ClientLogger logger = new ClientLogger(DeviceServiceInner.class);
+
+ /*
+ * The Etag field is *not* required. If it is provided in the response
+ * body, it must also be provided as a header per the normal ETag
+ * convention.
+ */
+ @JsonProperty(value = "etag")
+ private String etag;
+
+ /*
+ * Windows IoT Device Service notes.
+ */
+ @JsonProperty(value = "properties.notes")
+ private String notes;
+
+ /*
+ * Windows IoT Device Service start date,
+ */
+ @JsonProperty(value = "properties.startDate", access = JsonProperty.Access.WRITE_ONLY)
+ private OffsetDateTime startDate;
+
+ /*
+ * Windows IoT Device Service device allocation,
+ */
+ @JsonProperty(value = "properties.quantity")
+ private Long quantity;
+
+ /*
+ * Windows IoT Device Service ODM AAD domain
+ */
+ @JsonProperty(value = "properties.billingDomainName")
+ private String billingDomainName;
+
+ /*
+ * Windows IoT Device Service OEM AAD domain
+ */
+ @JsonProperty(value = "properties.adminDomainName")
+ private String adminDomainName;
+
+ /**
+ * Get the etag property: The Etag field is *not* required. If it is provided in the response body, it must also be
+ * provided as a header per the normal ETag convention.
+ *
+ * @return the etag value.
+ */
+ public String etag() {
+ return this.etag;
+ }
+
+ /**
+ * Set the etag property: The Etag field is *not* required. If it is provided in the response body, it must also be
+ * provided as a header per the normal ETag convention.
+ *
+ * @param etag the etag value to set.
+ * @return the DeviceServiceInner object itself.
+ */
+ public DeviceServiceInner withEtag(String etag) {
+ this.etag = etag;
+ return this;
+ }
+
+ /**
+ * Get the notes property: Windows IoT Device Service notes.
+ *
+ * @return the notes value.
+ */
+ public String notes() {
+ return this.notes;
+ }
+
+ /**
+ * Set the notes property: Windows IoT Device Service notes.
+ *
+ * @param notes the notes value to set.
+ * @return the DeviceServiceInner object itself.
+ */
+ public DeviceServiceInner withNotes(String notes) {
+ this.notes = notes;
+ return this;
+ }
+
+ /**
+ * Get the startDate property: Windows IoT Device Service start date,.
+ *
+ * @return the startDate value.
+ */
+ public OffsetDateTime startDate() {
+ return this.startDate;
+ }
+
+ /**
+ * Get the quantity property: Windows IoT Device Service device allocation,.
+ *
+ * @return the quantity value.
+ */
+ public Long quantity() {
+ return this.quantity;
+ }
+
+ /**
+ * Set the quantity property: Windows IoT Device Service device allocation,.
+ *
+ * @param quantity the quantity value to set.
+ * @return the DeviceServiceInner object itself.
+ */
+ public DeviceServiceInner withQuantity(Long quantity) {
+ this.quantity = quantity;
+ return this;
+ }
+
+ /**
+ * Get the billingDomainName property: Windows IoT Device Service ODM AAD domain.
+ *
+ * @return the billingDomainName value.
+ */
+ public String billingDomainName() {
+ return this.billingDomainName;
+ }
+
+ /**
+ * Set the billingDomainName property: Windows IoT Device Service ODM AAD domain.
+ *
+ * @param billingDomainName the billingDomainName value to set.
+ * @return the DeviceServiceInner object itself.
+ */
+ public DeviceServiceInner withBillingDomainName(String billingDomainName) {
+ this.billingDomainName = billingDomainName;
+ return this;
+ }
+
+ /**
+ * Get the adminDomainName property: Windows IoT Device Service OEM AAD domain.
+ *
+ * @return the adminDomainName value.
+ */
+ public String adminDomainName() {
+ return this.adminDomainName;
+ }
+
+ /**
+ * Set the adminDomainName property: Windows IoT Device Service OEM AAD domain.
+ *
+ * @param adminDomainName the adminDomainName value to set.
+ * @return the DeviceServiceInner object itself.
+ */
+ public DeviceServiceInner withAdminDomainName(String adminDomainName) {
+ this.adminDomainName = adminDomainName;
+ return this;
+ }
+
+ /** {@inheritDoc} */
+ @Override
+ public DeviceServiceInner withLocation(String location) {
+ super.withLocation(location);
+ return this;
+ }
+
+ /** {@inheritDoc} */
+ @Override
+ public DeviceServiceInner withTags(Map tags) {
+ super.withTags(tags);
+ return this;
+ }
+
+ /**
+ * Validates the instance.
+ *
+ * @throws IllegalArgumentException thrown if the instance is not valid.
+ */
+ public void validate() {
+ }
+}
diff --git a/sdk/windowsiot/azure-resourcemanager-windowsiot/src/main/java/com/azure/resourcemanager/windowsiot/fluent/models/DeviceServiceNameAvailabilityInfoInner.java b/sdk/windowsiot/azure-resourcemanager-windowsiot/src/main/java/com/azure/resourcemanager/windowsiot/fluent/models/DeviceServiceNameAvailabilityInfoInner.java
new file mode 100644
index 0000000000000..58dd2fb82a98c
--- /dev/null
+++ b/sdk/windowsiot/azure-resourcemanager-windowsiot/src/main/java/com/azure/resourcemanager/windowsiot/fluent/models/DeviceServiceNameAvailabilityInfoInner.java
@@ -0,0 +1,81 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.windowsiot.fluent.models;
+
+import com.azure.core.annotation.Fluent;
+import com.azure.core.util.logging.ClientLogger;
+import com.azure.resourcemanager.windowsiot.models.ServiceNameUnavailabilityReason;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/** The properties indicating whether a given Windows IoT Device Service name is available. */
+@Fluent
+public final class DeviceServiceNameAvailabilityInfoInner {
+ @JsonIgnore private final ClientLogger logger = new ClientLogger(DeviceServiceNameAvailabilityInfoInner.class);
+
+ /*
+ * The value which indicates whether the provided name is available.
+ */
+ @JsonProperty(value = "nameAvailable", access = JsonProperty.Access.WRITE_ONLY)
+ private Boolean nameAvailable;
+
+ /*
+ * The reason for unavailability.
+ */
+ @JsonProperty(value = "reason", access = JsonProperty.Access.WRITE_ONLY)
+ private ServiceNameUnavailabilityReason reason;
+
+ /*
+ * The detailed reason message.
+ */
+ @JsonProperty(value = "message")
+ private String message;
+
+ /**
+ * Get the nameAvailable property: The value which indicates whether the provided name is available.
+ *
+ * @return the nameAvailable value.
+ */
+ public Boolean nameAvailable() {
+ return this.nameAvailable;
+ }
+
+ /**
+ * Get the reason property: The reason for unavailability.
+ *
+ * @return the reason value.
+ */
+ public ServiceNameUnavailabilityReason reason() {
+ return this.reason;
+ }
+
+ /**
+ * Get the message property: The detailed reason message.
+ *
+ * @return the message value.
+ */
+ public String message() {
+ return this.message;
+ }
+
+ /**
+ * Set the message property: The detailed reason message.
+ *
+ * @param message the message value to set.
+ * @return the DeviceServiceNameAvailabilityInfoInner object itself.
+ */
+ public DeviceServiceNameAvailabilityInfoInner withMessage(String message) {
+ this.message = message;
+ return this;
+ }
+
+ /**
+ * Validates the instance.
+ *
+ * @throws IllegalArgumentException thrown if the instance is not valid.
+ */
+ public void validate() {
+ }
+}
diff --git a/sdk/windowsiot/azure-resourcemanager-windowsiot/src/main/java/com/azure/resourcemanager/windowsiot/fluent/models/OperationEntityInner.java b/sdk/windowsiot/azure-resourcemanager-windowsiot/src/main/java/com/azure/resourcemanager/windowsiot/fluent/models/OperationEntityInner.java
new file mode 100644
index 0000000000000..a5bc6665d9d1d
--- /dev/null
+++ b/sdk/windowsiot/azure-resourcemanager-windowsiot/src/main/java/com/azure/resourcemanager/windowsiot/fluent/models/OperationEntityInner.java
@@ -0,0 +1,106 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.windowsiot.fluent.models;
+
+import com.azure.core.annotation.Fluent;
+import com.azure.core.util.logging.ClientLogger;
+import com.azure.resourcemanager.windowsiot.models.OperationDisplayInfo;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/** The operation supported by Azure Data Catalog Service. */
+@Fluent
+public final class OperationEntityInner {
+ @JsonIgnore private final ClientLogger logger = new ClientLogger(OperationEntityInner.class);
+
+ /*
+ * Operation name: {provider}/{resource}/{operation}.
+ */
+ @JsonProperty(value = "name")
+ private String name;
+
+ /*
+ * The operation supported by Azure Data Catalog Service.
+ */
+ @JsonProperty(value = "display")
+ private OperationDisplayInfo display;
+
+ /*
+ * Indicates whether the operation is a data action
+ */
+ @JsonProperty(value = "isDataAction")
+ private Boolean isDataAction;
+
+ /**
+ * Get the name property: Operation name: {provider}/{resource}/{operation}.
+ *
+ * @return the name value.
+ */
+ public String name() {
+ return this.name;
+ }
+
+ /**
+ * Set the name property: Operation name: {provider}/{resource}/{operation}.
+ *
+ * @param name the name value to set.
+ * @return the OperationEntityInner object itself.
+ */
+ public OperationEntityInner withName(String name) {
+ this.name = name;
+ return this;
+ }
+
+ /**
+ * Get the display property: The operation supported by Azure Data Catalog Service.
+ *
+ * @return the display value.
+ */
+ public OperationDisplayInfo display() {
+ return this.display;
+ }
+
+ /**
+ * Set the display property: The operation supported by Azure Data Catalog Service.
+ *
+ * @param display the display value to set.
+ * @return the OperationEntityInner object itself.
+ */
+ public OperationEntityInner withDisplay(OperationDisplayInfo display) {
+ this.display = display;
+ return this;
+ }
+
+ /**
+ * Get the isDataAction property: Indicates whether the operation is a data action.
+ *
+ * @return the isDataAction value.
+ */
+ public Boolean isDataAction() {
+ return this.isDataAction;
+ }
+
+ /**
+ * Set the isDataAction property: Indicates whether the operation is a data action.
+ *
+ * @param isDataAction the isDataAction value to set.
+ * @return the OperationEntityInner object itself.
+ */
+ public OperationEntityInner withIsDataAction(Boolean isDataAction) {
+ this.isDataAction = isDataAction;
+ return this;
+ }
+
+ /**
+ * Validates the instance.
+ *
+ * @throws IllegalArgumentException thrown if the instance is not valid.
+ */
+ public void validate() {
+ if (display() != null) {
+ display().validate();
+ }
+ }
+}
diff --git a/sdk/windowsiot/azure-resourcemanager-windowsiot/src/main/java/com/azure/resourcemanager/windowsiot/fluent/models/package-info.java b/sdk/windowsiot/azure-resourcemanager-windowsiot/src/main/java/com/azure/resourcemanager/windowsiot/fluent/models/package-info.java
new file mode 100644
index 0000000000000..dccb06d6f4ea5
--- /dev/null
+++ b/sdk/windowsiot/azure-resourcemanager-windowsiot/src/main/java/com/azure/resourcemanager/windowsiot/fluent/models/package-info.java
@@ -0,0 +1,9 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+/**
+ * Package containing the inner data models for DeviceServices. Use this API to manage the Windows IoT device services
+ * in your Azure subscription.
+ */
+package com.azure.resourcemanager.windowsiot.fluent.models;
diff --git a/sdk/windowsiot/azure-resourcemanager-windowsiot/src/main/java/com/azure/resourcemanager/windowsiot/fluent/package-info.java b/sdk/windowsiot/azure-resourcemanager-windowsiot/src/main/java/com/azure/resourcemanager/windowsiot/fluent/package-info.java
new file mode 100644
index 0000000000000..5eb9851412ba1
--- /dev/null
+++ b/sdk/windowsiot/azure-resourcemanager-windowsiot/src/main/java/com/azure/resourcemanager/windowsiot/fluent/package-info.java
@@ -0,0 +1,9 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+/**
+ * Package containing the service clients for DeviceServices. Use this API to manage the Windows IoT device services in
+ * your Azure subscription.
+ */
+package com.azure.resourcemanager.windowsiot.fluent;
diff --git a/sdk/windowsiot/azure-resourcemanager-windowsiot/src/main/java/com/azure/resourcemanager/windowsiot/implementation/DeviceServiceImpl.java b/sdk/windowsiot/azure-resourcemanager-windowsiot/src/main/java/com/azure/resourcemanager/windowsiot/implementation/DeviceServiceImpl.java
new file mode 100644
index 0000000000000..342fee09f9ed7
--- /dev/null
+++ b/sdk/windowsiot/azure-resourcemanager-windowsiot/src/main/java/com/azure/resourcemanager/windowsiot/implementation/DeviceServiceImpl.java
@@ -0,0 +1,232 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.windowsiot.implementation;
+
+import com.azure.core.management.Region;
+import com.azure.core.util.Context;
+import com.azure.resourcemanager.windowsiot.WindowsiotManager;
+import com.azure.resourcemanager.windowsiot.fluent.models.DeviceServiceInner;
+import com.azure.resourcemanager.windowsiot.models.DeviceService;
+import java.time.OffsetDateTime;
+import java.util.Collections;
+import java.util.Map;
+
+public final class DeviceServiceImpl implements DeviceService, DeviceService.Definition, DeviceService.Update {
+ private DeviceServiceInner innerObject;
+
+ private final WindowsiotManager serviceManager;
+
+ public String id() {
+ return this.innerModel().id();
+ }
+
+ public String name() {
+ return this.innerModel().name();
+ }
+
+ public String type() {
+ return this.innerModel().type();
+ }
+
+ public String location() {
+ return this.innerModel().location();
+ }
+
+ public Map tags() {
+ Map inner = this.innerModel().tags();
+ if (inner != null) {
+ return Collections.unmodifiableMap(inner);
+ } else {
+ return Collections.emptyMap();
+ }
+ }
+
+ public String etag() {
+ return this.innerModel().etag();
+ }
+
+ public String notes() {
+ return this.innerModel().notes();
+ }
+
+ public OffsetDateTime startDate() {
+ return this.innerModel().startDate();
+ }
+
+ public Long quantity() {
+ return this.innerModel().quantity();
+ }
+
+ public String billingDomainName() {
+ return this.innerModel().billingDomainName();
+ }
+
+ public String adminDomainName() {
+ return this.innerModel().adminDomainName();
+ }
+
+ public Region region() {
+ return Region.fromName(this.regionName());
+ }
+
+ public String regionName() {
+ return this.location();
+ }
+
+ public DeviceServiceInner innerModel() {
+ return this.innerObject;
+ }
+
+ private WindowsiotManager manager() {
+ return this.serviceManager;
+ }
+
+ private String resourceGroupName;
+
+ private String deviceName;
+
+ private String createIfMatch;
+
+ private String updateIfMatch;
+
+ public DeviceServiceImpl withExistingResourceGroup(String resourceGroupName) {
+ this.resourceGroupName = resourceGroupName;
+ return this;
+ }
+
+ public DeviceService create() {
+ this.innerObject =
+ serviceManager
+ .serviceClient()
+ .getServices()
+ .createOrUpdateWithResponse(
+ resourceGroupName, deviceName, this.innerModel(), createIfMatch, Context.NONE)
+ .getValue();
+ return this;
+ }
+
+ public DeviceService create(Context context) {
+ this.innerObject =
+ serviceManager
+ .serviceClient()
+ .getServices()
+ .createOrUpdateWithResponse(resourceGroupName, deviceName, this.innerModel(), createIfMatch, context)
+ .getValue();
+ return this;
+ }
+
+ DeviceServiceImpl(String name, WindowsiotManager serviceManager) {
+ this.innerObject = new DeviceServiceInner();
+ this.serviceManager = serviceManager;
+ this.deviceName = name;
+ this.createIfMatch = null;
+ }
+
+ public DeviceServiceImpl update() {
+ this.updateIfMatch = null;
+ return this;
+ }
+
+ public DeviceService apply() {
+ this.innerObject =
+ serviceManager
+ .serviceClient()
+ .getServices()
+ .updateWithResponse(resourceGroupName, deviceName, this.innerModel(), updateIfMatch, Context.NONE)
+ .getValue();
+ return this;
+ }
+
+ public DeviceService apply(Context context) {
+ this.innerObject =
+ serviceManager
+ .serviceClient()
+ .getServices()
+ .updateWithResponse(resourceGroupName, deviceName, this.innerModel(), updateIfMatch, context)
+ .getValue();
+ return this;
+ }
+
+ DeviceServiceImpl(DeviceServiceInner innerObject, WindowsiotManager serviceManager) {
+ this.innerObject = innerObject;
+ this.serviceManager = serviceManager;
+ this.resourceGroupName = Utils.getValueFromIdByName(innerObject.id(), "resourceGroups");
+ this.deviceName = Utils.getValueFromIdByName(innerObject.id(), "deviceServices");
+ }
+
+ public DeviceService refresh() {
+ this.innerObject =
+ serviceManager
+ .serviceClient()
+ .getServices()
+ .getByResourceGroupWithResponse(resourceGroupName, deviceName, Context.NONE)
+ .getValue();
+ return this;
+ }
+
+ public DeviceService refresh(Context context) {
+ this.innerObject =
+ serviceManager
+ .serviceClient()
+ .getServices()
+ .getByResourceGroupWithResponse(resourceGroupName, deviceName, context)
+ .getValue();
+ return this;
+ }
+
+ public DeviceServiceImpl withRegion(Region location) {
+ this.innerModel().withLocation(location.toString());
+ return this;
+ }
+
+ public DeviceServiceImpl withRegion(String location) {
+ this.innerModel().withLocation(location);
+ return this;
+ }
+
+ public DeviceServiceImpl withTags(Map tags) {
+ this.innerModel().withTags(tags);
+ return this;
+ }
+
+ public DeviceServiceImpl withEtag(String etag) {
+ this.innerModel().withEtag(etag);
+ return this;
+ }
+
+ public DeviceServiceImpl withNotes(String notes) {
+ this.innerModel().withNotes(notes);
+ return this;
+ }
+
+ public DeviceServiceImpl withQuantity(Long quantity) {
+ this.innerModel().withQuantity(quantity);
+ return this;
+ }
+
+ public DeviceServiceImpl withBillingDomainName(String billingDomainName) {
+ this.innerModel().withBillingDomainName(billingDomainName);
+ return this;
+ }
+
+ public DeviceServiceImpl withAdminDomainName(String adminDomainName) {
+ this.innerModel().withAdminDomainName(adminDomainName);
+ return this;
+ }
+
+ public DeviceServiceImpl withIfMatch(String ifMatch) {
+ if (isInCreateMode()) {
+ this.createIfMatch = ifMatch;
+ return this;
+ } else {
+ this.updateIfMatch = ifMatch;
+ return this;
+ }
+ }
+
+ private boolean isInCreateMode() {
+ return this.innerModel().id() == null;
+ }
+}
diff --git a/sdk/windowsiot/azure-resourcemanager-windowsiot/src/main/java/com/azure/resourcemanager/windowsiot/implementation/DeviceServiceNameAvailabilityInfoImpl.java b/sdk/windowsiot/azure-resourcemanager-windowsiot/src/main/java/com/azure/resourcemanager/windowsiot/implementation/DeviceServiceNameAvailabilityInfoImpl.java
new file mode 100644
index 0000000000000..5d468e39d9859
--- /dev/null
+++ b/sdk/windowsiot/azure-resourcemanager-windowsiot/src/main/java/com/azure/resourcemanager/windowsiot/implementation/DeviceServiceNameAvailabilityInfoImpl.java
@@ -0,0 +1,42 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.windowsiot.implementation;
+
+import com.azure.resourcemanager.windowsiot.WindowsiotManager;
+import com.azure.resourcemanager.windowsiot.fluent.models.DeviceServiceNameAvailabilityInfoInner;
+import com.azure.resourcemanager.windowsiot.models.DeviceServiceNameAvailabilityInfo;
+import com.azure.resourcemanager.windowsiot.models.ServiceNameUnavailabilityReason;
+
+public final class DeviceServiceNameAvailabilityInfoImpl implements DeviceServiceNameAvailabilityInfo {
+ private DeviceServiceNameAvailabilityInfoInner innerObject;
+
+ private final WindowsiotManager serviceManager;
+
+ DeviceServiceNameAvailabilityInfoImpl(
+ DeviceServiceNameAvailabilityInfoInner innerObject, WindowsiotManager serviceManager) {
+ this.innerObject = innerObject;
+ this.serviceManager = serviceManager;
+ }
+
+ public Boolean nameAvailable() {
+ return this.innerModel().nameAvailable();
+ }
+
+ public ServiceNameUnavailabilityReason reason() {
+ return this.innerModel().reason();
+ }
+
+ public String message() {
+ return this.innerModel().message();
+ }
+
+ public DeviceServiceNameAvailabilityInfoInner innerModel() {
+ return this.innerObject;
+ }
+
+ private WindowsiotManager manager() {
+ return this.serviceManager;
+ }
+}
diff --git a/sdk/windowsiot/azure-resourcemanager-windowsiot/src/main/java/com/azure/resourcemanager/windowsiot/implementation/DeviceServicesBuilder.java b/sdk/windowsiot/azure-resourcemanager-windowsiot/src/main/java/com/azure/resourcemanager/windowsiot/implementation/DeviceServicesBuilder.java
new file mode 100644
index 0000000000000..6a0d96dea13a6
--- /dev/null
+++ b/sdk/windowsiot/azure-resourcemanager-windowsiot/src/main/java/com/azure/resourcemanager/windowsiot/implementation/DeviceServicesBuilder.java
@@ -0,0 +1,146 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.windowsiot.implementation;
+
+import com.azure.core.annotation.ServiceClientBuilder;
+import com.azure.core.http.HttpPipeline;
+import com.azure.core.http.HttpPipelineBuilder;
+import com.azure.core.http.policy.CookiePolicy;
+import com.azure.core.http.policy.RetryPolicy;
+import com.azure.core.http.policy.UserAgentPolicy;
+import com.azure.core.management.AzureEnvironment;
+import com.azure.core.management.serializer.SerializerFactory;
+import com.azure.core.util.serializer.SerializerAdapter;
+import java.time.Duration;
+
+/** A builder for creating a new instance of the DeviceServicesImpl type. */
+@ServiceClientBuilder(serviceClients = {DeviceServicesImpl.class})
+public final class DeviceServicesBuilder {
+ /*
+ * The subscription identifier.
+ */
+ private String subscriptionId;
+
+ /**
+ * Sets The subscription identifier.
+ *
+ * @param subscriptionId the subscriptionId value.
+ * @return the DeviceServicesBuilder.
+ */
+ public DeviceServicesBuilder subscriptionId(String subscriptionId) {
+ this.subscriptionId = subscriptionId;
+ return this;
+ }
+
+ /*
+ * server parameter
+ */
+ private String endpoint;
+
+ /**
+ * Sets server parameter.
+ *
+ * @param endpoint the endpoint value.
+ * @return the DeviceServicesBuilder.
+ */
+ public DeviceServicesBuilder endpoint(String endpoint) {
+ this.endpoint = endpoint;
+ return this;
+ }
+
+ /*
+ * The environment to connect to
+ */
+ private AzureEnvironment environment;
+
+ /**
+ * Sets The environment to connect to.
+ *
+ * @param environment the environment value.
+ * @return the DeviceServicesBuilder.
+ */
+ public DeviceServicesBuilder environment(AzureEnvironment environment) {
+ this.environment = environment;
+ return this;
+ }
+
+ /*
+ * The default poll interval for long-running operation
+ */
+ private Duration defaultPollInterval;
+
+ /**
+ * Sets The default poll interval for long-running operation.
+ *
+ * @param defaultPollInterval the defaultPollInterval value.
+ * @return the DeviceServicesBuilder.
+ */
+ public DeviceServicesBuilder defaultPollInterval(Duration defaultPollInterval) {
+ this.defaultPollInterval = defaultPollInterval;
+ return this;
+ }
+
+ /*
+ * The HTTP pipeline to send requests through
+ */
+ private HttpPipeline pipeline;
+
+ /**
+ * Sets The HTTP pipeline to send requests through.
+ *
+ * @param pipeline the pipeline value.
+ * @return the DeviceServicesBuilder.
+ */
+ public DeviceServicesBuilder pipeline(HttpPipeline pipeline) {
+ this.pipeline = pipeline;
+ return this;
+ }
+
+ /*
+ * The serializer to serialize an object into a string
+ */
+ private SerializerAdapter serializerAdapter;
+
+ /**
+ * Sets The serializer to serialize an object into a string.
+ *
+ * @param serializerAdapter the serializerAdapter value.
+ * @return the DeviceServicesBuilder.
+ */
+ public DeviceServicesBuilder serializerAdapter(SerializerAdapter serializerAdapter) {
+ this.serializerAdapter = serializerAdapter;
+ return this;
+ }
+
+ /**
+ * Builds an instance of DeviceServicesImpl with the provided parameters.
+ *
+ * @return an instance of DeviceServicesImpl.
+ */
+ public DeviceServicesImpl buildClient() {
+ if (endpoint == null) {
+ this.endpoint = "https://management.azure.com";
+ }
+ if (environment == null) {
+ this.environment = AzureEnvironment.AZURE;
+ }
+ if (defaultPollInterval == null) {
+ this.defaultPollInterval = Duration.ofSeconds(30);
+ }
+ if (pipeline == null) {
+ this.pipeline =
+ new HttpPipelineBuilder()
+ .policies(new UserAgentPolicy(), new RetryPolicy(), new CookiePolicy())
+ .build();
+ }
+ if (serializerAdapter == null) {
+ this.serializerAdapter = SerializerFactory.createDefaultManagementSerializerAdapter();
+ }
+ DeviceServicesImpl client =
+ new DeviceServicesImpl(
+ pipeline, serializerAdapter, defaultPollInterval, environment, subscriptionId, endpoint);
+ return client;
+ }
+}
diff --git a/sdk/windowsiot/azure-resourcemanager-windowsiot/src/main/java/com/azure/resourcemanager/windowsiot/implementation/DeviceServicesImpl.java b/sdk/windowsiot/azure-resourcemanager-windowsiot/src/main/java/com/azure/resourcemanager/windowsiot/implementation/DeviceServicesImpl.java
new file mode 100644
index 0000000000000..d42e8d9b5e2e2
--- /dev/null
+++ b/sdk/windowsiot/azure-resourcemanager-windowsiot/src/main/java/com/azure/resourcemanager/windowsiot/implementation/DeviceServicesImpl.java
@@ -0,0 +1,307 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.windowsiot.implementation;
+
+import com.azure.core.annotation.ServiceClient;
+import com.azure.core.http.HttpHeaders;
+import com.azure.core.http.HttpPipeline;
+import com.azure.core.http.HttpResponse;
+import com.azure.core.http.rest.Response;
+import com.azure.core.management.AzureEnvironment;
+import com.azure.core.management.exception.ManagementError;
+import com.azure.core.management.exception.ManagementException;
+import com.azure.core.management.polling.PollResult;
+import com.azure.core.management.polling.PollerFactory;
+import com.azure.core.util.Context;
+import com.azure.core.util.logging.ClientLogger;
+import com.azure.core.util.polling.AsyncPollResponse;
+import com.azure.core.util.polling.LongRunningOperationStatus;
+import com.azure.core.util.polling.PollerFlux;
+import com.azure.core.util.serializer.SerializerAdapter;
+import com.azure.core.util.serializer.SerializerEncoding;
+import com.azure.resourcemanager.windowsiot.fluent.DeviceServices;
+import com.azure.resourcemanager.windowsiot.fluent.OperationsClient;
+import com.azure.resourcemanager.windowsiot.fluent.ServicesClient;
+import java.io.IOException;
+import java.lang.reflect.Type;
+import java.nio.ByteBuffer;
+import java.nio.charset.Charset;
+import java.nio.charset.StandardCharsets;
+import java.time.Duration;
+import java.util.Map;
+import reactor.core.publisher.Flux;
+import reactor.core.publisher.Mono;
+
+/** Initializes a new instance of the DeviceServicesImpl type. */
+@ServiceClient(builder = DeviceServicesBuilder.class)
+public final class DeviceServicesImpl implements DeviceServices {
+ private final ClientLogger logger = new ClientLogger(DeviceServicesImpl.class);
+
+ /** The subscription identifier. */
+ private final String subscriptionId;
+
+ /**
+ * Gets The subscription identifier.
+ *
+ * @return the subscriptionId value.
+ */
+ public String getSubscriptionId() {
+ return this.subscriptionId;
+ }
+
+ /** server parameter. */
+ private final String endpoint;
+
+ /**
+ * Gets server parameter.
+ *
+ * @return the endpoint value.
+ */
+ public String getEndpoint() {
+ return this.endpoint;
+ }
+
+ /** Api Version. */
+ private final String apiVersion;
+
+ /**
+ * Gets Api Version.
+ *
+ * @return the apiVersion value.
+ */
+ public String getApiVersion() {
+ return this.apiVersion;
+ }
+
+ /** The HTTP pipeline to send requests through. */
+ private final HttpPipeline httpPipeline;
+
+ /**
+ * Gets The HTTP pipeline to send requests through.
+ *
+ * @return the httpPipeline value.
+ */
+ public HttpPipeline getHttpPipeline() {
+ return this.httpPipeline;
+ }
+
+ /** The serializer to serialize an object into a string. */
+ private final SerializerAdapter serializerAdapter;
+
+ /**
+ * Gets The serializer to serialize an object into a string.
+ *
+ * @return the serializerAdapter value.
+ */
+ SerializerAdapter getSerializerAdapter() {
+ return this.serializerAdapter;
+ }
+
+ /** The default poll interval for long-running operation. */
+ private final Duration defaultPollInterval;
+
+ /**
+ * Gets The default poll interval for long-running operation.
+ *
+ * @return the defaultPollInterval value.
+ */
+ public Duration getDefaultPollInterval() {
+ return this.defaultPollInterval;
+ }
+
+ /** The OperationsClient object to access its operations. */
+ private final OperationsClient operations;
+
+ /**
+ * Gets the OperationsClient object to access its operations.
+ *
+ * @return the OperationsClient object.
+ */
+ public OperationsClient getOperations() {
+ return this.operations;
+ }
+
+ /** The ServicesClient object to access its operations. */
+ private final ServicesClient services;
+
+ /**
+ * Gets the ServicesClient object to access its operations.
+ *
+ * @return the ServicesClient object.
+ */
+ public ServicesClient getServices() {
+ return this.services;
+ }
+
+ /**
+ * Initializes an instance of DeviceServices client.
+ *
+ * @param httpPipeline The HTTP pipeline to send requests through.
+ * @param serializerAdapter The serializer to serialize an object into a string.
+ * @param defaultPollInterval The default poll interval for long-running operation.
+ * @param environment The Azure environment.
+ * @param subscriptionId The subscription identifier.
+ * @param endpoint server parameter.
+ */
+ DeviceServicesImpl(
+ HttpPipeline httpPipeline,
+ SerializerAdapter serializerAdapter,
+ Duration defaultPollInterval,
+ AzureEnvironment environment,
+ String subscriptionId,
+ String endpoint) {
+ this.httpPipeline = httpPipeline;
+ this.serializerAdapter = serializerAdapter;
+ this.defaultPollInterval = defaultPollInterval;
+ this.subscriptionId = subscriptionId;
+ this.endpoint = endpoint;
+ this.apiVersion = "2019-06-01";
+ this.operations = new OperationsClientImpl(this);
+ this.services = new ServicesClientImpl(this);
+ }
+
+ /**
+ * Gets default client context.
+ *
+ * @return the default client context.
+ */
+ public Context getContext() {
+ return Context.NONE;
+ }
+
+ /**
+ * Merges default client context with provided context.
+ *
+ * @param context the context to be merged with default client context.
+ * @return the merged context.
+ */
+ public Context mergeContext(Context context) {
+ for (Map.Entry