scopes = new ArrayList<>();
+ private RetryPolicy retryPolicy;
+ private RetryOptions retryOptions;
+ 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;
+ }
+
+ /**
+ * Adds the scope to permission sets.
+ *
+ * @param scope the scope.
+ * @return the configurable object itself.
+ */
+ public Configurable withScope(String scope) {
+ this.scopes.add(Objects.requireNonNull(scope, "'scope' 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 retry options for the HTTP pipeline retry policy.
+ *
+ * This setting has no effect, if retry policy is set via {@link #withRetryPolicy(RetryPolicy)}.
+ *
+ * @param retryOptions the retry options for the HTTP pipeline retry policy.
+ * @return the configurable object itself.
+ */
+ public Configurable withRetryOptions(RetryOptions retryOptions) {
+ this.retryOptions = Objects.requireNonNull(retryOptions, "'retryOptions' 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, "'defaultPollInterval' cannot be null.");
+ if (this.defaultPollInterval.isNegative()) {
+ throw LOGGER
+ .logExceptionAsError(new IllegalArgumentException("'defaultPollInterval' cannot be negative"));
+ }
+ return this;
+ }
+
+ /**
+ * Creates an instance of Vi service API entry point.
+ *
+ * @param credential the credential to use.
+ * @param profile the Azure profile for client.
+ * @return the Vi service API instance.
+ */
+ public ViManager authenticate(TokenCredential credential, AzureProfile profile) {
+ Objects.requireNonNull(credential, "'credential' cannot be null.");
+ Objects.requireNonNull(profile, "'profile' cannot be null.");
+
+ StringBuilder userAgentBuilder = new StringBuilder();
+ userAgentBuilder
+ .append("azsdk-java")
+ .append("-")
+ .append("com.azure.resourcemanager.vi")
+ .append("/")
+ .append("1.0.0-beta.1");
+ if (!Configuration.getGlobalConfiguration().get("AZURE_TELEMETRY_DISABLED", false)) {
+ userAgentBuilder
+ .append(" (")
+ .append(Configuration.getGlobalConfiguration().get("java.version"))
+ .append("; ")
+ .append(Configuration.getGlobalConfiguration().get("os.name"))
+ .append("; ")
+ .append(Configuration.getGlobalConfiguration().get("os.version"))
+ .append("; auto-generated)");
+ } else {
+ userAgentBuilder.append(" (auto-generated)");
+ }
+
+ if (scopes.isEmpty()) {
+ scopes.add(profile.getEnvironment().getManagementEndpoint() + "/.default");
+ }
+ if (retryPolicy == null) {
+ if (retryOptions != null) {
+ retryPolicy = new RetryPolicy(retryOptions);
+ } else {
+ retryPolicy = new RetryPolicy("Retry-After", ChronoUnit.SECONDS);
+ }
+ }
+ List policies = new ArrayList<>();
+ policies.add(new UserAgentPolicy(userAgentBuilder.toString()));
+ policies.add(new AddHeadersFromContextPolicy());
+ policies.add(new RequestIdPolicy());
+ policies
+ .addAll(
+ this
+ .policies
+ .stream()
+ .filter(p -> p.getPipelinePosition() == HttpPipelinePosition.PER_CALL)
+ .collect(Collectors.toList()));
+ HttpPolicyProviders.addBeforeRetryPolicies(policies);
+ policies.add(retryPolicy);
+ policies.add(new AddDatePolicy());
+ policies.add(new ArmChallengeAuthenticationPolicy(credential, scopes.toArray(new String[0])));
+ policies
+ .addAll(
+ this
+ .policies
+ .stream()
+ .filter(p -> p.getPipelinePosition() == HttpPipelinePosition.PER_RETRY)
+ .collect(Collectors.toList()));
+ HttpPolicyProviders.addAfterRetryPolicies(policies);
+ policies.add(new HttpLoggingPolicy(httpLogOptions));
+ HttpPipeline httpPipeline =
+ new HttpPipelineBuilder()
+ .httpClient(httpClient)
+ .policies(policies.toArray(new HttpPipelinePolicy[0]))
+ .build();
+ return new ViManager(httpPipeline, profile, defaultPollInterval);
+ }
+ }
+
+ /**
+ * Gets the resource collection API of Operations.
+ *
+ * @return Resource collection API of Operations.
+ */
+ public Operations operations() {
+ if (this.operations == null) {
+ this.operations = new OperationsImpl(clientObject.getOperations(), this);
+ }
+ return operations;
+ }
+
+ /**
+ * Gets the resource collection API of Accounts. It manages Account.
+ *
+ * @return Resource collection API of Accounts.
+ */
+ public Accounts accounts() {
+ if (this.accounts == null) {
+ this.accounts = new AccountsImpl(clientObject.getAccounts(), this);
+ }
+ return accounts;
+ }
+
+ /**
+ * Gets the resource collection API of UserClassicAccounts.
+ *
+ * @return Resource collection API of UserClassicAccounts.
+ */
+ public UserClassicAccounts userClassicAccounts() {
+ if (this.userClassicAccounts == null) {
+ this.userClassicAccounts = new UserClassicAccountsImpl(clientObject.getUserClassicAccounts(), this);
+ }
+ return userClassicAccounts;
+ }
+
+ /**
+ * Gets the resource collection API of ClassicAccounts.
+ *
+ * @return Resource collection API of ClassicAccounts.
+ */
+ public ClassicAccounts classicAccounts() {
+ if (this.classicAccounts == null) {
+ this.classicAccounts = new ClassicAccountsImpl(clientObject.getClassicAccounts(), this);
+ }
+ return classicAccounts;
+ }
+
+ /**
+ * Gets the resource collection API of Generates.
+ *
+ * @return Resource collection API of Generates.
+ */
+ public Generates generates() {
+ if (this.generates == null) {
+ this.generates = new GeneratesImpl(clientObject.getGenerates(), this);
+ }
+ return generates;
+ }
+
+ /**
+ * @return Wrapped service client ViManagementClient providing direct access to the underlying auto-generated API
+ * implementation, based on Azure REST API.
+ */
+ public ViManagementClient serviceClient() {
+ return this.clientObject;
+ }
+}
diff --git a/sdk/vi/azure-resourcemanager-vi/src/main/java/com/azure/resourcemanager/vi/fluent/AccountsClient.java b/sdk/vi/azure-resourcemanager-vi/src/main/java/com/azure/resourcemanager/vi/fluent/AccountsClient.java
new file mode 100644
index 000000000000..a37b0217e3a1
--- /dev/null
+++ b/sdk/vi/azure-resourcemanager-vi/src/main/java/com/azure/resourcemanager/vi/fluent/AccountsClient.java
@@ -0,0 +1,208 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.vi.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.vi.fluent.models.AccountInner;
+import com.azure.resourcemanager.vi.fluent.models.CheckNameAvailabilityResultInner;
+import com.azure.resourcemanager.vi.models.AccountCheckNameAvailabilityParameters;
+import com.azure.resourcemanager.vi.models.AccountPatch;
+
+/** An instance of this class provides access to all the operations defined in AccountsClient. */
+public interface AccountsClient {
+ /**
+ * Checks that the Video Indexer account name is valid and is not already in use.
+ *
+ * @param checkNameAvailabilityParameters The name of the Video Indexer account. Name must be unique globally.
+ * @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 CheckNameAvailability operation response.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ CheckNameAvailabilityResultInner checkNameAvailability(
+ AccountCheckNameAvailabilityParameters checkNameAvailabilityParameters);
+
+ /**
+ * Checks that the Video Indexer account name is valid and is not already in use.
+ *
+ * @param checkNameAvailabilityParameters The name of the Video Indexer account. Name must be unique globally.
+ * @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 CheckNameAvailability operation response along with {@link Response}.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ Response checkNameAvailabilityWithResponse(
+ AccountCheckNameAvailabilityParameters checkNameAvailabilityParameters, Context context);
+
+ /**
+ * List all Azure Video Indexer accounts available under the 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 the list operation response, that contains the data pools and their properties as paginated response with
+ * {@link PagedIterable}.
+ */
+ @ServiceMethod(returns = ReturnType.COLLECTION)
+ PagedIterable list();
+
+ /**
+ * List all Azure Video Indexer accounts available under the 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 the list operation response, that contains the data pools and their properties as paginated response with
+ * {@link PagedIterable}.
+ */
+ @ServiceMethod(returns = ReturnType.COLLECTION)
+ PagedIterable list(Context context);
+
+ /**
+ * List all Azure Video Indexer accounts available under the resource group.
+ *
+ * @param resourceGroupName The name of the resource group. The name is case insensitive.
+ * @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 list operation response, that contains the data pools and their properties as paginated response with
+ * {@link PagedIterable}.
+ */
+ @ServiceMethod(returns = ReturnType.COLLECTION)
+ PagedIterable listByResourceGroup(String resourceGroupName);
+
+ /**
+ * List all Azure Video Indexer accounts available under the resource group.
+ *
+ * @param resourceGroupName The name of the resource group. The name is case insensitive.
+ * @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 list operation response, that contains the data pools and their properties as paginated response with
+ * {@link PagedIterable}.
+ */
+ @ServiceMethod(returns = ReturnType.COLLECTION)
+ PagedIterable listByResourceGroup(String resourceGroupName, Context context);
+
+ /**
+ * Gets the properties of an Azure Video Indexer account.
+ *
+ * @param resourceGroupName The name of the resource group. The name is case insensitive.
+ * @param accountName The name of the Azure Video Indexer account.
+ * @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 of an Azure Video Indexer account.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ AccountInner getByResourceGroup(String resourceGroupName, String accountName);
+
+ /**
+ * Gets the properties of an Azure Video Indexer account.
+ *
+ * @param resourceGroupName The name of the resource group. The name is case insensitive.
+ * @param accountName The name of the Azure Video Indexer account.
+ * @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 of an Azure Video Indexer account along with {@link Response}.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ Response getByResourceGroupWithResponse(
+ String resourceGroupName, String accountName, Context context);
+
+ /**
+ * Updates the properties of an existing Azure Video Indexer account.
+ *
+ * @param resourceGroupName The name of the resource group. The name is case insensitive.
+ * @param accountName The name of the Azure Video Indexer account.
+ * @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 an Azure Video Indexer account.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ AccountInner update(String resourceGroupName, String accountName);
+
+ /**
+ * Updates the properties of an existing Azure Video Indexer account.
+ *
+ * @param resourceGroupName The name of the resource group. The name is case insensitive.
+ * @param accountName The name of the Azure Video Indexer account.
+ * @param parameters The parameters to provide for the current Azure Video Indexer account.
+ * @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 an Azure Video Indexer account along with {@link Response}.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ Response updateWithResponse(
+ String resourceGroupName, String accountName, AccountPatch parameters, Context context);
+
+ /**
+ * Creates or updates an Azure Video Indexer account.
+ *
+ * @param resourceGroupName The name of the resource group. The name is case insensitive.
+ * @param accountName The name of the Azure Video Indexer account.
+ * @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 an Azure Video Indexer account.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ AccountInner createOrUpdate(String resourceGroupName, String accountName);
+
+ /**
+ * Creates or updates an Azure Video Indexer account.
+ *
+ * @param resourceGroupName The name of the resource group. The name is case insensitive.
+ * @param accountName The name of the Azure Video Indexer account.
+ * @param parameters The parameters to provide for the Azure Video Indexer account.
+ * @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 an Azure Video Indexer account along with {@link Response}.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ Response createOrUpdateWithResponse(
+ String resourceGroupName, String accountName, AccountInner parameters, Context context);
+
+ /**
+ * Delete an Azure Video Indexer account.
+ *
+ * @param resourceGroupName The name of the resource group. The name is case insensitive.
+ * @param accountName The name of the Azure Video Indexer account.
+ * @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.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ void delete(String resourceGroupName, String accountName);
+
+ /**
+ * Delete an Azure Video Indexer account.
+ *
+ * @param resourceGroupName The name of the resource group. The name is case insensitive.
+ * @param accountName The name of the Azure Video Indexer account.
+ * @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 {@link Response}.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ Response deleteWithResponse(String resourceGroupName, String accountName, Context context);
+}
diff --git a/sdk/vi/azure-resourcemanager-vi/src/main/java/com/azure/resourcemanager/vi/fluent/ClassicAccountsClient.java b/sdk/vi/azure-resourcemanager-vi/src/main/java/com/azure/resourcemanager/vi/fluent/ClassicAccountsClient.java
new file mode 100644
index 000000000000..4875bc528ade
--- /dev/null
+++ b/sdk/vi/azure-resourcemanager-vi/src/main/java/com/azure/resourcemanager/vi/fluent/ClassicAccountsClient.java
@@ -0,0 +1,41 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.vi.fluent;
+
+import com.azure.core.annotation.ReturnType;
+import com.azure.core.annotation.ServiceMethod;
+import com.azure.core.http.rest.Response;
+import com.azure.core.util.Context;
+import com.azure.resourcemanager.vi.fluent.models.ClassicAccountInner;
+
+/** An instance of this class provides access to all the operations defined in ClassicAccountsClient. */
+public interface ClassicAccountsClient {
+ /**
+ * Gets the properties of an Azure Video Indexer Classic account.
+ *
+ * @param location The name of Azure region.
+ * @param accountName The name of the Azure Video Indexer account.
+ * @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 of an Azure Video Indexer Classic account.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ ClassicAccountInner getDetails(String location, String accountName);
+
+ /**
+ * Gets the properties of an Azure Video Indexer Classic account.
+ *
+ * @param location The name of Azure region.
+ * @param accountName The name of the Azure Video Indexer account.
+ * @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 of an Azure Video Indexer Classic account along with {@link Response}.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ Response getDetailsWithResponse(String location, String accountName, Context context);
+}
diff --git a/sdk/vi/azure-resourcemanager-vi/src/main/java/com/azure/resourcemanager/vi/fluent/GeneratesClient.java b/sdk/vi/azure-resourcemanager-vi/src/main/java/com/azure/resourcemanager/vi/fluent/GeneratesClient.java
new file mode 100644
index 000000000000..ff81039f3d57
--- /dev/null
+++ b/sdk/vi/azure-resourcemanager-vi/src/main/java/com/azure/resourcemanager/vi/fluent/GeneratesClient.java
@@ -0,0 +1,44 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.vi.fluent;
+
+import com.azure.core.annotation.ReturnType;
+import com.azure.core.annotation.ServiceMethod;
+import com.azure.core.http.rest.Response;
+import com.azure.core.util.Context;
+import com.azure.resourcemanager.vi.fluent.models.AccessTokenInner;
+import com.azure.resourcemanager.vi.models.GenerateAccessTokenParameters;
+
+/** An instance of this class provides access to all the operations defined in GeneratesClient. */
+public interface GeneratesClient {
+ /**
+ * Generate an Azure Video Indexer access token.
+ *
+ * @param resourceGroupName The name of the resource group. The name is case insensitive.
+ * @param accountName The name of the Azure Video Indexer account.
+ * @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 azure Video Indexer access token.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ AccessTokenInner accessToken(String resourceGroupName, String accountName);
+
+ /**
+ * Generate an Azure Video Indexer access token.
+ *
+ * @param resourceGroupName The name of the resource group. The name is case insensitive.
+ * @param accountName The name of the Azure Video Indexer account.
+ * @param parameters The parameters for generating access token.
+ * @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 azure Video Indexer access token along with {@link Response}.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ Response accessTokenWithResponse(
+ String resourceGroupName, String accountName, GenerateAccessTokenParameters parameters, Context context);
+}
diff --git a/sdk/vi/azure-resourcemanager-vi/src/main/java/com/azure/resourcemanager/vi/fluent/OperationsClient.java b/sdk/vi/azure-resourcemanager-vi/src/main/java/com/azure/resourcemanager/vi/fluent/OperationsClient.java
new file mode 100644
index 000000000000..bbc51afb93d0
--- /dev/null
+++ b/sdk/vi/azure-resourcemanager-vi/src/main/java/com/azure/resourcemanager/vi/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.vi.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.vi.fluent.models.OperationInner;
+
+/** An instance of this class provides access to all the operations defined in OperationsClient. */
+public interface OperationsClient {
+ /**
+ * Lists all of the available Azure Video Indexer provider 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 available operations of the service as paginated response with {@link PagedIterable}.
+ */
+ @ServiceMethod(returns = ReturnType.COLLECTION)
+ PagedIterable list();
+
+ /**
+ * Lists all of the available Azure Video Indexer provider 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 available operations of the service as paginated response with {@link PagedIterable}.
+ */
+ @ServiceMethod(returns = ReturnType.COLLECTION)
+ PagedIterable list(Context context);
+}
diff --git a/sdk/vi/azure-resourcemanager-vi/src/main/java/com/azure/resourcemanager/vi/fluent/UserClassicAccountsClient.java b/sdk/vi/azure-resourcemanager-vi/src/main/java/com/azure/resourcemanager/vi/fluent/UserClassicAccountsClient.java
new file mode 100644
index 000000000000..0672bb117a56
--- /dev/null
+++ b/sdk/vi/azure-resourcemanager-vi/src/main/java/com/azure/resourcemanager/vi/fluent/UserClassicAccountsClient.java
@@ -0,0 +1,39 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.vi.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.vi.fluent.models.ClassicAccountSlimInner;
+
+/** An instance of this class provides access to all the operations defined in UserClassicAccountsClient. */
+public interface UserClassicAccountsClient {
+ /**
+ * Lists all Azure Video Indexer classic accounts.
+ *
+ * @param location The name of Azure region.
+ * @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 list of user classic accounts as paginated response with {@link PagedIterable}.
+ */
+ @ServiceMethod(returns = ReturnType.COLLECTION)
+ PagedIterable list(String location);
+
+ /**
+ * Lists all Azure Video Indexer classic accounts.
+ *
+ * @param location The name of Azure region.
+ * @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 list of user classic accounts as paginated response with {@link PagedIterable}.
+ */
+ @ServiceMethod(returns = ReturnType.COLLECTION)
+ PagedIterable list(String location, Context context);
+}
diff --git a/sdk/vi/azure-resourcemanager-vi/src/main/java/com/azure/resourcemanager/vi/fluent/ViManagementClient.java b/sdk/vi/azure-resourcemanager-vi/src/main/java/com/azure/resourcemanager/vi/fluent/ViManagementClient.java
new file mode 100644
index 000000000000..729c853ef097
--- /dev/null
+++ b/sdk/vi/azure-resourcemanager-vi/src/main/java/com/azure/resourcemanager/vi/fluent/ViManagementClient.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.vi.fluent;
+
+import com.azure.core.http.HttpPipeline;
+import java.time.Duration;
+
+/** The interface for ViManagementClient class. */
+public interface ViManagementClient {
+ /**
+ * Gets The ID of the target subscription.
+ *
+ * @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 AccountsClient object to access its operations.
+ *
+ * @return the AccountsClient object.
+ */
+ AccountsClient getAccounts();
+
+ /**
+ * Gets the UserClassicAccountsClient object to access its operations.
+ *
+ * @return the UserClassicAccountsClient object.
+ */
+ UserClassicAccountsClient getUserClassicAccounts();
+
+ /**
+ * Gets the ClassicAccountsClient object to access its operations.
+ *
+ * @return the ClassicAccountsClient object.
+ */
+ ClassicAccountsClient getClassicAccounts();
+
+ /**
+ * Gets the GeneratesClient object to access its operations.
+ *
+ * @return the GeneratesClient object.
+ */
+ GeneratesClient getGenerates();
+}
diff --git a/sdk/vi/azure-resourcemanager-vi/src/main/java/com/azure/resourcemanager/vi/fluent/models/AccessTokenInner.java b/sdk/vi/azure-resourcemanager-vi/src/main/java/com/azure/resourcemanager/vi/fluent/models/AccessTokenInner.java
new file mode 100644
index 000000000000..5014f93b795e
--- /dev/null
+++ b/sdk/vi/azure-resourcemanager-vi/src/main/java/com/azure/resourcemanager/vi/fluent/models/AccessTokenInner.java
@@ -0,0 +1,35 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.vi.fluent.models;
+
+import com.azure.core.annotation.Immutable;
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/** Azure Video Indexer access token. */
+@Immutable
+public final class AccessTokenInner {
+ /*
+ * The access token.
+ */
+ @JsonProperty(value = "accessToken", access = JsonProperty.Access.WRITE_ONLY)
+ private String accessToken;
+
+ /**
+ * Get the accessToken property: The access token.
+ *
+ * @return the accessToken value.
+ */
+ public String accessToken() {
+ return this.accessToken;
+ }
+
+ /**
+ * Validates the instance.
+ *
+ * @throws IllegalArgumentException thrown if the instance is not valid.
+ */
+ public void validate() {
+ }
+}
diff --git a/sdk/vi/azure-resourcemanager-vi/src/main/java/com/azure/resourcemanager/vi/fluent/models/AccountInner.java b/sdk/vi/azure-resourcemanager-vi/src/main/java/com/azure/resourcemanager/vi/fluent/models/AccountInner.java
new file mode 100644
index 000000000000..2344c3572f3c
--- /dev/null
+++ b/sdk/vi/azure-resourcemanager-vi/src/main/java/com/azure/resourcemanager/vi/fluent/models/AccountInner.java
@@ -0,0 +1,187 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.vi.fluent.models;
+
+import com.azure.core.annotation.Fluent;
+import com.azure.core.management.Resource;
+import com.azure.core.management.SystemData;
+import com.azure.resourcemanager.vi.models.ManagedServiceIdentity;
+import com.azure.resourcemanager.vi.models.MediaServicesForPutRequest;
+import com.azure.resourcemanager.vi.models.ProvisioningState;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import java.util.Map;
+
+/** An Azure Video Indexer account. */
+@Fluent
+public final class AccountInner extends Resource {
+ /*
+ * List of account properties
+ */
+ @JsonProperty(value = "properties")
+ private AccountPropertiesForPutRequest innerProperties;
+
+ /*
+ * Managed service identity (system assigned and/or user assigned identities)
+ */
+ @JsonProperty(value = "identity")
+ private ManagedServiceIdentity identity;
+
+ /*
+ * The system meta data relating to this resource.
+ */
+ @JsonProperty(value = "systemData", access = JsonProperty.Access.WRITE_ONLY)
+ private SystemData systemData;
+
+ /**
+ * Get the innerProperties property: List of account properties.
+ *
+ * @return the innerProperties value.
+ */
+ private AccountPropertiesForPutRequest innerProperties() {
+ return this.innerProperties;
+ }
+
+ /**
+ * Get the identity property: Managed service identity (system assigned and/or user assigned identities).
+ *
+ * @return the identity value.
+ */
+ public ManagedServiceIdentity identity() {
+ return this.identity;
+ }
+
+ /**
+ * Set the identity property: Managed service identity (system assigned and/or user assigned identities).
+ *
+ * @param identity the identity value to set.
+ * @return the AccountInner object itself.
+ */
+ public AccountInner withIdentity(ManagedServiceIdentity identity) {
+ this.identity = identity;
+ return this;
+ }
+
+ /**
+ * Get the systemData property: The system meta data relating to this resource.
+ *
+ * @return the systemData value.
+ */
+ public SystemData systemData() {
+ return this.systemData;
+ }
+
+ /** {@inheritDoc} */
+ @Override
+ public AccountInner withLocation(String location) {
+ super.withLocation(location);
+ return this;
+ }
+
+ /** {@inheritDoc} */
+ @Override
+ public AccountInner withTags(Map tags) {
+ super.withTags(tags);
+ return this;
+ }
+
+ /**
+ * Get the tenantId property: The account's tenant id.
+ *
+ * @return the tenantId value.
+ */
+ public String tenantId() {
+ return this.innerProperties() == null ? null : this.innerProperties().tenantId();
+ }
+
+ /**
+ * Get the accountId property: The account's data-plane ID. This can be set only when connecting an existing classic
+ * account.
+ *
+ * @return the accountId value.
+ */
+ public String accountId() {
+ return this.innerProperties() == null ? null : this.innerProperties().accountId();
+ }
+
+ /**
+ * Set the accountId property: The account's data-plane ID. This can be set only when connecting an existing classic
+ * account.
+ *
+ * @param accountId the accountId value to set.
+ * @return the AccountInner object itself.
+ */
+ public AccountInner withAccountId(String accountId) {
+ if (this.innerProperties() == null) {
+ this.innerProperties = new AccountPropertiesForPutRequest();
+ }
+ this.innerProperties().withAccountId(accountId);
+ return this;
+ }
+
+ /**
+ * Get the accountName property: The account's name.
+ *
+ * @return the accountName value.
+ */
+ public String accountName() {
+ return this.innerProperties() == null ? null : this.innerProperties().accountName();
+ }
+
+ /**
+ * Get the mediaServices property: The media services details.
+ *
+ * @return the mediaServices value.
+ */
+ public MediaServicesForPutRequest mediaServices() {
+ return this.innerProperties() == null ? null : this.innerProperties().mediaServices();
+ }
+
+ /**
+ * Set the mediaServices property: The media services details.
+ *
+ * @param mediaServices the mediaServices value to set.
+ * @return the AccountInner object itself.
+ */
+ public AccountInner withMediaServices(MediaServicesForPutRequest mediaServices) {
+ if (this.innerProperties() == null) {
+ this.innerProperties = new AccountPropertiesForPutRequest();
+ }
+ this.innerProperties().withMediaServices(mediaServices);
+ return this;
+ }
+
+ /**
+ * Get the totalSecondsIndexed property: An integer representing the total seconds that have been indexed on the
+ * account.
+ *
+ * @return the totalSecondsIndexed value.
+ */
+ public Integer totalSecondsIndexed() {
+ return this.innerProperties() == null ? null : this.innerProperties().totalSecondsIndexed();
+ }
+
+ /**
+ * Get the provisioningState property: Gets the status of the account at the time the operation was called.
+ *
+ * @return the provisioningState value.
+ */
+ public ProvisioningState provisioningState() {
+ return this.innerProperties() == null ? null : this.innerProperties().provisioningState();
+ }
+
+ /**
+ * Validates the instance.
+ *
+ * @throws IllegalArgumentException thrown if the instance is not valid.
+ */
+ public void validate() {
+ if (innerProperties() != null) {
+ innerProperties().validate();
+ }
+ if (identity() != null) {
+ identity().validate();
+ }
+ }
+}
diff --git a/sdk/vi/azure-resourcemanager-vi/src/main/java/com/azure/resourcemanager/vi/fluent/models/AccountPropertiesForPatchRequest.java b/sdk/vi/azure-resourcemanager-vi/src/main/java/com/azure/resourcemanager/vi/fluent/models/AccountPropertiesForPatchRequest.java
new file mode 100644
index 000000000000..dcec68e1c883
--- /dev/null
+++ b/sdk/vi/azure-resourcemanager-vi/src/main/java/com/azure/resourcemanager/vi/fluent/models/AccountPropertiesForPatchRequest.java
@@ -0,0 +1,96 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.vi.fluent.models;
+
+import com.azure.core.annotation.Fluent;
+import com.azure.resourcemanager.vi.models.MediaServicesForPatchRequest;
+import com.azure.resourcemanager.vi.models.ProvisioningState;
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/** Azure Video Indexer account properties. */
+@Fluent
+public final class AccountPropertiesForPatchRequest {
+ /*
+ * The account's tenant id
+ */
+ @JsonProperty(value = "tenantId", access = JsonProperty.Access.WRITE_ONLY)
+ private String tenantId;
+
+ /*
+ * The account's data-plane ID
+ */
+ @JsonProperty(value = "accountId", access = JsonProperty.Access.WRITE_ONLY)
+ private String accountId;
+
+ /*
+ * The media services details
+ */
+ @JsonProperty(value = "mediaServices")
+ private MediaServicesForPatchRequest mediaServices;
+
+ /*
+ * Gets the status of the account at the time the operation was called.
+ */
+ @JsonProperty(value = "provisioningState", access = JsonProperty.Access.WRITE_ONLY)
+ private ProvisioningState provisioningState;
+
+ /**
+ * Get the tenantId property: The account's tenant id.
+ *
+ * @return the tenantId value.
+ */
+ public String tenantId() {
+ return this.tenantId;
+ }
+
+ /**
+ * Get the accountId property: The account's data-plane ID.
+ *
+ * @return the accountId value.
+ */
+ public String accountId() {
+ return this.accountId;
+ }
+
+ /**
+ * Get the mediaServices property: The media services details.
+ *
+ * @return the mediaServices value.
+ */
+ public MediaServicesForPatchRequest mediaServices() {
+ return this.mediaServices;
+ }
+
+ /**
+ * Set the mediaServices property: The media services details.
+ *
+ * @param mediaServices the mediaServices value to set.
+ * @return the AccountPropertiesForPatchRequest object itself.
+ */
+ public AccountPropertiesForPatchRequest withMediaServices(MediaServicesForPatchRequest mediaServices) {
+ this.mediaServices = mediaServices;
+ return this;
+ }
+
+ /**
+ * Get the provisioningState property: Gets the status of the account at the time the operation was called.
+ *
+ * @return the provisioningState value.
+ */
+ public ProvisioningState provisioningState() {
+ return this.provisioningState;
+ }
+
+ /**
+ * Validates the instance.
+ *
+ * @throws IllegalArgumentException thrown if the instance is not valid.
+ */
+ public void validate() {
+ if (mediaServices() != null) {
+ mediaServices().validate();
+ }
+ }
+}
diff --git a/sdk/vi/azure-resourcemanager-vi/src/main/java/com/azure/resourcemanager/vi/fluent/models/AccountPropertiesForPutRequest.java b/sdk/vi/azure-resourcemanager-vi/src/main/java/com/azure/resourcemanager/vi/fluent/models/AccountPropertiesForPutRequest.java
new file mode 100644
index 000000000000..f51bcb77c562
--- /dev/null
+++ b/sdk/vi/azure-resourcemanager-vi/src/main/java/com/azure/resourcemanager/vi/fluent/models/AccountPropertiesForPutRequest.java
@@ -0,0 +1,140 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.vi.fluent.models;
+
+import com.azure.core.annotation.Fluent;
+import com.azure.resourcemanager.vi.models.MediaServicesForPutRequest;
+import com.azure.resourcemanager.vi.models.ProvisioningState;
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/** Azure Video Indexer account properties. */
+@Fluent
+public final class AccountPropertiesForPutRequest {
+ /*
+ * The account's tenant id
+ */
+ @JsonProperty(value = "tenantId", access = JsonProperty.Access.WRITE_ONLY)
+ private String tenantId;
+
+ /*
+ * The account's data-plane ID. This can be set only when connecting an existing classic account
+ */
+ @JsonProperty(value = "accountId")
+ private String accountId;
+
+ /*
+ * The account's name
+ */
+ @JsonProperty(value = "accountName", access = JsonProperty.Access.WRITE_ONLY)
+ private String accountName;
+
+ /*
+ * The media services details
+ */
+ @JsonProperty(value = "mediaServices")
+ private MediaServicesForPutRequest mediaServices;
+
+ /*
+ * An integer representing the total seconds that have been indexed on the account
+ */
+ @JsonProperty(value = "totalSecondsIndexed", access = JsonProperty.Access.WRITE_ONLY)
+ private Integer totalSecondsIndexed;
+
+ /*
+ * Gets the status of the account at the time the operation was called.
+ */
+ @JsonProperty(value = "provisioningState", access = JsonProperty.Access.WRITE_ONLY)
+ private ProvisioningState provisioningState;
+
+ /**
+ * Get the tenantId property: The account's tenant id.
+ *
+ * @return the tenantId value.
+ */
+ public String tenantId() {
+ return this.tenantId;
+ }
+
+ /**
+ * Get the accountId property: The account's data-plane ID. This can be set only when connecting an existing classic
+ * account.
+ *
+ * @return the accountId value.
+ */
+ public String accountId() {
+ return this.accountId;
+ }
+
+ /**
+ * Set the accountId property: The account's data-plane ID. This can be set only when connecting an existing classic
+ * account.
+ *
+ * @param accountId the accountId value to set.
+ * @return the AccountPropertiesForPutRequest object itself.
+ */
+ public AccountPropertiesForPutRequest withAccountId(String accountId) {
+ this.accountId = accountId;
+ return this;
+ }
+
+ /**
+ * Get the accountName property: The account's name.
+ *
+ * @return the accountName value.
+ */
+ public String accountName() {
+ return this.accountName;
+ }
+
+ /**
+ * Get the mediaServices property: The media services details.
+ *
+ * @return the mediaServices value.
+ */
+ public MediaServicesForPutRequest mediaServices() {
+ return this.mediaServices;
+ }
+
+ /**
+ * Set the mediaServices property: The media services details.
+ *
+ * @param mediaServices the mediaServices value to set.
+ * @return the AccountPropertiesForPutRequest object itself.
+ */
+ public AccountPropertiesForPutRequest withMediaServices(MediaServicesForPutRequest mediaServices) {
+ this.mediaServices = mediaServices;
+ return this;
+ }
+
+ /**
+ * Get the totalSecondsIndexed property: An integer representing the total seconds that have been indexed on the
+ * account.
+ *
+ * @return the totalSecondsIndexed value.
+ */
+ public Integer totalSecondsIndexed() {
+ return this.totalSecondsIndexed;
+ }
+
+ /**
+ * Get the provisioningState property: Gets the status of the account at the time the operation was called.
+ *
+ * @return the provisioningState value.
+ */
+ public ProvisioningState provisioningState() {
+ return this.provisioningState;
+ }
+
+ /**
+ * Validates the instance.
+ *
+ * @throws IllegalArgumentException thrown if the instance is not valid.
+ */
+ public void validate() {
+ if (mediaServices() != null) {
+ mediaServices().validate();
+ }
+ }
+}
diff --git a/sdk/vi/azure-resourcemanager-vi/src/main/java/com/azure/resourcemanager/vi/fluent/models/CheckNameAvailabilityResultInner.java b/sdk/vi/azure-resourcemanager-vi/src/main/java/com/azure/resourcemanager/vi/fluent/models/CheckNameAvailabilityResultInner.java
new file mode 100644
index 000000000000..aa5a4db2366f
--- /dev/null
+++ b/sdk/vi/azure-resourcemanager-vi/src/main/java/com/azure/resourcemanager/vi/fluent/models/CheckNameAvailabilityResultInner.java
@@ -0,0 +1,70 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.vi.fluent.models;
+
+import com.azure.core.annotation.Immutable;
+import com.azure.resourcemanager.vi.models.Reason;
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/** The CheckNameAvailability operation response. */
+@Immutable
+public final class CheckNameAvailabilityResultInner {
+ /*
+ * Gets a boolean value that indicates whether the name is available for you to use. If true, the name is
+ * available. If false, the name has already been taken.
+ */
+ @JsonProperty(value = "nameAvailable", access = JsonProperty.Access.WRITE_ONLY)
+ private Boolean nameAvailable;
+
+ /*
+ * Gets the reason that a Video Indexer account name could not be used. The Reason element is only returned if
+ * NameAvailable is false.
+ */
+ @JsonProperty(value = "reason", access = JsonProperty.Access.WRITE_ONLY)
+ private Reason reason;
+
+ /*
+ * Gets an error message explaining the Reason value in more detail.
+ */
+ @JsonProperty(value = "message", access = JsonProperty.Access.WRITE_ONLY)
+ private String message;
+
+ /**
+ * Get the nameAvailable property: Gets a boolean value that indicates whether the name is available for you to use.
+ * If true, the name is available. If false, the name has already been taken.
+ *
+ * @return the nameAvailable value.
+ */
+ public Boolean nameAvailable() {
+ return this.nameAvailable;
+ }
+
+ /**
+ * Get the reason property: Gets the reason that a Video Indexer account name could not be used. The Reason element
+ * is only returned if NameAvailable is false.
+ *
+ * @return the reason value.
+ */
+ public Reason reason() {
+ return this.reason;
+ }
+
+ /**
+ * Get the message property: Gets an error message explaining the Reason value in more detail.
+ *
+ * @return the message value.
+ */
+ public String message() {
+ return this.message;
+ }
+
+ /**
+ * Validates the instance.
+ *
+ * @throws IllegalArgumentException thrown if the instance is not valid.
+ */
+ public void validate() {
+ }
+}
diff --git a/sdk/vi/azure-resourcemanager-vi/src/main/java/com/azure/resourcemanager/vi/fluent/models/ClassicAccountInner.java b/sdk/vi/azure-resourcemanager-vi/src/main/java/com/azure/resourcemanager/vi/fluent/models/ClassicAccountInner.java
new file mode 100644
index 000000000000..97126b86c02d
--- /dev/null
+++ b/sdk/vi/azure-resourcemanager-vi/src/main/java/com/azure/resourcemanager/vi/fluent/models/ClassicAccountInner.java
@@ -0,0 +1,118 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.vi.fluent.models;
+
+import com.azure.core.annotation.Fluent;
+import com.azure.resourcemanager.vi.models.ClassicAccountMediaServices;
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/** An Azure Video Indexer classic account. */
+@Fluent
+public final class ClassicAccountInner {
+ /*
+ * The account's name
+ */
+ @JsonProperty(value = "name", access = JsonProperty.Access.WRITE_ONLY)
+ private String name;
+
+ /*
+ * The account's location
+ */
+ @JsonProperty(value = "location")
+ private String location;
+
+ /*
+ * The account's id
+ */
+ @JsonProperty(value = "id", access = JsonProperty.Access.WRITE_ONLY)
+ private String id;
+
+ /*
+ * List of classic account properties
+ */
+ @JsonProperty(value = "properties")
+ private ClassicAccountProperties innerProperties;
+
+ /**
+ * Get the name property: The account's name.
+ *
+ * @return the name value.
+ */
+ public String name() {
+ return this.name;
+ }
+
+ /**
+ * Get the location property: The account's location.
+ *
+ * @return the location value.
+ */
+ public String location() {
+ return this.location;
+ }
+
+ /**
+ * Set the location property: The account's location.
+ *
+ * @param location the location value to set.
+ * @return the ClassicAccountInner object itself.
+ */
+ public ClassicAccountInner withLocation(String location) {
+ this.location = location;
+ return this;
+ }
+
+ /**
+ * Get the id property: The account's id.
+ *
+ * @return the id value.
+ */
+ public String id() {
+ return this.id;
+ }
+
+ /**
+ * Get the innerProperties property: List of classic account properties.
+ *
+ * @return the innerProperties value.
+ */
+ private ClassicAccountProperties innerProperties() {
+ return this.innerProperties;
+ }
+
+ /**
+ * Get the mediaServices property: The media services details.
+ *
+ * @return the mediaServices value.
+ */
+ public ClassicAccountMediaServices mediaServices() {
+ return this.innerProperties() == null ? null : this.innerProperties().mediaServices();
+ }
+
+ /**
+ * Set the mediaServices property: The media services details.
+ *
+ * @param mediaServices the mediaServices value to set.
+ * @return the ClassicAccountInner object itself.
+ */
+ public ClassicAccountInner withMediaServices(ClassicAccountMediaServices mediaServices) {
+ if (this.innerProperties() == null) {
+ this.innerProperties = new ClassicAccountProperties();
+ }
+ this.innerProperties().withMediaServices(mediaServices);
+ return this;
+ }
+
+ /**
+ * Validates the instance.
+ *
+ * @throws IllegalArgumentException thrown if the instance is not valid.
+ */
+ public void validate() {
+ if (innerProperties() != null) {
+ innerProperties().validate();
+ }
+ }
+}
diff --git a/sdk/vi/azure-resourcemanager-vi/src/main/java/com/azure/resourcemanager/vi/fluent/models/ClassicAccountProperties.java b/sdk/vi/azure-resourcemanager-vi/src/main/java/com/azure/resourcemanager/vi/fluent/models/ClassicAccountProperties.java
new file mode 100644
index 000000000000..ddaa29f6fa56
--- /dev/null
+++ b/sdk/vi/azure-resourcemanager-vi/src/main/java/com/azure/resourcemanager/vi/fluent/models/ClassicAccountProperties.java
@@ -0,0 +1,50 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.vi.fluent.models;
+
+import com.azure.core.annotation.Fluent;
+import com.azure.resourcemanager.vi.models.ClassicAccountMediaServices;
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/** Azure Video Indexer classic account properties. */
+@Fluent
+public final class ClassicAccountProperties {
+ /*
+ * The media services details
+ */
+ @JsonProperty(value = "mediaServices")
+ private ClassicAccountMediaServices mediaServices;
+
+ /**
+ * Get the mediaServices property: The media services details.
+ *
+ * @return the mediaServices value.
+ */
+ public ClassicAccountMediaServices mediaServices() {
+ return this.mediaServices;
+ }
+
+ /**
+ * Set the mediaServices property: The media services details.
+ *
+ * @param mediaServices the mediaServices value to set.
+ * @return the ClassicAccountProperties object itself.
+ */
+ public ClassicAccountProperties withMediaServices(ClassicAccountMediaServices mediaServices) {
+ this.mediaServices = mediaServices;
+ return this;
+ }
+
+ /**
+ * Validates the instance.
+ *
+ * @throws IllegalArgumentException thrown if the instance is not valid.
+ */
+ public void validate() {
+ if (mediaServices() != null) {
+ mediaServices().validate();
+ }
+ }
+}
diff --git a/sdk/vi/azure-resourcemanager-vi/src/main/java/com/azure/resourcemanager/vi/fluent/models/ClassicAccountSlimInner.java b/sdk/vi/azure-resourcemanager-vi/src/main/java/com/azure/resourcemanager/vi/fluent/models/ClassicAccountSlimInner.java
new file mode 100644
index 000000000000..fd63f2f1f4e8
--- /dev/null
+++ b/sdk/vi/azure-resourcemanager-vi/src/main/java/com/azure/resourcemanager/vi/fluent/models/ClassicAccountSlimInner.java
@@ -0,0 +1,65 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.vi.fluent.models;
+
+import com.azure.core.annotation.Immutable;
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/** An Azure Video Indexer classic account. */
+@Immutable
+public final class ClassicAccountSlimInner {
+ /*
+ * The account's name
+ */
+ @JsonProperty(value = "name", access = JsonProperty.Access.WRITE_ONLY)
+ private String name;
+
+ /*
+ * The account's location
+ */
+ @JsonProperty(value = "location", access = JsonProperty.Access.WRITE_ONLY)
+ private String location;
+
+ /*
+ * The account's id
+ */
+ @JsonProperty(value = "id", access = JsonProperty.Access.WRITE_ONLY)
+ private String id;
+
+ /**
+ * Get the name property: The account's name.
+ *
+ * @return the name value.
+ */
+ public String name() {
+ return this.name;
+ }
+
+ /**
+ * Get the location property: The account's location.
+ *
+ * @return the location value.
+ */
+ public String location() {
+ return this.location;
+ }
+
+ /**
+ * Get the id property: The account's id.
+ *
+ * @return the id value.
+ */
+ public String id() {
+ return this.id;
+ }
+
+ /**
+ * Validates the instance.
+ *
+ * @throws IllegalArgumentException thrown if the instance is not valid.
+ */
+ public void validate() {
+ }
+}
diff --git a/sdk/vi/azure-resourcemanager-vi/src/main/java/com/azure/resourcemanager/vi/fluent/models/OperationInner.java b/sdk/vi/azure-resourcemanager-vi/src/main/java/com/azure/resourcemanager/vi/fluent/models/OperationInner.java
new file mode 100644
index 000000000000..277a3547950c
--- /dev/null
+++ b/sdk/vi/azure-resourcemanager-vi/src/main/java/com/azure/resourcemanager/vi/fluent/models/OperationInner.java
@@ -0,0 +1,99 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.vi.fluent.models;
+
+import com.azure.core.annotation.Immutable;
+import com.azure.resourcemanager.vi.models.OperationDisplay;
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/** Operation detail payload. */
+@Immutable
+public final class OperationInner {
+ /*
+ * Name of the operation
+ */
+ @JsonProperty(value = "name", access = JsonProperty.Access.WRITE_ONLY)
+ private String name;
+
+ /*
+ * Indicates whether the operation is a data action
+ */
+ @JsonProperty(value = "isDataAction", access = JsonProperty.Access.WRITE_ONLY)
+ private Boolean isDataAction;
+
+ /*
+ * Indicates the action type.
+ */
+ @JsonProperty(value = "actionType", access = JsonProperty.Access.WRITE_ONLY)
+ private String actionType;
+
+ /*
+ * Display of the operation
+ */
+ @JsonProperty(value = "display", access = JsonProperty.Access.WRITE_ONLY)
+ private OperationDisplay display;
+
+ /*
+ * Origin of the operation
+ */
+ @JsonProperty(value = "origin", access = JsonProperty.Access.WRITE_ONLY)
+ private String origin;
+
+ /**
+ * Get the name property: Name of the operation.
+ *
+ * @return the name value.
+ */
+ public String name() {
+ return this.name;
+ }
+
+ /**
+ * Get the isDataAction property: Indicates whether the operation is a data action.
+ *
+ * @return the isDataAction value.
+ */
+ public Boolean isDataAction() {
+ return this.isDataAction;
+ }
+
+ /**
+ * Get the actionType property: Indicates the action type.
+ *
+ * @return the actionType value.
+ */
+ public String actionType() {
+ return this.actionType;
+ }
+
+ /**
+ * Get the display property: Display of the operation.
+ *
+ * @return the display value.
+ */
+ public OperationDisplay display() {
+ return this.display;
+ }
+
+ /**
+ * Get the origin property: Origin of the operation.
+ *
+ * @return the origin value.
+ */
+ public String origin() {
+ return this.origin;
+ }
+
+ /**
+ * Validates the instance.
+ *
+ * @throws IllegalArgumentException thrown if the instance is not valid.
+ */
+ public void validate() {
+ if (display() != null) {
+ display().validate();
+ }
+ }
+}
diff --git a/sdk/vi/azure-resourcemanager-vi/src/main/java/com/azure/resourcemanager/vi/fluent/models/package-info.java b/sdk/vi/azure-resourcemanager-vi/src/main/java/com/azure/resourcemanager/vi/fluent/models/package-info.java
new file mode 100644
index 000000000000..3238526fc895
--- /dev/null
+++ b/sdk/vi/azure-resourcemanager-vi/src/main/java/com/azure/resourcemanager/vi/fluent/models/package-info.java
@@ -0,0 +1,6 @@
+// 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 ViManagementClient. Microsoft Azure Video Indexer. */
+package com.azure.resourcemanager.vi.fluent.models;
diff --git a/sdk/vi/azure-resourcemanager-vi/src/main/java/com/azure/resourcemanager/vi/fluent/package-info.java b/sdk/vi/azure-resourcemanager-vi/src/main/java/com/azure/resourcemanager/vi/fluent/package-info.java
new file mode 100644
index 000000000000..ccd1fe083bc7
--- /dev/null
+++ b/sdk/vi/azure-resourcemanager-vi/src/main/java/com/azure/resourcemanager/vi/fluent/package-info.java
@@ -0,0 +1,6 @@
+// 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 ViManagementClient. Microsoft Azure Video Indexer. */
+package com.azure.resourcemanager.vi.fluent;
diff --git a/sdk/vi/azure-resourcemanager-vi/src/main/java/com/azure/resourcemanager/vi/implementation/AccessTokenImpl.java b/sdk/vi/azure-resourcemanager-vi/src/main/java/com/azure/resourcemanager/vi/implementation/AccessTokenImpl.java
new file mode 100644
index 000000000000..b477a4813af3
--- /dev/null
+++ b/sdk/vi/azure-resourcemanager-vi/src/main/java/com/azure/resourcemanager/vi/implementation/AccessTokenImpl.java
@@ -0,0 +1,31 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.vi.implementation;
+
+import com.azure.resourcemanager.vi.fluent.models.AccessTokenInner;
+import com.azure.resourcemanager.vi.models.AccessToken;
+
+public final class AccessTokenImpl implements AccessToken {
+ private AccessTokenInner innerObject;
+
+ private final com.azure.resourcemanager.vi.ViManager serviceManager;
+
+ AccessTokenImpl(AccessTokenInner innerObject, com.azure.resourcemanager.vi.ViManager serviceManager) {
+ this.innerObject = innerObject;
+ this.serviceManager = serviceManager;
+ }
+
+ public String accessToken() {
+ return this.innerModel().accessToken();
+ }
+
+ public AccessTokenInner innerModel() {
+ return this.innerObject;
+ }
+
+ private com.azure.resourcemanager.vi.ViManager manager() {
+ return this.serviceManager;
+ }
+}
diff --git a/sdk/vi/azure-resourcemanager-vi/src/main/java/com/azure/resourcemanager/vi/implementation/AccountImpl.java b/sdk/vi/azure-resourcemanager-vi/src/main/java/com/azure/resourcemanager/vi/implementation/AccountImpl.java
new file mode 100644
index 000000000000..22a82102d92b
--- /dev/null
+++ b/sdk/vi/azure-resourcemanager-vi/src/main/java/com/azure/resourcemanager/vi/implementation/AccountImpl.java
@@ -0,0 +1,239 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.vi.implementation;
+
+import com.azure.core.management.Region;
+import com.azure.core.management.SystemData;
+import com.azure.core.util.Context;
+import com.azure.resourcemanager.vi.fluent.models.AccountInner;
+import com.azure.resourcemanager.vi.models.Account;
+import com.azure.resourcemanager.vi.models.AccountPatch;
+import com.azure.resourcemanager.vi.models.ManagedServiceIdentity;
+import com.azure.resourcemanager.vi.models.MediaServicesForPatchRequest;
+import com.azure.resourcemanager.vi.models.MediaServicesForPutRequest;
+import com.azure.resourcemanager.vi.models.ProvisioningState;
+import java.util.Collections;
+import java.util.Map;
+
+public final class AccountImpl implements Account, Account.Definition, Account.Update {
+ private AccountInner innerObject;
+
+ private final com.azure.resourcemanager.vi.ViManager 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 ManagedServiceIdentity identity() {
+ return this.innerModel().identity();
+ }
+
+ public SystemData systemData() {
+ return this.innerModel().systemData();
+ }
+
+ public String tenantId() {
+ return this.innerModel().tenantId();
+ }
+
+ public String accountId() {
+ return this.innerModel().accountId();
+ }
+
+ public String accountName() {
+ return this.innerModel().accountName();
+ }
+
+ public MediaServicesForPutRequest mediaServices() {
+ return this.innerModel().mediaServices();
+ }
+
+ public Integer totalSecondsIndexed() {
+ return this.innerModel().totalSecondsIndexed();
+ }
+
+ public ProvisioningState provisioningState() {
+ return this.innerModel().provisioningState();
+ }
+
+ public Region region() {
+ return Region.fromName(this.regionName());
+ }
+
+ public String regionName() {
+ return this.location();
+ }
+
+ public String resourceGroupName() {
+ return resourceGroupName;
+ }
+
+ public AccountInner innerModel() {
+ return this.innerObject;
+ }
+
+ private com.azure.resourcemanager.vi.ViManager manager() {
+ return this.serviceManager;
+ }
+
+ private String resourceGroupName;
+
+ private String accountName;
+
+ private AccountPatch updateParameters;
+
+ public AccountImpl withExistingResourceGroup(String resourceGroupName) {
+ this.resourceGroupName = resourceGroupName;
+ return this;
+ }
+
+ public Account create() {
+ this.innerObject =
+ serviceManager
+ .serviceClient()
+ .getAccounts()
+ .createOrUpdateWithResponse(resourceGroupName, accountName, this.innerModel(), Context.NONE)
+ .getValue();
+ return this;
+ }
+
+ public Account create(Context context) {
+ this.innerObject =
+ serviceManager
+ .serviceClient()
+ .getAccounts()
+ .createOrUpdateWithResponse(resourceGroupName, accountName, this.innerModel(), context)
+ .getValue();
+ return this;
+ }
+
+ AccountImpl(String name, com.azure.resourcemanager.vi.ViManager serviceManager) {
+ this.innerObject = new AccountInner();
+ this.serviceManager = serviceManager;
+ this.accountName = name;
+ }
+
+ public AccountImpl update() {
+ this.updateParameters = new AccountPatch();
+ return this;
+ }
+
+ public Account apply() {
+ this.innerObject =
+ serviceManager
+ .serviceClient()
+ .getAccounts()
+ .updateWithResponse(resourceGroupName, accountName, updateParameters, Context.NONE)
+ .getValue();
+ return this;
+ }
+
+ public Account apply(Context context) {
+ this.innerObject =
+ serviceManager
+ .serviceClient()
+ .getAccounts()
+ .updateWithResponse(resourceGroupName, accountName, updateParameters, context)
+ .getValue();
+ return this;
+ }
+
+ AccountImpl(AccountInner innerObject, com.azure.resourcemanager.vi.ViManager serviceManager) {
+ this.innerObject = innerObject;
+ this.serviceManager = serviceManager;
+ this.resourceGroupName = Utils.getValueFromIdByName(innerObject.id(), "resourceGroups");
+ this.accountName = Utils.getValueFromIdByName(innerObject.id(), "accounts");
+ }
+
+ public Account refresh() {
+ this.innerObject =
+ serviceManager
+ .serviceClient()
+ .getAccounts()
+ .getByResourceGroupWithResponse(resourceGroupName, accountName, Context.NONE)
+ .getValue();
+ return this;
+ }
+
+ public Account refresh(Context context) {
+ this.innerObject =
+ serviceManager
+ .serviceClient()
+ .getAccounts()
+ .getByResourceGroupWithResponse(resourceGroupName, accountName, context)
+ .getValue();
+ return this;
+ }
+
+ public AccountImpl withRegion(Region location) {
+ this.innerModel().withLocation(location.toString());
+ return this;
+ }
+
+ public AccountImpl withRegion(String location) {
+ this.innerModel().withLocation(location);
+ return this;
+ }
+
+ public AccountImpl withTags(Map tags) {
+ if (isInCreateMode()) {
+ this.innerModel().withTags(tags);
+ return this;
+ } else {
+ this.updateParameters.withTags(tags);
+ return this;
+ }
+ }
+
+ public AccountImpl withIdentity(ManagedServiceIdentity identity) {
+ if (isInCreateMode()) {
+ this.innerModel().withIdentity(identity);
+ return this;
+ } else {
+ this.updateParameters.withIdentity(identity);
+ return this;
+ }
+ }
+
+ public AccountImpl withAccountId(String accountId) {
+ this.innerModel().withAccountId(accountId);
+ return this;
+ }
+
+ public AccountImpl withMediaServices(MediaServicesForPutRequest mediaServices) {
+ this.innerModel().withMediaServices(mediaServices);
+ return this;
+ }
+
+ public AccountImpl withMediaServices(MediaServicesForPatchRequest mediaServices) {
+ this.updateParameters.withMediaServices(mediaServices);
+ return this;
+ }
+
+ private boolean isInCreateMode() {
+ return this.innerModel().id() == null;
+ }
+}
diff --git a/sdk/vi/azure-resourcemanager-vi/src/main/java/com/azure/resourcemanager/vi/implementation/AccountsClientImpl.java b/sdk/vi/azure-resourcemanager-vi/src/main/java/com/azure/resourcemanager/vi/implementation/AccountsClientImpl.java
new file mode 100644
index 000000000000..79d0912c6eaf
--- /dev/null
+++ b/sdk/vi/azure-resourcemanager-vi/src/main/java/com/azure/resourcemanager/vi/implementation/AccountsClientImpl.java
@@ -0,0 +1,1419 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.vi.implementation;
+
+import com.azure.core.annotation.BodyParam;
+import com.azure.core.annotation.Delete;
+import com.azure.core.annotation.ExpectedResponses;
+import com.azure.core.annotation.Get;
+import com.azure.core.annotation.HeaderParam;
+import com.azure.core.annotation.Headers;
+import com.azure.core.annotation.Host;
+import com.azure.core.annotation.HostParam;
+import com.azure.core.annotation.Patch;
+import com.azure.core.annotation.PathParam;
+import com.azure.core.annotation.Post;
+import com.azure.core.annotation.Put;
+import com.azure.core.annotation.QueryParam;
+import com.azure.core.annotation.ReturnType;
+import com.azure.core.annotation.ServiceInterface;
+import com.azure.core.annotation.ServiceMethod;
+import com.azure.core.annotation.UnexpectedResponseExceptionType;
+import com.azure.core.http.rest.PagedFlux;
+import com.azure.core.http.rest.PagedIterable;
+import com.azure.core.http.rest.PagedResponse;
+import com.azure.core.http.rest.PagedResponseBase;
+import com.azure.core.http.rest.Response;
+import com.azure.core.http.rest.RestProxy;
+import com.azure.core.management.exception.ManagementException;
+import com.azure.core.util.Context;
+import com.azure.core.util.FluxUtil;
+import com.azure.resourcemanager.vi.fluent.AccountsClient;
+import com.azure.resourcemanager.vi.fluent.models.AccountInner;
+import com.azure.resourcemanager.vi.fluent.models.CheckNameAvailabilityResultInner;
+import com.azure.resourcemanager.vi.models.AccountCheckNameAvailabilityParameters;
+import com.azure.resourcemanager.vi.models.AccountList;
+import com.azure.resourcemanager.vi.models.AccountPatch;
+import reactor.core.publisher.Mono;
+
+/** An instance of this class provides access to all the operations defined in AccountsClient. */
+public final class AccountsClientImpl implements AccountsClient {
+ /** The proxy service used to perform REST calls. */
+ private final AccountsService service;
+
+ /** The service client containing this operation class. */
+ private final ViManagementClientImpl client;
+
+ /**
+ * Initializes an instance of AccountsClientImpl.
+ *
+ * @param client the instance of the service client containing this operation class.
+ */
+ AccountsClientImpl(ViManagementClientImpl client) {
+ this.service = RestProxy.create(AccountsService.class, client.getHttpPipeline(), client.getSerializerAdapter());
+ this.client = client;
+ }
+
+ /**
+ * The interface defining all the services for ViManagementClientAccounts to be used by the proxy service to perform
+ * REST calls.
+ */
+ @Host("{$host}")
+ @ServiceInterface(name = "ViManagementClientAc")
+ private interface AccountsService {
+ @Headers({"Content-Type: application/json"})
+ @Post("/subscriptions/{subscriptionId}/providers/Microsoft.VideoIndexer/checkNameAvailability")
+ @ExpectedResponses({200})
+ @UnexpectedResponseExceptionType(ManagementException.class)
+ Mono> checkNameAvailability(
+ @HostParam("$host") String endpoint,
+ @PathParam("subscriptionId") String subscriptionId,
+ @QueryParam("api-version") String apiVersion,
+ @BodyParam("application/json") AccountCheckNameAvailabilityParameters checkNameAvailabilityParameters,
+ @HeaderParam("Accept") String accept,
+ Context context);
+
+ @Headers({"Content-Type: application/json"})
+ @Get("/subscriptions/{subscriptionId}/providers/Microsoft.VideoIndexer/accounts")
+ @ExpectedResponses({200})
+ @UnexpectedResponseExceptionType(ManagementException.class)
+ Mono> list(
+ @HostParam("$host") String endpoint,
+ @PathParam("subscriptionId") String subscriptionId,
+ @QueryParam("api-version") String apiVersion,
+ @HeaderParam("Accept") String accept,
+ Context context);
+
+ @Headers({"Content-Type: application/json"})
+ @Get(
+ "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.VideoIndexer"
+ + "/accounts")
+ @ExpectedResponses({200})
+ @UnexpectedResponseExceptionType(ManagementException.class)
+ Mono> listByResourceGroup(
+ @HostParam("$host") String endpoint,
+ @PathParam("subscriptionId") String subscriptionId,
+ @PathParam("resourceGroupName") String resourceGroupName,
+ @QueryParam("api-version") String apiVersion,
+ @HeaderParam("Accept") String accept,
+ Context context);
+
+ @Headers({"Content-Type: application/json"})
+ @Get(
+ "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.VideoIndexer"
+ + "/accounts/{accountName}")
+ @ExpectedResponses({200})
+ @UnexpectedResponseExceptionType(ManagementException.class)
+ Mono> getByResourceGroup(
+ @HostParam("$host") String endpoint,
+ @PathParam("subscriptionId") String subscriptionId,
+ @PathParam("resourceGroupName") String resourceGroupName,
+ @PathParam("accountName") String accountName,
+ @QueryParam("api-version") String apiVersion,
+ @HeaderParam("Accept") String accept,
+ Context context);
+
+ @Headers({"Content-Type: application/json"})
+ @Patch(
+ "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.VideoIndexer"
+ + "/accounts/{accountName}")
+ @ExpectedResponses({200})
+ @UnexpectedResponseExceptionType(ManagementException.class)
+ Mono> update(
+ @HostParam("$host") String endpoint,
+ @PathParam("subscriptionId") String subscriptionId,
+ @PathParam("resourceGroupName") String resourceGroupName,
+ @PathParam("accountName") String accountName,
+ @QueryParam("api-version") String apiVersion,
+ @BodyParam("application/json") AccountPatch parameters,
+ @HeaderParam("Accept") String accept,
+ Context context);
+
+ @Headers({"Content-Type: application/json"})
+ @Put(
+ "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.VideoIndexer"
+ + "/accounts/{accountName}")
+ @ExpectedResponses({200})
+ @UnexpectedResponseExceptionType(ManagementException.class)
+ Mono> createOrUpdate(
+ @HostParam("$host") String endpoint,
+ @PathParam("subscriptionId") String subscriptionId,
+ @PathParam("resourceGroupName") String resourceGroupName,
+ @PathParam("accountName") String accountName,
+ @QueryParam("api-version") String apiVersion,
+ @BodyParam("application/json") AccountInner parameters,
+ @HeaderParam("Accept") String accept,
+ Context context);
+
+ @Headers({"Content-Type: application/json"})
+ @Delete(
+ "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.VideoIndexer"
+ + "/accounts/{accountName}")
+ @ExpectedResponses({200, 202, 204})
+ @UnexpectedResponseExceptionType(ManagementException.class)
+ Mono> delete(
+ @HostParam("$host") String endpoint,
+ @PathParam("subscriptionId") String subscriptionId,
+ @PathParam("resourceGroupName") String resourceGroupName,
+ @PathParam("accountName") String accountName,
+ @QueryParam("api-version") String apiVersion,
+ @HeaderParam("Accept") String accept,
+ Context context);
+
+ @Headers({"Content-Type: application/json"})
+ @Get("{nextLink}")
+ @ExpectedResponses({200})
+ @UnexpectedResponseExceptionType(ManagementException.class)
+ Mono> listNext(
+ @PathParam(value = "nextLink", encoded = true) String nextLink,
+ @HostParam("$host") String endpoint,
+ @HeaderParam("Accept") String accept,
+ Context context);
+
+ @Headers({"Content-Type: application/json"})
+ @Get("{nextLink}")
+ @ExpectedResponses({200})
+ @UnexpectedResponseExceptionType(ManagementException.class)
+ Mono> listByResourceGroupNext(
+ @PathParam(value = "nextLink", encoded = true) String nextLink,
+ @HostParam("$host") String endpoint,
+ @HeaderParam("Accept") String accept,
+ Context context);
+ }
+
+ /**
+ * Checks that the Video Indexer account name is valid and is not already in use.
+ *
+ * @param checkNameAvailabilityParameters The name of the Video Indexer account. Name must be unique globally.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws 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 CheckNameAvailability operation response along with {@link Response} on successful completion of
+ * {@link Mono}.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ private Mono> checkNameAvailabilityWithResponseAsync(
+ AccountCheckNameAvailabilityParameters checkNameAvailabilityParameters) {
+ if (this.client.getEndpoint() == null) {
+ return Mono
+ .error(
+ new IllegalArgumentException(
+ "Parameter this.client.getEndpoint() is required and cannot be null."));
+ }
+ if (this.client.getSubscriptionId() == null) {
+ return Mono
+ .error(
+ new IllegalArgumentException(
+ "Parameter this.client.getSubscriptionId() is required and cannot be null."));
+ }
+ if (checkNameAvailabilityParameters == null) {
+ return Mono
+ .error(
+ new IllegalArgumentException(
+ "Parameter checkNameAvailabilityParameters is required and cannot be null."));
+ } else {
+ checkNameAvailabilityParameters.validate();
+ }
+ final String accept = "application/json";
+ return FluxUtil
+ .withContext(
+ context ->
+ service
+ .checkNameAvailability(
+ this.client.getEndpoint(),
+ this.client.getSubscriptionId(),
+ this.client.getApiVersion(),
+ checkNameAvailabilityParameters,
+ accept,
+ context))
+ .contextWrite(context -> context.putAll(FluxUtil.toReactorContext(this.client.getContext()).readOnly()));
+ }
+
+ /**
+ * Checks that the Video Indexer account name is valid and is not already in use.
+ *
+ * @param checkNameAvailabilityParameters The name of the Video Indexer account. Name must be unique globally.
+ * @param context The context to associate with this operation.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws 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 CheckNameAvailability operation response along with {@link Response} on successful completion of
+ * {@link Mono}.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ private Mono> checkNameAvailabilityWithResponseAsync(
+ AccountCheckNameAvailabilityParameters checkNameAvailabilityParameters, Context context) {
+ if (this.client.getEndpoint() == null) {
+ return Mono
+ .error(
+ new IllegalArgumentException(
+ "Parameter this.client.getEndpoint() is required and cannot be null."));
+ }
+ if (this.client.getSubscriptionId() == null) {
+ return Mono
+ .error(
+ new IllegalArgumentException(
+ "Parameter this.client.getSubscriptionId() is required and cannot be null."));
+ }
+ if (checkNameAvailabilityParameters == null) {
+ return Mono
+ .error(
+ new IllegalArgumentException(
+ "Parameter checkNameAvailabilityParameters is required and cannot be null."));
+ } else {
+ checkNameAvailabilityParameters.validate();
+ }
+ final String accept = "application/json";
+ context = this.client.mergeContext(context);
+ return service
+ .checkNameAvailability(
+ this.client.getEndpoint(),
+ this.client.getSubscriptionId(),
+ this.client.getApiVersion(),
+ checkNameAvailabilityParameters,
+ accept,
+ context);
+ }
+
+ /**
+ * Checks that the Video Indexer account name is valid and is not already in use.
+ *
+ * @param checkNameAvailabilityParameters The name of the Video Indexer account. Name must be unique globally.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws 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 CheckNameAvailability operation response on successful completion of {@link Mono}.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ private Mono checkNameAvailabilityAsync(
+ AccountCheckNameAvailabilityParameters checkNameAvailabilityParameters) {
+ return checkNameAvailabilityWithResponseAsync(checkNameAvailabilityParameters)
+ .flatMap(res -> Mono.justOrEmpty(res.getValue()));
+ }
+
+ /**
+ * Checks that the Video Indexer account name is valid and is not already in use.
+ *
+ * @param checkNameAvailabilityParameters The name of the Video Indexer account. Name must be unique globally.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws 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 CheckNameAvailability operation response.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ public CheckNameAvailabilityResultInner checkNameAvailability(
+ AccountCheckNameAvailabilityParameters checkNameAvailabilityParameters) {
+ return checkNameAvailabilityAsync(checkNameAvailabilityParameters).block();
+ }
+
+ /**
+ * Checks that the Video Indexer account name is valid and is not already in use.
+ *
+ * @param checkNameAvailabilityParameters The name of the Video Indexer account. Name must be unique globally.
+ * @param context The context to associate with this operation.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws 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 CheckNameAvailability operation response along with {@link Response}.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ public Response checkNameAvailabilityWithResponse(
+ AccountCheckNameAvailabilityParameters checkNameAvailabilityParameters, Context context) {
+ return checkNameAvailabilityWithResponseAsync(checkNameAvailabilityParameters, context).block();
+ }
+
+ /**
+ * List all Azure Video Indexer accounts available under the subscription.
+ *
+ * @throws 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 list operation response, that contains the data pools and their properties along with {@link
+ * PagedResponse} on successful completion of {@link Mono}.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ private Mono> listSinglePageAsync() {
+ if (this.client.getEndpoint() == null) {
+ return Mono
+ .error(
+ new IllegalArgumentException(
+ "Parameter this.client.getEndpoint() is required and cannot be null."));
+ }
+ if (this.client.getSubscriptionId() == null) {
+ return Mono
+ .error(
+ new IllegalArgumentException(
+ "Parameter this.client.getSubscriptionId() is required and cannot be null."));
+ }
+ final String accept = "application/json";
+ return FluxUtil
+ .withContext(
+ context ->
+ service
+ .list(
+ this.client.getEndpoint(),
+ this.client.getSubscriptionId(),
+ this.client.getApiVersion(),
+ accept,
+ context))
+ .>map(
+ res ->
+ new PagedResponseBase<>(
+ res.getRequest(),
+ res.getStatusCode(),
+ res.getHeaders(),
+ res.getValue().value(),
+ res.getValue().nextLink(),
+ null))
+ .contextWrite(context -> context.putAll(FluxUtil.toReactorContext(this.client.getContext()).readOnly()));
+ }
+
+ /**
+ * List all Azure Video Indexer accounts available under the subscription.
+ *
+ * @param context The context to associate with this operation.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws 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 list operation response, that contains the data pools and their properties along with {@link
+ * PagedResponse} on successful completion of {@link Mono}.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ private Mono> listSinglePageAsync(Context context) {
+ if (this.client.getEndpoint() == null) {
+ return Mono
+ .error(
+ new IllegalArgumentException(
+ "Parameter this.client.getEndpoint() is required and cannot be null."));
+ }
+ if (this.client.getSubscriptionId() == null) {
+ return Mono
+ .error(
+ new IllegalArgumentException(
+ "Parameter this.client.getSubscriptionId() is required and cannot be null."));
+ }
+ final String accept = "application/json";
+ context = this.client.mergeContext(context);
+ return service
+ .list(
+ this.client.getEndpoint(),
+ this.client.getSubscriptionId(),
+ this.client.getApiVersion(),
+ accept,
+ context)
+ .map(
+ res ->
+ new PagedResponseBase<>(
+ res.getRequest(),
+ res.getStatusCode(),
+ res.getHeaders(),
+ res.getValue().value(),
+ res.getValue().nextLink(),
+ null));
+ }
+
+ /**
+ * List all Azure Video Indexer accounts available under the subscription.
+ *
+ * @throws 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 list operation response, that contains the data pools and their properties as paginated response with
+ * {@link PagedFlux}.
+ */
+ @ServiceMethod(returns = ReturnType.COLLECTION)
+ private PagedFlux listAsync() {
+ return new PagedFlux<>(() -> listSinglePageAsync(), nextLink -> listNextSinglePageAsync(nextLink));
+ }
+
+ /**
+ * List all Azure Video Indexer accounts available under the subscription.
+ *
+ * @param context The context to associate with this operation.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws 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 list operation response, that contains the data pools and their properties as paginated response with
+ * {@link PagedFlux}.
+ */
+ @ServiceMethod(returns = ReturnType.COLLECTION)
+ private PagedFlux listAsync(Context context) {
+ return new PagedFlux<>(
+ () -> listSinglePageAsync(context), nextLink -> listNextSinglePageAsync(nextLink, context));
+ }
+
+ /**
+ * List all Azure Video Indexer accounts available under the subscription.
+ *
+ * @throws 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 list operation response, that contains the data pools and their properties as paginated response with
+ * {@link PagedIterable}.
+ */
+ @ServiceMethod(returns = ReturnType.COLLECTION)
+ public PagedIterable list() {
+ return new PagedIterable<>(listAsync());
+ }
+
+ /**
+ * List all Azure Video Indexer accounts available under the subscription.
+ *
+ * @param context The context to associate with this operation.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws 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 list operation response, that contains the data pools and their properties as paginated response with
+ * {@link PagedIterable}.
+ */
+ @ServiceMethod(returns = ReturnType.COLLECTION)
+ public PagedIterable list(Context context) {
+ return new PagedIterable<>(listAsync(context));
+ }
+
+ /**
+ * List all Azure Video Indexer accounts available under the resource group.
+ *
+ * @param resourceGroupName The name of the resource group. The name is case insensitive.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws 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 list operation response, that contains the data pools and their properties along with {@link
+ * PagedResponse} on successful completion of {@link Mono}.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ private Mono> listByResourceGroupSinglePageAsync(String resourceGroupName) {
+ if (this.client.getEndpoint() == null) {
+ return Mono
+ .error(
+ new IllegalArgumentException(
+ "Parameter this.client.getEndpoint() is required and cannot be null."));
+ }
+ if (this.client.getSubscriptionId() == null) {
+ return Mono
+ .error(
+ new IllegalArgumentException(
+ "Parameter this.client.getSubscriptionId() is required and cannot be null."));
+ }
+ if (resourceGroupName == null) {
+ return Mono
+ .error(new IllegalArgumentException("Parameter resourceGroupName is required and cannot be null."));
+ }
+ final String accept = "application/json";
+ return FluxUtil
+ .withContext(
+ context ->
+ service
+ .listByResourceGroup(
+ this.client.getEndpoint(),
+ this.client.getSubscriptionId(),
+ resourceGroupName,
+ this.client.getApiVersion(),
+ accept,
+ context))
+ .>map(
+ res ->
+ new PagedResponseBase<>(
+ res.getRequest(),
+ res.getStatusCode(),
+ res.getHeaders(),
+ res.getValue().value(),
+ res.getValue().nextLink(),
+ null))
+ .contextWrite(context -> context.putAll(FluxUtil.toReactorContext(this.client.getContext()).readOnly()));
+ }
+
+ /**
+ * List all Azure Video Indexer accounts available under the resource group.
+ *
+ * @param resourceGroupName The name of the resource group. The name is case insensitive.
+ * @param context The context to associate with this operation.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws 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 list operation response, that contains the data pools and their properties along with {@link
+ * PagedResponse} on successful completion of {@link Mono}.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ private Mono> listByResourceGroupSinglePageAsync(
+ String resourceGroupName, Context context) {
+ if (this.client.getEndpoint() == null) {
+ return Mono
+ .error(
+ new IllegalArgumentException(
+ "Parameter this.client.getEndpoint() is required and cannot be null."));
+ }
+ if (this.client.getSubscriptionId() == null) {
+ return Mono
+ .error(
+ new IllegalArgumentException(
+ "Parameter this.client.getSubscriptionId() is required and cannot be null."));
+ }
+ if (resourceGroupName == null) {
+ return Mono
+ .error(new IllegalArgumentException("Parameter resourceGroupName is required and cannot be null."));
+ }
+ final String accept = "application/json";
+ context = this.client.mergeContext(context);
+ return service
+ .listByResourceGroup(
+ this.client.getEndpoint(),
+ this.client.getSubscriptionId(),
+ resourceGroupName,
+ this.client.getApiVersion(),
+ accept,
+ context)
+ .map(
+ res ->
+ new PagedResponseBase<>(
+ res.getRequest(),
+ res.getStatusCode(),
+ res.getHeaders(),
+ res.getValue().value(),
+ res.getValue().nextLink(),
+ null));
+ }
+
+ /**
+ * List all Azure Video Indexer accounts available under the resource group.
+ *
+ * @param resourceGroupName The name of the resource group. The name is case insensitive.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws 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 list operation response, that contains the data pools and their properties as paginated response with
+ * {@link PagedFlux}.
+ */
+ @ServiceMethod(returns = ReturnType.COLLECTION)
+ private PagedFlux listByResourceGroupAsync(String resourceGroupName) {
+ return new PagedFlux<>(
+ () -> listByResourceGroupSinglePageAsync(resourceGroupName),
+ nextLink -> listByResourceGroupNextSinglePageAsync(nextLink));
+ }
+
+ /**
+ * List all Azure Video Indexer accounts available under the resource group.
+ *
+ * @param resourceGroupName The name of the resource group. The name is case insensitive.
+ * @param context The context to associate with this operation.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws 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 list operation response, that contains the data pools and their properties as paginated response with
+ * {@link PagedFlux}.
+ */
+ @ServiceMethod(returns = ReturnType.COLLECTION)
+ private PagedFlux listByResourceGroupAsync(String resourceGroupName, Context context) {
+ return new PagedFlux<>(
+ () -> listByResourceGroupSinglePageAsync(resourceGroupName, context),
+ nextLink -> listByResourceGroupNextSinglePageAsync(nextLink, context));
+ }
+
+ /**
+ * List all Azure Video Indexer accounts available under the resource group.
+ *
+ * @param resourceGroupName The name of the resource group. The name is case insensitive.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws 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 list operation response, that contains the data pools and their properties as paginated response with
+ * {@link PagedIterable}.
+ */
+ @ServiceMethod(returns = ReturnType.COLLECTION)
+ public PagedIterable listByResourceGroup(String resourceGroupName) {
+ return new PagedIterable<>(listByResourceGroupAsync(resourceGroupName));
+ }
+
+ /**
+ * List all Azure Video Indexer accounts available under the resource group.
+ *
+ * @param resourceGroupName The name of the resource group. The name is case insensitive.
+ * @param context The context to associate with this operation.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws 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 list operation response, that contains the data pools and their properties as paginated response with
+ * {@link PagedIterable}.
+ */
+ @ServiceMethod(returns = ReturnType.COLLECTION)
+ public PagedIterable listByResourceGroup(String resourceGroupName, Context context) {
+ return new PagedIterable<>(listByResourceGroupAsync(resourceGroupName, context));
+ }
+
+ /**
+ * Gets the properties of an Azure Video Indexer account.
+ *
+ * @param resourceGroupName The name of the resource group. The name is case insensitive.
+ * @param accountName The name of the Azure Video Indexer account.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws 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 of an Azure Video Indexer account along with {@link Response} on successful completion of
+ * {@link Mono}.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ private Mono> getByResourceGroupWithResponseAsync(
+ String resourceGroupName, String accountName) {
+ if (this.client.getEndpoint() == null) {
+ return Mono
+ .error(
+ new IllegalArgumentException(
+ "Parameter this.client.getEndpoint() is required and cannot be null."));
+ }
+ if (this.client.getSubscriptionId() == null) {
+ return Mono
+ .error(
+ new IllegalArgumentException(
+ "Parameter this.client.getSubscriptionId() is required and cannot be null."));
+ }
+ if (resourceGroupName == null) {
+ return Mono
+ .error(new IllegalArgumentException("Parameter resourceGroupName is required and cannot be null."));
+ }
+ if (accountName == null) {
+ return Mono.error(new IllegalArgumentException("Parameter accountName is required and cannot be null."));
+ }
+ final String accept = "application/json";
+ return FluxUtil
+ .withContext(
+ context ->
+ service
+ .getByResourceGroup(
+ this.client.getEndpoint(),
+ this.client.getSubscriptionId(),
+ resourceGroupName,
+ accountName,
+ this.client.getApiVersion(),
+ accept,
+ context))
+ .contextWrite(context -> context.putAll(FluxUtil.toReactorContext(this.client.getContext()).readOnly()));
+ }
+
+ /**
+ * Gets the properties of an Azure Video Indexer account.
+ *
+ * @param resourceGroupName The name of the resource group. The name is case insensitive.
+ * @param accountName The name of the Azure Video Indexer account.
+ * @param context The context to associate with this operation.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws 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 of an Azure Video Indexer account along with {@link Response} on successful completion of
+ * {@link Mono}.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ private Mono> getByResourceGroupWithResponseAsync(
+ String resourceGroupName, String accountName, Context context) {
+ if (this.client.getEndpoint() == null) {
+ return Mono
+ .error(
+ new IllegalArgumentException(
+ "Parameter this.client.getEndpoint() is required and cannot be null."));
+ }
+ if (this.client.getSubscriptionId() == null) {
+ return Mono
+ .error(
+ new IllegalArgumentException(
+ "Parameter this.client.getSubscriptionId() is required and cannot be null."));
+ }
+ if (resourceGroupName == null) {
+ return Mono
+ .error(new IllegalArgumentException("Parameter resourceGroupName is required and cannot be null."));
+ }
+ if (accountName == null) {
+ return Mono.error(new IllegalArgumentException("Parameter accountName is required and cannot be null."));
+ }
+ final String accept = "application/json";
+ context = this.client.mergeContext(context);
+ return service
+ .getByResourceGroup(
+ this.client.getEndpoint(),
+ this.client.getSubscriptionId(),
+ resourceGroupName,
+ accountName,
+ this.client.getApiVersion(),
+ accept,
+ context);
+ }
+
+ /**
+ * Gets the properties of an Azure Video Indexer account.
+ *
+ * @param resourceGroupName The name of the resource group. The name is case insensitive.
+ * @param accountName The name of the Azure Video Indexer account.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws 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 of an Azure Video Indexer account on successful completion of {@link Mono}.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ private Mono getByResourceGroupAsync(String resourceGroupName, String accountName) {
+ return getByResourceGroupWithResponseAsync(resourceGroupName, accountName)
+ .flatMap(res -> Mono.justOrEmpty(res.getValue()));
+ }
+
+ /**
+ * Gets the properties of an Azure Video Indexer account.
+ *
+ * @param resourceGroupName The name of the resource group. The name is case insensitive.
+ * @param accountName The name of the Azure Video Indexer account.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws 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 of an Azure Video Indexer account.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ public AccountInner getByResourceGroup(String resourceGroupName, String accountName) {
+ return getByResourceGroupAsync(resourceGroupName, accountName).block();
+ }
+
+ /**
+ * Gets the properties of an Azure Video Indexer account.
+ *
+ * @param resourceGroupName The name of the resource group. The name is case insensitive.
+ * @param accountName The name of the Azure Video Indexer account.
+ * @param context The context to associate with this operation.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws 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 of an Azure Video Indexer account along with {@link Response}.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ public Response getByResourceGroupWithResponse(
+ String resourceGroupName, String accountName, Context context) {
+ return getByResourceGroupWithResponseAsync(resourceGroupName, accountName, context).block();
+ }
+
+ /**
+ * Updates the properties of an existing Azure Video Indexer account.
+ *
+ * @param resourceGroupName The name of the resource group. The name is case insensitive.
+ * @param accountName The name of the Azure Video Indexer account.
+ * @param parameters The parameters to provide for the current Azure Video Indexer account.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return an Azure Video Indexer account along with {@link Response} on successful completion of {@link Mono}.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ private Mono> updateWithResponseAsync(
+ String resourceGroupName, String accountName, AccountPatch parameters) {
+ if (this.client.getEndpoint() == null) {
+ return Mono
+ .error(
+ new IllegalArgumentException(
+ "Parameter this.client.getEndpoint() is required and cannot be null."));
+ }
+ if (this.client.getSubscriptionId() == null) {
+ return Mono
+ .error(
+ new IllegalArgumentException(
+ "Parameter this.client.getSubscriptionId() is required and cannot be null."));
+ }
+ if (resourceGroupName == null) {
+ return Mono
+ .error(new IllegalArgumentException("Parameter resourceGroupName is required and cannot be null."));
+ }
+ if (accountName == null) {
+ return Mono.error(new IllegalArgumentException("Parameter accountName is required and cannot be null."));
+ }
+ if (parameters != null) {
+ parameters.validate();
+ }
+ final String accept = "application/json";
+ return FluxUtil
+ .withContext(
+ context ->
+ service
+ .update(
+ this.client.getEndpoint(),
+ this.client.getSubscriptionId(),
+ resourceGroupName,
+ accountName,
+ this.client.getApiVersion(),
+ parameters,
+ accept,
+ context))
+ .contextWrite(context -> context.putAll(FluxUtil.toReactorContext(this.client.getContext()).readOnly()));
+ }
+
+ /**
+ * Updates the properties of an existing Azure Video Indexer account.
+ *
+ * @param resourceGroupName The name of the resource group. The name is case insensitive.
+ * @param accountName The name of the Azure Video Indexer account.
+ * @param parameters The parameters to provide for the current Azure Video Indexer account.
+ * @param context The context to associate with this operation.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return an Azure Video Indexer account along with {@link Response} on successful completion of {@link Mono}.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ private Mono> updateWithResponseAsync(
+ String resourceGroupName, String accountName, AccountPatch parameters, Context context) {
+ if (this.client.getEndpoint() == null) {
+ return Mono
+ .error(
+ new IllegalArgumentException(
+ "Parameter this.client.getEndpoint() is required and cannot be null."));
+ }
+ if (this.client.getSubscriptionId() == null) {
+ return Mono
+ .error(
+ new IllegalArgumentException(
+ "Parameter this.client.getSubscriptionId() is required and cannot be null."));
+ }
+ if (resourceGroupName == null) {
+ return Mono
+ .error(new IllegalArgumentException("Parameter resourceGroupName is required and cannot be null."));
+ }
+ if (accountName == null) {
+ return Mono.error(new IllegalArgumentException("Parameter accountName is required and cannot be null."));
+ }
+ if (parameters != null) {
+ parameters.validate();
+ }
+ final String accept = "application/json";
+ context = this.client.mergeContext(context);
+ return service
+ .update(
+ this.client.getEndpoint(),
+ this.client.getSubscriptionId(),
+ resourceGroupName,
+ accountName,
+ this.client.getApiVersion(),
+ parameters,
+ accept,
+ context);
+ }
+
+ /**
+ * Updates the properties of an existing Azure Video Indexer account.
+ *
+ * @param resourceGroupName The name of the resource group. The name is case insensitive.
+ * @param accountName The name of the Azure Video Indexer account.
+ * @param parameters The parameters to provide for the current Azure Video Indexer account.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return an Azure Video Indexer account on successful completion of {@link Mono}.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ private Mono updateAsync(String resourceGroupName, String accountName, AccountPatch parameters) {
+ return updateWithResponseAsync(resourceGroupName, accountName, parameters)
+ .flatMap(res -> Mono.justOrEmpty(res.getValue()));
+ }
+
+ /**
+ * Updates the properties of an existing Azure Video Indexer account.
+ *
+ * @param resourceGroupName The name of the resource group. The name is case insensitive.
+ * @param accountName The name of the Azure Video Indexer account.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return an Azure Video Indexer account on successful completion of {@link Mono}.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ private Mono updateAsync(String resourceGroupName, String accountName) {
+ final AccountPatch parameters = null;
+ return updateWithResponseAsync(resourceGroupName, accountName, parameters)
+ .flatMap(res -> Mono.justOrEmpty(res.getValue()));
+ }
+
+ /**
+ * Updates the properties of an existing Azure Video Indexer account.
+ *
+ * @param resourceGroupName The name of the resource group. The name is case insensitive.
+ * @param accountName The name of the Azure Video Indexer account.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return an Azure Video Indexer account.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ public AccountInner update(String resourceGroupName, String accountName) {
+ final AccountPatch parameters = null;
+ return updateAsync(resourceGroupName, accountName, parameters).block();
+ }
+
+ /**
+ * Updates the properties of an existing Azure Video Indexer account.
+ *
+ * @param resourceGroupName The name of the resource group. The name is case insensitive.
+ * @param accountName The name of the Azure Video Indexer account.
+ * @param parameters The parameters to provide for the current Azure Video Indexer account.
+ * @param context The context to associate with this operation.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return an Azure Video Indexer account along with {@link Response}.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ public Response updateWithResponse(
+ String resourceGroupName, String accountName, AccountPatch parameters, Context context) {
+ return updateWithResponseAsync(resourceGroupName, accountName, parameters, context).block();
+ }
+
+ /**
+ * Creates or updates an Azure Video Indexer account.
+ *
+ * @param resourceGroupName The name of the resource group. The name is case insensitive.
+ * @param accountName The name of the Azure Video Indexer account.
+ * @param parameters The parameters to provide for the Azure Video Indexer account.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return an Azure Video Indexer account along with {@link Response} on successful completion of {@link Mono}.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ private Mono> createOrUpdateWithResponseAsync(
+ String resourceGroupName, String accountName, AccountInner parameters) {
+ if (this.client.getEndpoint() == null) {
+ return Mono
+ .error(
+ new IllegalArgumentException(
+ "Parameter this.client.getEndpoint() is required and cannot be null."));
+ }
+ if (this.client.getSubscriptionId() == null) {
+ return Mono
+ .error(
+ new IllegalArgumentException(
+ "Parameter this.client.getSubscriptionId() is required and cannot be null."));
+ }
+ if (resourceGroupName == null) {
+ return Mono
+ .error(new IllegalArgumentException("Parameter resourceGroupName is required and cannot be null."));
+ }
+ if (accountName == null) {
+ return Mono.error(new IllegalArgumentException("Parameter accountName is required and cannot be null."));
+ }
+ if (parameters != null) {
+ parameters.validate();
+ }
+ final String accept = "application/json";
+ return FluxUtil
+ .withContext(
+ context ->
+ service
+ .createOrUpdate(
+ this.client.getEndpoint(),
+ this.client.getSubscriptionId(),
+ resourceGroupName,
+ accountName,
+ this.client.getApiVersion(),
+ parameters,
+ accept,
+ context))
+ .contextWrite(context -> context.putAll(FluxUtil.toReactorContext(this.client.getContext()).readOnly()));
+ }
+
+ /**
+ * Creates or updates an Azure Video Indexer account.
+ *
+ * @param resourceGroupName The name of the resource group. The name is case insensitive.
+ * @param accountName The name of the Azure Video Indexer account.
+ * @param parameters The parameters to provide for the Azure Video Indexer account.
+ * @param context The context to associate with this operation.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return an Azure Video Indexer account along with {@link Response} on successful completion of {@link Mono}.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ private Mono> createOrUpdateWithResponseAsync(
+ String resourceGroupName, String accountName, AccountInner parameters, Context context) {
+ if (this.client.getEndpoint() == null) {
+ return Mono
+ .error(
+ new IllegalArgumentException(
+ "Parameter this.client.getEndpoint() is required and cannot be null."));
+ }
+ if (this.client.getSubscriptionId() == null) {
+ return Mono
+ .error(
+ new IllegalArgumentException(
+ "Parameter this.client.getSubscriptionId() is required and cannot be null."));
+ }
+ if (resourceGroupName == null) {
+ return Mono
+ .error(new IllegalArgumentException("Parameter resourceGroupName is required and cannot be null."));
+ }
+ if (accountName == null) {
+ return Mono.error(new IllegalArgumentException("Parameter accountName is required and cannot be null."));
+ }
+ if (parameters != null) {
+ parameters.validate();
+ }
+ final String accept = "application/json";
+ context = this.client.mergeContext(context);
+ return service
+ .createOrUpdate(
+ this.client.getEndpoint(),
+ this.client.getSubscriptionId(),
+ resourceGroupName,
+ accountName,
+ this.client.getApiVersion(),
+ parameters,
+ accept,
+ context);
+ }
+
+ /**
+ * Creates or updates an Azure Video Indexer account.
+ *
+ * @param resourceGroupName The name of the resource group. The name is case insensitive.
+ * @param accountName The name of the Azure Video Indexer account.
+ * @param parameters The parameters to provide for the Azure Video Indexer account.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return an Azure Video Indexer account on successful completion of {@link Mono}.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ private Mono createOrUpdateAsync(
+ String resourceGroupName, String accountName, AccountInner parameters) {
+ return createOrUpdateWithResponseAsync(resourceGroupName, accountName, parameters)
+ .flatMap(res -> Mono.justOrEmpty(res.getValue()));
+ }
+
+ /**
+ * Creates or updates an Azure Video Indexer account.
+ *
+ * @param resourceGroupName The name of the resource group. The name is case insensitive.
+ * @param accountName The name of the Azure Video Indexer account.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return an Azure Video Indexer account on successful completion of {@link Mono}.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ private Mono createOrUpdateAsync(String resourceGroupName, String accountName) {
+ final AccountInner parameters = null;
+ return createOrUpdateWithResponseAsync(resourceGroupName, accountName, parameters)
+ .flatMap(res -> Mono.justOrEmpty(res.getValue()));
+ }
+
+ /**
+ * Creates or updates an Azure Video Indexer account.
+ *
+ * @param resourceGroupName The name of the resource group. The name is case insensitive.
+ * @param accountName The name of the Azure Video Indexer account.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return an Azure Video Indexer account.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ public AccountInner createOrUpdate(String resourceGroupName, String accountName) {
+ final AccountInner parameters = null;
+ return createOrUpdateAsync(resourceGroupName, accountName, parameters).block();
+ }
+
+ /**
+ * Creates or updates an Azure Video Indexer account.
+ *
+ * @param resourceGroupName The name of the resource group. The name is case insensitive.
+ * @param accountName The name of the Azure Video Indexer account.
+ * @param parameters The parameters to provide for the Azure Video Indexer account.
+ * @param context The context to associate with this operation.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return an Azure Video Indexer account along with {@link Response}.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ public Response createOrUpdateWithResponse(
+ String resourceGroupName, String accountName, AccountInner parameters, Context context) {
+ return createOrUpdateWithResponseAsync(resourceGroupName, accountName, parameters, context).block();
+ }
+
+ /**
+ * Delete an Azure Video Indexer account.
+ *
+ * @param resourceGroupName The name of the resource group. The name is case insensitive.
+ * @param accountName The name of the Azure Video Indexer account.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws 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 {@link Response} on successful completion of {@link Mono}.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ private Mono> deleteWithResponseAsync(String resourceGroupName, String accountName) {
+ if (this.client.getEndpoint() == null) {
+ return Mono
+ .error(
+ new IllegalArgumentException(
+ "Parameter this.client.getEndpoint() is required and cannot be null."));
+ }
+ if (this.client.getSubscriptionId() == null) {
+ return Mono
+ .error(
+ new IllegalArgumentException(
+ "Parameter this.client.getSubscriptionId() is required and cannot be null."));
+ }
+ if (resourceGroupName == null) {
+ return Mono
+ .error(new IllegalArgumentException("Parameter resourceGroupName is required and cannot be null."));
+ }
+ if (accountName == null) {
+ return Mono.error(new IllegalArgumentException("Parameter accountName is required and cannot be null."));
+ }
+ final String accept = "application/json";
+ return FluxUtil
+ .withContext(
+ context ->
+ service
+ .delete(
+ this.client.getEndpoint(),
+ this.client.getSubscriptionId(),
+ resourceGroupName,
+ accountName,
+ this.client.getApiVersion(),
+ accept,
+ context))
+ .contextWrite(context -> context.putAll(FluxUtil.toReactorContext(this.client.getContext()).readOnly()));
+ }
+
+ /**
+ * Delete an Azure Video Indexer account.
+ *
+ * @param resourceGroupName The name of the resource group. The name is case insensitive.
+ * @param accountName The name of the Azure Video Indexer account.
+ * @param context The context to associate with this operation.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws 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 {@link Response} on successful completion of {@link Mono}.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ private Mono> deleteWithResponseAsync(
+ String resourceGroupName, String accountName, Context context) {
+ if (this.client.getEndpoint() == null) {
+ return Mono
+ .error(
+ new IllegalArgumentException(
+ "Parameter this.client.getEndpoint() is required and cannot be null."));
+ }
+ if (this.client.getSubscriptionId() == null) {
+ return Mono
+ .error(
+ new IllegalArgumentException(
+ "Parameter this.client.getSubscriptionId() is required and cannot be null."));
+ }
+ if (resourceGroupName == null) {
+ return Mono
+ .error(new IllegalArgumentException("Parameter resourceGroupName is required and cannot be null."));
+ }
+ if (accountName == null) {
+ return Mono.error(new IllegalArgumentException("Parameter accountName is required and cannot be null."));
+ }
+ final String accept = "application/json";
+ context = this.client.mergeContext(context);
+ return service
+ .delete(
+ this.client.getEndpoint(),
+ this.client.getSubscriptionId(),
+ resourceGroupName,
+ accountName,
+ this.client.getApiVersion(),
+ accept,
+ context);
+ }
+
+ /**
+ * Delete an Azure Video Indexer account.
+ *
+ * @param resourceGroupName The name of the resource group. The name is case insensitive.
+ * @param accountName The name of the Azure Video Indexer account.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return A {@link Mono} that completes when a successful response is received.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ private Mono deleteAsync(String resourceGroupName, String accountName) {
+ return deleteWithResponseAsync(resourceGroupName, accountName).flatMap(ignored -> Mono.empty());
+ }
+
+ /**
+ * Delete an Azure Video Indexer account.
+ *
+ * @param resourceGroupName The name of the resource group. The name is case insensitive.
+ * @param accountName The name of the Azure Video Indexer account.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ public void delete(String resourceGroupName, String accountName) {
+ deleteAsync(resourceGroupName, accountName).block();
+ }
+
+ /**
+ * Delete an Azure Video Indexer account.
+ *
+ * @param resourceGroupName The name of the resource group. The name is case insensitive.
+ * @param accountName The name of the Azure Video Indexer account.
+ * @param context The context to associate with this operation.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws 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 {@link Response}.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ public Response deleteWithResponse(String resourceGroupName, String accountName, Context context) {
+ return deleteWithResponseAsync(resourceGroupName, accountName, context).block();
+ }
+
+ /**
+ * Get the next page of items.
+ *
+ * @param nextLink The URL to get the next list of items
+ * The nextLink parameter.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws 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 list operation response, that contains the data pools and their properties along with {@link
+ * PagedResponse} on successful completion of {@link Mono}.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ private Mono> listNextSinglePageAsync(String nextLink) {
+ if (nextLink == null) {
+ return Mono.error(new IllegalArgumentException("Parameter nextLink is required and cannot be null."));
+ }
+ if (this.client.getEndpoint() == null) {
+ return Mono
+ .error(
+ new IllegalArgumentException(
+ "Parameter this.client.getEndpoint() is required and cannot be null."));
+ }
+ final String accept = "application/json";
+ return FluxUtil
+ .withContext(context -> service.listNext(nextLink, this.client.getEndpoint(), accept, context))
+ .>map(
+ res ->
+ new PagedResponseBase<>(
+ res.getRequest(),
+ res.getStatusCode(),
+ res.getHeaders(),
+ res.getValue().value(),
+ res.getValue().nextLink(),
+ null))
+ .contextWrite(context -> context.putAll(FluxUtil.toReactorContext(this.client.getContext()).readOnly()));
+ }
+
+ /**
+ * Get the next page of items.
+ *
+ * @param nextLink The URL to get the next list of items
+ * The nextLink parameter.
+ * @param context The context to associate with this operation.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws 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 list operation response, that contains the data pools and their properties along with {@link
+ * PagedResponse} on successful completion of {@link Mono}.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ private Mono> listNextSinglePageAsync(String nextLink, Context context) {
+ if (nextLink == null) {
+ return Mono.error(new IllegalArgumentException("Parameter nextLink is required and cannot be null."));
+ }
+ if (this.client.getEndpoint() == null) {
+ return Mono
+ .error(
+ new IllegalArgumentException(
+ "Parameter this.client.getEndpoint() is required and cannot be null."));
+ }
+ final String accept = "application/json";
+ context = this.client.mergeContext(context);
+ return service
+ .listNext(nextLink, this.client.getEndpoint(), accept, context)
+ .map(
+ res ->
+ new PagedResponseBase<>(
+ res.getRequest(),
+ res.getStatusCode(),
+ res.getHeaders(),
+ res.getValue().value(),
+ res.getValue().nextLink(),
+ null));
+ }
+
+ /**
+ * Get the next page of items.
+ *
+ * @param nextLink The URL to get the next list of items
+ * The nextLink parameter.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws 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 list operation response, that contains the data pools and their properties along with {@link
+ * PagedResponse} on successful completion of {@link Mono}.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ private Mono> listByResourceGroupNextSinglePageAsync(String nextLink) {
+ if (nextLink == null) {
+ return Mono.error(new IllegalArgumentException("Parameter nextLink is required and cannot be null."));
+ }
+ if (this.client.getEndpoint() == null) {
+ return Mono
+ .error(
+ new IllegalArgumentException(
+ "Parameter this.client.getEndpoint() is required and cannot be null."));
+ }
+ final String accept = "application/json";
+ return FluxUtil
+ .withContext(
+ context -> service.listByResourceGroupNext(nextLink, this.client.getEndpoint(), accept, context))
+ .>map(
+ res ->
+ new PagedResponseBase<>(
+ res.getRequest(),
+ res.getStatusCode(),
+ res.getHeaders(),
+ res.getValue().value(),
+ res.getValue().nextLink(),
+ null))
+ .contextWrite(context -> context.putAll(FluxUtil.toReactorContext(this.client.getContext()).readOnly()));
+ }
+
+ /**
+ * Get the next page of items.
+ *
+ * @param nextLink The URL to get the next list of items
+ * The nextLink parameter.
+ * @param context The context to associate with this operation.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws 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 list operation response, that contains the data pools and their properties along with {@link
+ * PagedResponse} on successful completion of {@link Mono}.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ private Mono> listByResourceGroupNextSinglePageAsync(String nextLink, Context context) {
+ if (nextLink == null) {
+ return Mono.error(new IllegalArgumentException("Parameter nextLink is required and cannot be null."));
+ }
+ if (this.client.getEndpoint() == null) {
+ return Mono
+ .error(
+ new IllegalArgumentException(
+ "Parameter this.client.getEndpoint() is required and cannot be null."));
+ }
+ final String accept = "application/json";
+ context = this.client.mergeContext(context);
+ return service
+ .listByResourceGroupNext(nextLink, this.client.getEndpoint(), accept, context)
+ .map(
+ res ->
+ new PagedResponseBase<>(
+ res.getRequest(),
+ res.getStatusCode(),
+ res.getHeaders(),
+ res.getValue().value(),
+ res.getValue().nextLink(),
+ null));
+ }
+}
diff --git a/sdk/vi/azure-resourcemanager-vi/src/main/java/com/azure/resourcemanager/vi/implementation/AccountsImpl.java b/sdk/vi/azure-resourcemanager-vi/src/main/java/com/azure/resourcemanager/vi/implementation/AccountsImpl.java
new file mode 100644
index 000000000000..f413c33c4796
--- /dev/null
+++ b/sdk/vi/azure-resourcemanager-vi/src/main/java/com/azure/resourcemanager/vi/implementation/AccountsImpl.java
@@ -0,0 +1,197 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.vi.implementation;
+
+import com.azure.core.http.rest.PagedIterable;
+import com.azure.core.http.rest.Response;
+import com.azure.core.http.rest.SimpleResponse;
+import com.azure.core.util.Context;
+import com.azure.core.util.logging.ClientLogger;
+import com.azure.resourcemanager.vi.fluent.AccountsClient;
+import com.azure.resourcemanager.vi.fluent.models.AccountInner;
+import com.azure.resourcemanager.vi.fluent.models.CheckNameAvailabilityResultInner;
+import com.azure.resourcemanager.vi.models.Account;
+import com.azure.resourcemanager.vi.models.AccountCheckNameAvailabilityParameters;
+import com.azure.resourcemanager.vi.models.Accounts;
+import com.azure.resourcemanager.vi.models.CheckNameAvailabilityResult;
+
+public final class AccountsImpl implements Accounts {
+ private static final ClientLogger LOGGER = new ClientLogger(AccountsImpl.class);
+
+ private final AccountsClient innerClient;
+
+ private final com.azure.resourcemanager.vi.ViManager serviceManager;
+
+ public AccountsImpl(AccountsClient innerClient, com.azure.resourcemanager.vi.ViManager serviceManager) {
+ this.innerClient = innerClient;
+ this.serviceManager = serviceManager;
+ }
+
+ public CheckNameAvailabilityResult checkNameAvailability(
+ AccountCheckNameAvailabilityParameters checkNameAvailabilityParameters) {
+ CheckNameAvailabilityResultInner inner =
+ this.serviceClient().checkNameAvailability(checkNameAvailabilityParameters);
+ if (inner != null) {
+ return new CheckNameAvailabilityResultImpl(inner, this.manager());
+ } else {
+ return null;
+ }
+ }
+
+ public Response checkNameAvailabilityWithResponse(
+ AccountCheckNameAvailabilityParameters checkNameAvailabilityParameters, Context context) {
+ Response inner =
+ this.serviceClient().checkNameAvailabilityWithResponse(checkNameAvailabilityParameters, context);
+ if (inner != null) {
+ return new SimpleResponse<>(
+ inner.getRequest(),
+ inner.getStatusCode(),
+ inner.getHeaders(),
+ new CheckNameAvailabilityResultImpl(inner.getValue(), this.manager()));
+ } else {
+ return null;
+ }
+ }
+
+ public PagedIterable list() {
+ PagedIterable inner = this.serviceClient().list();
+ return Utils.mapPage(inner, inner1 -> new AccountImpl(inner1, this.manager()));
+ }
+
+ public PagedIterable list(Context context) {
+ PagedIterable inner = this.serviceClient().list(context);
+ return Utils.mapPage(inner, inner1 -> new AccountImpl(inner1, this.manager()));
+ }
+
+ public PagedIterable listByResourceGroup(String resourceGroupName) {
+ PagedIterable inner = this.serviceClient().listByResourceGroup(resourceGroupName);
+ return Utils.mapPage(inner, inner1 -> new AccountImpl(inner1, this.manager()));
+ }
+
+ public PagedIterable listByResourceGroup(String resourceGroupName, Context context) {
+ PagedIterable inner = this.serviceClient().listByResourceGroup(resourceGroupName, context);
+ return Utils.mapPage(inner, inner1 -> new AccountImpl(inner1, this.manager()));
+ }
+
+ public Account getByResourceGroup(String resourceGroupName, String accountName) {
+ AccountInner inner = this.serviceClient().getByResourceGroup(resourceGroupName, accountName);
+ if (inner != null) {
+ return new AccountImpl(inner, this.manager());
+ } else {
+ return null;
+ }
+ }
+
+ public Response getByResourceGroupWithResponse(
+ String resourceGroupName, String accountName, Context context) {
+ Response inner =
+ this.serviceClient().getByResourceGroupWithResponse(resourceGroupName, accountName, context);
+ if (inner != null) {
+ return new SimpleResponse<>(
+ inner.getRequest(),
+ inner.getStatusCode(),
+ inner.getHeaders(),
+ new AccountImpl(inner.getValue(), this.manager()));
+ } else {
+ return null;
+ }
+ }
+
+ public void deleteByResourceGroup(String resourceGroupName, String accountName) {
+ this.serviceClient().delete(resourceGroupName, accountName);
+ }
+
+ public Response deleteWithResponse(String resourceGroupName, String accountName, Context context) {
+ return this.serviceClient().deleteWithResponse(resourceGroupName, accountName, context);
+ }
+
+ public Account getById(String id) {
+ String resourceGroupName = Utils.getValueFromIdByName(id, "resourceGroups");
+ if (resourceGroupName == null) {
+ throw LOGGER
+ .logExceptionAsError(
+ new IllegalArgumentException(
+ String
+ .format("The resource ID '%s' is not valid. Missing path segment 'resourceGroups'.", id)));
+ }
+ String accountName = Utils.getValueFromIdByName(id, "accounts");
+ if (accountName == null) {
+ throw LOGGER
+ .logExceptionAsError(
+ new IllegalArgumentException(
+ String.format("The resource ID '%s' is not valid. Missing path segment 'accounts'.", id)));
+ }
+ return this.getByResourceGroupWithResponse(resourceGroupName, accountName, Context.NONE).getValue();
+ }
+
+ public Response getByIdWithResponse(String id, Context context) {
+ String resourceGroupName = Utils.getValueFromIdByName(id, "resourceGroups");
+ if (resourceGroupName == null) {
+ throw LOGGER
+ .logExceptionAsError(
+ new IllegalArgumentException(
+ String
+ .format("The resource ID '%s' is not valid. Missing path segment 'resourceGroups'.", id)));
+ }
+ String accountName = Utils.getValueFromIdByName(id, "accounts");
+ if (accountName == null) {
+ throw LOGGER
+ .logExceptionAsError(
+ new IllegalArgumentException(
+ String.format("The resource ID '%s' is not valid. Missing path segment 'accounts'.", id)));
+ }
+ return this.getByResourceGroupWithResponse(resourceGroupName, accountName, context);
+ }
+
+ public void deleteById(String id) {
+ String resourceGroupName = Utils.getValueFromIdByName(id, "resourceGroups");
+ if (resourceGroupName == null) {
+ throw LOGGER
+ .logExceptionAsError(
+ new IllegalArgumentException(
+ String
+ .format("The resource ID '%s' is not valid. Missing path segment 'resourceGroups'.", id)));
+ }
+ String accountName = Utils.getValueFromIdByName(id, "accounts");
+ if (accountName == null) {
+ throw LOGGER
+ .logExceptionAsError(
+ new IllegalArgumentException(
+ String.format("The resource ID '%s' is not valid. Missing path segment 'accounts'.", id)));
+ }
+ this.deleteWithResponse(resourceGroupName, accountName, Context.NONE);
+ }
+
+ public Response deleteByIdWithResponse(String id, Context context) {
+ String resourceGroupName = Utils.getValueFromIdByName(id, "resourceGroups");
+ if (resourceGroupName == null) {
+ throw LOGGER
+ .logExceptionAsError(
+ new IllegalArgumentException(
+ String
+ .format("The resource ID '%s' is not valid. Missing path segment 'resourceGroups'.", id)));
+ }
+ String accountName = Utils.getValueFromIdByName(id, "accounts");
+ if (accountName == null) {
+ throw LOGGER
+ .logExceptionAsError(
+ new IllegalArgumentException(
+ String.format("The resource ID '%s' is not valid. Missing path segment 'accounts'.", id)));
+ }
+ return this.deleteWithResponse(resourceGroupName, accountName, context);
+ }
+
+ private AccountsClient serviceClient() {
+ return this.innerClient;
+ }
+
+ private com.azure.resourcemanager.vi.ViManager manager() {
+ return this.serviceManager;
+ }
+
+ public AccountImpl define(String name) {
+ return new AccountImpl(name, this.manager());
+ }
+}
diff --git a/sdk/vi/azure-resourcemanager-vi/src/main/java/com/azure/resourcemanager/vi/implementation/CheckNameAvailabilityResultImpl.java b/sdk/vi/azure-resourcemanager-vi/src/main/java/com/azure/resourcemanager/vi/implementation/CheckNameAvailabilityResultImpl.java
new file mode 100644
index 000000000000..e9277b42423f
--- /dev/null
+++ b/sdk/vi/azure-resourcemanager-vi/src/main/java/com/azure/resourcemanager/vi/implementation/CheckNameAvailabilityResultImpl.java
@@ -0,0 +1,41 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.vi.implementation;
+
+import com.azure.resourcemanager.vi.fluent.models.CheckNameAvailabilityResultInner;
+import com.azure.resourcemanager.vi.models.CheckNameAvailabilityResult;
+import com.azure.resourcemanager.vi.models.Reason;
+
+public final class CheckNameAvailabilityResultImpl implements CheckNameAvailabilityResult {
+ private CheckNameAvailabilityResultInner innerObject;
+
+ private final com.azure.resourcemanager.vi.ViManager serviceManager;
+
+ CheckNameAvailabilityResultImpl(
+ CheckNameAvailabilityResultInner innerObject, com.azure.resourcemanager.vi.ViManager serviceManager) {
+ this.innerObject = innerObject;
+ this.serviceManager = serviceManager;
+ }
+
+ public Boolean nameAvailable() {
+ return this.innerModel().nameAvailable();
+ }
+
+ public Reason reason() {
+ return this.innerModel().reason();
+ }
+
+ public String message() {
+ return this.innerModel().message();
+ }
+
+ public CheckNameAvailabilityResultInner innerModel() {
+ return this.innerObject;
+ }
+
+ private com.azure.resourcemanager.vi.ViManager manager() {
+ return this.serviceManager;
+ }
+}
diff --git a/sdk/vi/azure-resourcemanager-vi/src/main/java/com/azure/resourcemanager/vi/implementation/ClassicAccountImpl.java b/sdk/vi/azure-resourcemanager-vi/src/main/java/com/azure/resourcemanager/vi/implementation/ClassicAccountImpl.java
new file mode 100644
index 000000000000..e267b3f4be19
--- /dev/null
+++ b/sdk/vi/azure-resourcemanager-vi/src/main/java/com/azure/resourcemanager/vi/implementation/ClassicAccountImpl.java
@@ -0,0 +1,44 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.vi.implementation;
+
+import com.azure.resourcemanager.vi.fluent.models.ClassicAccountInner;
+import com.azure.resourcemanager.vi.models.ClassicAccount;
+import com.azure.resourcemanager.vi.models.ClassicAccountMediaServices;
+
+public final class ClassicAccountImpl implements ClassicAccount {
+ private ClassicAccountInner innerObject;
+
+ private final com.azure.resourcemanager.vi.ViManager serviceManager;
+
+ ClassicAccountImpl(ClassicAccountInner innerObject, com.azure.resourcemanager.vi.ViManager serviceManager) {
+ this.innerObject = innerObject;
+ this.serviceManager = serviceManager;
+ }
+
+ public String name() {
+ return this.innerModel().name();
+ }
+
+ public String location() {
+ return this.innerModel().location();
+ }
+
+ public String id() {
+ return this.innerModel().id();
+ }
+
+ public ClassicAccountMediaServices mediaServices() {
+ return this.innerModel().mediaServices();
+ }
+
+ public ClassicAccountInner innerModel() {
+ return this.innerObject;
+ }
+
+ private com.azure.resourcemanager.vi.ViManager manager() {
+ return this.serviceManager;
+ }
+}
diff --git a/sdk/vi/azure-resourcemanager-vi/src/main/java/com/azure/resourcemanager/vi/implementation/ClassicAccountSlimImpl.java b/sdk/vi/azure-resourcemanager-vi/src/main/java/com/azure/resourcemanager/vi/implementation/ClassicAccountSlimImpl.java
new file mode 100644
index 000000000000..96764e176761
--- /dev/null
+++ b/sdk/vi/azure-resourcemanager-vi/src/main/java/com/azure/resourcemanager/vi/implementation/ClassicAccountSlimImpl.java
@@ -0,0 +1,39 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.vi.implementation;
+
+import com.azure.resourcemanager.vi.fluent.models.ClassicAccountSlimInner;
+import com.azure.resourcemanager.vi.models.ClassicAccountSlim;
+
+public final class ClassicAccountSlimImpl implements ClassicAccountSlim {
+ private ClassicAccountSlimInner innerObject;
+
+ private final com.azure.resourcemanager.vi.ViManager serviceManager;
+
+ ClassicAccountSlimImpl(ClassicAccountSlimInner innerObject, com.azure.resourcemanager.vi.ViManager serviceManager) {
+ this.innerObject = innerObject;
+ this.serviceManager = serviceManager;
+ }
+
+ public String name() {
+ return this.innerModel().name();
+ }
+
+ public String location() {
+ return this.innerModel().location();
+ }
+
+ public String id() {
+ return this.innerModel().id();
+ }
+
+ public ClassicAccountSlimInner innerModel() {
+ return this.innerObject;
+ }
+
+ private com.azure.resourcemanager.vi.ViManager manager() {
+ return this.serviceManager;
+ }
+}
diff --git a/sdk/vi/azure-resourcemanager-vi/src/main/java/com/azure/resourcemanager/vi/implementation/ClassicAccountsClientImpl.java b/sdk/vi/azure-resourcemanager-vi/src/main/java/com/azure/resourcemanager/vi/implementation/ClassicAccountsClientImpl.java
new file mode 100644
index 000000000000..b9a17819502f
--- /dev/null
+++ b/sdk/vi/azure-resourcemanager-vi/src/main/java/com/azure/resourcemanager/vi/implementation/ClassicAccountsClientImpl.java
@@ -0,0 +1,185 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.vi.implementation;
+
+import com.azure.core.annotation.ExpectedResponses;
+import com.azure.core.annotation.Get;
+import com.azure.core.annotation.HeaderParam;
+import com.azure.core.annotation.Headers;
+import com.azure.core.annotation.Host;
+import com.azure.core.annotation.HostParam;
+import com.azure.core.annotation.PathParam;
+import com.azure.core.annotation.QueryParam;
+import com.azure.core.annotation.ReturnType;
+import com.azure.core.annotation.ServiceInterface;
+import com.azure.core.annotation.ServiceMethod;
+import com.azure.core.annotation.UnexpectedResponseExceptionType;
+import com.azure.core.http.rest.Response;
+import com.azure.core.http.rest.RestProxy;
+import com.azure.core.management.exception.ManagementException;
+import com.azure.core.util.Context;
+import com.azure.core.util.FluxUtil;
+import com.azure.resourcemanager.vi.fluent.ClassicAccountsClient;
+import com.azure.resourcemanager.vi.fluent.models.ClassicAccountInner;
+import reactor.core.publisher.Mono;
+
+/** An instance of this class provides access to all the operations defined in ClassicAccountsClient. */
+public final class ClassicAccountsClientImpl implements ClassicAccountsClient {
+ /** The proxy service used to perform REST calls. */
+ private final ClassicAccountsService service;
+
+ /** The service client containing this operation class. */
+ private final ViManagementClientImpl client;
+
+ /**
+ * Initializes an instance of ClassicAccountsClientImpl.
+ *
+ * @param client the instance of the service client containing this operation class.
+ */
+ ClassicAccountsClientImpl(ViManagementClientImpl client) {
+ this.service =
+ RestProxy.create(ClassicAccountsService.class, client.getHttpPipeline(), client.getSerializerAdapter());
+ this.client = client;
+ }
+
+ /**
+ * The interface defining all the services for ViManagementClientClassicAccounts to be used by the proxy service to
+ * perform REST calls.
+ */
+ @Host("{$host}")
+ @ServiceInterface(name = "ViManagementClientCl")
+ private interface ClassicAccountsService {
+ @Headers({"Content-Type: application/json"})
+ @Get("/providers/Microsoft.VideoIndexer/locations/{location}/classicAccounts/{accountName}")
+ @ExpectedResponses({200})
+ @UnexpectedResponseExceptionType(ManagementException.class)
+ Mono> getDetails(
+ @HostParam("$host") String endpoint,
+ @PathParam("location") String location,
+ @QueryParam("api-version") String apiVersion,
+ @PathParam("accountName") String accountName,
+ @HeaderParam("Accept") String accept,
+ Context context);
+ }
+
+ /**
+ * Gets the properties of an Azure Video Indexer Classic account.
+ *
+ * @param location The name of Azure region.
+ * @param accountName The name of the Azure Video Indexer account.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws 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 of an Azure Video Indexer Classic account along with {@link Response} on successful
+ * completion of {@link Mono}.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ private Mono> getDetailsWithResponseAsync(String location, String accountName) {
+ if (this.client.getEndpoint() == null) {
+ return Mono
+ .error(
+ new IllegalArgumentException(
+ "Parameter this.client.getEndpoint() is required and cannot be null."));
+ }
+ if (location == null) {
+ return Mono.error(new IllegalArgumentException("Parameter location is required and cannot be null."));
+ }
+ if (accountName == null) {
+ return Mono.error(new IllegalArgumentException("Parameter accountName is required and cannot be null."));
+ }
+ final String accept = "application/json";
+ return FluxUtil
+ .withContext(
+ context ->
+ service
+ .getDetails(
+ this.client.getEndpoint(),
+ location,
+ this.client.getApiVersion(),
+ accountName,
+ accept,
+ context))
+ .contextWrite(context -> context.putAll(FluxUtil.toReactorContext(this.client.getContext()).readOnly()));
+ }
+
+ /**
+ * Gets the properties of an Azure Video Indexer Classic account.
+ *
+ * @param location The name of Azure region.
+ * @param accountName The name of the Azure Video Indexer account.
+ * @param context The context to associate with this operation.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws 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 of an Azure Video Indexer Classic account along with {@link Response} on successful
+ * completion of {@link Mono}.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ private Mono> getDetailsWithResponseAsync(
+ String location, String accountName, Context context) {
+ if (this.client.getEndpoint() == null) {
+ return Mono
+ .error(
+ new IllegalArgumentException(
+ "Parameter this.client.getEndpoint() is required and cannot be null."));
+ }
+ if (location == null) {
+ return Mono.error(new IllegalArgumentException("Parameter location is required and cannot be null."));
+ }
+ if (accountName == null) {
+ return Mono.error(new IllegalArgumentException("Parameter accountName is required and cannot be null."));
+ }
+ final String accept = "application/json";
+ context = this.client.mergeContext(context);
+ return service
+ .getDetails(this.client.getEndpoint(), location, this.client.getApiVersion(), accountName, accept, context);
+ }
+
+ /**
+ * Gets the properties of an Azure Video Indexer Classic account.
+ *
+ * @param location The name of Azure region.
+ * @param accountName The name of the Azure Video Indexer account.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws 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 of an Azure Video Indexer Classic account on successful completion of {@link Mono}.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ private Mono getDetailsAsync(String location, String accountName) {
+ return getDetailsWithResponseAsync(location, accountName).flatMap(res -> Mono.justOrEmpty(res.getValue()));
+ }
+
+ /**
+ * Gets the properties of an Azure Video Indexer Classic account.
+ *
+ * @param location The name of Azure region.
+ * @param accountName The name of the Azure Video Indexer account.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws 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 of an Azure Video Indexer Classic account.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ public ClassicAccountInner getDetails(String location, String accountName) {
+ return getDetailsAsync(location, accountName).block();
+ }
+
+ /**
+ * Gets the properties of an Azure Video Indexer Classic account.
+ *
+ * @param location The name of Azure region.
+ * @param accountName The name of the Azure Video Indexer account.
+ * @param context The context to associate with this operation.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws 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 of an Azure Video Indexer Classic account along with {@link Response}.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ public Response getDetailsWithResponse(String location, String accountName, Context context) {
+ return getDetailsWithResponseAsync(location, accountName, context).block();
+ }
+}
diff --git a/sdk/vi/azure-resourcemanager-vi/src/main/java/com/azure/resourcemanager/vi/implementation/ClassicAccountsImpl.java b/sdk/vi/azure-resourcemanager-vi/src/main/java/com/azure/resourcemanager/vi/implementation/ClassicAccountsImpl.java
new file mode 100644
index 000000000000..681c155c4093
--- /dev/null
+++ b/sdk/vi/azure-resourcemanager-vi/src/main/java/com/azure/resourcemanager/vi/implementation/ClassicAccountsImpl.java
@@ -0,0 +1,59 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.vi.implementation;
+
+import com.azure.core.http.rest.Response;
+import com.azure.core.http.rest.SimpleResponse;
+import com.azure.core.util.Context;
+import com.azure.core.util.logging.ClientLogger;
+import com.azure.resourcemanager.vi.fluent.ClassicAccountsClient;
+import com.azure.resourcemanager.vi.fluent.models.ClassicAccountInner;
+import com.azure.resourcemanager.vi.models.ClassicAccount;
+import com.azure.resourcemanager.vi.models.ClassicAccounts;
+
+public final class ClassicAccountsImpl implements ClassicAccounts {
+ private static final ClientLogger LOGGER = new ClientLogger(ClassicAccountsImpl.class);
+
+ private final ClassicAccountsClient innerClient;
+
+ private final com.azure.resourcemanager.vi.ViManager serviceManager;
+
+ public ClassicAccountsImpl(
+ ClassicAccountsClient innerClient, com.azure.resourcemanager.vi.ViManager serviceManager) {
+ this.innerClient = innerClient;
+ this.serviceManager = serviceManager;
+ }
+
+ public ClassicAccount getDetails(String location, String accountName) {
+ ClassicAccountInner inner = this.serviceClient().getDetails(location, accountName);
+ if (inner != null) {
+ return new ClassicAccountImpl(inner, this.manager());
+ } else {
+ return null;
+ }
+ }
+
+ public Response getDetailsWithResponse(String location, String accountName, Context context) {
+ Response inner =
+ this.serviceClient().getDetailsWithResponse(location, accountName, context);
+ if (inner != null) {
+ return new SimpleResponse<>(
+ inner.getRequest(),
+ inner.getStatusCode(),
+ inner.getHeaders(),
+ new ClassicAccountImpl(inner.getValue(), this.manager()));
+ } else {
+ return null;
+ }
+ }
+
+ private ClassicAccountsClient serviceClient() {
+ return this.innerClient;
+ }
+
+ private com.azure.resourcemanager.vi.ViManager manager() {
+ return this.serviceManager;
+ }
+}
diff --git a/sdk/vi/azure-resourcemanager-vi/src/main/java/com/azure/resourcemanager/vi/implementation/GeneratesClientImpl.java b/sdk/vi/azure-resourcemanager-vi/src/main/java/com/azure/resourcemanager/vi/implementation/GeneratesClientImpl.java
new file mode 100644
index 000000000000..f60726476bb0
--- /dev/null
+++ b/sdk/vi/azure-resourcemanager-vi/src/main/java/com/azure/resourcemanager/vi/implementation/GeneratesClientImpl.java
@@ -0,0 +1,245 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.vi.implementation;
+
+import com.azure.core.annotation.BodyParam;
+import com.azure.core.annotation.ExpectedResponses;
+import com.azure.core.annotation.HeaderParam;
+import com.azure.core.annotation.Headers;
+import com.azure.core.annotation.Host;
+import com.azure.core.annotation.HostParam;
+import com.azure.core.annotation.PathParam;
+import com.azure.core.annotation.Post;
+import com.azure.core.annotation.QueryParam;
+import com.azure.core.annotation.ReturnType;
+import com.azure.core.annotation.ServiceInterface;
+import com.azure.core.annotation.ServiceMethod;
+import com.azure.core.annotation.UnexpectedResponseExceptionType;
+import com.azure.core.http.rest.Response;
+import com.azure.core.http.rest.RestProxy;
+import com.azure.core.management.exception.ManagementException;
+import com.azure.core.util.Context;
+import com.azure.core.util.FluxUtil;
+import com.azure.resourcemanager.vi.fluent.GeneratesClient;
+import com.azure.resourcemanager.vi.fluent.models.AccessTokenInner;
+import com.azure.resourcemanager.vi.models.GenerateAccessTokenParameters;
+import reactor.core.publisher.Mono;
+
+/** An instance of this class provides access to all the operations defined in GeneratesClient. */
+public final class GeneratesClientImpl implements GeneratesClient {
+ /** The proxy service used to perform REST calls. */
+ private final GeneratesService service;
+
+ /** The service client containing this operation class. */
+ private final ViManagementClientImpl client;
+
+ /**
+ * Initializes an instance of GeneratesClientImpl.
+ *
+ * @param client the instance of the service client containing this operation class.
+ */
+ GeneratesClientImpl(ViManagementClientImpl client) {
+ this.service =
+ RestProxy.create(GeneratesService.class, client.getHttpPipeline(), client.getSerializerAdapter());
+ this.client = client;
+ }
+
+ /**
+ * The interface defining all the services for ViManagementClientGenerates to be used by the proxy service to
+ * perform REST calls.
+ */
+ @Host("{$host}")
+ @ServiceInterface(name = "ViManagementClientGe")
+ private interface GeneratesService {
+ @Headers({"Content-Type: application/json"})
+ @Post(
+ "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.VideoIndexer"
+ + "/accounts/{accountName}/generateAccessToken")
+ @ExpectedResponses({200})
+ @UnexpectedResponseExceptionType(ManagementException.class)
+ Mono> accessToken(
+ @HostParam("$host") String endpoint,
+ @PathParam("subscriptionId") String subscriptionId,
+ @PathParam("resourceGroupName") String resourceGroupName,
+ @PathParam("accountName") String accountName,
+ @QueryParam("api-version") String apiVersion,
+ @BodyParam("application/json") GenerateAccessTokenParameters parameters,
+ @HeaderParam("Accept") String accept,
+ Context context);
+ }
+
+ /**
+ * Generate an Azure Video Indexer access token.
+ *
+ * @param resourceGroupName The name of the resource group. The name is case insensitive.
+ * @param accountName The name of the Azure Video Indexer account.
+ * @param parameters The parameters for generating access token.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return azure Video Indexer access token along with {@link Response} on successful completion of {@link Mono}.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ private Mono> accessTokenWithResponseAsync(
+ String resourceGroupName, String accountName, GenerateAccessTokenParameters parameters) {
+ if (this.client.getEndpoint() == null) {
+ return Mono
+ .error(
+ new IllegalArgumentException(
+ "Parameter this.client.getEndpoint() is required and cannot be null."));
+ }
+ if (this.client.getSubscriptionId() == null) {
+ return Mono
+ .error(
+ new IllegalArgumentException(
+ "Parameter this.client.getSubscriptionId() is required and cannot be null."));
+ }
+ if (resourceGroupName == null) {
+ return Mono
+ .error(new IllegalArgumentException("Parameter resourceGroupName is required and cannot be null."));
+ }
+ if (accountName == null) {
+ return Mono.error(new IllegalArgumentException("Parameter accountName is required and cannot be null."));
+ }
+ if (parameters != null) {
+ parameters.validate();
+ }
+ final String accept = "application/json";
+ return FluxUtil
+ .withContext(
+ context ->
+ service
+ .accessToken(
+ this.client.getEndpoint(),
+ this.client.getSubscriptionId(),
+ resourceGroupName,
+ accountName,
+ this.client.getApiVersion(),
+ parameters,
+ accept,
+ context))
+ .contextWrite(context -> context.putAll(FluxUtil.toReactorContext(this.client.getContext()).readOnly()));
+ }
+
+ /**
+ * Generate an Azure Video Indexer access token.
+ *
+ * @param resourceGroupName The name of the resource group. The name is case insensitive.
+ * @param accountName The name of the Azure Video Indexer account.
+ * @param parameters The parameters for generating access token.
+ * @param context The context to associate with this operation.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return azure Video Indexer access token along with {@link Response} on successful completion of {@link Mono}.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ private Mono> accessTokenWithResponseAsync(
+ String resourceGroupName, String accountName, GenerateAccessTokenParameters parameters, Context context) {
+ if (this.client.getEndpoint() == null) {
+ return Mono
+ .error(
+ new IllegalArgumentException(
+ "Parameter this.client.getEndpoint() is required and cannot be null."));
+ }
+ if (this.client.getSubscriptionId() == null) {
+ return Mono
+ .error(
+ new IllegalArgumentException(
+ "Parameter this.client.getSubscriptionId() is required and cannot be null."));
+ }
+ if (resourceGroupName == null) {
+ return Mono
+ .error(new IllegalArgumentException("Parameter resourceGroupName is required and cannot be null."));
+ }
+ if (accountName == null) {
+ return Mono.error(new IllegalArgumentException("Parameter accountName is required and cannot be null."));
+ }
+ if (parameters != null) {
+ parameters.validate();
+ }
+ final String accept = "application/json";
+ context = this.client.mergeContext(context);
+ return service
+ .accessToken(
+ this.client.getEndpoint(),
+ this.client.getSubscriptionId(),
+ resourceGroupName,
+ accountName,
+ this.client.getApiVersion(),
+ parameters,
+ accept,
+ context);
+ }
+
+ /**
+ * Generate an Azure Video Indexer access token.
+ *
+ * @param resourceGroupName The name of the resource group. The name is case insensitive.
+ * @param accountName The name of the Azure Video Indexer account.
+ * @param parameters The parameters for generating access token.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return azure Video Indexer access token on successful completion of {@link Mono}.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ private Mono accessTokenAsync(
+ String resourceGroupName, String accountName, GenerateAccessTokenParameters parameters) {
+ return accessTokenWithResponseAsync(resourceGroupName, accountName, parameters)
+ .flatMap(res -> Mono.justOrEmpty(res.getValue()));
+ }
+
+ /**
+ * Generate an Azure Video Indexer access token.
+ *
+ * @param resourceGroupName The name of the resource group. The name is case insensitive.
+ * @param accountName The name of the Azure Video Indexer account.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return azure Video Indexer access token on successful completion of {@link Mono}.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ private Mono accessTokenAsync(String resourceGroupName, String accountName) {
+ final GenerateAccessTokenParameters parameters = null;
+ return accessTokenWithResponseAsync(resourceGroupName, accountName, parameters)
+ .flatMap(res -> Mono.justOrEmpty(res.getValue()));
+ }
+
+ /**
+ * Generate an Azure Video Indexer access token.
+ *
+ * @param resourceGroupName The name of the resource group. The name is case insensitive.
+ * @param accountName The name of the Azure Video Indexer account.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return azure Video Indexer access token.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ public AccessTokenInner accessToken(String resourceGroupName, String accountName) {
+ final GenerateAccessTokenParameters parameters = null;
+ return accessTokenAsync(resourceGroupName, accountName, parameters).block();
+ }
+
+ /**
+ * Generate an Azure Video Indexer access token.
+ *
+ * @param resourceGroupName The name of the resource group. The name is case insensitive.
+ * @param accountName The name of the Azure Video Indexer account.
+ * @param parameters The parameters for generating access token.
+ * @param context The context to associate with this operation.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return azure Video Indexer access token along with {@link Response}.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ public Response accessTokenWithResponse(
+ String resourceGroupName, String accountName, GenerateAccessTokenParameters parameters, Context context) {
+ return accessTokenWithResponseAsync(resourceGroupName, accountName, parameters, context).block();
+ }
+}
diff --git a/sdk/vi/azure-resourcemanager-vi/src/main/java/com/azure/resourcemanager/vi/implementation/GeneratesImpl.java b/sdk/vi/azure-resourcemanager-vi/src/main/java/com/azure/resourcemanager/vi/implementation/GeneratesImpl.java
new file mode 100644
index 000000000000..8e8bddf29707
--- /dev/null
+++ b/sdk/vi/azure-resourcemanager-vi/src/main/java/com/azure/resourcemanager/vi/implementation/GeneratesImpl.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.vi.implementation;
+
+import com.azure.core.http.rest.Response;
+import com.azure.core.http.rest.SimpleResponse;
+import com.azure.core.util.Context;
+import com.azure.core.util.logging.ClientLogger;
+import com.azure.resourcemanager.vi.fluent.GeneratesClient;
+import com.azure.resourcemanager.vi.fluent.models.AccessTokenInner;
+import com.azure.resourcemanager.vi.models.AccessToken;
+import com.azure.resourcemanager.vi.models.GenerateAccessTokenParameters;
+import com.azure.resourcemanager.vi.models.Generates;
+
+public final class GeneratesImpl implements Generates {
+ private static final ClientLogger LOGGER = new ClientLogger(GeneratesImpl.class);
+
+ private final GeneratesClient innerClient;
+
+ private final com.azure.resourcemanager.vi.ViManager serviceManager;
+
+ public GeneratesImpl(GeneratesClient innerClient, com.azure.resourcemanager.vi.ViManager serviceManager) {
+ this.innerClient = innerClient;
+ this.serviceManager = serviceManager;
+ }
+
+ public AccessToken accessToken(String resourceGroupName, String accountName) {
+ AccessTokenInner inner = this.serviceClient().accessToken(resourceGroupName, accountName);
+ if (inner != null) {
+ return new AccessTokenImpl(inner, this.manager());
+ } else {
+ return null;
+ }
+ }
+
+ public Response accessTokenWithResponse(
+ String resourceGroupName, String accountName, GenerateAccessTokenParameters parameters, Context context) {
+ Response inner =
+ this.serviceClient().accessTokenWithResponse(resourceGroupName, accountName, parameters, context);
+ if (inner != null) {
+ return new SimpleResponse<>(
+ inner.getRequest(),
+ inner.getStatusCode(),
+ inner.getHeaders(),
+ new AccessTokenImpl(inner.getValue(), this.manager()));
+ } else {
+ return null;
+ }
+ }
+
+ private GeneratesClient serviceClient() {
+ return this.innerClient;
+ }
+
+ private com.azure.resourcemanager.vi.ViManager manager() {
+ return this.serviceManager;
+ }
+}
diff --git a/sdk/vi/azure-resourcemanager-vi/src/main/java/com/azure/resourcemanager/vi/implementation/OperationImpl.java b/sdk/vi/azure-resourcemanager-vi/src/main/java/com/azure/resourcemanager/vi/implementation/OperationImpl.java
new file mode 100644
index 000000000000..8054cef85f09
--- /dev/null
+++ b/sdk/vi/azure-resourcemanager-vi/src/main/java/com/azure/resourcemanager/vi/implementation/OperationImpl.java
@@ -0,0 +1,48 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.vi.implementation;
+
+import com.azure.resourcemanager.vi.fluent.models.OperationInner;
+import com.azure.resourcemanager.vi.models.Operation;
+import com.azure.resourcemanager.vi.models.OperationDisplay;
+
+public final class OperationImpl implements Operation {
+ private OperationInner innerObject;
+
+ private final com.azure.resourcemanager.vi.ViManager serviceManager;
+
+ OperationImpl(OperationInner innerObject, com.azure.resourcemanager.vi.ViManager serviceManager) {
+ this.innerObject = innerObject;
+ this.serviceManager = serviceManager;
+ }
+
+ public String name() {
+ return this.innerModel().name();
+ }
+
+ public Boolean isDataAction() {
+ return this.innerModel().isDataAction();
+ }
+
+ public String actionType() {
+ return this.innerModel().actionType();
+ }
+
+ public OperationDisplay display() {
+ return this.innerModel().display();
+ }
+
+ public String origin() {
+ return this.innerModel().origin();
+ }
+
+ public OperationInner innerModel() {
+ return this.innerObject;
+ }
+
+ private com.azure.resourcemanager.vi.ViManager manager() {
+ return this.serviceManager;
+ }
+}
diff --git a/sdk/vi/azure-resourcemanager-vi/src/main/java/com/azure/resourcemanager/vi/implementation/OperationsClientImpl.java b/sdk/vi/azure-resourcemanager-vi/src/main/java/com/azure/resourcemanager/vi/implementation/OperationsClientImpl.java
new file mode 100644
index 000000000000..0ed85391383c
--- /dev/null
+++ b/sdk/vi/azure-resourcemanager-vi/src/main/java/com/azure/resourcemanager/vi/implementation/OperationsClientImpl.java
@@ -0,0 +1,272 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.vi.implementation;
+
+import com.azure.core.annotation.ExpectedResponses;
+import com.azure.core.annotation.Get;
+import com.azure.core.annotation.HeaderParam;
+import com.azure.core.annotation.Headers;
+import com.azure.core.annotation.Host;
+import com.azure.core.annotation.HostParam;
+import com.azure.core.annotation.PathParam;
+import com.azure.core.annotation.QueryParam;
+import com.azure.core.annotation.ReturnType;
+import com.azure.core.annotation.ServiceInterface;
+import com.azure.core.annotation.ServiceMethod;
+import com.azure.core.annotation.UnexpectedResponseExceptionType;
+import com.azure.core.http.rest.PagedFlux;
+import com.azure.core.http.rest.PagedIterable;
+import com.azure.core.http.rest.PagedResponse;
+import com.azure.core.http.rest.PagedResponseBase;
+import com.azure.core.http.rest.Response;
+import com.azure.core.http.rest.RestProxy;
+import com.azure.core.management.exception.ManagementException;
+import com.azure.core.util.Context;
+import com.azure.core.util.FluxUtil;
+import com.azure.resourcemanager.vi.fluent.OperationsClient;
+import com.azure.resourcemanager.vi.fluent.models.OperationInner;
+import com.azure.resourcemanager.vi.models.OperationListResult;
+import reactor.core.publisher.Mono;
+
+/** An instance of this class provides access to all the operations defined in OperationsClient. */
+public final class OperationsClientImpl implements OperationsClient {
+ /** The proxy service used to perform REST calls. */
+ private final OperationsService service;
+
+ /** The service client containing this operation class. */
+ private final ViManagementClientImpl client;
+
+ /**
+ * Initializes an instance of OperationsClientImpl.
+ *
+ * @param client the instance of the service client containing this operation class.
+ */
+ OperationsClientImpl(ViManagementClientImpl client) {
+ this.service =
+ RestProxy.create(OperationsService.class, client.getHttpPipeline(), client.getSerializerAdapter());
+ this.client = client;
+ }
+
+ /**
+ * The interface defining all the services for ViManagementClientOperations to be used by the proxy service to
+ * perform REST calls.
+ */
+ @Host("{$host}")
+ @ServiceInterface(name = "ViManagementClientOp")
+ private interface OperationsService {
+ @Headers({"Content-Type: application/json"})
+ @Get("/providers/Microsoft.VideoIndexer/operations")
+ @ExpectedResponses({200})
+ @UnexpectedResponseExceptionType(ManagementException.class)
+ Mono> list(
+ @HostParam("$host") String endpoint,
+ @QueryParam("api-version") String apiVersion,
+ @HeaderParam("Accept") String accept,
+ Context context);
+
+ @Headers({"Content-Type: application/json"})
+ @Get("{nextLink}")
+ @ExpectedResponses({200})
+ @UnexpectedResponseExceptionType(ManagementException.class)
+ Mono> listNext(
+ @PathParam(value = "nextLink", encoded = true) String nextLink,
+ @HostParam("$host") String endpoint,
+ @HeaderParam("Accept") String accept,
+ Context context);
+ }
+
+ /**
+ * Lists all of the available Azure Video Indexer provider operations.
+ *
+ * @throws ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return available operations of the service along with {@link PagedResponse} on successful completion of {@link
+ * Mono}.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ private Mono> listSinglePageAsync() {
+ if (this.client.getEndpoint() == null) {
+ return Mono
+ .error(
+ new IllegalArgumentException(
+ "Parameter this.client.getEndpoint() is required and cannot be null."));
+ }
+ final String accept = "application/json";
+ return FluxUtil
+ .withContext(
+ context -> service.list(this.client.getEndpoint(), this.client.getApiVersion(), accept, context))
+ .>map(
+ res ->
+ new PagedResponseBase<>(
+ res.getRequest(),
+ res.getStatusCode(),
+ res.getHeaders(),
+ res.getValue().value(),
+ res.getValue().nextLink(),
+ null))
+ .contextWrite(context -> context.putAll(FluxUtil.toReactorContext(this.client.getContext()).readOnly()));
+ }
+
+ /**
+ * Lists all of the available Azure Video Indexer provider operations.
+ *
+ * @param context The context to associate with this operation.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return available operations of the service along with {@link PagedResponse} on successful completion of {@link
+ * Mono}.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ private Mono> listSinglePageAsync(Context context) {
+ if (this.client.getEndpoint() == null) {
+ return Mono
+ .error(
+ new IllegalArgumentException(
+ "Parameter this.client.getEndpoint() is required and cannot be null."));
+ }
+ final String accept = "application/json";
+ context = this.client.mergeContext(context);
+ return service
+ .list(this.client.getEndpoint(), this.client.getApiVersion(), accept, context)
+ .map(
+ res ->
+ new PagedResponseBase<>(
+ res.getRequest(),
+ res.getStatusCode(),
+ res.getHeaders(),
+ res.getValue().value(),
+ res.getValue().nextLink(),
+ null));
+ }
+
+ /**
+ * Lists all of the available Azure Video Indexer provider operations.
+ *
+ * @throws ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return available operations of the service as paginated response with {@link PagedFlux}.
+ */
+ @ServiceMethod(returns = ReturnType.COLLECTION)
+ private PagedFlux listAsync() {
+ return new PagedFlux<>(() -> listSinglePageAsync(), nextLink -> listNextSinglePageAsync(nextLink));
+ }
+
+ /**
+ * Lists all of the available Azure Video Indexer provider operations.
+ *
+ * @param context The context to associate with this operation.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return available operations of the service as paginated response with {@link PagedFlux}.
+ */
+ @ServiceMethod(returns = ReturnType.COLLECTION)
+ private PagedFlux listAsync(Context context) {
+ return new PagedFlux<>(
+ () -> listSinglePageAsync(context), nextLink -> listNextSinglePageAsync(nextLink, context));
+ }
+
+ /**
+ * Lists all of the available Azure Video Indexer provider operations.
+ *
+ * @throws ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return available operations of the service as paginated response with {@link PagedIterable}.
+ */
+ @ServiceMethod(returns = ReturnType.COLLECTION)
+ public PagedIterable list() {
+ return new PagedIterable<>(listAsync());
+ }
+
+ /**
+ * Lists all of the available Azure Video Indexer provider operations.
+ *
+ * @param context The context to associate with this operation.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return available operations of the service as paginated response with {@link PagedIterable}.
+ */
+ @ServiceMethod(returns = ReturnType.COLLECTION)
+ public PagedIterable list(Context context) {
+ return new PagedIterable<>(listAsync(context));
+ }
+
+ /**
+ * Get the next page of items.
+ *
+ * @param nextLink The URL to get the next list of items
+ * The nextLink parameter.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return available operations of the service along with {@link PagedResponse} on successful completion of {@link
+ * Mono}.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ private Mono> listNextSinglePageAsync(String nextLink) {
+ if (nextLink == null) {
+ return Mono.error(new IllegalArgumentException("Parameter nextLink is required and cannot be null."));
+ }
+ if (this.client.getEndpoint() == null) {
+ return Mono
+ .error(
+ new IllegalArgumentException(
+ "Parameter this.client.getEndpoint() is required and cannot be null."));
+ }
+ final String accept = "application/json";
+ return FluxUtil
+ .withContext(context -> service.listNext(nextLink, this.client.getEndpoint(), accept, context))
+ .>map(
+ res ->
+ new PagedResponseBase<>(
+ res.getRequest(),
+ res.getStatusCode(),
+ res.getHeaders(),
+ res.getValue().value(),
+ res.getValue().nextLink(),
+ null))
+ .contextWrite(context -> context.putAll(FluxUtil.toReactorContext(this.client.getContext()).readOnly()));
+ }
+
+ /**
+ * Get the next page of items.
+ *
+ * @param nextLink The URL to get the next list of items
+ * The nextLink parameter.
+ * @param context The context to associate with this operation.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return available operations of the service along with {@link PagedResponse} on successful completion of {@link
+ * Mono}.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ private Mono> listNextSinglePageAsync(String nextLink, Context context) {
+ if (nextLink == null) {
+ return Mono.error(new IllegalArgumentException("Parameter nextLink is required and cannot be null."));
+ }
+ if (this.client.getEndpoint() == null) {
+ return Mono
+ .error(
+ new IllegalArgumentException(
+ "Parameter this.client.getEndpoint() is required and cannot be null."));
+ }
+ final String accept = "application/json";
+ context = this.client.mergeContext(context);
+ return service
+ .listNext(nextLink, this.client.getEndpoint(), accept, context)
+ .map(
+ res ->
+ new PagedResponseBase<>(
+ res.getRequest(),
+ res.getStatusCode(),
+ res.getHeaders(),
+ res.getValue().value(),
+ res.getValue().nextLink(),
+ null));
+ }
+}
diff --git a/sdk/vi/azure-resourcemanager-vi/src/main/java/com/azure/resourcemanager/vi/implementation/OperationsImpl.java b/sdk/vi/azure-resourcemanager-vi/src/main/java/com/azure/resourcemanager/vi/implementation/OperationsImpl.java
new file mode 100644
index 000000000000..36f10278771d
--- /dev/null
+++ b/sdk/vi/azure-resourcemanager-vi/src/main/java/com/azure/resourcemanager/vi/implementation/OperationsImpl.java
@@ -0,0 +1,44 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.vi.implementation;
+
+import com.azure.core.http.rest.PagedIterable;
+import com.azure.core.util.Context;
+import com.azure.core.util.logging.ClientLogger;
+import com.azure.resourcemanager.vi.fluent.OperationsClient;
+import com.azure.resourcemanager.vi.fluent.models.OperationInner;
+import com.azure.resourcemanager.vi.models.Operation;
+import com.azure.resourcemanager.vi.models.Operations;
+
+public final class OperationsImpl implements Operations {
+ private static final ClientLogger LOGGER = new ClientLogger(OperationsImpl.class);
+
+ private final OperationsClient innerClient;
+
+ private final com.azure.resourcemanager.vi.ViManager serviceManager;
+
+ public OperationsImpl(OperationsClient innerClient, com.azure.resourcemanager.vi.ViManager serviceManager) {
+ this.innerClient = innerClient;
+ this.serviceManager = serviceManager;
+ }
+
+ public PagedIterable list() {
+ PagedIterable inner = this.serviceClient().list();
+ return Utils.mapPage(inner, inner1 -> new OperationImpl(inner1, this.manager()));
+ }
+
+ public PagedIterable list(Context context) {
+ PagedIterable inner = this.serviceClient().list(context);
+ return Utils.mapPage(inner, inner1 -> new OperationImpl(inner1, this.manager()));
+ }
+
+ private OperationsClient serviceClient() {
+ return this.innerClient;
+ }
+
+ private com.azure.resourcemanager.vi.ViManager manager() {
+ return this.serviceManager;
+ }
+}
diff --git a/sdk/vi/azure-resourcemanager-vi/src/main/java/com/azure/resourcemanager/vi/implementation/UserClassicAccountsClientImpl.java b/sdk/vi/azure-resourcemanager-vi/src/main/java/com/azure/resourcemanager/vi/implementation/UserClassicAccountsClientImpl.java
new file mode 100644
index 000000000000..a2177d769f8b
--- /dev/null
+++ b/sdk/vi/azure-resourcemanager-vi/src/main/java/com/azure/resourcemanager/vi/implementation/UserClassicAccountsClientImpl.java
@@ -0,0 +1,289 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.vi.implementation;
+
+import com.azure.core.annotation.ExpectedResponses;
+import com.azure.core.annotation.Get;
+import com.azure.core.annotation.HeaderParam;
+import com.azure.core.annotation.Headers;
+import com.azure.core.annotation.Host;
+import com.azure.core.annotation.HostParam;
+import com.azure.core.annotation.PathParam;
+import com.azure.core.annotation.QueryParam;
+import com.azure.core.annotation.ReturnType;
+import com.azure.core.annotation.ServiceInterface;
+import com.azure.core.annotation.ServiceMethod;
+import com.azure.core.annotation.UnexpectedResponseExceptionType;
+import com.azure.core.http.rest.PagedFlux;
+import com.azure.core.http.rest.PagedIterable;
+import com.azure.core.http.rest.PagedResponse;
+import com.azure.core.http.rest.PagedResponseBase;
+import com.azure.core.http.rest.Response;
+import com.azure.core.http.rest.RestProxy;
+import com.azure.core.management.exception.ManagementException;
+import com.azure.core.util.Context;
+import com.azure.core.util.FluxUtil;
+import com.azure.resourcemanager.vi.fluent.UserClassicAccountsClient;
+import com.azure.resourcemanager.vi.fluent.models.ClassicAccountSlimInner;
+import com.azure.resourcemanager.vi.models.UserClassicAccountList;
+import reactor.core.publisher.Mono;
+
+/** An instance of this class provides access to all the operations defined in UserClassicAccountsClient. */
+public final class UserClassicAccountsClientImpl implements UserClassicAccountsClient {
+ /** The proxy service used to perform REST calls. */
+ private final UserClassicAccountsService service;
+
+ /** The service client containing this operation class. */
+ private final ViManagementClientImpl client;
+
+ /**
+ * Initializes an instance of UserClassicAccountsClientImpl.
+ *
+ * @param client the instance of the service client containing this operation class.
+ */
+ UserClassicAccountsClientImpl(ViManagementClientImpl client) {
+ this.service =
+ RestProxy.create(UserClassicAccountsService.class, client.getHttpPipeline(), client.getSerializerAdapter());
+ this.client = client;
+ }
+
+ /**
+ * The interface defining all the services for ViManagementClientUserClassicAccounts to be used by the proxy service
+ * to perform REST calls.
+ */
+ @Host("{$host}")
+ @ServiceInterface(name = "ViManagementClientUs")
+ private interface UserClassicAccountsService {
+ @Headers({"Content-Type: application/json"})
+ @Get("/providers/Microsoft.VideoIndexer/locations/{location}/userClassicAccounts")
+ @ExpectedResponses({200})
+ @UnexpectedResponseExceptionType(ManagementException.class)
+ Mono> list(
+ @HostParam("$host") String endpoint,
+ @PathParam("location") String location,
+ @QueryParam("api-version") String apiVersion,
+ @HeaderParam("Accept") String accept,
+ Context context);
+
+ @Headers({"Content-Type: application/json"})
+ @Get("{nextLink}")
+ @ExpectedResponses({200})
+ @UnexpectedResponseExceptionType(ManagementException.class)
+ Mono> listNext(
+ @PathParam(value = "nextLink", encoded = true) String nextLink,
+ @HostParam("$host") String endpoint,
+ @HeaderParam("Accept") String accept,
+ Context context);
+ }
+
+ /**
+ * Lists all Azure Video Indexer classic accounts.
+ *
+ * @param location The name of Azure region.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws 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 list of user classic accounts along with {@link PagedResponse} on successful completion of {@link
+ * Mono}.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ private Mono> listSinglePageAsync(String location) {
+ if (this.client.getEndpoint() == null) {
+ return Mono
+ .error(
+ new IllegalArgumentException(
+ "Parameter this.client.getEndpoint() is required and cannot be null."));
+ }
+ if (location == null) {
+ return Mono.error(new IllegalArgumentException("Parameter location is required and cannot be null."));
+ }
+ final String accept = "application/json";
+ return FluxUtil
+ .withContext(
+ context ->
+ service.list(this.client.getEndpoint(), location, this.client.getApiVersion(), accept, context))
+ .>map(
+ res ->
+ new PagedResponseBase<>(
+ res.getRequest(),
+ res.getStatusCode(),
+ res.getHeaders(),
+ res.getValue().value(),
+ res.getValue().nextLink(),
+ null))
+ .contextWrite(context -> context.putAll(FluxUtil.toReactorContext(this.client.getContext()).readOnly()));
+ }
+
+ /**
+ * Lists all Azure Video Indexer classic accounts.
+ *
+ * @param location The name of Azure region.
+ * @param context The context to associate with this operation.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws 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 list of user classic accounts along with {@link PagedResponse} on successful completion of {@link
+ * Mono}.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ private Mono> listSinglePageAsync(String location, Context context) {
+ if (this.client.getEndpoint() == null) {
+ return Mono
+ .error(
+ new IllegalArgumentException(
+ "Parameter this.client.getEndpoint() is required and cannot be null."));
+ }
+ if (location == null) {
+ return Mono.error(new IllegalArgumentException("Parameter location is required and cannot be null."));
+ }
+ final String accept = "application/json";
+ context = this.client.mergeContext(context);
+ return service
+ .list(this.client.getEndpoint(), location, this.client.getApiVersion(), accept, context)
+ .map(
+ res ->
+ new PagedResponseBase<>(
+ res.getRequest(),
+ res.getStatusCode(),
+ res.getHeaders(),
+ res.getValue().value(),
+ res.getValue().nextLink(),
+ null));
+ }
+
+ /**
+ * Lists all Azure Video Indexer classic accounts.
+ *
+ * @param location The name of Azure region.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws 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 list of user classic accounts as paginated response with {@link PagedFlux}.
+ */
+ @ServiceMethod(returns = ReturnType.COLLECTION)
+ private PagedFlux listAsync(String location) {
+ return new PagedFlux<>(() -> listSinglePageAsync(location), nextLink -> listNextSinglePageAsync(nextLink));
+ }
+
+ /**
+ * Lists all Azure Video Indexer classic accounts.
+ *
+ * @param location The name of Azure region.
+ * @param context The context to associate with this operation.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws 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 list of user classic accounts as paginated response with {@link PagedFlux}.
+ */
+ @ServiceMethod(returns = ReturnType.COLLECTION)
+ private PagedFlux listAsync(String location, Context context) {
+ return new PagedFlux<>(
+ () -> listSinglePageAsync(location, context), nextLink -> listNextSinglePageAsync(nextLink, context));
+ }
+
+ /**
+ * Lists all Azure Video Indexer classic accounts.
+ *
+ * @param location The name of Azure region.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws 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 list of user classic accounts as paginated response with {@link PagedIterable}.
+ */
+ @ServiceMethod(returns = ReturnType.COLLECTION)
+ public PagedIterable list(String location) {
+ return new PagedIterable<>(listAsync(location));
+ }
+
+ /**
+ * Lists all Azure Video Indexer classic accounts.
+ *
+ * @param location The name of Azure region.
+ * @param context The context to associate with this operation.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws 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 list of user classic accounts as paginated response with {@link PagedIterable}.
+ */
+ @ServiceMethod(returns = ReturnType.COLLECTION)
+ public PagedIterable list(String location, Context context) {
+ return new PagedIterable<>(listAsync(location, context));
+ }
+
+ /**
+ * Get the next page of items.
+ *
+ * @param nextLink The URL to get the next list of items
+ * The nextLink parameter.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws 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 list of user classic accounts along with {@link PagedResponse} on successful completion of {@link
+ * Mono}.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ private Mono> listNextSinglePageAsync(String nextLink) {
+ if (nextLink == null) {
+ return Mono.error(new IllegalArgumentException("Parameter nextLink is required and cannot be null."));
+ }
+ if (this.client.getEndpoint() == null) {
+ return Mono
+ .error(
+ new IllegalArgumentException(
+ "Parameter this.client.getEndpoint() is required and cannot be null."));
+ }
+ final String accept = "application/json";
+ return FluxUtil
+ .withContext(context -> service.listNext(nextLink, this.client.getEndpoint(), accept, context))
+ .>map(
+ res ->
+ new PagedResponseBase<>(
+ res.getRequest(),
+ res.getStatusCode(),
+ res.getHeaders(),
+ res.getValue().value(),
+ res.getValue().nextLink(),
+ null))
+ .contextWrite(context -> context.putAll(FluxUtil.toReactorContext(this.client.getContext()).readOnly()));
+ }
+
+ /**
+ * Get the next page of items.
+ *
+ * @param nextLink The URL to get the next list of items
+ * The nextLink parameter.
+ * @param context The context to associate with this operation.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws 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 list of user classic accounts along with {@link PagedResponse} on successful completion of {@link
+ * Mono}.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ private Mono> listNextSinglePageAsync(String nextLink, Context context) {
+ if (nextLink == null) {
+ return Mono.error(new IllegalArgumentException("Parameter nextLink is required and cannot be null."));
+ }
+ if (this.client.getEndpoint() == null) {
+ return Mono
+ .error(
+ new IllegalArgumentException(
+ "Parameter this.client.getEndpoint() is required and cannot be null."));
+ }
+ final String accept = "application/json";
+ context = this.client.mergeContext(context);
+ return service
+ .listNext(nextLink, this.client.getEndpoint(), accept, context)
+ .map(
+ res ->
+ new PagedResponseBase<>(
+ res.getRequest(),
+ res.getStatusCode(),
+ res.getHeaders(),
+ res.getValue().value(),
+ res.getValue().nextLink(),
+ null));
+ }
+}
diff --git a/sdk/vi/azure-resourcemanager-vi/src/main/java/com/azure/resourcemanager/vi/implementation/UserClassicAccountsImpl.java b/sdk/vi/azure-resourcemanager-vi/src/main/java/com/azure/resourcemanager/vi/implementation/UserClassicAccountsImpl.java
new file mode 100644
index 000000000000..9389aa9a8193
--- /dev/null
+++ b/sdk/vi/azure-resourcemanager-vi/src/main/java/com/azure/resourcemanager/vi/implementation/UserClassicAccountsImpl.java
@@ -0,0 +1,45 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.vi.implementation;
+
+import com.azure.core.http.rest.PagedIterable;
+import com.azure.core.util.Context;
+import com.azure.core.util.logging.ClientLogger;
+import com.azure.resourcemanager.vi.fluent.UserClassicAccountsClient;
+import com.azure.resourcemanager.vi.fluent.models.ClassicAccountSlimInner;
+import com.azure.resourcemanager.vi.models.ClassicAccountSlim;
+import com.azure.resourcemanager.vi.models.UserClassicAccounts;
+
+public final class UserClassicAccountsImpl implements UserClassicAccounts {
+ private static final ClientLogger LOGGER = new ClientLogger(UserClassicAccountsImpl.class);
+
+ private final UserClassicAccountsClient innerClient;
+
+ private final com.azure.resourcemanager.vi.ViManager serviceManager;
+
+ public UserClassicAccountsImpl(
+ UserClassicAccountsClient innerClient, com.azure.resourcemanager.vi.ViManager serviceManager) {
+ this.innerClient = innerClient;
+ this.serviceManager = serviceManager;
+ }
+
+ public PagedIterable list(String location) {
+ PagedIterable inner = this.serviceClient().list(location);
+ return Utils.mapPage(inner, inner1 -> new ClassicAccountSlimImpl(inner1, this.manager()));
+ }
+
+ public PagedIterable list(String location, Context context) {
+ PagedIterable inner = this.serviceClient().list(location, context);
+ return Utils.mapPage(inner, inner1 -> new ClassicAccountSlimImpl(inner1, this.manager()));
+ }
+
+ private UserClassicAccountsClient serviceClient() {
+ return this.innerClient;
+ }
+
+ private com.azure.resourcemanager.vi.ViManager manager() {
+ return this.serviceManager;
+ }
+}
diff --git a/sdk/vi/azure-resourcemanager-vi/src/main/java/com/azure/resourcemanager/vi/implementation/Utils.java b/sdk/vi/azure-resourcemanager-vi/src/main/java/com/azure/resourcemanager/vi/implementation/Utils.java
new file mode 100644
index 000000000000..87f1a432af18
--- /dev/null
+++ b/sdk/vi/azure-resourcemanager-vi/src/main/java/com/azure/resourcemanager/vi/implementation/Utils.java
@@ -0,0 +1,204 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.vi.implementation;
+
+import com.azure.core.http.rest.PagedFlux;
+import com.azure.core.http.rest.PagedIterable;
+import com.azure.core.http.rest.PagedResponse;
+import com.azure.core.http.rest.PagedResponseBase;
+import com.azure.core.util.CoreUtils;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.Iterator;
+import java.util.List;
+import java.util.function.Function;
+import java.util.stream.Collectors;
+import java.util.stream.Stream;
+import reactor.core.publisher.Flux;
+
+final class Utils {
+ static String getValueFromIdByName(String id, String name) {
+ if (id == null) {
+ return null;
+ }
+ Iterator itr = Arrays.stream(id.split("/")).iterator();
+ while (itr.hasNext()) {
+ String part = itr.next();
+ if (part != null && !part.trim().isEmpty()) {
+ if (part.equalsIgnoreCase(name)) {
+ if (itr.hasNext()) {
+ return itr.next();
+ } else {
+ return null;
+ }
+ }
+ }
+ }
+ return null;
+ }
+
+ static String getValueFromIdByParameterName(String id, String pathTemplate, String parameterName) {
+ if (id == null || pathTemplate == null) {
+ return null;
+ }
+ String parameterNameParentheses = "{" + parameterName + "}";
+ List idSegmentsReverted = Arrays.asList(id.split("/"));
+ List pathSegments = Arrays.asList(pathTemplate.split("/"));
+ Collections.reverse(idSegmentsReverted);
+ Iterator idItrReverted = idSegmentsReverted.iterator();
+ int pathIndex = pathSegments.size();
+ while (idItrReverted.hasNext() && pathIndex > 0) {
+ String idSegment = idItrReverted.next();
+ String pathSegment = pathSegments.get(--pathIndex);
+ if (!CoreUtils.isNullOrEmpty(idSegment) && !CoreUtils.isNullOrEmpty(pathSegment)) {
+ if (pathSegment.equalsIgnoreCase(parameterNameParentheses)) {
+ if (pathIndex == 0 || (pathIndex == 1 && pathSegments.get(0).isEmpty())) {
+ List segments = new ArrayList<>();
+ segments.add(idSegment);
+ idItrReverted.forEachRemaining(segments::add);
+ Collections.reverse(segments);
+ if (segments.size() > 0 && segments.get(0).isEmpty()) {
+ segments.remove(0);
+ }
+ return String.join("/", segments);
+ } else {
+ return idSegment;
+ }
+ }
+ }
+ }
+ return null;
+ }
+
+ static PagedIterable mapPage(PagedIterable pageIterable, Function mapper) {
+ return new PagedIterableImpl(pageIterable, mapper);
+ }
+
+ private static final class PagedIterableImpl extends PagedIterable {
+
+ private final PagedIterable pagedIterable;
+ private final Function mapper;
+ private final Function, PagedResponse> pageMapper;
+
+ private PagedIterableImpl(PagedIterable pagedIterable, Function mapper) {
+ super(
+ PagedFlux
+ .create(
+ () ->
+ (continuationToken, pageSize) ->
+ Flux.fromStream(pagedIterable.streamByPage().map(getPageMapper(mapper)))));
+ this.pagedIterable = pagedIterable;
+ this.mapper = mapper;
+ this.pageMapper = getPageMapper(mapper);
+ }
+
+ private static Function, PagedResponse> getPageMapper(Function mapper) {
+ return page ->
+ new PagedResponseBase(
+ page.getRequest(),
+ page.getStatusCode(),
+ page.getHeaders(),
+ page.getElements().stream().map(mapper).collect(Collectors.toList()),
+ page.getContinuationToken(),
+ null);
+ }
+
+ @Override
+ public Stream stream() {
+ return pagedIterable.stream().map(mapper);
+ }
+
+ @Override
+ public Stream> streamByPage() {
+ return pagedIterable.streamByPage().map(pageMapper);
+ }
+
+ @Override
+ public Stream> streamByPage(String continuationToken) {
+ return pagedIterable.streamByPage(continuationToken).map(pageMapper);
+ }
+
+ @Override
+ public Stream> streamByPage(int preferredPageSize) {
+ return pagedIterable.streamByPage(preferredPageSize).map(pageMapper);
+ }
+
+ @Override
+ public Stream> streamByPage(String continuationToken, int preferredPageSize) {
+ return pagedIterable.streamByPage(continuationToken, preferredPageSize).map(pageMapper);
+ }
+
+ @Override
+ public Iterator iterator() {
+ return new IteratorImpl(pagedIterable.iterator(), mapper);
+ }
+
+ @Override
+ public Iterable> iterableByPage() {
+ return new IterableImpl, PagedResponse>(pagedIterable.iterableByPage(), pageMapper);
+ }
+
+ @Override
+ public Iterable> iterableByPage(String continuationToken) {
+ return new IterableImpl, PagedResponse>(
+ pagedIterable.iterableByPage(continuationToken), pageMapper);
+ }
+
+ @Override
+ public Iterable> iterableByPage(int preferredPageSize) {
+ return new IterableImpl, PagedResponse>(
+ pagedIterable.iterableByPage(preferredPageSize), pageMapper);
+ }
+
+ @Override
+ public Iterable> iterableByPage(String continuationToken, int preferredPageSize) {
+ return new IterableImpl, PagedResponse>(
+ pagedIterable.iterableByPage(continuationToken, preferredPageSize), pageMapper);
+ }
+ }
+
+ private static final class IteratorImpl implements Iterator {
+
+ private final Iterator iterator;
+ private final Function mapper;
+
+ private IteratorImpl(Iterator iterator, Function mapper) {
+ this.iterator = iterator;
+ this.mapper = mapper;
+ }
+
+ @Override
+ public boolean hasNext() {
+ return iterator.hasNext();
+ }
+
+ @Override
+ public S next() {
+ return mapper.apply(iterator.next());
+ }
+
+ @Override
+ public void remove() {
+ iterator.remove();
+ }
+ }
+
+ private static final class IterableImpl implements Iterable {
+
+ private final Iterable iterable;
+ private final Function mapper;
+
+ private IterableImpl(Iterable iterable, Function mapper) {
+ this.iterable = iterable;
+ this.mapper = mapper;
+ }
+
+ @Override
+ public Iterator iterator() {
+ return new IteratorImpl(iterable.iterator(), mapper);
+ }
+ }
+}
diff --git a/sdk/vi/azure-resourcemanager-vi/src/main/java/com/azure/resourcemanager/vi/implementation/ViManagementClientBuilder.java b/sdk/vi/azure-resourcemanager-vi/src/main/java/com/azure/resourcemanager/vi/implementation/ViManagementClientBuilder.java
new file mode 100644
index 000000000000..34a8a4e2c34a
--- /dev/null
+++ b/sdk/vi/azure-resourcemanager-vi/src/main/java/com/azure/resourcemanager/vi/implementation/ViManagementClientBuilder.java
@@ -0,0 +1,144 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.vi.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.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 ViManagementClientImpl type. */
+@ServiceClientBuilder(serviceClients = {ViManagementClientImpl.class})
+public final class ViManagementClientBuilder {
+ /*
+ * The ID of the target subscription.
+ */
+ private String subscriptionId;
+
+ /**
+ * Sets The ID of the target subscription.
+ *
+ * @param subscriptionId the subscriptionId value.
+ * @return the ViManagementClientBuilder.
+ */
+ public ViManagementClientBuilder subscriptionId(String subscriptionId) {
+ this.subscriptionId = subscriptionId;
+ return this;
+ }
+
+ /*
+ * server parameter
+ */
+ private String endpoint;
+
+ /**
+ * Sets server parameter.
+ *
+ * @param endpoint the endpoint value.
+ * @return the ViManagementClientBuilder.
+ */
+ public ViManagementClientBuilder 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 ViManagementClientBuilder.
+ */
+ public ViManagementClientBuilder environment(AzureEnvironment environment) {
+ this.environment = environment;
+ 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 ViManagementClientBuilder.
+ */
+ public ViManagementClientBuilder pipeline(HttpPipeline pipeline) {
+ this.pipeline = pipeline;
+ 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 ViManagementClientBuilder.
+ */
+ public ViManagementClientBuilder defaultPollInterval(Duration defaultPollInterval) {
+ this.defaultPollInterval = defaultPollInterval;
+ 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 ViManagementClientBuilder.
+ */
+ public ViManagementClientBuilder serializerAdapter(SerializerAdapter serializerAdapter) {
+ this.serializerAdapter = serializerAdapter;
+ return this;
+ }
+
+ /**
+ * Builds an instance of ViManagementClientImpl with the provided parameters.
+ *
+ * @return an instance of ViManagementClientImpl.
+ */
+ public ViManagementClientImpl buildClient() {
+ String localEndpoint = (endpoint != null) ? endpoint : "https://management.azure.com";
+ AzureEnvironment localEnvironment = (environment != null) ? environment : AzureEnvironment.AZURE;
+ HttpPipeline localPipeline =
+ (pipeline != null)
+ ? pipeline
+ : new HttpPipelineBuilder().policies(new UserAgentPolicy(), new RetryPolicy()).build();
+ Duration localDefaultPollInterval =
+ (defaultPollInterval != null) ? defaultPollInterval : Duration.ofSeconds(30);
+ SerializerAdapter localSerializerAdapter =
+ (serializerAdapter != null)
+ ? serializerAdapter
+ : SerializerFactory.createDefaultManagementSerializerAdapter();
+ ViManagementClientImpl client =
+ new ViManagementClientImpl(
+ localPipeline,
+ localSerializerAdapter,
+ localDefaultPollInterval,
+ localEnvironment,
+ subscriptionId,
+ localEndpoint);
+ return client;
+ }
+}
diff --git a/sdk/vi/azure-resourcemanager-vi/src/main/java/com/azure/resourcemanager/vi/implementation/ViManagementClientImpl.java b/sdk/vi/azure-resourcemanager-vi/src/main/java/com/azure/resourcemanager/vi/implementation/ViManagementClientImpl.java
new file mode 100644
index 000000000000..e6ebc31dde66
--- /dev/null
+++ b/sdk/vi/azure-resourcemanager-vi/src/main/java/com/azure/resourcemanager/vi/implementation/ViManagementClientImpl.java
@@ -0,0 +1,346 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.vi.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.CoreUtils;
+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.vi.fluent.AccountsClient;
+import com.azure.resourcemanager.vi.fluent.ClassicAccountsClient;
+import com.azure.resourcemanager.vi.fluent.GeneratesClient;
+import com.azure.resourcemanager.vi.fluent.OperationsClient;
+import com.azure.resourcemanager.vi.fluent.UserClassicAccountsClient;
+import com.azure.resourcemanager.vi.fluent.ViManagementClient;
+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 reactor.core.publisher.Flux;
+import reactor.core.publisher.Mono;
+
+/** Initializes a new instance of the ViManagementClientImpl type. */
+@ServiceClient(builder = ViManagementClientBuilder.class)
+public final class ViManagementClientImpl implements ViManagementClient {
+ /** The ID of the target subscription. */
+ private final String subscriptionId;
+
+ /**
+ * Gets The ID of the target subscription.
+ *
+ * @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 AccountsClient object to access its operations. */
+ private final AccountsClient accounts;
+
+ /**
+ * Gets the AccountsClient object to access its operations.
+ *
+ * @return the AccountsClient object.
+ */
+ public AccountsClient getAccounts() {
+ return this.accounts;
+ }
+
+ /** The UserClassicAccountsClient object to access its operations. */
+ private final UserClassicAccountsClient userClassicAccounts;
+
+ /**
+ * Gets the UserClassicAccountsClient object to access its operations.
+ *
+ * @return the UserClassicAccountsClient object.
+ */
+ public UserClassicAccountsClient getUserClassicAccounts() {
+ return this.userClassicAccounts;
+ }
+
+ /** The ClassicAccountsClient object to access its operations. */
+ private final ClassicAccountsClient classicAccounts;
+
+ /**
+ * Gets the ClassicAccountsClient object to access its operations.
+ *
+ * @return the ClassicAccountsClient object.
+ */
+ public ClassicAccountsClient getClassicAccounts() {
+ return this.classicAccounts;
+ }
+
+ /** The GeneratesClient object to access its operations. */
+ private final GeneratesClient generates;
+
+ /**
+ * Gets the GeneratesClient object to access its operations.
+ *
+ * @return the GeneratesClient object.
+ */
+ public GeneratesClient getGenerates() {
+ return this.generates;
+ }
+
+ /**
+ * Initializes an instance of ViManagementClient 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 ID of the target subscription.
+ * @param endpoint server parameter.
+ */
+ ViManagementClientImpl(
+ 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 = "2022-08-01";
+ this.operations = new OperationsClientImpl(this);
+ this.accounts = new AccountsClientImpl(this);
+ this.userClassicAccounts = new UserClassicAccountsClientImpl(this);
+ this.classicAccounts = new ClassicAccountsClientImpl(this);
+ this.generates = new GeneratesClientImpl(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) {
+ return CoreUtils.mergeContexts(this.getContext(), context);
+ }
+
+ /**
+ * Gets long running operation result.
+ *
+ * @param activationResponse the response of activation operation.
+ * @param httpPipeline the http pipeline.
+ * @param pollResultType type of poll result.
+ * @param finalResultType type of final result.
+ * @param context the context shared by all requests.
+ * @param type of poll result.
+ * @param type of final result.
+ * @return poller flux for poll result and final result.
+ */
+ public PollerFlux, U> getLroResult(
+ Mono>> activationResponse,
+ HttpPipeline httpPipeline,
+ Type pollResultType,
+ Type finalResultType,
+ Context context) {
+ return PollerFactory
+ .create(
+ serializerAdapter,
+ httpPipeline,
+ pollResultType,
+ finalResultType,
+ defaultPollInterval,
+ activationResponse,
+ context);
+ }
+
+ /**
+ * Gets the final result, or an error, based on last async poll response.
+ *
+ * @param response the last async poll response.
+ * @param type of poll result.
+ * @param type of final result.
+ * @return the final result, or an error.
+ */
+ public Mono getLroFinalResultOrError(AsyncPollResponse, U> response) {
+ if (response.getStatus() != LongRunningOperationStatus.SUCCESSFULLY_COMPLETED) {
+ String errorMessage;
+ ManagementError managementError = null;
+ HttpResponse errorResponse = null;
+ PollResult.Error lroError = response.getValue().getError();
+ if (lroError != null) {
+ errorResponse =
+ new HttpResponseImpl(
+ lroError.getResponseStatusCode(), lroError.getResponseHeaders(), lroError.getResponseBody());
+
+ errorMessage = response.getValue().getError().getMessage();
+ String errorBody = response.getValue().getError().getResponseBody();
+ if (errorBody != null) {
+ // try to deserialize error body to ManagementError
+ try {
+ managementError =
+ this
+ .getSerializerAdapter()
+ .deserialize(errorBody, ManagementError.class, SerializerEncoding.JSON);
+ if (managementError.getCode() == null || managementError.getMessage() == null) {
+ managementError = null;
+ }
+ } catch (IOException | RuntimeException ioe) {
+ LOGGER.logThrowableAsWarning(ioe);
+ }
+ }
+ } else {
+ // fallback to default error message
+ errorMessage = "Long running operation failed.";
+ }
+ if (managementError == null) {
+ // fallback to default ManagementError
+ managementError = new ManagementError(response.getStatus().toString(), errorMessage);
+ }
+ return Mono.error(new ManagementException(errorMessage, errorResponse, managementError));
+ } else {
+ return response.getFinalResult();
+ }
+ }
+
+ private static final class HttpResponseImpl extends HttpResponse {
+ private final int statusCode;
+
+ private final byte[] responseBody;
+
+ private final HttpHeaders httpHeaders;
+
+ HttpResponseImpl(int statusCode, HttpHeaders httpHeaders, String responseBody) {
+ super(null);
+ this.statusCode = statusCode;
+ this.httpHeaders = httpHeaders;
+ this.responseBody = responseBody == null ? null : responseBody.getBytes(StandardCharsets.UTF_8);
+ }
+
+ public int getStatusCode() {
+ return statusCode;
+ }
+
+ public String getHeaderValue(String s) {
+ return httpHeaders.getValue(s);
+ }
+
+ public HttpHeaders getHeaders() {
+ return httpHeaders;
+ }
+
+ public Flux getBody() {
+ return Flux.just(ByteBuffer.wrap(responseBody));
+ }
+
+ public Mono getBodyAsByteArray() {
+ return Mono.just(responseBody);
+ }
+
+ public Mono getBodyAsString() {
+ return Mono.just(new String(responseBody, StandardCharsets.UTF_8));
+ }
+
+ public Mono getBodyAsString(Charset charset) {
+ return Mono.just(new String(responseBody, charset));
+ }
+ }
+
+ private static final ClientLogger LOGGER = new ClientLogger(ViManagementClientImpl.class);
+}
diff --git a/sdk/vi/azure-resourcemanager-vi/src/main/java/com/azure/resourcemanager/vi/implementation/package-info.java b/sdk/vi/azure-resourcemanager-vi/src/main/java/com/azure/resourcemanager/vi/implementation/package-info.java
new file mode 100644
index 000000000000..3dc09ca8fa65
--- /dev/null
+++ b/sdk/vi/azure-resourcemanager-vi/src/main/java/com/azure/resourcemanager/vi/implementation/package-info.java
@@ -0,0 +1,6 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+/** Package containing the implementations for ViManagementClient. Microsoft Azure Video Indexer. */
+package com.azure.resourcemanager.vi.implementation;
diff --git a/sdk/vi/azure-resourcemanager-vi/src/main/java/com/azure/resourcemanager/vi/models/AccessToken.java b/sdk/vi/azure-resourcemanager-vi/src/main/java/com/azure/resourcemanager/vi/models/AccessToken.java
new file mode 100644
index 000000000000..714efca399ee
--- /dev/null
+++ b/sdk/vi/azure-resourcemanager-vi/src/main/java/com/azure/resourcemanager/vi/models/AccessToken.java
@@ -0,0 +1,24 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.vi.models;
+
+import com.azure.resourcemanager.vi.fluent.models.AccessTokenInner;
+
+/** An immutable client-side representation of AccessToken. */
+public interface AccessToken {
+ /**
+ * Gets the accessToken property: The access token.
+ *
+ * @return the accessToken value.
+ */
+ String accessToken();
+
+ /**
+ * Gets the inner com.azure.resourcemanager.vi.fluent.models.AccessTokenInner object.
+ *
+ * @return the inner object.
+ */
+ AccessTokenInner innerModel();
+}
diff --git a/sdk/vi/azure-resourcemanager-vi/src/main/java/com/azure/resourcemanager/vi/models/Account.java b/sdk/vi/azure-resourcemanager-vi/src/main/java/com/azure/resourcemanager/vi/models/Account.java
new file mode 100644
index 000000000000..0c9315a66969
--- /dev/null
+++ b/sdk/vi/azure-resourcemanager-vi/src/main/java/com/azure/resourcemanager/vi/models/Account.java
@@ -0,0 +1,316 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.vi.models;
+
+import com.azure.core.management.Region;
+import com.azure.core.management.SystemData;
+import com.azure.core.util.Context;
+import com.azure.resourcemanager.vi.fluent.models.AccountInner;
+import java.util.Map;
+
+/** An immutable client-side representation of Account. */
+public interface Account {
+ /**
+ * Gets the id property: Fully qualified resource Id for the resource.
+ *
+ * @return the id value.
+ */
+ String id();
+
+ /**
+ * Gets the name property: The name of the resource.
+ *
+ * @return the name value.
+ */
+ String name();
+
+ /**
+ * Gets the type property: The type of the resource.
+ *
+ * @return the type value.
+ */
+ String type();
+
+ /**
+ * Gets the location property: The geo-location where the resource lives.
+ *
+ * @return the location value.
+ */
+ String location();
+
+ /**
+ * Gets the tags property: Resource tags.
+ *
+ * @return the tags value.
+ */
+ Map tags();
+
+ /**
+ * Gets the identity property: Managed service identity (system assigned and/or user assigned identities).
+ *
+ * @return the identity value.
+ */
+ ManagedServiceIdentity identity();
+
+ /**
+ * Gets the systemData property: The system meta data relating to this resource.
+ *
+ * @return the systemData value.
+ */
+ SystemData systemData();
+
+ /**
+ * Gets the tenantId property: The account's tenant id.
+ *
+ * @return the tenantId value.
+ */
+ String tenantId();
+
+ /**
+ * Gets the accountId property: The account's data-plane ID. This can be set only when connecting an existing
+ * classic account.
+ *
+ * @return the accountId value.
+ */
+ String accountId();
+
+ /**
+ * Gets the accountName property: The account's name.
+ *
+ * @return the accountName value.
+ */
+ String accountName();
+
+ /**
+ * Gets the mediaServices property: The media services details.
+ *
+ * @return the mediaServices value.
+ */
+ MediaServicesForPutRequest mediaServices();
+
+ /**
+ * Gets the totalSecondsIndexed property: An integer representing the total seconds that have been indexed on the
+ * account.
+ *
+ * @return the totalSecondsIndexed value.
+ */
+ Integer totalSecondsIndexed();
+
+ /**
+ * Gets the provisioningState property: Gets the status of the account at the time the operation was called.
+ *
+ * @return the provisioningState value.
+ */
+ ProvisioningState provisioningState();
+
+ /**
+ * Gets the region of the resource.
+ *
+ * @return the region of the resource.
+ */
+ Region region();
+
+ /**
+ * Gets the name of the resource region.
+ *
+ * @return the name of the resource region.
+ */
+ String regionName();
+
+ /**
+ * Gets the name of the resource group.
+ *
+ * @return the name of the resource group.
+ */
+ String resourceGroupName();
+
+ /**
+ * Gets the inner com.azure.resourcemanager.vi.fluent.models.AccountInner object.
+ *
+ * @return the inner object.
+ */
+ AccountInner innerModel();
+
+ /** The entirety of the Account definition. */
+ interface Definition
+ extends DefinitionStages.Blank,
+ DefinitionStages.WithLocation,
+ DefinitionStages.WithResourceGroup,
+ DefinitionStages.WithCreate {
+ }
+ /** The Account definition stages. */
+ interface DefinitionStages {
+ /** The first stage of the Account definition. */
+ interface Blank extends WithLocation {
+ }
+ /** The stage of the Account definition allowing to specify location. */
+ interface WithLocation {
+ /**
+ * Specifies the region for the resource.
+ *
+ * @param location The geo-location where the resource lives.
+ * @return the next definition stage.
+ */
+ WithResourceGroup withRegion(Region location);
+
+ /**
+ * Specifies the region for the resource.
+ *
+ * @param location The geo-location where the resource lives.
+ * @return the next definition stage.
+ */
+ WithResourceGroup withRegion(String location);
+ }
+ /** The stage of the Account definition allowing to specify parent resource. */
+ interface WithResourceGroup {
+ /**
+ * Specifies resourceGroupName.
+ *
+ * @param resourceGroupName The name of the resource group. The name is case insensitive.
+ * @return the next definition stage.
+ */
+ WithCreate withExistingResourceGroup(String resourceGroupName);
+ }
+ /**
+ * The stage of the Account definition which contains all the minimum required properties for the resource to be
+ * created, but also allows for any other optional properties to be specified.
+ */
+ interface WithCreate
+ extends DefinitionStages.WithTags,
+ DefinitionStages.WithIdentity,
+ DefinitionStages.WithAccountId,
+ DefinitionStages.WithMediaServices {
+ /**
+ * Executes the create request.
+ *
+ * @return the created resource.
+ */
+ Account create();
+
+ /**
+ * Executes the create request.
+ *
+ * @param context The context to associate with this operation.
+ * @return the created resource.
+ */
+ Account create(Context context);
+ }
+ /** The stage of the Account definition allowing to specify tags. */
+ interface WithTags {
+ /**
+ * Specifies the tags property: Resource tags..
+ *
+ * @param tags Resource tags.
+ * @return the next definition stage.
+ */
+ WithCreate withTags(Map tags);
+ }
+ /** The stage of the Account definition allowing to specify identity. */
+ interface WithIdentity {
+ /**
+ * Specifies the identity property: Managed service identity (system assigned and/or user assigned
+ * identities).
+ *
+ * @param identity Managed service identity (system assigned and/or user assigned identities).
+ * @return the next definition stage.
+ */
+ WithCreate withIdentity(ManagedServiceIdentity identity);
+ }
+ /** The stage of the Account definition allowing to specify accountId. */
+ interface WithAccountId {
+ /**
+ * Specifies the accountId property: The account's data-plane ID. This can be set only when connecting an
+ * existing classic account.
+ *
+ * @param accountId The account's data-plane ID. This can be set only when connecting an existing classic
+ * account.
+ * @return the next definition stage.
+ */
+ WithCreate withAccountId(String accountId);
+ }
+ /** The stage of the Account definition allowing to specify mediaServices. */
+ interface WithMediaServices {
+ /**
+ * Specifies the mediaServices property: The media services details.
+ *
+ * @param mediaServices The media services details.
+ * @return the next definition stage.
+ */
+ WithCreate withMediaServices(MediaServicesForPutRequest mediaServices);
+ }
+ }
+ /**
+ * Begins update for the Account resource.
+ *
+ * @return the stage of resource update.
+ */
+ Account.Update update();
+
+ /** The template for Account update. */
+ interface Update extends UpdateStages.WithTags, UpdateStages.WithIdentity, UpdateStages.WithMediaServices {
+ /**
+ * Executes the update request.
+ *
+ * @return the updated resource.
+ */
+ Account apply();
+
+ /**
+ * Executes the update request.
+ *
+ * @param context The context to associate with this operation.
+ * @return the updated resource.
+ */
+ Account apply(Context context);
+ }
+ /** The Account update stages. */
+ interface UpdateStages {
+ /** The stage of the Account update allowing to specify tags. */
+ interface WithTags {
+ /**
+ * Specifies the tags property: Resource tags.
+ *
+ * @param tags Resource tags.
+ * @return the next definition stage.
+ */
+ Update withTags(Map tags);
+ }
+ /** The stage of the Account update allowing to specify identity. */
+ interface WithIdentity {
+ /**
+ * Specifies the identity property: Managed service identity (system assigned and/or user assigned
+ * identities).
+ *
+ * @param identity Managed service identity (system assigned and/or user assigned identities).
+ * @return the next definition stage.
+ */
+ Update withIdentity(ManagedServiceIdentity identity);
+ }
+ /** The stage of the Account update allowing to specify mediaServices. */
+ interface WithMediaServices {
+ /**
+ * Specifies the mediaServices property: The media services details.
+ *
+ * @param mediaServices The media services details.
+ * @return the next definition stage.
+ */
+ Update withMediaServices(MediaServicesForPatchRequest mediaServices);
+ }
+ }
+ /**
+ * Refreshes the resource to sync with Azure.
+ *
+ * @return the refreshed resource.
+ */
+ Account refresh();
+
+ /**
+ * Refreshes the resource to sync with Azure.
+ *
+ * @param context The context to associate with this operation.
+ * @return the refreshed resource.
+ */
+ Account refresh(Context context);
+}
diff --git a/sdk/vi/azure-resourcemanager-vi/src/main/java/com/azure/resourcemanager/vi/models/AccountCheckNameAvailabilityParameters.java b/sdk/vi/azure-resourcemanager-vi/src/main/java/com/azure/resourcemanager/vi/models/AccountCheckNameAvailabilityParameters.java
new file mode 100644
index 000000000000..c87815c5c141
--- /dev/null
+++ b/sdk/vi/azure-resourcemanager-vi/src/main/java/com/azure/resourcemanager/vi/models/AccountCheckNameAvailabilityParameters.java
@@ -0,0 +1,87 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.vi.models;
+
+import com.azure.core.annotation.Fluent;
+import com.azure.core.util.logging.ClientLogger;
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/** The parameters used to check the availability of the Video Indexer account name. */
+@Fluent
+public final class AccountCheckNameAvailabilityParameters {
+ /*
+ * The VideoIndexer account name.
+ */
+ @JsonProperty(value = "name", required = true)
+ private String name;
+
+ /*
+ * The type of resource, Microsoft.VideoIndexer/accounts
+ */
+ @JsonProperty(value = "type", required = true)
+ private Type type;
+
+ /**
+ * Get the name property: The VideoIndexer account name.
+ *
+ * @return the name value.
+ */
+ public String name() {
+ return this.name;
+ }
+
+ /**
+ * Set the name property: The VideoIndexer account name.
+ *
+ * @param name the name value to set.
+ * @return the AccountCheckNameAvailabilityParameters object itself.
+ */
+ public AccountCheckNameAvailabilityParameters withName(String name) {
+ this.name = name;
+ return this;
+ }
+
+ /**
+ * Get the type property: The type of resource, Microsoft.VideoIndexer/accounts.
+ *
+ * @return the type value.
+ */
+ public Type type() {
+ return this.type;
+ }
+
+ /**
+ * Set the type property: The type of resource, Microsoft.VideoIndexer/accounts.
+ *
+ * @param type the type value to set.
+ * @return the AccountCheckNameAvailabilityParameters object itself.
+ */
+ public AccountCheckNameAvailabilityParameters withType(Type type) {
+ this.type = type;
+ return this;
+ }
+
+ /**
+ * Validates the instance.
+ *
+ * @throws IllegalArgumentException thrown if the instance is not valid.
+ */
+ public void validate() {
+ if (name() == null) {
+ throw LOGGER
+ .logExceptionAsError(
+ new IllegalArgumentException(
+ "Missing required property name in model AccountCheckNameAvailabilityParameters"));
+ }
+ if (type() == null) {
+ throw LOGGER
+ .logExceptionAsError(
+ new IllegalArgumentException(
+ "Missing required property type in model AccountCheckNameAvailabilityParameters"));
+ }
+ }
+
+ private static final ClientLogger LOGGER = new ClientLogger(AccountCheckNameAvailabilityParameters.class);
+}
diff --git a/sdk/vi/azure-resourcemanager-vi/src/main/java/com/azure/resourcemanager/vi/models/AccountList.java b/sdk/vi/azure-resourcemanager-vi/src/main/java/com/azure/resourcemanager/vi/models/AccountList.java
new file mode 100644
index 000000000000..3735aab9af40
--- /dev/null
+++ b/sdk/vi/azure-resourcemanager-vi/src/main/java/com/azure/resourcemanager/vi/models/AccountList.java
@@ -0,0 +1,66 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.vi.models;
+
+import com.azure.core.annotation.Fluent;
+import com.azure.resourcemanager.vi.fluent.models.AccountInner;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import java.util.List;
+
+/** The list operation response, that contains the data pools and their properties. */
+@Fluent
+public final class AccountList {
+ /*
+ * List of accounts and their properties.
+ */
+ @JsonProperty(value = "value", access = JsonProperty.Access.WRITE_ONLY)
+ private List value;
+
+ /*
+ * URL to get the next set of operation list results if there are any.
+ */
+ @JsonProperty(value = "nextLink")
+ private String nextLink;
+
+ /**
+ * Get the value property: List of accounts and their properties.
+ *
+ * @return the value value.
+ */
+ public List value() {
+ return this.value;
+ }
+
+ /**
+ * Get the nextLink property: URL to get the next set of operation list results if there are any.
+ *
+ * @return the nextLink value.
+ */
+ public String nextLink() {
+ return this.nextLink;
+ }
+
+ /**
+ * Set the nextLink property: URL to get the next set of operation list results if there are any.
+ *
+ * @param nextLink the nextLink value to set.
+ * @return the AccountList object itself.
+ */
+ public AccountList withNextLink(String nextLink) {
+ this.nextLink = nextLink;
+ return this;
+ }
+
+ /**
+ * Validates the instance.
+ *
+ * @throws IllegalArgumentException thrown if the instance is not valid.
+ */
+ public void validate() {
+ if (value() != null) {
+ value().forEach(e -> e.validate());
+ }
+ }
+}
diff --git a/sdk/vi/azure-resourcemanager-vi/src/main/java/com/azure/resourcemanager/vi/models/AccountPatch.java b/sdk/vi/azure-resourcemanager-vi/src/main/java/com/azure/resourcemanager/vi/models/AccountPatch.java
new file mode 100644
index 000000000000..1f8fae2588c6
--- /dev/null
+++ b/sdk/vi/azure-resourcemanager-vi/src/main/java/com/azure/resourcemanager/vi/models/AccountPatch.java
@@ -0,0 +1,128 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.vi.models;
+
+import com.azure.core.annotation.Fluent;
+import com.azure.resourcemanager.vi.fluent.models.AccountPropertiesForPatchRequest;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import java.util.Map;
+
+/** Azure Video Indexer account. */
+@Fluent
+public final class AccountPatch extends Tags {
+ /*
+ * List of account properties
+ */
+ @JsonProperty(value = "properties")
+ private AccountPropertiesForPatchRequest innerProperties;
+
+ /*
+ * Managed service identity (system assigned and/or user assigned identities)
+ */
+ @JsonProperty(value = "identity")
+ private ManagedServiceIdentity identity;
+
+ /**
+ * Get the innerProperties property: List of account properties.
+ *
+ * @return the innerProperties value.
+ */
+ private AccountPropertiesForPatchRequest innerProperties() {
+ return this.innerProperties;
+ }
+
+ /**
+ * Get the identity property: Managed service identity (system assigned and/or user assigned identities).
+ *
+ * @return the identity value.
+ */
+ public ManagedServiceIdentity identity() {
+ return this.identity;
+ }
+
+ /**
+ * Set the identity property: Managed service identity (system assigned and/or user assigned identities).
+ *
+ * @param identity the identity value to set.
+ * @return the AccountPatch object itself.
+ */
+ public AccountPatch withIdentity(ManagedServiceIdentity identity) {
+ this.identity = identity;
+ return this;
+ }
+
+ /** {@inheritDoc} */
+ @Override
+ public AccountPatch withTags(Map tags) {
+ super.withTags(tags);
+ return this;
+ }
+
+ /**
+ * Get the tenantId property: The account's tenant id.
+ *
+ * @return the tenantId value.
+ */
+ public String tenantId() {
+ return this.innerProperties() == null ? null : this.innerProperties().tenantId();
+ }
+
+ /**
+ * Get the accountId property: The account's data-plane ID.
+ *
+ * @return the accountId value.
+ */
+ public String accountId() {
+ return this.innerProperties() == null ? null : this.innerProperties().accountId();
+ }
+
+ /**
+ * Get the mediaServices property: The media services details.
+ *
+ * @return the mediaServices value.
+ */
+ public MediaServicesForPatchRequest mediaServices() {
+ return this.innerProperties() == null ? null : this.innerProperties().mediaServices();
+ }
+
+ /**
+ * Set the mediaServices property: The media services details.
+ *
+ * @param mediaServices the mediaServices value to set.
+ * @return the AccountPatch object itself.
+ */
+ public AccountPatch withMediaServices(MediaServicesForPatchRequest mediaServices) {
+ if (this.innerProperties() == null) {
+ this.innerProperties = new AccountPropertiesForPatchRequest();
+ }
+ this.innerProperties().withMediaServices(mediaServices);
+ return this;
+ }
+
+ /**
+ * Get the provisioningState property: Gets the status of the account at the time the operation was called.
+ *
+ * @return the provisioningState value.
+ */
+ public ProvisioningState provisioningState() {
+ return this.innerProperties() == null ? null : this.innerProperties().provisioningState();
+ }
+
+ /**
+ * Validates the instance.
+ *
+ * @throws IllegalArgumentException thrown if the instance is not valid.
+ */
+ @Override
+ public void validate() {
+ super.validate();
+ if (innerProperties() != null) {
+ innerProperties().validate();
+ }
+ if (identity() != null) {
+ identity().validate();
+ }
+ }
+}
diff --git a/sdk/vi/azure-resourcemanager-vi/src/main/java/com/azure/resourcemanager/vi/models/Accounts.java b/sdk/vi/azure-resourcemanager-vi/src/main/java/com/azure/resourcemanager/vi/models/Accounts.java
new file mode 100644
index 000000000000..45a0513faa97
--- /dev/null
+++ b/sdk/vi/azure-resourcemanager-vi/src/main/java/com/azure/resourcemanager/vi/models/Accounts.java
@@ -0,0 +1,186 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.vi.models;
+
+import com.azure.core.http.rest.PagedIterable;
+import com.azure.core.http.rest.Response;
+import com.azure.core.util.Context;
+
+/** Resource collection API of Accounts. */
+public interface Accounts {
+ /**
+ * Checks that the Video Indexer account name is valid and is not already in use.
+ *
+ * @param checkNameAvailabilityParameters The name of the Video Indexer account. Name must be unique globally.
+ * @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 CheckNameAvailability operation response.
+ */
+ CheckNameAvailabilityResult checkNameAvailability(
+ AccountCheckNameAvailabilityParameters checkNameAvailabilityParameters);
+
+ /**
+ * Checks that the Video Indexer account name is valid and is not already in use.
+ *
+ * @param checkNameAvailabilityParameters The name of the Video Indexer account. Name must be unique globally.
+ * @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 CheckNameAvailability operation response along with {@link Response}.
+ */
+ Response checkNameAvailabilityWithResponse(
+ AccountCheckNameAvailabilityParameters checkNameAvailabilityParameters, Context context);
+
+ /**
+ * List all Azure Video Indexer accounts available under the 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 the list operation response, that contains the data pools and their properties as paginated response with
+ * {@link PagedIterable}.
+ */
+ PagedIterable list();
+
+ /**
+ * List all Azure Video Indexer accounts available under the 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 the list operation response, that contains the data pools and their properties as paginated response with
+ * {@link PagedIterable}.
+ */
+ PagedIterable list(Context context);
+
+ /**
+ * List all Azure Video Indexer accounts available under the resource group.
+ *
+ * @param resourceGroupName The name of the resource group. The name is case insensitive.
+ * @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 list operation response, that contains the data pools and their properties as paginated response with
+ * {@link PagedIterable}.
+ */
+ PagedIterable listByResourceGroup(String resourceGroupName);
+
+ /**
+ * List all Azure Video Indexer accounts available under the resource group.
+ *
+ * @param resourceGroupName The name of the resource group. The name is case insensitive.
+ * @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 list operation response, that contains the data pools and their properties as paginated response with
+ * {@link PagedIterable}.
+ */
+ PagedIterable listByResourceGroup(String resourceGroupName, Context context);
+
+ /**
+ * Gets the properties of an Azure Video Indexer account.
+ *
+ * @param resourceGroupName The name of the resource group. The name is case insensitive.
+ * @param accountName The name of the Azure Video Indexer account.
+ * @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 of an Azure Video Indexer account.
+ */
+ Account getByResourceGroup(String resourceGroupName, String accountName);
+
+ /**
+ * Gets the properties of an Azure Video Indexer account.
+ *
+ * @param resourceGroupName The name of the resource group. The name is case insensitive.
+ * @param accountName The name of the Azure Video Indexer account.
+ * @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 of an Azure Video Indexer account along with {@link Response}.
+ */
+ Response getByResourceGroupWithResponse(String resourceGroupName, String accountName, Context context);
+
+ /**
+ * Delete an Azure Video Indexer account.
+ *
+ * @param resourceGroupName The name of the resource group. The name is case insensitive.
+ * @param accountName The name of the Azure Video Indexer account.
+ * @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.
+ */
+ void deleteByResourceGroup(String resourceGroupName, String accountName);
+
+ /**
+ * Delete an Azure Video Indexer account.
+ *
+ * @param resourceGroupName The name of the resource group. The name is case insensitive.
+ * @param accountName The name of the Azure Video Indexer account.
+ * @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 {@link Response}.
+ */
+ Response deleteWithResponse(String resourceGroupName, String accountName, Context context);
+
+ /**
+ * Gets the properties of an Azure Video Indexer account.
+ *
+ * @param id the resource ID.
+ * @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 of an Azure Video Indexer account along with {@link Response}.
+ */
+ Account getById(String id);
+
+ /**
+ * Gets the properties of an Azure Video Indexer account.
+ *
+ * @param id the resource ID.
+ * @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 of an Azure Video Indexer account along with {@link Response}.
+ */
+ Response getByIdWithResponse(String id, Context context);
+
+ /**
+ * Delete an Azure Video Indexer account.
+ *
+ * @param id the resource ID.
+ * @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.
+ */
+ void deleteById(String id);
+
+ /**
+ * Delete an Azure Video Indexer account.
+ *
+ * @param id the resource ID.
+ * @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 {@link Response}.
+ */
+ Response deleteByIdWithResponse(String id, Context context);
+
+ /**
+ * Begins definition for a new Account resource.
+ *
+ * @param name resource name.
+ * @return the first stage of the new Account definition.
+ */
+ Account.DefinitionStages.Blank define(String name);
+}
diff --git a/sdk/vi/azure-resourcemanager-vi/src/main/java/com/azure/resourcemanager/vi/models/CheckNameAvailabilityResult.java b/sdk/vi/azure-resourcemanager-vi/src/main/java/com/azure/resourcemanager/vi/models/CheckNameAvailabilityResult.java
new file mode 100644
index 000000000000..388424a4cdd4
--- /dev/null
+++ b/sdk/vi/azure-resourcemanager-vi/src/main/java/com/azure/resourcemanager/vi/models/CheckNameAvailabilityResult.java
@@ -0,0 +1,40 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.vi.models;
+
+import com.azure.resourcemanager.vi.fluent.models.CheckNameAvailabilityResultInner;
+
+/** An immutable client-side representation of CheckNameAvailabilityResult. */
+public interface CheckNameAvailabilityResult {
+ /**
+ * Gets the nameAvailable property: Gets a boolean value that indicates whether the name is available for you to
+ * use. If true, the name is available. If false, the name has already been taken.
+ *
+ * @return the nameAvailable value.
+ */
+ Boolean nameAvailable();
+
+ /**
+ * Gets the reason property: Gets the reason that a Video Indexer account name could not be used. The Reason element
+ * is only returned if NameAvailable is false.
+ *
+ * @return the reason value.
+ */
+ Reason reason();
+
+ /**
+ * Gets the message property: Gets an error message explaining the Reason value in more detail.
+ *
+ * @return the message value.
+ */
+ String message();
+
+ /**
+ * Gets the inner com.azure.resourcemanager.vi.fluent.models.CheckNameAvailabilityResultInner object.
+ *
+ * @return the inner object.
+ */
+ CheckNameAvailabilityResultInner innerModel();
+}
diff --git a/sdk/vi/azure-resourcemanager-vi/src/main/java/com/azure/resourcemanager/vi/models/ClassicAccount.java b/sdk/vi/azure-resourcemanager-vi/src/main/java/com/azure/resourcemanager/vi/models/ClassicAccount.java
new file mode 100644
index 000000000000..3d8f6cdbac7b
--- /dev/null
+++ b/sdk/vi/azure-resourcemanager-vi/src/main/java/com/azure/resourcemanager/vi/models/ClassicAccount.java
@@ -0,0 +1,45 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.vi.models;
+
+import com.azure.resourcemanager.vi.fluent.models.ClassicAccountInner;
+
+/** An immutable client-side representation of ClassicAccount. */
+public interface ClassicAccount {
+ /**
+ * Gets the name property: The account's name.
+ *
+ * @return the name value.
+ */
+ String name();
+
+ /**
+ * Gets the location property: The account's location.
+ *
+ * @return the location value.
+ */
+ String location();
+
+ /**
+ * Gets the id property: The account's id.
+ *
+ * @return the id value.
+ */
+ String id();
+
+ /**
+ * Gets the mediaServices property: The media services details.
+ *
+ * @return the mediaServices value.
+ */
+ ClassicAccountMediaServices mediaServices();
+
+ /**
+ * Gets the inner com.azure.resourcemanager.vi.fluent.models.ClassicAccountInner object.
+ *
+ * @return the inner object.
+ */
+ ClassicAccountInner innerModel();
+}
diff --git a/sdk/vi/azure-resourcemanager-vi/src/main/java/com/azure/resourcemanager/vi/models/ClassicAccountMediaServices.java b/sdk/vi/azure-resourcemanager-vi/src/main/java/com/azure/resourcemanager/vi/models/ClassicAccountMediaServices.java
new file mode 100644
index 000000000000..c34bd5b6ab04
--- /dev/null
+++ b/sdk/vi/azure-resourcemanager-vi/src/main/java/com/azure/resourcemanager/vi/models/ClassicAccountMediaServices.java
@@ -0,0 +1,228 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.vi.models;
+
+import com.azure.core.annotation.Fluent;
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/** Azure Video Indexer classic account properties. */
+@Fluent
+public final class ClassicAccountMediaServices {
+ /*
+ * The aad application id
+ */
+ @JsonProperty(value = "aadApplicationId")
+ private String aadApplicationId;
+
+ /*
+ * The aad tenant id
+ */
+ @JsonProperty(value = "aadTenantId")
+ private String aadTenantId;
+
+ /*
+ * Represents wether the media services is connected or not
+ */
+ @JsonProperty(value = "connected")
+ private Boolean connected;
+
+ /*
+ * Represents if the media services event grid is connected or not
+ */
+ @JsonProperty(value = "eventGridProviderRegistered")
+ private Boolean eventGridProviderRegistered;
+
+ /*
+ * The media services name
+ */
+ @JsonProperty(value = "name")
+ private String name;
+
+ /*
+ * The resource group that the media services belong to
+ */
+ @JsonProperty(value = "resourceGroup")
+ private String resourceGroup;
+
+ /*
+ * Represents wether the media services streaming endpoint has started
+ */
+ @JsonProperty(value = "streamingEndpointStarted")
+ private Boolean streamingEndpointStarted;
+
+ /*
+ * The media services subscriptionId
+ */
+ @JsonProperty(value = "subscriptionId")
+ private String subscriptionId;
+
+ /**
+ * Get the aadApplicationId property: The aad application id.
+ *
+ * @return the aadApplicationId value.
+ */
+ public String aadApplicationId() {
+ return this.aadApplicationId;
+ }
+
+ /**
+ * Set the aadApplicationId property: The aad application id.
+ *
+ * @param aadApplicationId the aadApplicationId value to set.
+ * @return the ClassicAccountMediaServices object itself.
+ */
+ public ClassicAccountMediaServices withAadApplicationId(String aadApplicationId) {
+ this.aadApplicationId = aadApplicationId;
+ return this;
+ }
+
+ /**
+ * Get the aadTenantId property: The aad tenant id.
+ *
+ * @return the aadTenantId value.
+ */
+ public String aadTenantId() {
+ return this.aadTenantId;
+ }
+
+ /**
+ * Set the aadTenantId property: The aad tenant id.
+ *
+ * @param aadTenantId the aadTenantId value to set.
+ * @return the ClassicAccountMediaServices object itself.
+ */
+ public ClassicAccountMediaServices withAadTenantId(String aadTenantId) {
+ this.aadTenantId = aadTenantId;
+ return this;
+ }
+
+ /**
+ * Get the connected property: Represents wether the media services is connected or not.
+ *
+ * @return the connected value.
+ */
+ public Boolean connected() {
+ return this.connected;
+ }
+
+ /**
+ * Set the connected property: Represents wether the media services is connected or not.
+ *
+ * @param connected the connected value to set.
+ * @return the ClassicAccountMediaServices object itself.
+ */
+ public ClassicAccountMediaServices withConnected(Boolean connected) {
+ this.connected = connected;
+ return this;
+ }
+
+ /**
+ * Get the eventGridProviderRegistered property: Represents if the media services event grid is connected or not.
+ *
+ * @return the eventGridProviderRegistered value.
+ */
+ public Boolean eventGridProviderRegistered() {
+ return this.eventGridProviderRegistered;
+ }
+
+ /**
+ * Set the eventGridProviderRegistered property: Represents if the media services event grid is connected or not.
+ *
+ * @param eventGridProviderRegistered the eventGridProviderRegistered value to set.
+ * @return the ClassicAccountMediaServices object itself.
+ */
+ public ClassicAccountMediaServices withEventGridProviderRegistered(Boolean eventGridProviderRegistered) {
+ this.eventGridProviderRegistered = eventGridProviderRegistered;
+ return this;
+ }
+
+ /**
+ * Get the name property: The media services name.
+ *
+ * @return the name value.
+ */
+ public String name() {
+ return this.name;
+ }
+
+ /**
+ * Set the name property: The media services name.
+ *
+ * @param name the name value to set.
+ * @return the ClassicAccountMediaServices object itself.
+ */
+ public ClassicAccountMediaServices withName(String name) {
+ this.name = name;
+ return this;
+ }
+
+ /**
+ * Get the resourceGroup property: The resource group that the media services belong to.
+ *
+ * @return the resourceGroup value.
+ */
+ public String resourceGroup() {
+ return this.resourceGroup;
+ }
+
+ /**
+ * Set the resourceGroup property: The resource group that the media services belong to.
+ *
+ * @param resourceGroup the resourceGroup value to set.
+ * @return the ClassicAccountMediaServices object itself.
+ */
+ public ClassicAccountMediaServices withResourceGroup(String resourceGroup) {
+ this.resourceGroup = resourceGroup;
+ return this;
+ }
+
+ /**
+ * Get the streamingEndpointStarted property: Represents wether the media services streaming endpoint has started.
+ *
+ * @return the streamingEndpointStarted value.
+ */
+ public Boolean streamingEndpointStarted() {
+ return this.streamingEndpointStarted;
+ }
+
+ /**
+ * Set the streamingEndpointStarted property: Represents wether the media services streaming endpoint has started.
+ *
+ * @param streamingEndpointStarted the streamingEndpointStarted value to set.
+ * @return the ClassicAccountMediaServices object itself.
+ */
+ public ClassicAccountMediaServices withStreamingEndpointStarted(Boolean streamingEndpointStarted) {
+ this.streamingEndpointStarted = streamingEndpointStarted;
+ return this;
+ }
+
+ /**
+ * Get the subscriptionId property: The media services subscriptionId.
+ *
+ * @return the subscriptionId value.
+ */
+ public String subscriptionId() {
+ return this.subscriptionId;
+ }
+
+ /**
+ * Set the subscriptionId property: The media services subscriptionId.
+ *
+ * @param subscriptionId the subscriptionId value to set.
+ * @return the ClassicAccountMediaServices object itself.
+ */
+ public ClassicAccountMediaServices withSubscriptionId(String subscriptionId) {
+ this.subscriptionId = subscriptionId;
+ return this;
+ }
+
+ /**
+ * Validates the instance.
+ *
+ * @throws IllegalArgumentException thrown if the instance is not valid.
+ */
+ public void validate() {
+ }
+}
diff --git a/sdk/vi/azure-resourcemanager-vi/src/main/java/com/azure/resourcemanager/vi/models/ClassicAccountSlim.java b/sdk/vi/azure-resourcemanager-vi/src/main/java/com/azure/resourcemanager/vi/models/ClassicAccountSlim.java
new file mode 100644
index 000000000000..7567cd9e0a7b
--- /dev/null
+++ b/sdk/vi/azure-resourcemanager-vi/src/main/java/com/azure/resourcemanager/vi/models/ClassicAccountSlim.java
@@ -0,0 +1,38 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.vi.models;
+
+import com.azure.resourcemanager.vi.fluent.models.ClassicAccountSlimInner;
+
+/** An immutable client-side representation of ClassicAccountSlim. */
+public interface ClassicAccountSlim {
+ /**
+ * Gets the name property: The account's name.
+ *
+ * @return the name value.
+ */
+ String name();
+
+ /**
+ * Gets the location property: The account's location.
+ *
+ * @return the location value.
+ */
+ String location();
+
+ /**
+ * Gets the id property: The account's id.
+ *
+ * @return the id value.
+ */
+ String id();
+
+ /**
+ * Gets the inner com.azure.resourcemanager.vi.fluent.models.ClassicAccountSlimInner object.
+ *
+ * @return the inner object.
+ */
+ ClassicAccountSlimInner innerModel();
+}
diff --git a/sdk/vi/azure-resourcemanager-vi/src/main/java/com/azure/resourcemanager/vi/models/ClassicAccounts.java b/sdk/vi/azure-resourcemanager-vi/src/main/java/com/azure/resourcemanager/vi/models/ClassicAccounts.java
new file mode 100644
index 000000000000..f78b8fd3311e
--- /dev/null
+++ b/sdk/vi/azure-resourcemanager-vi/src/main/java/com/azure/resourcemanager/vi/models/ClassicAccounts.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.vi.models;
+
+import com.azure.core.http.rest.Response;
+import com.azure.core.util.Context;
+
+/** Resource collection API of ClassicAccounts. */
+public interface ClassicAccounts {
+ /**
+ * Gets the properties of an Azure Video Indexer Classic account.
+ *
+ * @param location The name of Azure region.
+ * @param accountName The name of the Azure Video Indexer account.
+ * @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 of an Azure Video Indexer Classic account.
+ */
+ ClassicAccount getDetails(String location, String accountName);
+
+ /**
+ * Gets the properties of an Azure Video Indexer Classic account.
+ *
+ * @param location The name of Azure region.
+ * @param accountName The name of the Azure Video Indexer account.
+ * @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 of an Azure Video Indexer Classic account along with {@link Response}.
+ */
+ Response getDetailsWithResponse(String location, String accountName, Context context);
+}
diff --git a/sdk/vi/azure-resourcemanager-vi/src/main/java/com/azure/resourcemanager/vi/models/GenerateAccessTokenParameters.java b/sdk/vi/azure-resourcemanager-vi/src/main/java/com/azure/resourcemanager/vi/models/GenerateAccessTokenParameters.java
new file mode 100644
index 000000000000..14bbfa957ccc
--- /dev/null
+++ b/sdk/vi/azure-resourcemanager-vi/src/main/java/com/azure/resourcemanager/vi/models/GenerateAccessTokenParameters.java
@@ -0,0 +1,139 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.vi.models;
+
+import com.azure.core.annotation.Fluent;
+import com.azure.core.util.logging.ClientLogger;
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/** Access token generation request's parameters. */
+@Fluent
+public final class GenerateAccessTokenParameters {
+ /*
+ * The requested permission
+ */
+ @JsonProperty(value = "permissionType", required = true)
+ private PermissionType permissionType;
+
+ /*
+ * The requested media type
+ */
+ @JsonProperty(value = "scope", required = true)
+ private Scope scope;
+
+ /*
+ * The video ID
+ */
+ @JsonProperty(value = "videoId")
+ private String videoId;
+
+ /*
+ * The project ID
+ */
+ @JsonProperty(value = "projectId")
+ private String projectId;
+
+ /**
+ * Get the permissionType property: The requested permission.
+ *
+ * @return the permissionType value.
+ */
+ public PermissionType permissionType() {
+ return this.permissionType;
+ }
+
+ /**
+ * Set the permissionType property: The requested permission.
+ *
+ * @param permissionType the permissionType value to set.
+ * @return the GenerateAccessTokenParameters object itself.
+ */
+ public GenerateAccessTokenParameters withPermissionType(PermissionType permissionType) {
+ this.permissionType = permissionType;
+ return this;
+ }
+
+ /**
+ * Get the scope property: The requested media type.
+ *
+ * @return the scope value.
+ */
+ public Scope scope() {
+ return this.scope;
+ }
+
+ /**
+ * Set the scope property: The requested media type.
+ *
+ * @param scope the scope value to set.
+ * @return the GenerateAccessTokenParameters object itself.
+ */
+ public GenerateAccessTokenParameters withScope(Scope scope) {
+ this.scope = scope;
+ return this;
+ }
+
+ /**
+ * Get the videoId property: The video ID.
+ *
+ * @return the videoId value.
+ */
+ public String videoId() {
+ return this.videoId;
+ }
+
+ /**
+ * Set the videoId property: The video ID.
+ *
+ * @param videoId the videoId value to set.
+ * @return the GenerateAccessTokenParameters object itself.
+ */
+ public GenerateAccessTokenParameters withVideoId(String videoId) {
+ this.videoId = videoId;
+ return this;
+ }
+
+ /**
+ * Get the projectId property: The project ID.
+ *
+ * @return the projectId value.
+ */
+ public String projectId() {
+ return this.projectId;
+ }
+
+ /**
+ * Set the projectId property: The project ID.
+ *
+ * @param projectId the projectId value to set.
+ * @return the GenerateAccessTokenParameters object itself.
+ */
+ public GenerateAccessTokenParameters withProjectId(String projectId) {
+ this.projectId = projectId;
+ return this;
+ }
+
+ /**
+ * Validates the instance.
+ *
+ * @throws IllegalArgumentException thrown if the instance is not valid.
+ */
+ public void validate() {
+ if (permissionType() == null) {
+ throw LOGGER
+ .logExceptionAsError(
+ new IllegalArgumentException(
+ "Missing required property permissionType in model GenerateAccessTokenParameters"));
+ }
+ if (scope() == null) {
+ throw LOGGER
+ .logExceptionAsError(
+ new IllegalArgumentException(
+ "Missing required property scope in model GenerateAccessTokenParameters"));
+ }
+ }
+
+ private static final ClientLogger LOGGER = new ClientLogger(GenerateAccessTokenParameters.class);
+}
diff --git a/sdk/vi/azure-resourcemanager-vi/src/main/java/com/azure/resourcemanager/vi/models/Generates.java b/sdk/vi/azure-resourcemanager-vi/src/main/java/com/azure/resourcemanager/vi/models/Generates.java
new file mode 100644
index 000000000000..5764a0bcf849
--- /dev/null
+++ b/sdk/vi/azure-resourcemanager-vi/src/main/java/com/azure/resourcemanager/vi/models/Generates.java
@@ -0,0 +1,38 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.vi.models;
+
+import com.azure.core.http.rest.Response;
+import com.azure.core.util.Context;
+
+/** Resource collection API of Generates. */
+public interface Generates {
+ /**
+ * Generate an Azure Video Indexer access token.
+ *
+ * @param resourceGroupName The name of the resource group. The name is case insensitive.
+ * @param accountName The name of the Azure Video Indexer account.
+ * @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 azure Video Indexer access token.
+ */
+ AccessToken accessToken(String resourceGroupName, String accountName);
+
+ /**
+ * Generate an Azure Video Indexer access token.
+ *
+ * @param resourceGroupName The name of the resource group. The name is case insensitive.
+ * @param accountName The name of the Azure Video Indexer account.
+ * @param parameters The parameters for generating access token.
+ * @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 azure Video Indexer access token along with {@link Response}.
+ */
+ Response accessTokenWithResponse(
+ String resourceGroupName, String accountName, GenerateAccessTokenParameters parameters, Context context);
+}
diff --git a/sdk/vi/azure-resourcemanager-vi/src/main/java/com/azure/resourcemanager/vi/models/ManagedServiceIdentity.java b/sdk/vi/azure-resourcemanager-vi/src/main/java/com/azure/resourcemanager/vi/models/ManagedServiceIdentity.java
new file mode 100644
index 000000000000..9a3cc2c1bc7c
--- /dev/null
+++ b/sdk/vi/azure-resourcemanager-vi/src/main/java/com/azure/resourcemanager/vi/models/ManagedServiceIdentity.java
@@ -0,0 +1,139 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.vi.models;
+
+import com.azure.core.annotation.Fluent;
+import com.azure.core.util.logging.ClientLogger;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import java.util.Map;
+import java.util.UUID;
+
+/** Managed service identity (system assigned and/or user assigned identities). */
+@Fluent
+public class ManagedServiceIdentity {
+ /*
+ * The service principal ID of the system assigned identity. This property will only be provided for a system
+ * assigned identity.
+ */
+ @JsonProperty(value = "principalId", access = JsonProperty.Access.WRITE_ONLY)
+ private UUID principalId;
+
+ /*
+ * The tenant ID of the system assigned identity. This property will only be provided for a system assigned
+ * identity.
+ */
+ @JsonProperty(value = "tenantId", access = JsonProperty.Access.WRITE_ONLY)
+ private UUID tenantId;
+
+ /*
+ * Type of managed service identity (where both SystemAssigned and UserAssigned types are allowed).
+ */
+ @JsonProperty(value = "type", required = true)
+ private ManagedServiceIdentityType type;
+
+ /*
+ * The set of user assigned identities associated with the resource. The userAssignedIdentities dictionary keys
+ * will be ARM resource ids in the form:
+ * '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ManagedIdentity/userAssignedIdentities/{identityName}.
+ * The dictionary values can be empty objects ({}) in requests.
+ */
+ @JsonProperty(value = "userAssignedIdentities")
+ @JsonInclude(value = JsonInclude.Include.NON_NULL, content = JsonInclude.Include.ALWAYS)
+ private Map userAssignedIdentities;
+
+ /**
+ * Get the principalId property: The service principal ID of the system assigned identity. This property will only
+ * be provided for a system assigned identity.
+ *
+ * @return the principalId value.
+ */
+ public UUID principalId() {
+ return this.principalId;
+ }
+
+ /**
+ * Get the tenantId property: The tenant ID of the system assigned identity. This property will only be provided for
+ * a system assigned identity.
+ *
+ * @return the tenantId value.
+ */
+ public UUID tenantId() {
+ return this.tenantId;
+ }
+
+ /**
+ * Get the type property: Type of managed service identity (where both SystemAssigned and UserAssigned types are
+ * allowed).
+ *
+ * @return the type value.
+ */
+ public ManagedServiceIdentityType type() {
+ return this.type;
+ }
+
+ /**
+ * Set the type property: Type of managed service identity (where both SystemAssigned and UserAssigned types are
+ * allowed).
+ *
+ * @param type the type value to set.
+ * @return the ManagedServiceIdentity object itself.
+ */
+ public ManagedServiceIdentity withType(ManagedServiceIdentityType type) {
+ this.type = type;
+ return this;
+ }
+
+ /**
+ * Get the userAssignedIdentities property: The set of user assigned identities associated with the resource. The
+ * userAssignedIdentities dictionary keys will be ARM resource ids in the form:
+ * '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ManagedIdentity/userAssignedIdentities/{identityName}.
+ * The dictionary values can be empty objects ({}) in requests.
+ *
+ * @return the userAssignedIdentities value.
+ */
+ public Map userAssignedIdentities() {
+ return this.userAssignedIdentities;
+ }
+
+ /**
+ * Set the userAssignedIdentities property: The set of user assigned identities associated with the resource. The
+ * userAssignedIdentities dictionary keys will be ARM resource ids in the form:
+ * '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ManagedIdentity/userAssignedIdentities/{identityName}.
+ * The dictionary values can be empty objects ({}) in requests.
+ *
+ * @param userAssignedIdentities the userAssignedIdentities value to set.
+ * @return the ManagedServiceIdentity object itself.
+ */
+ public ManagedServiceIdentity withUserAssignedIdentities(Map userAssignedIdentities) {
+ this.userAssignedIdentities = userAssignedIdentities;
+ return this;
+ }
+
+ /**
+ * Validates the instance.
+ *
+ * @throws IllegalArgumentException thrown if the instance is not valid.
+ */
+ public void validate() {
+ if (type() == null) {
+ throw LOGGER
+ .logExceptionAsError(
+ new IllegalArgumentException("Missing required property type in model ManagedServiceIdentity"));
+ }
+ if (userAssignedIdentities() != null) {
+ userAssignedIdentities()
+ .values()
+ .forEach(
+ e -> {
+ if (e != null) {
+ e.validate();
+ }
+ });
+ }
+ }
+
+ private static final ClientLogger LOGGER = new ClientLogger(ManagedServiceIdentity.class);
+}
diff --git a/sdk/vi/azure-resourcemanager-vi/src/main/java/com/azure/resourcemanager/vi/models/ManagedServiceIdentityType.java b/sdk/vi/azure-resourcemanager-vi/src/main/java/com/azure/resourcemanager/vi/models/ManagedServiceIdentityType.java
new file mode 100644
index 000000000000..81d859b7532e
--- /dev/null
+++ b/sdk/vi/azure-resourcemanager-vi/src/main/java/com/azure/resourcemanager/vi/models/ManagedServiceIdentityType.java
@@ -0,0 +1,45 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.vi.models;
+
+import com.azure.core.util.ExpandableStringEnum;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import java.util.Collection;
+
+/** Type of managed service identity (where both SystemAssigned and UserAssigned types are allowed). */
+public final class ManagedServiceIdentityType extends ExpandableStringEnum {
+ /** Static value None for ManagedServiceIdentityType. */
+ public static final ManagedServiceIdentityType NONE = fromString("None");
+
+ /** Static value SystemAssigned for ManagedServiceIdentityType. */
+ public static final ManagedServiceIdentityType SYSTEM_ASSIGNED = fromString("SystemAssigned");
+
+ /** Static value UserAssigned for ManagedServiceIdentityType. */
+ public static final ManagedServiceIdentityType USER_ASSIGNED = fromString("UserAssigned");
+
+ /** Static value SystemAssigned,UserAssigned for ManagedServiceIdentityType. */
+ public static final ManagedServiceIdentityType SYSTEM_ASSIGNED_USER_ASSIGNED =
+ fromString("SystemAssigned,UserAssigned");
+
+ /**
+ * Creates or finds a ManagedServiceIdentityType from its string representation.
+ *
+ * @param name a name to look for.
+ * @return the corresponding ManagedServiceIdentityType.
+ */
+ @JsonCreator
+ public static ManagedServiceIdentityType fromString(String name) {
+ return fromString(name, ManagedServiceIdentityType.class);
+ }
+
+ /**
+ * Gets known ManagedServiceIdentityType values.
+ *
+ * @return known ManagedServiceIdentityType values.
+ */
+ public static Collection values() {
+ return values(ManagedServiceIdentityType.class);
+ }
+}
diff --git a/sdk/vi/azure-resourcemanager-vi/src/main/java/com/azure/resourcemanager/vi/models/MediaServicesForPatchRequest.java b/sdk/vi/azure-resourcemanager-vi/src/main/java/com/azure/resourcemanager/vi/models/MediaServicesForPatchRequest.java
new file mode 100644
index 000000000000..7fb88c33f7d9
--- /dev/null
+++ b/sdk/vi/azure-resourcemanager-vi/src/main/java/com/azure/resourcemanager/vi/models/MediaServicesForPatchRequest.java
@@ -0,0 +1,46 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.vi.models;
+
+import com.azure.core.annotation.Fluent;
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/** The media services details. */
+@Fluent
+public final class MediaServicesForPatchRequest {
+ /*
+ * The user assigned identity to be used to grant permissions
+ */
+ @JsonProperty(value = "userAssignedIdentity")
+ private String userAssignedIdentity;
+
+ /**
+ * Get the userAssignedIdentity property: The user assigned identity to be used to grant permissions.
+ *
+ * @return the userAssignedIdentity value.
+ */
+ public String userAssignedIdentity() {
+ return this.userAssignedIdentity;
+ }
+
+ /**
+ * Set the userAssignedIdentity property: The user assigned identity to be used to grant permissions.
+ *
+ * @param userAssignedIdentity the userAssignedIdentity value to set.
+ * @return the MediaServicesForPatchRequest object itself.
+ */
+ public MediaServicesForPatchRequest withUserAssignedIdentity(String userAssignedIdentity) {
+ this.userAssignedIdentity = userAssignedIdentity;
+ return this;
+ }
+
+ /**
+ * Validates the instance.
+ *
+ * @throws IllegalArgumentException thrown if the instance is not valid.
+ */
+ public void validate() {
+ }
+}
diff --git a/sdk/vi/azure-resourcemanager-vi/src/main/java/com/azure/resourcemanager/vi/models/MediaServicesForPutRequest.java b/sdk/vi/azure-resourcemanager-vi/src/main/java/com/azure/resourcemanager/vi/models/MediaServicesForPutRequest.java
new file mode 100644
index 000000000000..7afd579b5da6
--- /dev/null
+++ b/sdk/vi/azure-resourcemanager-vi/src/main/java/com/azure/resourcemanager/vi/models/MediaServicesForPutRequest.java
@@ -0,0 +1,72 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.vi.models;
+
+import com.azure.core.annotation.Fluent;
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/** The media services details. */
+@Fluent
+public final class MediaServicesForPutRequest {
+ /*
+ * The media services resource id
+ */
+ @JsonProperty(value = "resourceId")
+ private String resourceId;
+
+ /*
+ * The user assigned identity to be used to grant permissions
+ */
+ @JsonProperty(value = "userAssignedIdentity")
+ private String userAssignedIdentity;
+
+ /**
+ * Get the resourceId property: The media services resource id.
+ *
+ * @return the resourceId value.
+ */
+ public String resourceId() {
+ return this.resourceId;
+ }
+
+ /**
+ * Set the resourceId property: The media services resource id.
+ *
+ * @param resourceId the resourceId value to set.
+ * @return the MediaServicesForPutRequest object itself.
+ */
+ public MediaServicesForPutRequest withResourceId(String resourceId) {
+ this.resourceId = resourceId;
+ return this;
+ }
+
+ /**
+ * Get the userAssignedIdentity property: The user assigned identity to be used to grant permissions.
+ *
+ * @return the userAssignedIdentity value.
+ */
+ public String userAssignedIdentity() {
+ return this.userAssignedIdentity;
+ }
+
+ /**
+ * Set the userAssignedIdentity property: The user assigned identity to be used to grant permissions.
+ *
+ * @param userAssignedIdentity the userAssignedIdentity value to set.
+ * @return the MediaServicesForPutRequest object itself.
+ */
+ public MediaServicesForPutRequest withUserAssignedIdentity(String userAssignedIdentity) {
+ this.userAssignedIdentity = userAssignedIdentity;
+ return this;
+ }
+
+ /**
+ * Validates the instance.
+ *
+ * @throws IllegalArgumentException thrown if the instance is not valid.
+ */
+ public void validate() {
+ }
+}
diff --git a/sdk/vi/azure-resourcemanager-vi/src/main/java/com/azure/resourcemanager/vi/models/Operation.java b/sdk/vi/azure-resourcemanager-vi/src/main/java/com/azure/resourcemanager/vi/models/Operation.java
new file mode 100644
index 000000000000..4466ba69577b
--- /dev/null
+++ b/sdk/vi/azure-resourcemanager-vi/src/main/java/com/azure/resourcemanager/vi/models/Operation.java
@@ -0,0 +1,52 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.vi.models;
+
+import com.azure.resourcemanager.vi.fluent.models.OperationInner;
+
+/** An immutable client-side representation of Operation. */
+public interface Operation {
+ /**
+ * Gets the name property: Name of the operation.
+ *
+ * @return the name value.
+ */
+ String name();
+
+ /**
+ * Gets the isDataAction property: Indicates whether the operation is a data action.
+ *
+ * @return the isDataAction value.
+ */
+ Boolean isDataAction();
+
+ /**
+ * Gets the actionType property: Indicates the action type.
+ *
+ * @return the actionType value.
+ */
+ String actionType();
+
+ /**
+ * Gets the display property: Display of the operation.
+ *
+ * @return the display value.
+ */
+ OperationDisplay display();
+
+ /**
+ * Gets the origin property: Origin of the operation.
+ *
+ * @return the origin value.
+ */
+ String origin();
+
+ /**
+ * Gets the inner com.azure.resourcemanager.vi.fluent.models.OperationInner object.
+ *
+ * @return the inner object.
+ */
+ OperationInner innerModel();
+}
diff --git a/sdk/vi/azure-resourcemanager-vi/src/main/java/com/azure/resourcemanager/vi/models/OperationDisplay.java b/sdk/vi/azure-resourcemanager-vi/src/main/java/com/azure/resourcemanager/vi/models/OperationDisplay.java
new file mode 100644
index 000000000000..b5e8343a2881
--- /dev/null
+++ b/sdk/vi/azure-resourcemanager-vi/src/main/java/com/azure/resourcemanager/vi/models/OperationDisplay.java
@@ -0,0 +1,80 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.vi.models;
+
+import com.azure.core.annotation.Immutable;
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/** Operation display payload. */
+@Immutable
+public final class OperationDisplay {
+ /*
+ * Resource provider of the operation
+ */
+ @JsonProperty(value = "provider", access = JsonProperty.Access.WRITE_ONLY)
+ private String provider;
+
+ /*
+ * Resource of the operation
+ */
+ @JsonProperty(value = "resource", access = JsonProperty.Access.WRITE_ONLY)
+ private String resource;
+
+ /*
+ * Localized friendly name for the operation
+ */
+ @JsonProperty(value = "operation", access = JsonProperty.Access.WRITE_ONLY)
+ private String operation;
+
+ /*
+ * Localized friendly description for the operation
+ */
+ @JsonProperty(value = "description", access = JsonProperty.Access.WRITE_ONLY)
+ private String description;
+
+ /**
+ * Get the provider property: Resource provider of the operation.
+ *
+ * @return the provider value.
+ */
+ public String provider() {
+ return this.provider;
+ }
+
+ /**
+ * Get the resource property: Resource of the operation.
+ *
+ * @return the resource value.
+ */
+ public String resource() {
+ return this.resource;
+ }
+
+ /**
+ * Get the operation property: Localized friendly name for the operation.
+ *
+ * @return the operation value.
+ */
+ public String operation() {
+ return this.operation;
+ }
+
+ /**
+ * Get the description property: Localized friendly description for the operation.
+ *
+ * @return the description value.
+ */
+ public String description() {
+ return this.description;
+ }
+
+ /**
+ * Validates the instance.
+ *
+ * @throws IllegalArgumentException thrown if the instance is not valid.
+ */
+ public void validate() {
+ }
+}
diff --git a/sdk/vi/azure-resourcemanager-vi/src/main/java/com/azure/resourcemanager/vi/models/OperationListResult.java b/sdk/vi/azure-resourcemanager-vi/src/main/java/com/azure/resourcemanager/vi/models/OperationListResult.java
new file mode 100644
index 000000000000..4b7d22419fd4
--- /dev/null
+++ b/sdk/vi/azure-resourcemanager-vi/src/main/java/com/azure/resourcemanager/vi/models/OperationListResult.java
@@ -0,0 +1,55 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.vi.models;
+
+import com.azure.core.annotation.Immutable;
+import com.azure.resourcemanager.vi.fluent.models.OperationInner;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import java.util.List;
+
+/** Available operations of the service. */
+@Immutable
+public final class OperationListResult {
+ /*
+ * List of operations supported by the Resource Provider.
+ */
+ @JsonProperty(value = "value", access = JsonProperty.Access.WRITE_ONLY)
+ private List value;
+
+ /*
+ * URL to get the next set of operation list results if there are any.
+ */
+ @JsonProperty(value = "nextLink", access = JsonProperty.Access.WRITE_ONLY)
+ private String nextLink;
+
+ /**
+ * Get the value property: List of operations supported by the Resource Provider.
+ *
+ * @return the value value.
+ */
+ public List value() {
+ return this.value;
+ }
+
+ /**
+ * Get the nextLink property: URL to get the next set of operation list results if there are any.
+ *
+ * @return the nextLink value.
+ */
+ public String nextLink() {
+ return this.nextLink;
+ }
+
+ /**
+ * Validates the instance.
+ *
+ * @throws IllegalArgumentException thrown if the instance is not valid.
+ */
+ public void validate() {
+ if (value() != null) {
+ value().forEach(e -> e.validate());
+ }
+ }
+}
diff --git a/sdk/vi/azure-resourcemanager-vi/src/main/java/com/azure/resourcemanager/vi/models/Operations.java b/sdk/vi/azure-resourcemanager-vi/src/main/java/com/azure/resourcemanager/vi/models/Operations.java
new file mode 100644
index 000000000000..3c59375977a4
--- /dev/null
+++ b/sdk/vi/azure-resourcemanager-vi/src/main/java/com/azure/resourcemanager/vi/models/Operations.java
@@ -0,0 +1,31 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.vi.models;
+
+import com.azure.core.http.rest.PagedIterable;
+import com.azure.core.util.Context;
+
+/** Resource collection API of Operations. */
+public interface Operations {
+ /**
+ * Lists all of the available Azure Video Indexer provider 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 available operations of the service as paginated response with {@link PagedIterable}.
+ */
+ PagedIterable list();
+
+ /**
+ * Lists all of the available Azure Video Indexer provider 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 available operations of the service as paginated response with {@link PagedIterable}.
+ */
+ PagedIterable list(Context context);
+}
diff --git a/sdk/vi/azure-resourcemanager-vi/src/main/java/com/azure/resourcemanager/vi/models/PermissionType.java b/sdk/vi/azure-resourcemanager-vi/src/main/java/com/azure/resourcemanager/vi/models/PermissionType.java
new file mode 100644
index 000000000000..e1ac948d9cfa
--- /dev/null
+++ b/sdk/vi/azure-resourcemanager-vi/src/main/java/com/azure/resourcemanager/vi/models/PermissionType.java
@@ -0,0 +1,38 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.vi.models;
+
+import com.azure.core.util.ExpandableStringEnum;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import java.util.Collection;
+
+/** The requested permission. */
+public final class PermissionType extends ExpandableStringEnum {
+ /** Static value Contributor for PermissionType. */
+ public static final PermissionType CONTRIBUTOR = fromString("Contributor");
+
+ /** Static value Reader for PermissionType. */
+ public static final PermissionType READER = fromString("Reader");
+
+ /**
+ * Creates or finds a PermissionType from its string representation.
+ *
+ * @param name a name to look for.
+ * @return the corresponding PermissionType.
+ */
+ @JsonCreator
+ public static PermissionType fromString(String name) {
+ return fromString(name, PermissionType.class);
+ }
+
+ /**
+ * Gets known PermissionType values.
+ *
+ * @return known PermissionType values.
+ */
+ public static Collection values() {
+ return values(PermissionType.class);
+ }
+}
diff --git a/sdk/vi/azure-resourcemanager-vi/src/main/java/com/azure/resourcemanager/vi/models/ProvisioningState.java b/sdk/vi/azure-resourcemanager-vi/src/main/java/com/azure/resourcemanager/vi/models/ProvisioningState.java
new file mode 100644
index 000000000000..7848c4b4cf9d
--- /dev/null
+++ b/sdk/vi/azure-resourcemanager-vi/src/main/java/com/azure/resourcemanager/vi/models/ProvisioningState.java
@@ -0,0 +1,50 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.vi.models;
+
+import com.azure.core.util.ExpandableStringEnum;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import java.util.Collection;
+
+/** Gets the status of the account at the time the operation was called. */
+public final class ProvisioningState extends ExpandableStringEnum {
+ /** Static value Succeeded for ProvisioningState. */
+ public static final ProvisioningState SUCCEEDED = fromString("Succeeded");
+
+ /** Static value Failed for ProvisioningState. */
+ public static final ProvisioningState FAILED = fromString("Failed");
+
+ /** Static value Canceled for ProvisioningState. */
+ public static final ProvisioningState CANCELED = fromString("Canceled");
+
+ /** Static value Accepted for ProvisioningState. */
+ public static final ProvisioningState ACCEPTED = fromString("Accepted");
+
+ /** Static value Provisioning for ProvisioningState. */
+ public static final ProvisioningState PROVISIONING = fromString("Provisioning");
+
+ /** Static value Deleting for ProvisioningState. */
+ public static final ProvisioningState DELETING = fromString("Deleting");
+
+ /**
+ * 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);
+ }
+
+ /**
+ * Gets known ProvisioningState values.
+ *
+ * @return known ProvisioningState values.
+ */
+ public static Collection values() {
+ return values(ProvisioningState.class);
+ }
+}
diff --git a/sdk/vi/azure-resourcemanager-vi/src/main/java/com/azure/resourcemanager/vi/models/Reason.java b/sdk/vi/azure-resourcemanager-vi/src/main/java/com/azure/resourcemanager/vi/models/Reason.java
new file mode 100644
index 000000000000..3b0d6328e55b
--- /dev/null
+++ b/sdk/vi/azure-resourcemanager-vi/src/main/java/com/azure/resourcemanager/vi/models/Reason.java
@@ -0,0 +1,38 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.vi.models;
+
+import com.azure.core.util.ExpandableStringEnum;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import java.util.Collection;
+
+/**
+ * Gets the reason that a Video Indexer account name could not be used. The Reason element is only returned if
+ * NameAvailable is false.
+ */
+public final class Reason extends ExpandableStringEnum {
+ /** Static value AlreadyExists for Reason. */
+ public static final Reason ALREADY_EXISTS = fromString("AlreadyExists");
+
+ /**
+ * Creates or finds a Reason from its string representation.
+ *
+ * @param name a name to look for.
+ * @return the corresponding Reason.
+ */
+ @JsonCreator
+ public static Reason fromString(String name) {
+ return fromString(name, Reason.class);
+ }
+
+ /**
+ * Gets known Reason values.
+ *
+ * @return known Reason values.
+ */
+ public static Collection values() {
+ return values(Reason.class);
+ }
+}
diff --git a/sdk/vi/azure-resourcemanager-vi/src/main/java/com/azure/resourcemanager/vi/models/Scope.java b/sdk/vi/azure-resourcemanager-vi/src/main/java/com/azure/resourcemanager/vi/models/Scope.java
new file mode 100644
index 000000000000..1d2cf626688e
--- /dev/null
+++ b/sdk/vi/azure-resourcemanager-vi/src/main/java/com/azure/resourcemanager/vi/models/Scope.java
@@ -0,0 +1,41 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.vi.models;
+
+import com.azure.core.util.ExpandableStringEnum;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import java.util.Collection;
+
+/** The requested media type. */
+public final class Scope extends ExpandableStringEnum {
+ /** Static value Video for Scope. */
+ public static final Scope VIDEO = fromString("Video");
+
+ /** Static value Account for Scope. */
+ public static final Scope ACCOUNT = fromString("Account");
+
+ /** Static value Project for Scope. */
+ public static final Scope PROJECT = fromString("Project");
+
+ /**
+ * Creates or finds a Scope from its string representation.
+ *
+ * @param name a name to look for.
+ * @return the corresponding Scope.
+ */
+ @JsonCreator
+ public static Scope fromString(String name) {
+ return fromString(name, Scope.class);
+ }
+
+ /**
+ * Gets known Scope values.
+ *
+ * @return known Scope values.
+ */
+ public static Collection values() {
+ return values(Scope.class);
+ }
+}
diff --git a/sdk/vi/azure-resourcemanager-vi/src/main/java/com/azure/resourcemanager/vi/models/Tags.java b/sdk/vi/azure-resourcemanager-vi/src/main/java/com/azure/resourcemanager/vi/models/Tags.java
new file mode 100644
index 000000000000..badc933826d4
--- /dev/null
+++ b/sdk/vi/azure-resourcemanager-vi/src/main/java/com/azure/resourcemanager/vi/models/Tags.java
@@ -0,0 +1,49 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.vi.models;
+
+import com.azure.core.annotation.Fluent;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import java.util.Map;
+
+/** Resource tags. */
+@Fluent
+public class Tags {
+ /*
+ * Resource tags
+ */
+ @JsonProperty(value = "tags")
+ @JsonInclude(value = JsonInclude.Include.NON_NULL, content = JsonInclude.Include.ALWAYS)
+ private Map