diff --git a/sdk/videoanalyzer/arm-videoanalyzer/LICENSE.txt b/sdk/videoanalyzer/arm-videoanalyzer/LICENSE.txt
new file mode 100644
index 000000000000..2d3163745319
--- /dev/null
+++ b/sdk/videoanalyzer/arm-videoanalyzer/LICENSE.txt
@@ -0,0 +1,21 @@
+The MIT License (MIT)
+
+Copyright (c) 2021 Microsoft
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/sdk/videoanalyzer/arm-videoanalyzer/README.md b/sdk/videoanalyzer/arm-videoanalyzer/README.md
new file mode 100644
index 000000000000..7754bbded156
--- /dev/null
+++ b/sdk/videoanalyzer/arm-videoanalyzer/README.md
@@ -0,0 +1,112 @@
+## Azure VideoAnalyzer SDK for JavaScript
+
+This package contains an isomorphic SDK (runs both in node.js and in browsers) for VideoAnalyzer.
+
+### Currently supported environments
+
+- [LTS versions of Node.js](https://nodejs.org/about/releases/)
+- Latest versions of Safari, Chrome, Edge and Firefox.
+
+### Prerequisites
+
+You must have an [Azure subscription](https://azure.microsoft.com/free/).
+
+### How to install
+
+To use this SDK in your project, you will need to install two packages.
+- `@azure/arm-videoanalyzer` that contains the client.
+- `@azure/identity` that provides different mechanisms for the client to authenticate your requests using Azure Active Directory.
+
+Install both packages using the below command:
+```bash
+npm install --save @azure/arm-videoanalyzer @azure/identity
+```
+> **Note**: You may have used either `@azure/ms-rest-nodeauth` or `@azure/ms-rest-browserauth` in the past. These packages are in maintenance mode receiving critical bug fixes, but no new features.
+If you are on a [Node.js that has LTS status](https://nodejs.org/about/releases/), or are writing a client side browser application, we strongly encourage you to upgrade to `@azure/identity` which uses the latest versions of Azure Active Directory and MSAL APIs and provides more authentication options.
+
+### How to use
+
+- If you are writing a client side browser application,
+  - Follow the instructions in the section on Authenticating client side browser applications in [Azure Identity examples](https://aka.ms/azsdk/js/identity/examples) to register your application in the Microsoft identity platform and set the right permissions.
+  - Copy the client ID and tenant ID from the Overview section of your app registration in Azure portal and use it in the browser sample below.
+- If you are writing a server side application,
+  - [Select a credential from `@azure/identity` based on the authentication method of your choice](https://aka.ms/azsdk/js/identity/examples)
+  - Complete the set up steps required by the credential if any.
+  - Use the credential you picked in the place of `DefaultAzureCredential` in the Node.js sample below.
+
+In the below samples, we pass the credential and the Azure subscription id to instantiate the client.
+Once the client is created, explore the operations on it either in your favorite editor or in our [API reference documentation](https://docs.microsoft.com/javascript/api) to get started.
+#### nodejs - Authentication, client creation, and list edgeModules as an example written in JavaScript.
+
+##### Sample code
+
+```javascript
+const { DefaultAzureCredential } = require("@azure/identity");
+const { VideoAnalyzer } = require("@azure/arm-videoanalyzer");
+const subscriptionId = process.env["AZURE_SUBSCRIPTION_ID"];
+
+// Use `DefaultAzureCredential` or any other credential of your choice based on https://aka.ms/azsdk/js/identity/examples
+// Please note that you can also use credentials from the `@azure/ms-rest-nodeauth` package instead.
+const creds = new DefaultAzureCredential();
+const client = new VideoAnalyzer(creds, subscriptionId);
+const resourceGroupName = "testresourceGroupName";
+const accountName = "testaccountName";
+const top = 1;
+client.edgeModules.list(resourceGroupName, accountName, top).then((result) => {
+  console.log("The result is:");
+  console.log(result);
+}).catch((err) => {
+  console.log("An error occurred:");
+  console.error(err);
+});
+```
+
+#### browser - Authentication, client creation, and list edgeModules as an example written in JavaScript.
+
+In browser applications, we recommend using the `InteractiveBrowserCredential` that interactively authenticates using the default system browser.
+  - See [Single-page application: App registration guide](https://docs.microsoft.com/azure/active-directory/develop/scenario-spa-app-registration) to configure your app registration for the browser.
+  - Note down the client Id from the previous step and use it in the browser sample below.
+
+##### Sample code
+
+- index.html
+
+```html
+
+
+  
+    @azure/arm-videoanalyzer sample
+    
+    
+    
+    
+  
+  
+
+```
+
+## Related projects
+
+- [Microsoft Azure SDK for Javascript](https://github.com/Azure/azure-sdk-for-js)
+
+
diff --git a/sdk/videoanalyzer/arm-videoanalyzer/package.json b/sdk/videoanalyzer/arm-videoanalyzer/package.json
new file mode 100644
index 000000000000..df6d96c7d817
--- /dev/null
+++ b/sdk/videoanalyzer/arm-videoanalyzer/package.json
@@ -0,0 +1,59 @@
+{
+  "name": "@azure/arm-videoanalyzer",
+  "author": "Microsoft Corporation",
+  "description": "VideoAnalyzer Library with typescript type definitions for node.js and browser.",
+  "version": "1.0.0",
+  "dependencies": {
+    "@azure/ms-rest-azure-js": "^2.1.0",
+    "@azure/ms-rest-js": "^2.2.0",
+    "@azure/core-auth": "^1.1.4",
+    "tslib": "^1.10.0"
+  },
+  "keywords": [
+    "node",
+    "azure",
+    "typescript",
+    "browser",
+    "isomorphic"
+  ],
+  "license": "MIT",
+  "main": "./dist/arm-videoanalyzer.js",
+  "module": "./esm/videoAnalyzer.js",
+  "types": "./esm/videoAnalyzer.d.ts",
+  "devDependencies": {
+    "typescript": "^3.6.0",
+    "rollup": "^1.18.0",
+    "rollup-plugin-node-resolve": "^5.2.0",
+    "rollup-plugin-sourcemaps": "^0.4.2",
+    "uglify-js": "^3.6.0"
+  },
+  "homepage": "https://github.com/Azure/azure-sdk-for-js/tree/master/sdk/videoanalyzer/arm-videoanalyzer",
+  "repository": {
+    "type": "git",
+    "url": "https://github.com/Azure/azure-sdk-for-js.git"
+  },
+  "bugs": {
+    "url": "https://github.com/Azure/azure-sdk-for-js/issues"
+  },
+  "files": [
+    "dist/**/*.js",
+    "dist/**/*.js.map",
+    "dist/**/*.d.ts",
+    "dist/**/*.d.ts.map",
+    "esm/**/*.js",
+    "esm/**/*.js.map",
+    "esm/**/*.d.ts",
+    "esm/**/*.d.ts.map",
+    "src/**/*.ts",
+    "README.md",
+    "rollup.config.js",
+    "tsconfig.json"
+  ],
+  "scripts": {
+    "build": "tsc && rollup -c rollup.config.js && npm run minify",
+    "minify": "uglifyjs -c -m --comments --source-map \"content='./dist/arm-videoanalyzer.js.map'\" -o ./dist/arm-videoanalyzer.min.js ./dist/arm-videoanalyzer.js",
+    "prepack": "npm install && npm run build"
+  },
+  "sideEffects": false,
+  "autoPublish": true
+}
diff --git a/sdk/videoanalyzer/arm-videoanalyzer/rollup.config.js b/sdk/videoanalyzer/arm-videoanalyzer/rollup.config.js
new file mode 100644
index 000000000000..28befda8a68b
--- /dev/null
+++ b/sdk/videoanalyzer/arm-videoanalyzer/rollup.config.js
@@ -0,0 +1,37 @@
+import rollup from "rollup";
+import nodeResolve from "rollup-plugin-node-resolve";
+import sourcemaps from "rollup-plugin-sourcemaps";
+
+/**
+ * @type {rollup.RollupFileOptions}
+ */
+const config = {
+  input: "./esm/videoAnalyzer.js",
+  external: [
+    "@azure/ms-rest-js",
+    "@azure/ms-rest-azure-js"
+  ],
+  output: {
+    file: "./dist/arm-videoanalyzer.js",
+    format: "umd",
+    name: "Azure.ArmVideoanalyzer",
+    sourcemap: true,
+    globals: {
+      "@azure/ms-rest-js": "msRest",
+      "@azure/ms-rest-azure-js": "msRestAzure"
+    },
+    banner: `/*
+ * Copyright (c) Microsoft Corporation.
+ * Licensed under the MIT License.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ * Changes may cause incorrect behavior and will be lost if the code is regenerated.
+ */`
+  },
+  plugins: [
+    nodeResolve({ mainFields: ['module', 'main'] }),
+    sourcemaps()
+  ]
+};
+
+export default config;
diff --git a/sdk/videoanalyzer/arm-videoanalyzer/src/models/accessPoliciesMappers.ts b/sdk/videoanalyzer/arm-videoanalyzer/src/models/accessPoliciesMappers.ts
new file mode 100644
index 000000000000..1a3b539fc9f0
--- /dev/null
+++ b/sdk/videoanalyzer/arm-videoanalyzer/src/models/accessPoliciesMappers.ts
@@ -0,0 +1,91 @@
+/*
+ * Copyright (c) Microsoft Corporation.
+ * Licensed under the MIT License.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ * Changes may cause incorrect behavior and will be lost if the code is regenerated.
+ */
+
+export {
+  discriminators,
+  AccessPolicyEntity,
+  AccessPolicyEntityCollection,
+  AccountEncryption,
+  AudioEncoderAac,
+  AudioEncoderBase,
+  AuthenticationBase,
+  AzureEntityResource,
+  BaseResource,
+  CertificateSource,
+  CredentialsBase,
+  EccTokenKey,
+  EdgeModuleEntity,
+  EncoderCustomPreset,
+  EncoderPresetBase,
+  EncoderProcessor,
+  EncoderSystemPreset,
+  Endpoint,
+  EndpointBase,
+  ErrorAdditionalInfo,
+  ErrorDetail,
+  ErrorResponse,
+  GroupLevelAccessControl,
+  IotHub,
+  JwtAuthentication,
+  KeyVaultProperties,
+  LivePipeline,
+  LivePipelineUpdate,
+  NetworkAccessControl,
+  NodeBase,
+  NodeInput,
+  ParameterDeclaration,
+  ParameterDefinition,
+  PemCertificateList,
+  PipelineJob,
+  PipelineJobError,
+  PipelineJobUpdate,
+  PipelineTopology,
+  PipelineTopologyUpdate,
+  PrivateEndpoint,
+  PrivateEndpointConnection,
+  PrivateLinkResource,
+  PrivateLinkServiceConnectionState,
+  ProcessorNodeBase,
+  ProxyResource,
+  Resource,
+  ResourceIdentity,
+  RsaTokenKey,
+  RtspSource,
+  SecureIotDeviceRemoteTunnel,
+  SinkNodeBase,
+  Sku,
+  SourceNodeBase,
+  StorageAccount,
+  SystemData,
+  TimeSequenceBase,
+  TlsEndpoint,
+  TlsValidationOptions,
+  TokenClaim,
+  TokenKey,
+  TrackedResource,
+  TunnelBase,
+  UnsecuredEndpoint,
+  UserAssignedManagedIdentity,
+  UsernamePasswordCredentials,
+  VideoAnalyzerIdentity,
+  VideoAnalyzerModel,
+  VideoArchival,
+  VideoContentUrls,
+  VideoCreationProperties,
+  VideoEncoderBase,
+  VideoEncoderH264,
+  VideoEntity,
+  VideoFlags,
+  VideoMediaInfo,
+  VideoPreviewImageUrls,
+  VideoPublishingOptions,
+  VideoScale,
+  VideoSequenceAbsoluteTimeMarkers,
+  VideoSink,
+  VideoSource
+} from "../models/mappers";
diff --git a/sdk/videoanalyzer/arm-videoanalyzer/src/models/edgeModulesMappers.ts b/sdk/videoanalyzer/arm-videoanalyzer/src/models/edgeModulesMappers.ts
new file mode 100644
index 000000000000..4c2a715f0c6b
--- /dev/null
+++ b/sdk/videoanalyzer/arm-videoanalyzer/src/models/edgeModulesMappers.ts
@@ -0,0 +1,93 @@
+/*
+ * Copyright (c) Microsoft Corporation.
+ * Licensed under the MIT License.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ * Changes may cause incorrect behavior and will be lost if the code is regenerated.
+ */
+
+export {
+  discriminators,
+  AccessPolicyEntity,
+  AccountEncryption,
+  AudioEncoderAac,
+  AudioEncoderBase,
+  AuthenticationBase,
+  AzureEntityResource,
+  BaseResource,
+  CertificateSource,
+  CredentialsBase,
+  EccTokenKey,
+  EdgeModuleEntity,
+  EdgeModuleEntityCollection,
+  EdgeModuleProvisioningToken,
+  EncoderCustomPreset,
+  EncoderPresetBase,
+  EncoderProcessor,
+  EncoderSystemPreset,
+  Endpoint,
+  EndpointBase,
+  ErrorAdditionalInfo,
+  ErrorDetail,
+  ErrorResponse,
+  GroupLevelAccessControl,
+  IotHub,
+  JwtAuthentication,
+  KeyVaultProperties,
+  ListProvisioningTokenInput,
+  LivePipeline,
+  LivePipelineUpdate,
+  NetworkAccessControl,
+  NodeBase,
+  NodeInput,
+  ParameterDeclaration,
+  ParameterDefinition,
+  PemCertificateList,
+  PipelineJob,
+  PipelineJobError,
+  PipelineJobUpdate,
+  PipelineTopology,
+  PipelineTopologyUpdate,
+  PrivateEndpoint,
+  PrivateEndpointConnection,
+  PrivateLinkResource,
+  PrivateLinkServiceConnectionState,
+  ProcessorNodeBase,
+  ProxyResource,
+  Resource,
+  ResourceIdentity,
+  RsaTokenKey,
+  RtspSource,
+  SecureIotDeviceRemoteTunnel,
+  SinkNodeBase,
+  Sku,
+  SourceNodeBase,
+  StorageAccount,
+  SystemData,
+  TimeSequenceBase,
+  TlsEndpoint,
+  TlsValidationOptions,
+  TokenClaim,
+  TokenKey,
+  TrackedResource,
+  TunnelBase,
+  UnsecuredEndpoint,
+  UserAssignedManagedIdentity,
+  UsernamePasswordCredentials,
+  VideoAnalyzerIdentity,
+  VideoAnalyzerModel,
+  VideoArchival,
+  VideoContentUrls,
+  VideoCreationProperties,
+  VideoEncoderBase,
+  VideoEncoderH264,
+  VideoEntity,
+  VideoFlags,
+  VideoMediaInfo,
+  VideoPreviewImageUrls,
+  VideoPublishingOptions,
+  VideoScale,
+  VideoSequenceAbsoluteTimeMarkers,
+  VideoSink,
+  VideoSource
+} from "../models/mappers";
diff --git a/sdk/videoanalyzer/arm-videoanalyzer/src/models/index.ts b/sdk/videoanalyzer/arm-videoanalyzer/src/models/index.ts
new file mode 100644
index 000000000000..4935c50373f3
--- /dev/null
+++ b/sdk/videoanalyzer/arm-videoanalyzer/src/models/index.ts
@@ -0,0 +1,3706 @@
+/*
+ * Copyright (c) Microsoft Corporation.
+ * Licensed under the MIT License.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ * Changes may cause incorrect behavior and will be lost if the code is regenerated.
+ */
+
+import { BaseResource, CloudError, AzureServiceClientOptions } from "@azure/ms-rest-azure-js";
+import * as msRest from "@azure/ms-rest-js";
+
+export { BaseResource, CloudError };
+
+/**
+ * The input parameters to generate registration token for the Azure Video Analyzer IoT edge
+ * module.
+ */
+export interface ListProvisioningTokenInput {
+  /**
+   * The desired expiration date of the registration token. The Azure Video Analyzer IoT edge
+   * module must be initialized and connected to the Internet prior to the token expiration date.
+   */
+  expirationDate: Date;
+}
+
+/**
+ * Provisioning token properties. A provisioning token allows for a single instance of Azure Video
+ * analyzer IoT edge module to be initialized and authorized to the cloud account. The provisioning
+ * token itself is short lived and it is only used for the initial handshake between IoT edge
+ * module and the cloud. After the initial handshake, the IoT edge module will agree on a set of
+ * authentication keys which will be auto-rotated as long as the module is able to periodically
+ * connect to the cloud. A new provisioning token can be generated for the same IoT edge module in
+ * case the module state lost or reset.
+ */
+export interface EdgeModuleProvisioningToken {
+  /**
+   * The expiration date of the registration token. The Azure Video Analyzer IoT edge module must
+   * be initialized and connected to the Internet prior to the token expiration date.
+   * **NOTE: This property will not be serialized. It can only be populated by the server.**
+   */
+  readonly expirationDate?: Date;
+  /**
+   * The token blob to be provided to the Azure Video Analyzer IoT edge module through the Azure
+   * IoT Edge module twin properties.
+   * **NOTE: This property will not be serialized. It can only be populated by the server.**
+   */
+  readonly token?: string;
+}
+
+/**
+ * Common fields that are returned in the response for all Azure Resource Manager resources
+ * @summary Resource
+ */
+export interface Resource extends BaseResource {
+  /**
+   * Fully qualified resource ID for the resource. Ex -
+   * /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}
+   * **NOTE: This property will not be serialized. It can only be populated by the server.**
+   */
+  readonly id?: string;
+  /**
+   * The name of the resource
+   * **NOTE: This property will not be serialized. It can only be populated by the server.**
+   */
+  readonly name?: string;
+  /**
+   * The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or
+   * "Microsoft.Storage/storageAccounts"
+   * **NOTE: This property will not be serialized. It can only be populated by the server.**
+   */
+  readonly type?: string;
+  /**
+   * Azure Resource Manager metadata containing createdBy and modifiedBy information.
+   * **NOTE: This property will not be serialized. It can only be populated by the server.**
+   */
+  readonly systemData?: SystemData;
+}
+
+/**
+ * The resource model definition for a Azure Resource Manager proxy resource. It will not have tags
+ * and a location
+ * @summary Proxy Resource
+ */
+export interface ProxyResource extends Resource {
+}
+
+/**
+ * The representation of an edge module.
+ */
+export interface EdgeModuleEntity extends ProxyResource {
+  /**
+   * Internal ID generated for the instance of the Video Analyzer edge module.
+   * **NOTE: This property will not be serialized. It can only be populated by the server.**
+   */
+  readonly edgeModuleId?: string;
+}
+
+/**
+ * The resource management error additional info.
+ */
+export interface ErrorAdditionalInfo {
+  /**
+   * The additional info type.
+   * **NOTE: This property will not be serialized. It can only be populated by the server.**
+   */
+  readonly type?: string;
+  /**
+   * The additional info.
+   * **NOTE: This property will not be serialized. It can only be populated by the server.**
+   */
+  readonly info?: any;
+}
+
+/**
+ * The error detail.
+ */
+export interface ErrorDetail {
+  /**
+   * The error code.
+   * **NOTE: This property will not be serialized. It can only be populated by the server.**
+   */
+  readonly code?: string;
+  /**
+   * The error message.
+   * **NOTE: This property will not be serialized. It can only be populated by the server.**
+   */
+  readonly message?: string;
+  /**
+   * The error target.
+   * **NOTE: This property will not be serialized. It can only be populated by the server.**
+   */
+  readonly target?: string;
+  /**
+   * The error details.
+   * **NOTE: This property will not be serialized. It can only be populated by the server.**
+   */
+  readonly details?: ErrorDetail[];
+  /**
+   * The error additional info.
+   * **NOTE: This property will not be serialized. It can only be populated by the server.**
+   */
+  readonly additionalInfo?: ErrorAdditionalInfo[];
+}
+
+/**
+ * Common error response for all Azure Resource Manager APIs to return error details for failed
+ * operations. (This also follows the OData error response format.).
+ * @summary Error response
+ */
+export interface ErrorResponse {
+  /**
+   * The error object.
+   */
+  error?: ErrorDetail;
+}
+
+/**
+ * Metadata pertaining to creation and last modification of the resource.
+ */
+export interface SystemData {
+  /**
+   * The identity that created the resource.
+   */
+  createdBy?: string;
+  /**
+   * The type of identity that created the resource. Possible values include: 'User',
+   * 'Application', 'ManagedIdentity', 'Key'
+   */
+  createdByType?: CreatedByType;
+  /**
+   * The timestamp of resource creation (UTC).
+   */
+  createdAt?: Date;
+  /**
+   * The identity that last modified the resource.
+   */
+  lastModifiedBy?: string;
+  /**
+   * The type of identity that last modified the resource. Possible values include: 'User',
+   * 'Application', 'ManagedIdentity', 'Key'
+   */
+  lastModifiedByType?: CreatedByType;
+  /**
+   * The timestamp of resource last modification (UTC)
+   */
+  lastModifiedAt?: Date;
+}
+
+/**
+ * The resource model definition for an Azure Resource Manager tracked top level resource which has
+ * 'tags' and a 'location'
+ * @summary Tracked Resource
+ */
+export interface TrackedResource extends Resource {
+  /**
+   * Resource tags.
+   */
+  tags?: { [propertyName: string]: string };
+  /**
+   * The geo-location where the resource lives
+   */
+  location: string;
+}
+
+/**
+ * The resource model definition for an Azure Resource Manager resource with an etag.
+ * @summary Entity Resource
+ */
+export interface AzureEntityResource extends Resource {
+  /**
+   * Resource Etag.
+   * **NOTE: This property will not be serialized. It can only be populated by the server.**
+   */
+  readonly etag?: string;
+}
+
+/**
+ * The SKU details.
+ */
+export interface Sku {
+  /**
+   * The SKU name. Possible values include: 'Live_S1', 'Batch_S1'
+   */
+  name: SkuName;
+  /**
+   * The SKU tier. Possible values include: 'Standard'
+   * **NOTE: This property will not be serialized. It can only be populated by the server.**
+   */
+  readonly tier?: SkuTier;
+}
+
+/**
+ * Single topology parameter declaration. Declared parameters can and must be referenced throughout
+ * the topology and can optionally have default values to be used when they are not defined in the
+ * pipelines.
+ */
+export interface ParameterDeclaration {
+  /**
+   * Name of the parameter.
+   */
+  name: string;
+  /**
+   * Type of the parameter. Possible values include: 'String', 'SecretString', 'Int', 'Double',
+   * 'Bool'
+   */
+  type: ParameterType;
+  /**
+   * Description of the parameter.
+   */
+  description?: string;
+  /**
+   * The default value for the parameter to be used if the pipeline does not specify a value.
+   */
+  default?: string;
+}
+
+/**
+ * Contains the possible cases for NodeBase.
+ */
+export type NodeBaseUnion = NodeBase | SourceNodeBaseUnion | ProcessorNodeBaseUnion | SinkNodeBaseUnion;
+
+/**
+ * Base class for nodes.
+ */
+export interface NodeBase {
+  /**
+   * Polymorphic Discriminator
+   */
+  type: "NodeBase";
+  /**
+   * Node name. Must be unique within the topology.
+   */
+  name: string;
+}
+
+/**
+ * Contains the possible cases for SourceNodeBase.
+ */
+export type SourceNodeBaseUnion = SourceNodeBase | RtspSource | VideoSource;
+
+/**
+ * Base class for topology source nodes.
+ */
+export interface SourceNodeBase {
+  /**
+   * Polymorphic Discriminator
+   */
+  type: "#Microsoft.VideoAnalyzer.SourceNodeBase";
+  /**
+   * Node name. Must be unique within the topology.
+   */
+  name: string;
+}
+
+/**
+ * Describes an input signal to be used on a pipeline node.
+ */
+export interface NodeInput {
+  /**
+   * The name of the upstream node in the pipeline which output is used as input of the current
+   * node.
+   */
+  nodeName: string;
+}
+
+/**
+ * Contains the possible cases for ProcessorNodeBase.
+ */
+export type ProcessorNodeBaseUnion = ProcessorNodeBase | EncoderProcessor;
+
+/**
+ * Base class for topology processor nodes.
+ */
+export interface ProcessorNodeBase {
+  /**
+   * Polymorphic Discriminator
+   */
+  type: "#Microsoft.VideoAnalyzer.ProcessorNodeBase";
+  /**
+   * Node name. Must be unique within the topology.
+   */
+  name: string;
+  /**
+   * An array of upstream node references within the topology to be used as inputs for this node.
+   */
+  inputs: NodeInput[];
+}
+
+/**
+ * Contains the possible cases for SinkNodeBase.
+ */
+export type SinkNodeBaseUnion = SinkNodeBase | VideoSink;
+
+/**
+ * Base class for topology sink nodes.
+ */
+export interface SinkNodeBase {
+  /**
+   * Polymorphic Discriminator
+   */
+  type: "#Microsoft.VideoAnalyzer.SinkNodeBase";
+  /**
+   * Node name. Must be unique within the topology.
+   */
+  name: string;
+  /**
+   * An array of upstream node references within the topology to be used as inputs for this node.
+   */
+  inputs: NodeInput[];
+}
+
+/**
+ * Contains the possible cases for CredentialsBase.
+ */
+export type CredentialsBaseUnion = CredentialsBase | UsernamePasswordCredentials;
+
+/**
+ * Base class for credential objects.
+ */
+export interface CredentialsBase {
+  /**
+   * Polymorphic Discriminator
+   */
+  type: "CredentialsBase";
+}
+
+/**
+ * Contains the possible cases for TunnelBase.
+ */
+export type TunnelBaseUnion = TunnelBase | SecureIotDeviceRemoteTunnel;
+
+/**
+ * Base class for tunnel objects.
+ */
+export interface TunnelBase {
+  /**
+   * Polymorphic Discriminator
+   */
+  type: "TunnelBase";
+}
+
+/**
+ * Contains the possible cases for EndpointBase.
+ */
+export type EndpointBaseUnion = EndpointBase | UnsecuredEndpoint | TlsEndpoint;
+
+/**
+ * Base class for endpoints.
+ */
+export interface EndpointBase {
+  /**
+   * Polymorphic Discriminator
+   */
+  type: "EndpointBase";
+  /**
+   * Credentials to be presented to the endpoint.
+   */
+  credentials?: CredentialsBaseUnion;
+  /**
+   * The endpoint URL for Video Analyzer to connect to.
+   */
+  url: string;
+  /**
+   * Describes the tunnel through which Video Analyzer can connect to the endpoint URL. This is an
+   * optional property, typically used when the endpoint is behind a firewall.
+   */
+  tunnel?: TunnelBaseUnion;
+}
+
+/**
+ * RTSP source allows for media from an RTSP camera or generic RTSP server to be ingested into a
+ * pipeline.
+ */
+export interface RtspSource {
+  /**
+   * Polymorphic Discriminator
+   */
+  type: "#Microsoft.VideoAnalyzer.RtspSource";
+  /**
+   * Node name. Must be unique within the topology.
+   */
+  name: string;
+  /**
+   * Network transport utilized by the RTSP and RTP exchange: TCP or HTTP. When using TCP, the RTP
+   * packets are interleaved on the TCP RTSP connection. When using HTTP, the RTSP messages are
+   * exchanged through long lived HTTP connections, and the RTP packages are interleaved in the
+   * HTTP connections alongside the RTSP messages. Possible values include: 'Http', 'Tcp'
+   */
+  transport?: RtspTransport;
+  /**
+   * RTSP endpoint information for Video Analyzer to connect to. This contains the required
+   * information for Video Analyzer to connect to RTSP cameras and/or generic RTSP servers.
+   */
+  endpoint: EndpointBaseUnion;
+}
+
+/**
+ * Username and password credentials.
+ */
+export interface UsernamePasswordCredentials {
+  /**
+   * Polymorphic Discriminator
+   */
+  type: "#Microsoft.VideoAnalyzer.UsernamePasswordCredentials";
+  /**
+   * Username to be presented as part of the credentials.
+   */
+  username: string;
+  /**
+   * Password to be presented as part of the credentials. It is recommended that this value is
+   * parameterized as a secret string in order to prevent this value to be returned as part of the
+   * resource on API requests.
+   */
+  password: string;
+}
+
+/**
+ * A remote tunnel securely established using IoT Hub device information.
+ */
+export interface SecureIotDeviceRemoteTunnel {
+  /**
+   * Polymorphic Discriminator
+   */
+  type: "#Microsoft.VideoAnalyzer.SecureIotDeviceRemoteTunnel";
+  /**
+   * Name of the IoT Hub.
+   */
+  iotHubName: string;
+  /**
+   * The IoT device id to use when establishing the remote tunnel. This string is case-sensitive.
+   */
+  deviceId: string;
+}
+
+/**
+ * Unsecured endpoint describes an endpoint that the pipeline can connect to over clear transport
+ * (no encryption in transit).
+ */
+export interface UnsecuredEndpoint {
+  /**
+   * Polymorphic Discriminator
+   */
+  type: "#Microsoft.VideoAnalyzer.UnsecuredEndpoint";
+  /**
+   * Credentials to be presented to the endpoint.
+   */
+  credentials?: CredentialsBaseUnion;
+  /**
+   * The endpoint URL for Video Analyzer to connect to.
+   */
+  url: string;
+  /**
+   * Describes the tunnel through which Video Analyzer can connect to the endpoint URL. This is an
+   * optional property, typically used when the endpoint is behind a firewall.
+   */
+  tunnel?: TunnelBaseUnion;
+}
+
+/**
+ * Contains the possible cases for CertificateSource.
+ */
+export type CertificateSourceUnion = CertificateSource | PemCertificateList;
+
+/**
+ * Base class for certificate sources.
+ */
+export interface CertificateSource {
+  /**
+   * Polymorphic Discriminator
+   */
+  type: "CertificateSource";
+}
+
+/**
+ * Options for controlling the validation of TLS endpoints.
+ */
+export interface TlsValidationOptions {
+  /**
+   * When set to 'true' causes the certificate subject name validation to be skipped. Default is
+   * 'false'.
+   */
+  ignoreHostname?: string;
+  /**
+   * When set to 'true' causes the certificate chain trust validation to be skipped. Default is
+   * 'false'.
+   */
+  ignoreSignature?: string;
+}
+
+/**
+ * TLS endpoint describes an endpoint that the pipeline can connect to over TLS transport (data is
+ * encrypted in transit).
+ */
+export interface TlsEndpoint {
+  /**
+   * Polymorphic Discriminator
+   */
+  type: "#Microsoft.VideoAnalyzer.TlsEndpoint";
+  /**
+   * Credentials to be presented to the endpoint.
+   */
+  credentials?: CredentialsBaseUnion;
+  /**
+   * The endpoint URL for Video Analyzer to connect to.
+   */
+  url: string;
+  /**
+   * Describes the tunnel through which Video Analyzer can connect to the endpoint URL. This is an
+   * optional property, typically used when the endpoint is behind a firewall.
+   */
+  tunnel?: TunnelBaseUnion;
+  /**
+   * List of trusted certificate authorities when authenticating a TLS connection. A null list
+   * designates that Azure Video Analyzer's list of trusted authorities should be used.
+   */
+  trustedCertificates?: CertificateSourceUnion;
+  /**
+   * Validation options to use when authenticating a TLS connection. By default, strict validation
+   * is used.
+   */
+  validationOptions?: TlsValidationOptions;
+}
+
+/**
+ * A list of PEM formatted certificates.
+ */
+export interface PemCertificateList {
+  /**
+   * Polymorphic Discriminator
+   */
+  type: "#Microsoft.VideoAnalyzer.PemCertificateList";
+  /**
+   * PEM formatted public certificates. One certificate per entry.
+   */
+  certificates: string[];
+}
+
+/**
+ * Contains the possible cases for TimeSequenceBase.
+ */
+export type TimeSequenceBaseUnion = TimeSequenceBase | VideoSequenceAbsoluteTimeMarkers;
+
+/**
+ * A sequence of datetime ranges as a string.
+ */
+export interface TimeSequenceBase {
+  /**
+   * Polymorphic Discriminator
+   */
+  type: "TimeSequenceBase";
+}
+
+/**
+ * Video source allows for content from a Video Analyzer video resource to be ingested into a
+ * pipeline. Currently supported only with batch pipelines.
+ */
+export interface VideoSource {
+  /**
+   * Polymorphic Discriminator
+   */
+  type: "#Microsoft.VideoAnalyzer.VideoSource";
+  /**
+   * Node name. Must be unique within the topology.
+   */
+  name: string;
+  /**
+   * Name of the Video Analyzer video resource to be used as the source.
+   */
+  videoName: string;
+  /**
+   * Describes a sequence of datetime ranges. The video source only picks up recorded media within
+   * these ranges.
+   */
+  timeSequences: TimeSequenceBaseUnion;
+}
+
+/**
+ * A sequence of absolute datetime ranges as a string. The datetime values should follow IS08601,
+ * and the sum of the ranges should add up to 24 hours or less. Currently, there can be only one
+ * range specified in the sequence.
+ */
+export interface VideoSequenceAbsoluteTimeMarkers {
+  /**
+   * Polymorphic Discriminator
+   */
+  type: "#Microsoft.VideoAnalyzer.VideoSequenceAbsoluteTimeMarkers";
+  /**
+   * The sequence of datetime ranges. Example: '[["2021-10-05T03:30:00Z",
+   * "2021-10-05T03:40:00Z"]]'.
+   */
+  ranges: string;
+}
+
+/**
+ * Contains the possible cases for EncoderPresetBase.
+ */
+export type EncoderPresetBaseUnion = EncoderPresetBase | EncoderSystemPreset | EncoderCustomPreset;
+
+/**
+ * Base type for all encoder presets, which define the recipe or instructions on how the input
+ * content should be processed.
+ */
+export interface EncoderPresetBase {
+  /**
+   * Polymorphic Discriminator
+   */
+  type: "EncoderPresetBase";
+}
+
+/**
+ * Encoder processor allows for encoding of the input content. For example, it can used to change
+ * the resolution from 4K to 1280x720.
+ */
+export interface EncoderProcessor {
+  /**
+   * Polymorphic Discriminator
+   */
+  type: "#Microsoft.VideoAnalyzer.EncoderProcessor";
+  /**
+   * Node name. Must be unique within the topology.
+   */
+  name: string;
+  /**
+   * An array of upstream node references within the topology to be used as inputs for this node.
+   */
+  inputs: NodeInput[];
+  /**
+   * The encoder preset, which defines the recipe or instructions on how the input content should
+   * be processed.
+   */
+  preset: EncoderPresetBaseUnion;
+}
+
+/**
+ * Describes a built-in preset for encoding the input content using the encoder processor.
+ */
+export interface EncoderSystemPreset {
+  /**
+   * Polymorphic Discriminator
+   */
+  type: "#Microsoft.VideoAnalyzer.EncoderSystemPreset";
+  /**
+   * Name of the built-in encoding preset. Possible values include: 'SingleLayer_540p_H264_AAC',
+   * 'SingleLayer_720p_H264_AAC', 'SingleLayer_1080p_H264_AAC', 'SingleLayer_2160p_H264_AAC'
+   */
+  name: EncoderSystemPresetType;
+}
+
+/**
+ * Contains the possible cases for AudioEncoderBase.
+ */
+export type AudioEncoderBaseUnion = AudioEncoderBase | AudioEncoderAac;
+
+/**
+ * Base type for all audio encoder presets, which define the recipe or instructions on how audio
+ * should be processed.
+ */
+export interface AudioEncoderBase {
+  /**
+   * Polymorphic Discriminator
+   */
+  type: "AudioEncoderBase";
+  /**
+   * Bitrate, in kilobits per second or Kbps, at which audio should be encoded (2-channel stereo
+   * audio at a sampling rate of 48 kHz). Allowed values are 96, 112, 128, 160, 192, 224, and 256.
+   * If omitted, the bitrate of the input audio is used.
+   */
+  bitrateKbps?: string;
+}
+
+/**
+ * The video scaling information.
+ */
+export interface VideoScale {
+  /**
+   * The desired output video height.
+   */
+  height?: string;
+  /**
+   * The desired output video width.
+   */
+  width?: string;
+  /**
+   * Describes the video scaling mode to be applied. Default mode is 'Pad'. If the mode is 'Pad' or
+   * 'Stretch' then both width and height must be specified. Else if the mode is
+   * 'PreserveAspectRatio' then only one of width or height need be provided. Possible values
+   * include: 'Pad', 'PreserveAspectRatio', 'Stretch'
+   */
+  mode?: VideoScaleMode;
+}
+
+/**
+ * Contains the possible cases for VideoEncoderBase.
+ */
+export type VideoEncoderBaseUnion = VideoEncoderBase | VideoEncoderH264;
+
+/**
+ * Base type for all video encoding presets, which define the recipe or instructions on how the
+ * input video should be processed.
+ */
+export interface VideoEncoderBase {
+  /**
+   * Polymorphic Discriminator
+   */
+  type: "VideoEncoderBase";
+  /**
+   * The maximum bitrate, in kilobits per second or Kbps, at which video should be encoded. If
+   * omitted, encoder sets it automatically to try and match the quality of the input video.
+   */
+  bitrateKbps?: string;
+  /**
+   * The frame rate (in frames per second) of the encoded video. The value must be greater than
+   * zero, and less than or equal to 300. If omitted, the encoder uses the average frame rate of
+   * the input video.
+   */
+  frameRate?: string;
+  /**
+   * Describes the resolution of the encoded video. If omitted, the encoder uses the resolution of
+   * the input video.
+   */
+  scale?: VideoScale;
+}
+
+/**
+ * Describes a custom preset for encoding the input content using the encoder processor.
+ */
+export interface EncoderCustomPreset {
+  /**
+   * Polymorphic Discriminator
+   */
+  type: "#Microsoft.VideoAnalyzer.EncoderCustomPreset";
+  /**
+   * Describes a custom preset for encoding audio.
+   */
+  audioEncoder?: AudioEncoderBaseUnion;
+  /**
+   * Describes a custom preset for encoding video.
+   */
+  videoEncoder?: VideoEncoderBaseUnion;
+}
+
+/**
+ * A custom preset for encoding audio with the AAC codec.
+ */
+export interface AudioEncoderAac {
+  /**
+   * Polymorphic Discriminator
+   */
+  type: "#Microsoft.VideoAnalyzer.AudioEncoderAac";
+  /**
+   * Bitrate, in kilobits per second or Kbps, at which audio should be encoded (2-channel stereo
+   * audio at a sampling rate of 48 kHz). Allowed values are 96, 112, 128, 160, 192, 224, and 256.
+   * If omitted, the bitrate of the input audio is used.
+   */
+  bitrateKbps?: string;
+}
+
+/**
+ * A custom preset for encoding video with the H.264 (AVC) codec.
+ */
+export interface VideoEncoderH264 {
+  /**
+   * Polymorphic Discriminator
+   */
+  type: "#Microsoft.VideoAnalyzer.VideoEncoderH264";
+  /**
+   * The maximum bitrate, in kilobits per second or Kbps, at which video should be encoded. If
+   * omitted, encoder sets it automatically to try and match the quality of the input video.
+   */
+  bitrateKbps?: string;
+  /**
+   * The frame rate (in frames per second) of the encoded video. The value must be greater than
+   * zero, and less than or equal to 300. If omitted, the encoder uses the average frame rate of
+   * the input video.
+   */
+  frameRate?: string;
+  /**
+   * Describes the resolution of the encoded video. If omitted, the encoder uses the resolution of
+   * the input video.
+   */
+  scale?: VideoScale;
+}
+
+/**
+ * Optional properties to be used in case a new video resource needs to be created on the service.
+ * These will not take effect if the video already exists.
+ */
+export interface VideoCreationProperties {
+  /**
+   * Optional title provided by the user. Value can be up to 256 characters long.
+   */
+  title?: string;
+  /**
+   * Optional description provided by the user. Value can be up to 2048 characters long.
+   */
+  description?: string;
+  /**
+   * Segment length indicates the length of individual content files (segments) which are persisted
+   * to storage. Smaller segments provide lower archive playback latency but generate larger volume
+   * of storage transactions. Larger segments reduce the amount of storage transactions while
+   * increasing the archive playback latency. Value must be specified in ISO8601 duration format
+   * (i.e. "PT30S" equals 30 seconds) and can vary between 30 seconds to 5 minutes, in 30 seconds
+   * increments. Changing this value after the initial call to create the video resource can lead
+   * to errors when uploading content to the archive. Default value is 30 seconds. This property is
+   * only allowed for topologies where "kind" is set to "live".
+   */
+  segmentLength?: string;
+  /**
+   * Video retention period indicates how long the video is kept in storage. Value must be
+   * specified in ISO8601 duration format (i.e. "PT1D" equals 1 day) and can vary between 1 day to
+   * 10 years, in 1 day increments. When absent (null), all video content is retained indefinitely.
+   * This property is only allowed for topologies where "kind" is set to "live".
+   */
+  retentionPeriod?: string;
+}
+
+/**
+ * Optional flags used to change how video is published. These are only allowed for topologies
+ * where "kind" is set to "live".
+ */
+export interface VideoPublishingOptions {
+  /**
+   * When set to 'true' content will not be archived or recorded. This is used, for example, when
+   * the topology is used only for low latency video streaming. Default is 'false'.  If set to
+   * 'true', then "disableRtspPublishing" must be set to 'false'.
+   */
+  disableArchive?: string;
+  /**
+   * When set to 'true' the RTSP playback URL will not be published, disabling low latency
+   * streaming. This is used, for example, when the topology is used only for archiving content.
+   * Default is 'false'.  If set to 'true', then "disableArchive" must be set to 'false'.
+   */
+  disableRtspPublishing?: string;
+}
+
+/**
+ * Video sink in a live topology allows for video and audio to be captured, optionally archived,
+ * and published via a video resource. If archiving is enabled, this results in a video of type
+ * 'archive'. If used in a batch topology, this allows for video and audio to be stored as a file,
+ * and published via a video resource of type 'file'
+ */
+export interface VideoSink {
+  /**
+   * Polymorphic Discriminator
+   */
+  type: "#Microsoft.VideoAnalyzer.VideoSink";
+  /**
+   * Node name. Must be unique within the topology.
+   */
+  name: string;
+  /**
+   * An array of upstream node references within the topology to be used as inputs for this node.
+   */
+  inputs: NodeInput[];
+  /**
+   * Name of a new or existing video resource used to capture and publish content. Note: if
+   * downstream of RTSP source, and if disableArchive is set to true, then no content is archived.
+   */
+  videoName: string;
+  /**
+   * Optional video properties to be used in case a new video resource needs to be created on the
+   * service.
+   */
+  videoCreationProperties?: VideoCreationProperties;
+  /**
+   * Options to change how the video sink publishes content via the video resource. This property
+   * is only allowed for topologies where "kind" is set to "live".
+   */
+  videoPublishingOptions?: VideoPublishingOptions;
+}
+
+/**
+ * Defines the parameter value of an specific pipeline topology parameter. See pipeline topology
+ * parameters for more information.
+ */
+export interface ParameterDefinition {
+  /**
+   * Name of the parameter declared in the pipeline topology.
+   */
+  name: string;
+  /**
+   * Parameter value to be applied on this specific pipeline.
+   */
+  value?: string;
+}
+
+/**
+ * Pipeline topology describes the processing steps to be applied when processing content for a
+ * particular outcome. The topology should be defined according to the scenario to be achieved and
+ * can be reused across many pipeline instances which share the same processing characteristics.
+ * For instance, a pipeline topology which captures content from a RTSP camera and archives the
+ * content can be reused across many different cameras, as long as the same processing is to be
+ * applied across all the cameras. Individual instance properties can be defined through the use of
+ * user-defined parameters, which allow for a topology to be parameterized. This allows  individual
+ * pipelines refer to different values, such as individual cameras' RTSP endpoints and credentials.
+ * Overall a topology is composed of the following:
+ *
+ * - Parameters: list of user defined parameters that can be references across the topology nodes.
+ * - Sources: list of one or more data sources nodes such as an RTSP source which allows for
+ * content to be ingested from cameras.
+ * - Processors: list of nodes which perform data analysis or transformations.
+ * - Sinks: list of one or more data sinks which allow for data to be stored or exported to other
+ * destinations.
+ */
+export interface PipelineTopology extends ProxyResource {
+  /**
+   * An optional description of the pipeline topology. It is recommended that the expected use of
+   * the topology to be described here.
+   */
+  description?: string;
+  /**
+   * List of the topology parameter declarations. Parameters declared here can be referenced
+   * throughout the topology nodes through the use of "${PARAMETER_NAME}" string pattern.
+   * Parameters can have optional default values and can later be defined in individual instances
+   * of the pipeline.
+   */
+  parameters?: ParameterDeclaration[];
+  /**
+   * List of the topology source nodes. Source nodes enable external data to be ingested by the
+   * pipeline.
+   */
+  sources: SourceNodeBaseUnion[];
+  /**
+   * List of the topology processor nodes. Processor nodes enable pipeline data to be analyzed,
+   * processed or transformed.
+   */
+  processors?: ProcessorNodeBaseUnion[];
+  /**
+   * List of the topology sink nodes. Sink nodes allow pipeline data to be stored or exported.
+   */
+  sinks: SinkNodeBaseUnion[];
+  /**
+   * Topology kind. Possible values include: 'Live', 'Batch'
+   */
+  kind: Kind;
+  /**
+   * Describes the properties of a SKU.
+   */
+  sku: Sku;
+}
+
+/**
+ * Pipeline topology describes the processing steps to be applied when processing content for a
+ * particular outcome. The topology should be defined according to the scenario to be achieved and
+ * can be reused across many pipeline instances which share the same processing characteristics.
+ * For instance, a pipeline topology which captures content from a RTSP camera and archives the
+ * content can be reused across many different cameras, as long as the same processing is to be
+ * applied across all the cameras. Individual instance properties can be defined through the use of
+ * user-defined parameters, which allow for a topology to be parameterized. This allows  individual
+ * pipelines refer to different values, such as individual cameras' RTSP endpoints and credentials.
+ * Overall a topology is composed of the following:
+ *
+ * - Parameters: list of user defined parameters that can be references across the topology nodes.
+ * - Sources: list of one or more data sources nodes such as an RTSP source which allows for
+ * content to be ingested from cameras.
+ * - Processors: list of nodes which perform data analysis or transformations.
+ * - Sinks: list of one or more data sinks which allow for data to be stored or exported to other
+ * destinations.
+ */
+export interface PipelineTopologyUpdate extends ProxyResource {
+  /**
+   * An optional description of the pipeline topology. It is recommended that the expected use of
+   * the topology to be described here.
+   */
+  description?: string;
+  /**
+   * List of the topology parameter declarations. Parameters declared here can be referenced
+   * throughout the topology nodes through the use of "${PARAMETER_NAME}" string pattern.
+   * Parameters can have optional default values and can later be defined in individual instances
+   * of the pipeline.
+   */
+  parameters?: ParameterDeclaration[];
+  /**
+   * List of the topology source nodes. Source nodes enable external data to be ingested by the
+   * pipeline.
+   */
+  sources?: SourceNodeBaseUnion[];
+  /**
+   * List of the topology processor nodes. Processor nodes enable pipeline data to be analyzed,
+   * processed or transformed.
+   */
+  processors?: ProcessorNodeBaseUnion[];
+  /**
+   * List of the topology sink nodes. Sink nodes allow pipeline data to be stored or exported.
+   */
+  sinks?: SinkNodeBaseUnion[];
+  /**
+   * Topology kind. Possible values include: 'Live', 'Batch'
+   */
+  kind?: Kind;
+  /**
+   * Describes the properties of a SKU.
+   */
+  sku?: Sku;
+}
+
+/**
+ * Live pipeline represents a unique instance of a live topology, used for real-time ingestion,
+ * archiving and publishing of content for a unique RTSP camera.
+ */
+export interface LivePipeline extends ProxyResource {
+  /**
+   * The reference to an existing pipeline topology defined for real-time content processing. When
+   * activated, this live pipeline will process content according to the pipeline topology
+   * definition.
+   */
+  topologyName: string;
+  /**
+   * An optional description for the pipeline.
+   */
+  description?: string;
+  /**
+   * Maximum bitrate capacity in Kbps reserved for the live pipeline. The allowed range is from 500
+   * to 3000 Kbps in increments of 100 Kbps. If the RTSP camera exceeds this capacity, then the
+   * service will disconnect temporarily from the camera. It will retry to re-establish connection
+   * (with exponential backoff), checking to see if the camera bitrate is now below the reserved
+   * capacity. Doing so will ensure that one 'noisy neighbor' does not affect other live pipelines
+   * in your account.
+   */
+  bitrateKbps: number;
+  /**
+   * Current state of the pipeline (read-only). Possible values include: 'Inactive', 'Activating',
+   * 'Active', 'Deactivating'
+   * **NOTE: This property will not be serialized. It can only be populated by the server.**
+   */
+  readonly state?: LivePipelineState;
+  /**
+   * List of the instance level parameter values for the user-defined topology parameters. A
+   * pipeline can only define or override parameters values for parameters which have been declared
+   * in the referenced topology. Topology parameters without a default value must be defined.
+   * Topology parameters with a default value can be optionally be overridden.
+   */
+  parameters?: ParameterDefinition[];
+}
+
+/**
+ * Live pipeline represents a unique instance of a live topology, used for real-time ingestion,
+ * archiving and publishing of content for a unique RTSP camera.
+ */
+export interface LivePipelineUpdate extends ProxyResource {
+  /**
+   * The reference to an existing pipeline topology defined for real-time content processing. When
+   * activated, this live pipeline will process content according to the pipeline topology
+   * definition.
+   */
+  topologyName?: string;
+  /**
+   * An optional description for the pipeline.
+   */
+  description?: string;
+  /**
+   * Maximum bitrate capacity in Kbps reserved for the live pipeline. The allowed range is from 500
+   * to 3000 Kbps in increments of 100 Kbps. If the RTSP camera exceeds this capacity, then the
+   * service will disconnect temporarily from the camera. It will retry to re-establish connection
+   * (with exponential backoff), checking to see if the camera bitrate is now below the reserved
+   * capacity. Doing so will ensure that one 'noisy neighbor' does not affect other live pipelines
+   * in your account.
+   */
+  bitrateKbps?: number;
+  /**
+   * Current state of the pipeline (read-only). Possible values include: 'Inactive', 'Activating',
+   * 'Active', 'Deactivating'
+   * **NOTE: This property will not be serialized. It can only be populated by the server.**
+   */
+  readonly state?: LivePipelineState;
+  /**
+   * List of the instance level parameter values for the user-defined topology parameters. A
+   * pipeline can only define or override parameters values for parameters which have been declared
+   * in the referenced topology. Topology parameters without a default value must be defined.
+   * Topology parameters with a default value can be optionally be overridden.
+   */
+  parameters?: ParameterDefinition[];
+}
+
+/**
+ * Details about the error for a failed pipeline job.
+ */
+export interface PipelineJobError {
+  /**
+   * The error code.
+   */
+  code?: string;
+  /**
+   * The error message.
+   */
+  message?: string;
+}
+
+/**
+ * Pipeline job represents a unique instance of a batch topology, used for offline processing of
+ * selected portions of archived content.
+ */
+export interface PipelineJob extends ProxyResource {
+  /**
+   * Reference to an existing pipeline topology. When activated, this pipeline job will process
+   * content according to the pipeline topology definition.
+   */
+  topologyName: string;
+  /**
+   * An optional description for the pipeline.
+   */
+  description?: string;
+  /**
+   * Current state of the pipeline (read-only). Possible values include: 'Processing', 'Canceled',
+   * 'Completed', 'Failed'
+   * **NOTE: This property will not be serialized. It can only be populated by the server.**
+   */
+  readonly state?: PipelineJobState;
+  /**
+   * The date-time by when this pipeline job will be automatically deleted from your account.
+   * **NOTE: This property will not be serialized. It can only be populated by the server.**
+   */
+  readonly expiration?: Date;
+  /**
+   * Details about the error, in case the pipeline job fails.
+   * **NOTE: This property will not be serialized. It can only be populated by the server.**
+   */
+  readonly error?: PipelineJobError;
+  /**
+   * List of the instance level parameter values for the user-defined topology parameters. A
+   * pipeline can only define or override parameters values for parameters which have been declared
+   * in the referenced topology. Topology parameters without a default value must be defined.
+   * Topology parameters with a default value can be optionally be overridden.
+   */
+  parameters?: ParameterDefinition[];
+}
+
+/**
+ * Pipeline job represents a unique instance of a batch topology, used for offline processing of
+ * selected portions of archived content.
+ */
+export interface PipelineJobUpdate extends ProxyResource {
+  /**
+   * Reference to an existing pipeline topology. When activated, this pipeline job will process
+   * content according to the pipeline topology definition.
+   */
+  topologyName?: string;
+  /**
+   * An optional description for the pipeline.
+   */
+  description?: string;
+  /**
+   * Current state of the pipeline (read-only). Possible values include: 'Processing', 'Canceled',
+   * 'Completed', 'Failed'
+   * **NOTE: This property will not be serialized. It can only be populated by the server.**
+   */
+  readonly state?: PipelineJobState;
+  /**
+   * The date-time by when this pipeline job will be automatically deleted from your account.
+   * **NOTE: This property will not be serialized. It can only be populated by the server.**
+   */
+  readonly expiration?: Date;
+  /**
+   * Details about the error, in case the pipeline job fails.
+   * **NOTE: This property will not be serialized. It can only be populated by the server.**
+   */
+  readonly error?: PipelineJobError;
+  /**
+   * List of the instance level parameter values for the user-defined topology parameters. A
+   * pipeline can only define or override parameters values for parameters which have been declared
+   * in the referenced topology. Topology parameters without a default value must be defined.
+   * Topology parameters with a default value can be optionally be overridden.
+   */
+  parameters?: ParameterDefinition[];
+}
+
+/**
+ * Used for tracking the status of an operation on the live pipeline.
+ */
+export interface LivePipelineOperationStatus {
+  /**
+   * The name of the live pipeline operation.
+   * **NOTE: This property will not be serialized. It can only be populated by the server.**
+   */
+  readonly name?: string;
+  /**
+   * The status of the live pipeline operation.
+   * **NOTE: This property will not be serialized. It can only be populated by the server.**
+   */
+  readonly status?: string;
+  /**
+   * The error details for the live pipeline operation.
+   * **NOTE: This property will not be serialized. It can only be populated by the server.**
+   */
+  readonly error?: ErrorDetail;
+}
+
+/**
+ * Used for tracking the status of an operation on the pipeline job.
+ */
+export interface PipelineJobOperationStatus {
+  /**
+   * The name of the pipeline job operation.
+   * **NOTE: This property will not be serialized. It can only be populated by the server.**
+   */
+  readonly name?: string;
+  /**
+   * The status of the pipeline job operation.
+   * **NOTE: This property will not be serialized. It can only be populated by the server.**
+   */
+  readonly status?: string;
+  /**
+   * The error details for the pipeline job operation.
+   * **NOTE: This property will not be serialized. It can only be populated by the server.**
+   */
+  readonly error?: ErrorDetail;
+}
+
+/**
+ * Operation details.
+ */
+export interface OperationDisplay {
+  /**
+   * The service provider.
+   */
+  provider?: string;
+  /**
+   * Resource on which the operation is performed.
+   */
+  resource?: string;
+  /**
+   * The operation type.
+   */
+  operation?: string;
+  /**
+   * The operation description.
+   */
+  description?: string;
+}
+
+/**
+ * A metric dimension.
+ */
+export interface MetricDimension {
+  /**
+   * The metric dimension name.
+   * **NOTE: This property will not be serialized. It can only be populated by the server.**
+   */
+  readonly name?: string;
+  /**
+   * The display name for the dimension.
+   * **NOTE: This property will not be serialized. It can only be populated by the server.**
+   */
+  readonly displayName?: string;
+  /**
+   * Whether to export metric to shoebox.
+   * **NOTE: This property will not be serialized. It can only be populated by the server.**
+   */
+  readonly toBeExportedForShoebox?: boolean;
+}
+
+/**
+ * A metric emitted by service.
+ */
+export interface MetricSpecification {
+  /**
+   * The metric name.
+   * **NOTE: This property will not be serialized. It can only be populated by the server.**
+   */
+  readonly name?: string;
+  /**
+   * The metric display name.
+   * **NOTE: This property will not be serialized. It can only be populated by the server.**
+   */
+  readonly displayName?: string;
+  /**
+   * The metric display description.
+   * **NOTE: This property will not be serialized. It can only be populated by the server.**
+   */
+  readonly displayDescription?: string;
+  /**
+   * The metric unit. Possible values include: 'Bytes', 'Count', 'Milliseconds'
+   * **NOTE: This property will not be serialized. It can only be populated by the server.**
+   */
+  readonly unit?: MetricUnit;
+  /**
+   * The metric aggregation type. Possible values include: 'Average', 'Count', 'Total'
+   * **NOTE: This property will not be serialized. It can only be populated by the server.**
+   */
+  readonly aggregationType?: MetricAggregationType;
+  /**
+   * The metric lock aggregation type. Possible values include: 'Average', 'Count', 'Total'
+   * **NOTE: This property will not be serialized. It can only be populated by the server.**
+   */
+  readonly lockAggregationType?: MetricAggregationType;
+  /**
+   * Supported aggregation types.
+   */
+  supportedAggregationTypes?: string[];
+  /**
+   * The metric dimensions.
+   * **NOTE: This property will not be serialized. It can only be populated by the server.**
+   */
+  readonly dimensions?: MetricDimension[];
+  /**
+   * Indicates whether regional MDM account is enabled.
+   * **NOTE: This property will not be serialized. It can only be populated by the server.**
+   */
+  readonly enableRegionalMdmAccount?: boolean;
+  /**
+   * The source MDM account.
+   * **NOTE: This property will not be serialized. It can only be populated by the server.**
+   */
+  readonly sourceMdmAccount?: string;
+  /**
+   * The source MDM namespace.
+   * **NOTE: This property will not be serialized. It can only be populated by the server.**
+   */
+  readonly sourceMdmNamespace?: string;
+  /**
+   * The supported time grain types.
+   * **NOTE: This property will not be serialized. It can only be populated by the server.**
+   */
+  readonly supportedTimeGrainTypes?: string[];
+}
+
+/**
+ * A diagnostic log emitted by service.
+ */
+export interface LogSpecification {
+  /**
+   * The diagnostic log category name.
+   * **NOTE: This property will not be serialized. It can only be populated by the server.**
+   */
+  readonly name?: string;
+  /**
+   * The diagnostic log category display name.
+   * **NOTE: This property will not be serialized. It can only be populated by the server.**
+   */
+  readonly displayName?: string;
+  /**
+   * The time range for requests in each blob.
+   * **NOTE: This property will not be serialized. It can only be populated by the server.**
+   */
+  readonly blobDuration?: string;
+}
+
+/**
+ * The service metric specifications.
+ */
+export interface ServiceSpecification {
+  /**
+   * List of log specifications.
+   * **NOTE: This property will not be serialized. It can only be populated by the server.**
+   */
+  readonly logSpecifications?: LogSpecification[];
+  /**
+   * List of metric specifications.
+   * **NOTE: This property will not be serialized. It can only be populated by the server.**
+   */
+  readonly metricSpecifications?: MetricSpecification[];
+}
+
+/**
+ * Metric properties.
+ */
+export interface Properties {
+  /**
+   * The service specifications.
+   * **NOTE: This property will not be serialized. It can only be populated by the server.**
+   */
+  readonly serviceSpecification?: ServiceSpecification;
+}
+
+/**
+ * An operation.
+ */
+export interface Operation {
+  /**
+   * The operation name.
+   */
+  name: string;
+  /**
+   * The operation display name.
+   */
+  display?: OperationDisplay;
+  /**
+   * Origin of the operation.
+   */
+  origin?: string;
+  /**
+   * Operation properties format.
+   */
+  properties?: Properties;
+  /**
+   * Whether the operation applies to data-plane.
+   */
+  isDataAction?: boolean;
+  /**
+   * Indicates the action type. Possible values include: 'Internal'
+   */
+  actionType?: ActionType;
+}
+
+/**
+ * The user assigned managed identity to use when accessing a resource.
+ */
+export interface ResourceIdentity {
+  /**
+   * The user assigned managed identity's resource identifier to use when accessing a resource.
+   */
+  userAssignedIdentity: string;
+}
+
+/**
+ * The details about the associated storage account.
+ */
+export interface StorageAccount {
+  /**
+   * The ID of the storage account resource. Video Analyzer relies on tables, queues, and blobs.
+   * The primary storage account must be a Standard Storage account (either
+   * Microsoft.ClassicStorage or Microsoft.Storage).
+   */
+  id: string;
+  /**
+   * A managed identity that Video Analyzer will use to access the storage account.
+   */
+  identity?: ResourceIdentity;
+  /**
+   * The current status of the storage account mapping.
+   * **NOTE: This property will not be serialized. It can only be populated by the server.**
+   */
+  readonly status?: string;
+}
+
+/**
+ * The endpoint details.
+ */
+export interface Endpoint {
+  /**
+   * The URL of the endpoint.
+   */
+  endpointUrl?: string;
+}
+
+/**
+ * The details for accessing the encryption keys in Key Vault.
+ */
+export interface KeyVaultProperties {
+  /**
+   * The URL of the Key Vault key used to encrypt the account. The key may either be versioned (for
+   * example https://vault/keys/mykey/version1) or reference a key without a version (for example
+   * https://vault/keys/mykey).
+   */
+  keyIdentifier: string;
+  /**
+   * The current key used to encrypt Video Analyzer account, including the key version.
+   * **NOTE: This property will not be serialized. It can only be populated by the server.**
+   */
+  readonly currentKeyIdentifier?: string;
+}
+
+/**
+ * Defines how the Video Analyzer account is (optionally) encrypted.
+ */
+export interface AccountEncryption {
+  /**
+   * The type of key used to encrypt the Account Key. Possible values include: 'SystemKey',
+   * 'CustomerKey'
+   */
+  type: AccountEncryptionKeyType;
+  /**
+   * The properties of the key used to encrypt the account.
+   */
+  keyVaultProperties?: KeyVaultProperties;
+  /**
+   * The Key Vault identity.
+   */
+  identity?: ResourceIdentity;
+  /**
+   * The current status of the Key Vault mapping.
+   * **NOTE: This property will not be serialized. It can only be populated by the server.**
+   */
+  readonly status?: string;
+}
+
+/**
+ * The IoT Hub details.
+ */
+export interface IotHub {
+  /**
+   * The IoT Hub resource identifier.
+   */
+  id: string;
+  /**
+   * The IoT Hub identity.
+   */
+  identity: ResourceIdentity;
+  /**
+   * The current status of the Iot Hub mapping.
+   * **NOTE: This property will not be serialized. It can only be populated by the server.**
+   */
+  readonly status?: string;
+}
+
+/**
+ * Group level network access control.
+ */
+export interface GroupLevelAccessControl {
+  /**
+   * Whether or not public network access is allowed for specified resources under the Video
+   * Analyzer account. Possible values include: 'Enabled', 'Disabled'
+   */
+  publicNetworkAccess?: PublicNetworkAccess;
+}
+
+/**
+ * Network access control for video analyzer account.
+ */
+export interface NetworkAccessControl {
+  /**
+   * Public network access for integration group.
+   */
+  integration?: GroupLevelAccessControl;
+  /**
+   * Public network access for ingestion group.
+   */
+  ingestion?: GroupLevelAccessControl;
+  /**
+   * Public network access for consumption group.
+   */
+  consumption?: GroupLevelAccessControl;
+}
+
+/**
+ * The Private Endpoint resource.
+ */
+export interface PrivateEndpoint {
+  /**
+   * The ARM identifier for Private Endpoint
+   * **NOTE: This property will not be serialized. It can only be populated by the server.**
+   */
+  readonly id?: string;
+}
+
+/**
+ * A collection of information about the state of the connection between service consumer and
+ * provider.
+ */
+export interface PrivateLinkServiceConnectionState {
+  /**
+   * Indicates whether the connection has been Approved/Rejected/Removed by the owner of the
+   * service. Possible values include: 'Pending', 'Approved', 'Rejected'
+   */
+  status?: PrivateEndpointServiceConnectionStatus;
+  /**
+   * The reason for approval/rejection of the connection.
+   */
+  description?: string;
+  /**
+   * A message indicating if changes on the service provider require any updates on the consumer.
+   */
+  actionsRequired?: string;
+}
+
+/**
+ * The Private Endpoint Connection resource.
+ */
+export interface PrivateEndpointConnection extends Resource {
+  /**
+   * The resource of private end point.
+   */
+  privateEndpoint?: PrivateEndpoint;
+  /**
+   * A collection of information about the state of the connection between service consumer and
+   * provider.
+   */
+  privateLinkServiceConnectionState: PrivateLinkServiceConnectionState;
+  /**
+   * The provisioning state of the private endpoint connection resource. Possible values include:
+   * 'Succeeded', 'Creating', 'Deleting', 'Failed'
+   */
+  provisioningState?: PrivateEndpointConnectionProvisioningState;
+}
+
+/**
+ * The details of the user assigned managed identity used by the Video Analyzer resource.
+ */
+export interface UserAssignedManagedIdentity {
+  /**
+   * The client ID.
+   * **NOTE: This property will not be serialized. It can only be populated by the server.**
+   */
+  readonly clientId?: string;
+  /**
+   * The principal ID.
+   * **NOTE: This property will not be serialized. It can only be populated by the server.**
+   */
+  readonly principalId?: string;
+}
+
+/**
+ * The managed identity for the Video Analyzer resource.
+ */
+export interface VideoAnalyzerIdentity {
+  /**
+   * The identity type.
+   */
+  type: string;
+  /**
+   * The User Assigned Managed Identities.
+   */
+  userAssignedIdentities?: { [propertyName: string]: UserAssignedManagedIdentity };
+}
+
+/**
+ * The Video Analyzer account.
+ */
+export interface VideoAnalyzerModel extends TrackedResource {
+  /**
+   * The storage accounts for this resource.
+   */
+  storageAccounts: StorageAccount[];
+  /**
+   * The endpoints associated with this resource.
+   * **NOTE: This property will not be serialized. It can only be populated by the server.**
+   */
+  readonly endpoints?: Endpoint[];
+  /**
+   * The account encryption properties.
+   */
+  encryption?: AccountEncryption;
+  /**
+   * The IoT Hubs for this resource.
+   */
+  iotHubs?: IotHub[];
+  /**
+   * Whether or not public network access is allowed for resources under the Video Analyzer
+   * account. Possible values include: 'Enabled', 'Disabled'
+   */
+  publicNetworkAccess?: PublicNetworkAccess;
+  /**
+   * Network access control for Video Analyzer.
+   */
+  networkAccessControl?: NetworkAccessControl;
+  /**
+   * Provisioning state of the Video Analyzer account. Possible values include: 'Failed',
+   * 'InProgress', 'Succeeded'
+   * **NOTE: This property will not be serialized. It can only be populated by the server.**
+   */
+  readonly provisioningState?: ProvisioningState;
+  /**
+   * Private Endpoint Connections created under Video Analyzer account.
+   * **NOTE: This property will not be serialized. It can only be populated by the server.**
+   */
+  readonly privateEndpointConnections?: PrivateEndpointConnection[];
+  /**
+   * The identities associated to the Video Analyzer resource.
+   */
+  identity?: VideoAnalyzerIdentity;
+}
+
+/**
+ * The update operation for a Video Analyzer account.
+ */
+export interface VideoAnalyzerUpdate {
+  /**
+   * Resource tags.
+   */
+  tags?: { [propertyName: string]: string };
+  /**
+   * The storage accounts for this resource.
+   */
+  storageAccounts?: StorageAccount[];
+  /**
+   * The endpoints associated with this resource.
+   * **NOTE: This property will not be serialized. It can only be populated by the server.**
+   */
+  readonly endpoints?: Endpoint[];
+  /**
+   * The account encryption properties.
+   */
+  encryption?: AccountEncryption;
+  /**
+   * The IoT Hubs for this resource.
+   */
+  iotHubs?: IotHub[];
+  /**
+   * Whether or not public network access is allowed for resources under the Video Analyzer
+   * account. Possible values include: 'Enabled', 'Disabled'
+   */
+  publicNetworkAccess?: PublicNetworkAccess;
+  /**
+   * Network access control for Video Analyzer.
+   */
+  networkAccessControl?: NetworkAccessControl;
+  /**
+   * Provisioning state of the Video Analyzer account. Possible values include: 'Failed',
+   * 'InProgress', 'Succeeded'
+   * **NOTE: This property will not be serialized. It can only be populated by the server.**
+   */
+  readonly provisioningState?: ProvisioningState;
+  /**
+   * Private Endpoint Connections created under Video Analyzer account.
+   * **NOTE: This property will not be serialized. It can only be populated by the server.**
+   */
+  readonly privateEndpointConnections?: PrivateEndpointConnection[];
+  /**
+   * The identities associated to the Video Analyzer resource.
+   */
+  identity?: VideoAnalyzerIdentity;
+}
+
+/**
+ * Status of private endpoint connection operation.
+ */
+export interface VideoAnalyzerPrivateEndpointConnectionOperationStatus {
+  /**
+   * Operation identifier.
+   */
+  name: string;
+  /**
+   * Operation resource ID.
+   */
+  id?: string;
+  /**
+   * Operation start time.
+   */
+  startTime?: string;
+  /**
+   * Operation end time.
+   */
+  endTime?: string;
+  /**
+   * Operation status.
+   */
+  status?: string;
+  error?: ErrorDetail;
+}
+
+/**
+ * Status of video analyzer operation.
+ */
+export interface VideoAnalyzerOperationStatus {
+  /**
+   * Operation identifier.
+   */
+  name: string;
+  /**
+   * Operation resource ID.
+   */
+  id?: string;
+  /**
+   * Operation start time.
+   */
+  startTime?: string;
+  /**
+   * Operation end time.
+   */
+  endTime?: string;
+  /**
+   * Operation status.
+   */
+  status?: string;
+  error?: ErrorDetail;
+}
+
+/**
+ * A collection of Operation items.
+ */
+export interface OperationCollection {
+  /**
+   * A collection of Operation items.
+   */
+  value?: Operation[];
+}
+
+/**
+ * A collection of VideoAnalyzer items.
+ */
+export interface VideoAnalyzerCollection {
+  /**
+   * A collection of VideoAnalyzer items.
+   */
+  value?: VideoAnalyzerModel[];
+}
+
+/**
+ * The check availability request body.
+ */
+export interface CheckNameAvailabilityRequest {
+  /**
+   * The name of the resource for which availability needs to be checked.
+   */
+  name?: string;
+  /**
+   * The resource type.
+   */
+  type?: string;
+}
+
+/**
+ * The check availability result.
+ */
+export interface CheckNameAvailabilityResponse {
+  /**
+   * Indicates if the resource name is available.
+   */
+  nameAvailable?: boolean;
+  /**
+   * The reason why the given name is not available. Possible values include: 'Invalid',
+   * 'AlreadyExists'
+   */
+  reason?: CheckNameAvailabilityReason;
+  /**
+   * Detailed reason why the given name is available.
+   */
+  message?: string;
+}
+
+/**
+ * List of private endpoint connection associated with the specified storage account
+ */
+export interface PrivateEndpointConnectionListResult {
+  /**
+   * Array of private endpoint connections
+   */
+  value?: PrivateEndpointConnection[];
+}
+
+/**
+ * A private link resource
+ */
+export interface PrivateLinkResource extends Resource {
+  /**
+   * The private link resource group id.
+   * **NOTE: This property will not be serialized. It can only be populated by the server.**
+   */
+  readonly groupId?: string;
+  /**
+   * The private link resource required member names.
+   * **NOTE: This property will not be serialized. It can only be populated by the server.**
+   */
+  readonly requiredMembers?: string[];
+  /**
+   * The private link resource Private link DNS zone name.
+   */
+  requiredZoneNames?: string[];
+}
+
+/**
+ * A list of private link resources
+ */
+export interface PrivateLinkResourceListResult {
+  /**
+   * Array of private link resources
+   */
+  value?: PrivateLinkResource[];
+}
+
+/**
+ * Video preview image URLs. These URLs can be used in conjunction with the video content
+ * authorization token to download the most recent still image from the video archive in different
+ * resolutions. They are available when the video type is 'archive' and preview images are enabled.
+ */
+export interface VideoPreviewImageUrls {
+  /**
+   * Low resolution preview image URL.
+   */
+  small?: string;
+  /**
+   * Medium resolution preview image URL.
+   */
+  medium?: string;
+  /**
+   * High resolution preview image URL.
+   */
+  large?: string;
+}
+
+/**
+ * Set of URLs to the video content.
+ */
+export interface VideoContentUrls {
+  /**
+   * Video file download URL. This URL can be used in conjunction with the video content
+   * authorization token to download the video MP4 file. The resulting MP4 file can be played on
+   * any standard media player. It is available when the video type is 'file' and video file is
+   * available for consumption.
+   */
+  downloadUrl?: string;
+  /**
+   * Video archive streaming base URL. The archived content can be automatically played by the
+   * Azure Video Analyzer player widget. Alternatively, this URL can be used in conjunction with
+   * the video content authorization token on any compatible DASH or HLS players by appending the
+   * following to the base URL:
+   *
+   * - HLSv4:     /manifest(format=m3u8-aapl).m3u8
+   * - HLS CMAF:  /manifest(format=m3u8-cmaf)
+   * - DASH CMAF: /manifest(format=mpd-time-cmaf)
+   *
+   * Moreover, an ongoing video recording can be played in "live mode" with latencies which are
+   * approximately double of the chosen video segment length. It is available when the video type
+   * is 'archive' and video archiving is enabled.
+   */
+  archiveBaseUrl?: string;
+  /**
+   * Video low-latency streaming URL. The live content can be automatically played by the Azure
+   * Video Analyzer player widget. Alternatively, this URL can be used in conjunction with the
+   * video content authorization token to expose a WebSocket tunneled RTSP stream. It is available
+   * when the video type is 'archive' and a live, low-latency feed is available from the source.
+   */
+  rtspTunnelUrl?: string;
+  /**
+   * Video preview image URLs. These URLs can be used in conjunction with the video content
+   * authorization token to download the most recent still image from the video archive in
+   * different resolutions. They are available when the video type is 'archive' and preview images
+   * are enabled.
+   */
+  previewImageUrls?: VideoPreviewImageUrls;
+}
+
+/**
+ * Video flags contain information about the available video actions and its dynamic properties
+ * based on the current video state.
+ */
+export interface VideoFlags {
+  /**
+   * Value indicating whether or not the video can be streamed. Only "archive" type videos can be
+   * streamed.
+   */
+  canStream: boolean;
+  /**
+   * Value indicating whether or not there has ever been data recorded or uploaded into the video.
+   * Newly created videos have this value set to false.
+   */
+  hasData: boolean;
+  /**
+   * Value indicating whether or not the video is currently being referenced be an active pipeline.
+   * The fact that is being referenced, doesn't necessarily indicate that data is being received.
+   * For example, video recording may be gated on events or camera may not be accessible at the
+   * time.
+   */
+  isInUse: boolean;
+}
+
+/**
+ * Contains information about the video and audio content.
+ */
+export interface VideoMediaInfo {
+  /**
+   * Video segment length indicates the length of individual video files (segments) which are
+   * persisted to storage. Smaller segments provide lower archive playback latency but generate
+   * larger volume of storage transactions. Larger segments reduce the amount of storage
+   * transactions while increasing the archive playback latency. Value must be specified in ISO8601
+   * duration format (i.e. "PT30S" equals 30 seconds) and can vary between 30 seconds to 5 minutes,
+   * in 30 seconds increments.
+   * **NOTE: This property will not be serialized. It can only be populated by the server.**
+   */
+  readonly segmentLength?: string;
+}
+
+/**
+ * "Video content token grants access to the video content URLs."
+ */
+export interface VideoContentToken {
+  /**
+   * The content token expiration date in ISO8601 format (eg. 2021-01-01T00:00:00Z).
+   * **NOTE: This property will not be serialized. It can only be populated by the server.**
+   */
+  readonly expirationDate?: Date;
+  /**
+   * The content token value to be added to the video content URL as the value for the "token"
+   * query string parameter. The token is specific to a single video.
+   * **NOTE: This property will not be serialized. It can only be populated by the server.**
+   */
+  readonly token?: string;
+}
+
+/**
+ * Video archival properties.
+ */
+export interface VideoArchival {
+  /**
+   * Video retention period indicates the maximum age of the video archive segments which are
+   * intended to be kept in storage. It must be provided in the ISO8601 duration format in the
+   * granularity of days, up to a maximum of 10 years. For example, if this is set to P30D (30
+   * days), content older than 30 days will be periodically deleted. This value can be updated at
+   * any time and the new desired retention period will be effective within 24 hours.
+   */
+  retentionPeriod?: string;
+}
+
+/**
+ * Contains the possible cases for AuthenticationBase.
+ */
+export type AuthenticationBaseUnion = AuthenticationBase | JwtAuthentication;
+
+/**
+ * Base class for access policies authentication methods.
+ */
+export interface AuthenticationBase {
+  /**
+   * Polymorphic Discriminator
+   */
+  type: "AuthenticationBase";
+}
+
+/**
+ * Properties for expected token claims.
+ */
+export interface TokenClaim {
+  /**
+   * Name of the claim which must be present on the token.
+   */
+  name: string;
+  /**
+   * Expected value of the claim to be present on the token.
+   */
+  value: string;
+}
+
+/**
+ * Contains the possible cases for TokenKey.
+ */
+export type TokenKeyUnion = TokenKey | RsaTokenKey | EccTokenKey;
+
+/**
+ * Key properties for JWT token validation.
+ */
+export interface TokenKey {
+  /**
+   * Polymorphic Discriminator
+   */
+  type: "TokenKey";
+  /**
+   * JWT token key id. Validation keys are looked up based on the key id present on the JWT token
+   * header.
+   */
+  kid: string;
+}
+
+/**
+ * Properties for access validation based on JSON Web Tokens (JWT).
+ */
+export interface JwtAuthentication {
+  /**
+   * Polymorphic Discriminator
+   */
+  type: "#Microsoft.VideoAnalyzer.JwtAuthentication";
+  /**
+   * List of expected token issuers. Token issuer is valid if it matches at least one of the given
+   * values.
+   */
+  issuers?: string[];
+  /**
+   * List of expected token audiences. Token audience is valid if it matches at least one of the
+   * given values.
+   */
+  audiences?: string[];
+  /**
+   * List of additional token claims to be validated. Token must contains all claims and respective
+   * values for it to be valid.
+   */
+  claims?: TokenClaim[];
+  /**
+   * List of keys which can be used to validate access tokens. Having multiple keys allow for
+   * seamless key rotation of the token signing key. Token signature must match exactly one key.
+   */
+  keys?: TokenKeyUnion[];
+}
+
+/**
+ * Required validation properties for tokens generated with RSA algorithm.
+ */
+export interface RsaTokenKey {
+  /**
+   * Polymorphic Discriminator
+   */
+  type: "#Microsoft.VideoAnalyzer.RsaTokenKey";
+  /**
+   * JWT token key id. Validation keys are looked up based on the key id present on the JWT token
+   * header.
+   */
+  kid: string;
+  /**
+   * RSA algorithm to be used: RS256, RS384 or RS512. Possible values include: 'RS256', 'RS384',
+   * 'RS512'
+   */
+  alg: AccessPolicyRsaAlgo;
+  /**
+   * RSA public key modulus.
+   */
+  n: string;
+  /**
+   * RSA public key exponent.
+   */
+  e: string;
+}
+
+/**
+ * Required validation properties for tokens generated with Elliptical Curve algorithm.
+ */
+export interface EccTokenKey {
+  /**
+   * Polymorphic Discriminator
+   */
+  type: "#Microsoft.VideoAnalyzer.EccTokenKey";
+  /**
+   * JWT token key id. Validation keys are looked up based on the key id present on the JWT token
+   * header.
+   */
+  kid: string;
+  /**
+   * Elliptical curve algorithm to be used: ES256, ES384 or ES512. Possible values include:
+   * 'ES256', 'ES384', 'ES512'
+   */
+  alg: AccessPolicyEccAlgo;
+  /**
+   * X coordinate.
+   */
+  x: string;
+  /**
+   * Y coordinate.
+   */
+  y: string;
+}
+
+/**
+ * Represents a video resource within Azure Video Analyzer. Videos can be ingested from RTSP
+ * cameras through live pipelines or can be created by exporting sequences from existing captured
+ * video through a pipeline job. Videos ingested through live pipelines can be streamed through
+ * Azure Video Analyzer Player Widget or compatible players. Exported videos can be downloaded as
+ * MP4 files.
+ */
+export interface VideoEntity extends ProxyResource {
+  /**
+   * Optional video title provided by the user. Value can be up to 256 characters long.
+   */
+  title?: string;
+  /**
+   * Optional video description provided by the user. Value can be up to 2048 characters long.
+   */
+  description?: string;
+  /**
+   * Video content type. Different content types are suitable for different applications and
+   * scenarios. Possible values include: 'Archive', 'File'
+   * **NOTE: This property will not be serialized. It can only be populated by the server.**
+   */
+  readonly videoEntityType?: VideoType;
+  /**
+   * Video flags contain information about the available video actions and its dynamic properties
+   * based on the current video state.
+   * **NOTE: This property will not be serialized. It can only be populated by the server.**
+   */
+  readonly flags?: VideoFlags;
+  /**
+   * Set of URLs to the video content.
+   * **NOTE: This property will not be serialized. It can only be populated by the server.**
+   */
+  readonly contentUrls?: VideoContentUrls;
+  /**
+   * Contains information about the video and audio content.
+   * **NOTE: This property will not be serialized. It can only be populated by the server.**
+   */
+  readonly mediaInfo?: VideoMediaInfo;
+  /**
+   * Video archival properties.
+   */
+  archival?: VideoArchival;
+}
+
+/**
+ * Access policies help define the authentication rules, and control access to specific video
+ * resources.
+ */
+export interface AccessPolicyEntity extends ProxyResource {
+  /**
+   * Defines the access level granted by this policy. Possible values include: 'Reader'
+   */
+  role?: AccessPolicyRole;
+  /**
+   * Authentication method to be used when validating client API access.
+   */
+  authentication?: AuthenticationBaseUnion;
+}
+
+/**
+ * Optional Parameters.
+ */
+export interface EdgeModulesListOptionalParams extends msRest.RequestOptionsBase {
+  /**
+   * Specifies a non-negative integer n that limits the number of items returned from a collection.
+   * The service returns the number of available items up to but not greater than the specified
+   * value n.
+   */
+  top?: number;
+}
+
+/**
+ * Optional Parameters.
+ */
+export interface EdgeModulesListNextOptionalParams extends msRest.RequestOptionsBase {
+  /**
+   * Specifies a non-negative integer n that limits the number of items returned from a collection.
+   * The service returns the number of available items up to but not greater than the specified
+   * value n.
+   */
+  top?: number;
+}
+
+/**
+ * Optional Parameters.
+ */
+export interface PipelineTopologiesListOptionalParams extends msRest.RequestOptionsBase {
+  /**
+   * Restricts the set of items returned.
+   */
+  filter?: string;
+  /**
+   * Specifies a non-negative integer n that limits the number of items returned from a collection.
+   * The service returns the number of available items up to but not greater than the specified
+   * value n.
+   */
+  top?: number;
+}
+
+/**
+ * Optional Parameters.
+ */
+export interface PipelineTopologiesListNextOptionalParams extends msRest.RequestOptionsBase {
+  /**
+   * Restricts the set of items returned.
+   */
+  filter?: string;
+  /**
+   * Specifies a non-negative integer n that limits the number of items returned from a collection.
+   * The service returns the number of available items up to but not greater than the specified
+   * value n.
+   */
+  top?: number;
+}
+
+/**
+ * Optional Parameters.
+ */
+export interface LivePipelinesListOptionalParams extends msRest.RequestOptionsBase {
+  /**
+   * Restricts the set of items returned.
+   */
+  filter?: string;
+  /**
+   * Specifies a non-negative integer n that limits the number of items returned from a collection.
+   * The service returns the number of available items up to but not greater than the specified
+   * value n.
+   */
+  top?: number;
+}
+
+/**
+ * Optional Parameters.
+ */
+export interface LivePipelinesListNextOptionalParams extends msRest.RequestOptionsBase {
+  /**
+   * Restricts the set of items returned.
+   */
+  filter?: string;
+  /**
+   * Specifies a non-negative integer n that limits the number of items returned from a collection.
+   * The service returns the number of available items up to but not greater than the specified
+   * value n.
+   */
+  top?: number;
+}
+
+/**
+ * Optional Parameters.
+ */
+export interface PipelineJobsListOptionalParams extends msRest.RequestOptionsBase {
+  /**
+   * Restricts the set of items returned.
+   */
+  filter?: string;
+  /**
+   * Specifies a non-negative integer n that limits the number of items returned from a collection.
+   * The service returns the number of available items up to but not greater than the specified
+   * value n.
+   */
+  top?: number;
+}
+
+/**
+ * Optional Parameters.
+ */
+export interface PipelineJobsListNextOptionalParams extends msRest.RequestOptionsBase {
+  /**
+   * Restricts the set of items returned.
+   */
+  filter?: string;
+  /**
+   * Specifies a non-negative integer n that limits the number of items returned from a collection.
+   * The service returns the number of available items up to but not greater than the specified
+   * value n.
+   */
+  top?: number;
+}
+
+/**
+ * Optional Parameters.
+ */
+export interface VideosListOptionalParams extends msRest.RequestOptionsBase {
+  /**
+   * Specifies a non-negative integer n that limits the number of items returned from a collection.
+   * The service returns the number of available items up to but not greater than the specified
+   * value n.
+   */
+  top?: number;
+}
+
+/**
+ * Optional Parameters.
+ */
+export interface VideosListNextOptionalParams extends msRest.RequestOptionsBase {
+  /**
+   * Specifies a non-negative integer n that limits the number of items returned from a collection.
+   * The service returns the number of available items up to but not greater than the specified
+   * value n.
+   */
+  top?: number;
+}
+
+/**
+ * Optional Parameters.
+ */
+export interface AccessPoliciesListOptionalParams extends msRest.RequestOptionsBase {
+  /**
+   * Specifies a non-negative integer n that limits the number of items returned from a collection.
+   * The service returns the number of available items up to but not greater than the specified
+   * value n.
+   */
+  top?: number;
+}
+
+/**
+ * Optional Parameters.
+ */
+export interface AccessPoliciesListNextOptionalParams extends msRest.RequestOptionsBase {
+  /**
+   * Specifies a non-negative integer n that limits the number of items returned from a collection.
+   * The service returns the number of available items up to but not greater than the specified
+   * value n.
+   */
+  top?: number;
+}
+
+/**
+ * An interface representing VideoAnalyzerOptions.
+ */
+export interface VideoAnalyzerOptions extends AzureServiceClientOptions {
+  baseUri?: string;
+}
+
+/**
+ * Defines headers for CreateOrUpdate operation.
+ */
+export interface VideoAnalyzersCreateOrUpdateHeaders {
+  /**
+   * The recommended number of seconds to wait before calling the URI specified in
+   * Azure-AsyncOperation.
+   */
+  retryAfter: number;
+  /**
+   * The URI to poll for completion status.
+   */
+  locationHeader: string;
+  /**
+   * The URI to poll for completion status.
+   */
+  azureAsyncOperation: string;
+}
+
+/**
+ * Defines headers for Update operation.
+ */
+export interface VideoAnalyzersUpdateHeaders {
+  /**
+   * The recommended number of seconds to wait before calling the URI specified in
+   * Azure-AsyncOperation.
+   */
+  retryAfter: number;
+  /**
+   * The URI to poll for completion status.
+   */
+  locationHeader: string;
+  /**
+   * The URI to poll for completion status.
+   */
+  azureAsyncOperation: string;
+}
+
+/**
+ * Defines headers for CreateOrUpdate operation.
+ */
+export interface PrivateEndpointConnectionsCreateOrUpdateHeaders {
+  /**
+   * The recommended number of seconds to wait before calling the URI specified in
+   * Azure-AsyncOperation.
+   */
+  retryAfter: number;
+  /**
+   * The URI to poll for completion status.
+   */
+  location: string;
+  /**
+   * The URI to poll for completion status.
+   */
+  azureAsyncOperation: string;
+}
+
+/**
+ * @interface
+ * A collection of EdgeModuleEntity items.
+ * @extends Array
+ */
+export interface EdgeModuleEntityCollection extends Array {
+  /**
+   * A link to the next page of the collection (when the collection contains too many results to
+   * return in one response).
+   */
+  nextLink?: string;
+}
+
+/**
+ * @interface
+ * A collection of PipelineTopology items.
+ * @extends Array
+ */
+export interface PipelineTopologyCollection extends Array {
+  /**
+   * A link to the next page of the collection (when the collection contains too many results to
+   * return in one response).
+   */
+  nextLink?: string;
+}
+
+/**
+ * @interface
+ * A collection of LivePipeline items.
+ * @extends Array
+ */
+export interface LivePipelineCollection extends Array {
+  /**
+   * A link to the next page of the collection (when the collection contains too many results to
+   * return in one response).
+   */
+  nextLink?: string;
+}
+
+/**
+ * @interface
+ * A collection of PipelineJob items.
+ * @extends Array
+ */
+export interface PipelineJobCollection extends Array {
+  /**
+   * A link to the next page of the collection (when the collection contains too many results to
+   * return in one response).
+   */
+  nextLink?: string;
+}
+
+/**
+ * @interface
+ * A collection of VideoEntity items.
+ * @extends Array
+ */
+export interface VideoEntityCollection extends Array {
+  /**
+   * A link to the next page of the collection (when the collection contains too many results to
+   * return in one response).
+   */
+  nextLink?: string;
+}
+
+/**
+ * @interface
+ * A collection of AccessPolicyEntity items.
+ * @extends Array
+ */
+export interface AccessPolicyEntityCollection extends Array {
+  /**
+   * A link to the next page of the collection (when the collection contains too many results to
+   * return in one response).
+   */
+  nextLink?: string;
+}
+
+/**
+ * Defines values for CreatedByType.
+ * Possible values include: 'User', 'Application', 'ManagedIdentity', 'Key'
+ * @readonly
+ * @enum {string}
+ */
+export type CreatedByType = 'User' | 'Application' | 'ManagedIdentity' | 'Key';
+
+/**
+ * Defines values for SkuName.
+ * Possible values include: 'Live_S1', 'Batch_S1'
+ * @readonly
+ * @enum {string}
+ */
+export type SkuName = 'Live_S1' | 'Batch_S1';
+
+/**
+ * Defines values for SkuTier.
+ * Possible values include: 'Standard'
+ * @readonly
+ * @enum {string}
+ */
+export type SkuTier = 'Standard';
+
+/**
+ * Defines values for ParameterType.
+ * Possible values include: 'String', 'SecretString', 'Int', 'Double', 'Bool'
+ * @readonly
+ * @enum {string}
+ */
+export type ParameterType = 'String' | 'SecretString' | 'Int' | 'Double' | 'Bool';
+
+/**
+ * Defines values for RtspTransport.
+ * Possible values include: 'Http', 'Tcp'
+ * @readonly
+ * @enum {string}
+ */
+export type RtspTransport = 'Http' | 'Tcp';
+
+/**
+ * Defines values for EncoderSystemPresetType.
+ * Possible values include: 'SingleLayer_540p_H264_AAC', 'SingleLayer_720p_H264_AAC',
+ * 'SingleLayer_1080p_H264_AAC', 'SingleLayer_2160p_H264_AAC'
+ * @readonly
+ * @enum {string}
+ */
+export type EncoderSystemPresetType = 'SingleLayer_540p_H264_AAC' | 'SingleLayer_720p_H264_AAC' | 'SingleLayer_1080p_H264_AAC' | 'SingleLayer_2160p_H264_AAC';
+
+/**
+ * Defines values for VideoScaleMode.
+ * Possible values include: 'Pad', 'PreserveAspectRatio', 'Stretch'
+ * @readonly
+ * @enum {string}
+ */
+export type VideoScaleMode = 'Pad' | 'PreserveAspectRatio' | 'Stretch';
+
+/**
+ * Defines values for Kind.
+ * Possible values include: 'Live', 'Batch'
+ * @readonly
+ * @enum {string}
+ */
+export type Kind = 'Live' | 'Batch';
+
+/**
+ * Defines values for LivePipelineState.
+ * Possible values include: 'Inactive', 'Activating', 'Active', 'Deactivating'
+ * @readonly
+ * @enum {string}
+ */
+export type LivePipelineState = 'Inactive' | 'Activating' | 'Active' | 'Deactivating';
+
+/**
+ * Defines values for PipelineJobState.
+ * Possible values include: 'Processing', 'Canceled', 'Completed', 'Failed'
+ * @readonly
+ * @enum {string}
+ */
+export type PipelineJobState = 'Processing' | 'Canceled' | 'Completed' | 'Failed';
+
+/**
+ * Defines values for MetricUnit.
+ * Possible values include: 'Bytes', 'Count', 'Milliseconds'
+ * @readonly
+ * @enum {string}
+ */
+export type MetricUnit = 'Bytes' | 'Count' | 'Milliseconds';
+
+/**
+ * Defines values for MetricAggregationType.
+ * Possible values include: 'Average', 'Count', 'Total'
+ * @readonly
+ * @enum {string}
+ */
+export type MetricAggregationType = 'Average' | 'Count' | 'Total';
+
+/**
+ * Defines values for ActionType.
+ * Possible values include: 'Internal'
+ * @readonly
+ * @enum {string}
+ */
+export type ActionType = 'Internal';
+
+/**
+ * Defines values for AccountEncryptionKeyType.
+ * Possible values include: 'SystemKey', 'CustomerKey'
+ * @readonly
+ * @enum {string}
+ */
+export type AccountEncryptionKeyType = 'SystemKey' | 'CustomerKey';
+
+/**
+ * Defines values for PublicNetworkAccess.
+ * Possible values include: 'Enabled', 'Disabled'
+ * @readonly
+ * @enum {string}
+ */
+export type PublicNetworkAccess = 'Enabled' | 'Disabled';
+
+/**
+ * Defines values for ProvisioningState.
+ * Possible values include: 'Failed', 'InProgress', 'Succeeded'
+ * @readonly
+ * @enum {string}
+ */
+export type ProvisioningState = 'Failed' | 'InProgress' | 'Succeeded';
+
+/**
+ * Defines values for PrivateEndpointServiceConnectionStatus.
+ * Possible values include: 'Pending', 'Approved', 'Rejected'
+ * @readonly
+ * @enum {string}
+ */
+export type PrivateEndpointServiceConnectionStatus = 'Pending' | 'Approved' | 'Rejected';
+
+/**
+ * Defines values for PrivateEndpointConnectionProvisioningState.
+ * Possible values include: 'Succeeded', 'Creating', 'Deleting', 'Failed'
+ * @readonly
+ * @enum {string}
+ */
+export type PrivateEndpointConnectionProvisioningState = 'Succeeded' | 'Creating' | 'Deleting' | 'Failed';
+
+/**
+ * Defines values for CheckNameAvailabilityReason.
+ * Possible values include: 'Invalid', 'AlreadyExists'
+ * @readonly
+ * @enum {string}
+ */
+export type CheckNameAvailabilityReason = 'Invalid' | 'AlreadyExists';
+
+/**
+ * Defines values for VideoType.
+ * Possible values include: 'Archive', 'File'
+ * @readonly
+ * @enum {string}
+ */
+export type VideoType = 'Archive' | 'File';
+
+/**
+ * Defines values for AccessPolicyRsaAlgo.
+ * Possible values include: 'RS256', 'RS384', 'RS512'
+ * @readonly
+ * @enum {string}
+ */
+export type AccessPolicyRsaAlgo = 'RS256' | 'RS384' | 'RS512';
+
+/**
+ * Defines values for AccessPolicyEccAlgo.
+ * Possible values include: 'ES256', 'ES384', 'ES512'
+ * @readonly
+ * @enum {string}
+ */
+export type AccessPolicyEccAlgo = 'ES256' | 'ES384' | 'ES512';
+
+/**
+ * Defines values for AccessPolicyRole.
+ * Possible values include: 'Reader'
+ * @readonly
+ * @enum {string}
+ */
+export type AccessPolicyRole = 'Reader';
+
+/**
+ * Contains response data for the list operation.
+ */
+export type EdgeModulesListResponse = EdgeModuleEntityCollection & {
+  /**
+   * The underlying HTTP response.
+   */
+  _response: msRest.HttpResponse & {
+      /**
+       * The response body as text (string format)
+       */
+      bodyAsText: string;
+
+      /**
+       * The response body as parsed JSON or XML
+       */
+      parsedBody: EdgeModuleEntityCollection;
+    };
+};
+
+/**
+ * Contains response data for the get operation.
+ */
+export type EdgeModulesGetResponse = EdgeModuleEntity & {
+  /**
+   * The underlying HTTP response.
+   */
+  _response: msRest.HttpResponse & {
+      /**
+       * The response body as text (string format)
+       */
+      bodyAsText: string;
+
+      /**
+       * The response body as parsed JSON or XML
+       */
+      parsedBody: EdgeModuleEntity;
+    };
+};
+
+/**
+ * Contains response data for the createOrUpdate operation.
+ */
+export type EdgeModulesCreateOrUpdateResponse = EdgeModuleEntity & {
+  /**
+   * The underlying HTTP response.
+   */
+  _response: msRest.HttpResponse & {
+      /**
+       * The response body as text (string format)
+       */
+      bodyAsText: string;
+
+      /**
+       * The response body as parsed JSON or XML
+       */
+      parsedBody: EdgeModuleEntity;
+    };
+};
+
+/**
+ * Contains response data for the listProvisioningToken operation.
+ */
+export type EdgeModulesListProvisioningTokenResponse = EdgeModuleProvisioningToken & {
+  /**
+   * The underlying HTTP response.
+   */
+  _response: msRest.HttpResponse & {
+      /**
+       * The response body as text (string format)
+       */
+      bodyAsText: string;
+
+      /**
+       * The response body as parsed JSON or XML
+       */
+      parsedBody: EdgeModuleProvisioningToken;
+    };
+};
+
+/**
+ * Contains response data for the listNext operation.
+ */
+export type EdgeModulesListNextResponse = EdgeModuleEntityCollection & {
+  /**
+   * The underlying HTTP response.
+   */
+  _response: msRest.HttpResponse & {
+      /**
+       * The response body as text (string format)
+       */
+      bodyAsText: string;
+
+      /**
+       * The response body as parsed JSON or XML
+       */
+      parsedBody: EdgeModuleEntityCollection;
+    };
+};
+
+/**
+ * Contains response data for the list operation.
+ */
+export type PipelineTopologiesListResponse = PipelineTopologyCollection & {
+  /**
+   * The underlying HTTP response.
+   */
+  _response: msRest.HttpResponse & {
+      /**
+       * The response body as text (string format)
+       */
+      bodyAsText: string;
+
+      /**
+       * The response body as parsed JSON or XML
+       */
+      parsedBody: PipelineTopologyCollection;
+    };
+};
+
+/**
+ * Contains response data for the get operation.
+ */
+export type PipelineTopologiesGetResponse = PipelineTopology & {
+  /**
+   * The underlying HTTP response.
+   */
+  _response: msRest.HttpResponse & {
+      /**
+       * The response body as text (string format)
+       */
+      bodyAsText: string;
+
+      /**
+       * The response body as parsed JSON or XML
+       */
+      parsedBody: PipelineTopology;
+    };
+};
+
+/**
+ * Contains response data for the createOrUpdate operation.
+ */
+export type PipelineTopologiesCreateOrUpdateResponse = PipelineTopology & {
+  /**
+   * The underlying HTTP response.
+   */
+  _response: msRest.HttpResponse & {
+      /**
+       * The response body as text (string format)
+       */
+      bodyAsText: string;
+
+      /**
+       * The response body as parsed JSON or XML
+       */
+      parsedBody: PipelineTopology;
+    };
+};
+
+/**
+ * Contains response data for the update operation.
+ */
+export type PipelineTopologiesUpdateResponse = PipelineTopology & {
+  /**
+   * The underlying HTTP response.
+   */
+  _response: msRest.HttpResponse & {
+      /**
+       * The response body as text (string format)
+       */
+      bodyAsText: string;
+
+      /**
+       * The response body as parsed JSON or XML
+       */
+      parsedBody: PipelineTopology;
+    };
+};
+
+/**
+ * Contains response data for the listNext operation.
+ */
+export type PipelineTopologiesListNextResponse = PipelineTopologyCollection & {
+  /**
+   * The underlying HTTP response.
+   */
+  _response: msRest.HttpResponse & {
+      /**
+       * The response body as text (string format)
+       */
+      bodyAsText: string;
+
+      /**
+       * The response body as parsed JSON or XML
+       */
+      parsedBody: PipelineTopologyCollection;
+    };
+};
+
+/**
+ * Contains response data for the list operation.
+ */
+export type LivePipelinesListResponse = LivePipelineCollection & {
+  /**
+   * The underlying HTTP response.
+   */
+  _response: msRest.HttpResponse & {
+      /**
+       * The response body as text (string format)
+       */
+      bodyAsText: string;
+
+      /**
+       * The response body as parsed JSON or XML
+       */
+      parsedBody: LivePipelineCollection;
+    };
+};
+
+/**
+ * Contains response data for the get operation.
+ */
+export type LivePipelinesGetResponse = LivePipeline & {
+  /**
+   * The underlying HTTP response.
+   */
+  _response: msRest.HttpResponse & {
+      /**
+       * The response body as text (string format)
+       */
+      bodyAsText: string;
+
+      /**
+       * The response body as parsed JSON or XML
+       */
+      parsedBody: LivePipeline;
+    };
+};
+
+/**
+ * Contains response data for the createOrUpdate operation.
+ */
+export type LivePipelinesCreateOrUpdateResponse = LivePipeline & {
+  /**
+   * The underlying HTTP response.
+   */
+  _response: msRest.HttpResponse & {
+      /**
+       * The response body as text (string format)
+       */
+      bodyAsText: string;
+
+      /**
+       * The response body as parsed JSON or XML
+       */
+      parsedBody: LivePipeline;
+    };
+};
+
+/**
+ * Contains response data for the update operation.
+ */
+export type LivePipelinesUpdateResponse = LivePipeline & {
+  /**
+   * The underlying HTTP response.
+   */
+  _response: msRest.HttpResponse & {
+      /**
+       * The response body as text (string format)
+       */
+      bodyAsText: string;
+
+      /**
+       * The response body as parsed JSON or XML
+       */
+      parsedBody: LivePipeline;
+    };
+};
+
+/**
+ * Contains response data for the listNext operation.
+ */
+export type LivePipelinesListNextResponse = LivePipelineCollection & {
+  /**
+   * The underlying HTTP response.
+   */
+  _response: msRest.HttpResponse & {
+      /**
+       * The response body as text (string format)
+       */
+      bodyAsText: string;
+
+      /**
+       * The response body as parsed JSON or XML
+       */
+      parsedBody: LivePipelineCollection;
+    };
+};
+
+/**
+ * Contains response data for the list operation.
+ */
+export type PipelineJobsListResponse = PipelineJobCollection & {
+  /**
+   * The underlying HTTP response.
+   */
+  _response: msRest.HttpResponse & {
+      /**
+       * The response body as text (string format)
+       */
+      bodyAsText: string;
+
+      /**
+       * The response body as parsed JSON or XML
+       */
+      parsedBody: PipelineJobCollection;
+    };
+};
+
+/**
+ * Contains response data for the get operation.
+ */
+export type PipelineJobsGetResponse = PipelineJob & {
+  /**
+   * The underlying HTTP response.
+   */
+  _response: msRest.HttpResponse & {
+      /**
+       * The response body as text (string format)
+       */
+      bodyAsText: string;
+
+      /**
+       * The response body as parsed JSON or XML
+       */
+      parsedBody: PipelineJob;
+    };
+};
+
+/**
+ * Contains response data for the createOrUpdate operation.
+ */
+export type PipelineJobsCreateOrUpdateResponse = PipelineJob & {
+  /**
+   * The underlying HTTP response.
+   */
+  _response: msRest.HttpResponse & {
+      /**
+       * The response body as text (string format)
+       */
+      bodyAsText: string;
+
+      /**
+       * The response body as parsed JSON or XML
+       */
+      parsedBody: PipelineJob;
+    };
+};
+
+/**
+ * Contains response data for the update operation.
+ */
+export type PipelineJobsUpdateResponse = PipelineJob & {
+  /**
+   * The underlying HTTP response.
+   */
+  _response: msRest.HttpResponse & {
+      /**
+       * The response body as text (string format)
+       */
+      bodyAsText: string;
+
+      /**
+       * The response body as parsed JSON or XML
+       */
+      parsedBody: PipelineJob;
+    };
+};
+
+/**
+ * Contains response data for the listNext operation.
+ */
+export type PipelineJobsListNextResponse = PipelineJobCollection & {
+  /**
+   * The underlying HTTP response.
+   */
+  _response: msRest.HttpResponse & {
+      /**
+       * The response body as text (string format)
+       */
+      bodyAsText: string;
+
+      /**
+       * The response body as parsed JSON or XML
+       */
+      parsedBody: PipelineJobCollection;
+    };
+};
+
+/**
+ * Contains response data for the get operation.
+ */
+export type LivePipelineOperationStatusesGetResponse = LivePipelineOperationStatus & {
+  /**
+   * The underlying HTTP response.
+   */
+  _response: msRest.HttpResponse & {
+      /**
+       * The response body as text (string format)
+       */
+      bodyAsText: string;
+
+      /**
+       * The response body as parsed JSON or XML
+       */
+      parsedBody: LivePipelineOperationStatus;
+    };
+};
+
+/**
+ * Contains response data for the get operation.
+ */
+export type PipelineJobOperationStatusesGetResponse = PipelineJobOperationStatus & {
+  /**
+   * The underlying HTTP response.
+   */
+  _response: msRest.HttpResponse & {
+      /**
+       * The response body as text (string format)
+       */
+      bodyAsText: string;
+
+      /**
+       * The response body as parsed JSON or XML
+       */
+      parsedBody: PipelineJobOperationStatus;
+    };
+};
+
+/**
+ * Contains response data for the list operation.
+ */
+export type OperationsListResponse = OperationCollection & {
+  /**
+   * The underlying HTTP response.
+   */
+  _response: msRest.HttpResponse & {
+      /**
+       * The response body as text (string format)
+       */
+      bodyAsText: string;
+
+      /**
+       * The response body as parsed JSON or XML
+       */
+      parsedBody: OperationCollection;
+    };
+};
+
+/**
+ * Contains response data for the list operation.
+ */
+export type VideoAnalyzersListResponse = VideoAnalyzerCollection & {
+  /**
+   * The underlying HTTP response.
+   */
+  _response: msRest.HttpResponse & {
+      /**
+       * The response body as text (string format)
+       */
+      bodyAsText: string;
+
+      /**
+       * The response body as parsed JSON or XML
+       */
+      parsedBody: VideoAnalyzerCollection;
+    };
+};
+
+/**
+ * Contains response data for the get operation.
+ */
+export type VideoAnalyzersGetResponse = VideoAnalyzerModel & {
+  /**
+   * The underlying HTTP response.
+   */
+  _response: msRest.HttpResponse & {
+      /**
+       * The response body as text (string format)
+       */
+      bodyAsText: string;
+
+      /**
+       * The response body as parsed JSON or XML
+       */
+      parsedBody: VideoAnalyzerModel;
+    };
+};
+
+/**
+ * Contains response data for the createOrUpdate operation.
+ */
+export type VideoAnalyzersCreateOrUpdateResponse = VideoAnalyzerModel & VideoAnalyzersCreateOrUpdateHeaders & {
+  /**
+   * The underlying HTTP response.
+   */
+  _response: msRest.HttpResponse & {
+      /**
+       * The parsed HTTP response headers.
+       */
+      parsedHeaders: VideoAnalyzersCreateOrUpdateHeaders;
+
+      /**
+       * The response body as text (string format)
+       */
+      bodyAsText: string;
+
+      /**
+       * The response body as parsed JSON or XML
+       */
+      parsedBody: VideoAnalyzerModel;
+    };
+};
+
+/**
+ * Contains response data for the update operation.
+ */
+export type VideoAnalyzersUpdateResponse = VideoAnalyzerModel & VideoAnalyzersUpdateHeaders & {
+  /**
+   * The underlying HTTP response.
+   */
+  _response: msRest.HttpResponse & {
+      /**
+       * The parsed HTTP response headers.
+       */
+      parsedHeaders: VideoAnalyzersUpdateHeaders;
+
+      /**
+       * The response body as text (string format)
+       */
+      bodyAsText: string;
+
+      /**
+       * The response body as parsed JSON or XML
+       */
+      parsedBody: VideoAnalyzerModel;
+    };
+};
+
+/**
+ * Contains response data for the listBySubscription operation.
+ */
+export type VideoAnalyzersListBySubscriptionResponse = VideoAnalyzerCollection & {
+  /**
+   * The underlying HTTP response.
+   */
+  _response: msRest.HttpResponse & {
+      /**
+       * The response body as text (string format)
+       */
+      bodyAsText: string;
+
+      /**
+       * The response body as parsed JSON or XML
+       */
+      parsedBody: VideoAnalyzerCollection;
+    };
+};
+
+/**
+ * Contains response data for the list operation.
+ */
+export type PrivateLinkResourcesListResponse = PrivateLinkResourceListResult & {
+  /**
+   * The underlying HTTP response.
+   */
+  _response: msRest.HttpResponse & {
+      /**
+       * The response body as text (string format)
+       */
+      bodyAsText: string;
+
+      /**
+       * The response body as parsed JSON or XML
+       */
+      parsedBody: PrivateLinkResourceListResult;
+    };
+};
+
+/**
+ * Contains response data for the get operation.
+ */
+export type PrivateLinkResourcesGetResponse = PrivateLinkResource & {
+  /**
+   * The underlying HTTP response.
+   */
+  _response: msRest.HttpResponse & {
+      /**
+       * The response body as text (string format)
+       */
+      bodyAsText: string;
+
+      /**
+       * The response body as parsed JSON or XML
+       */
+      parsedBody: PrivateLinkResource;
+    };
+};
+
+/**
+ * Contains response data for the list operation.
+ */
+export type PrivateEndpointConnectionsListResponse = PrivateEndpointConnectionListResult & {
+  /**
+   * The underlying HTTP response.
+   */
+  _response: msRest.HttpResponse & {
+      /**
+       * The response body as text (string format)
+       */
+      bodyAsText: string;
+
+      /**
+       * The response body as parsed JSON or XML
+       */
+      parsedBody: PrivateEndpointConnectionListResult;
+    };
+};
+
+/**
+ * Contains response data for the get operation.
+ */
+export type PrivateEndpointConnectionsGetResponse = PrivateEndpointConnection & {
+  /**
+   * The underlying HTTP response.
+   */
+  _response: msRest.HttpResponse & {
+      /**
+       * The response body as text (string format)
+       */
+      bodyAsText: string;
+
+      /**
+       * The response body as parsed JSON or XML
+       */
+      parsedBody: PrivateEndpointConnection;
+    };
+};
+
+/**
+ * Contains response data for the createOrUpdate operation.
+ */
+export type PrivateEndpointConnectionsCreateOrUpdateResponse = PrivateEndpointConnection & PrivateEndpointConnectionsCreateOrUpdateHeaders & {
+  /**
+   * The underlying HTTP response.
+   */
+  _response: msRest.HttpResponse & {
+      /**
+       * The parsed HTTP response headers.
+       */
+      parsedHeaders: PrivateEndpointConnectionsCreateOrUpdateHeaders;
+
+      /**
+       * The response body as text (string format)
+       */
+      bodyAsText: string;
+
+      /**
+       * The response body as parsed JSON or XML
+       */
+      parsedBody: PrivateEndpointConnection;
+    };
+};
+
+/**
+ * Contains response data for the get operation.
+ */
+export type OperationStatusesGetResponse = VideoAnalyzerPrivateEndpointConnectionOperationStatus & {
+  /**
+   * The underlying HTTP response.
+   */
+  _response: msRest.HttpResponse & {
+      /**
+       * The response body as text (string format)
+       */
+      bodyAsText: string;
+
+      /**
+       * The response body as parsed JSON or XML
+       */
+      parsedBody: VideoAnalyzerPrivateEndpointConnectionOperationStatus;
+    };
+};
+
+/**
+ * Contains response data for the get operation.
+ */
+export type OperationResultsGetResponse = PrivateEndpointConnection & {
+  /**
+   * The underlying HTTP response.
+   */
+  _response: msRest.HttpResponse & {
+      /**
+       * The response body as text (string format)
+       */
+      bodyAsText: string;
+
+      /**
+       * The response body as parsed JSON or XML
+       */
+      parsedBody: PrivateEndpointConnection;
+    };
+};
+
+/**
+ * Contains response data for the get operation.
+ */
+export type VideoAnalyzerOperationStatusesGetResponse = VideoAnalyzerOperationStatus & {
+  /**
+   * The underlying HTTP response.
+   */
+  _response: msRest.HttpResponse & {
+      /**
+       * The response body as text (string format)
+       */
+      bodyAsText: string;
+
+      /**
+       * The response body as parsed JSON or XML
+       */
+      parsedBody: VideoAnalyzerOperationStatus;
+    };
+};
+
+/**
+ * Contains response data for the get operation.
+ */
+export type VideoAnalyzerOperationResultsGetResponse = VideoAnalyzerModel & {
+  /**
+   * The underlying HTTP response.
+   */
+  _response: msRest.HttpResponse & {
+      /**
+       * The response body as text (string format)
+       */
+      bodyAsText: string;
+
+      /**
+       * The response body as parsed JSON or XML
+       */
+      parsedBody: VideoAnalyzerModel;
+    };
+};
+
+/**
+ * Contains response data for the checkNameAvailability operation.
+ */
+export type LocationsCheckNameAvailabilityResponse = CheckNameAvailabilityResponse & {
+  /**
+   * The underlying HTTP response.
+   */
+  _response: msRest.HttpResponse & {
+      /**
+       * The response body as text (string format)
+       */
+      bodyAsText: string;
+
+      /**
+       * The response body as parsed JSON or XML
+       */
+      parsedBody: CheckNameAvailabilityResponse;
+    };
+};
+
+/**
+ * Contains response data for the list operation.
+ */
+export type VideosListResponse = VideoEntityCollection & {
+  /**
+   * The underlying HTTP response.
+   */
+  _response: msRest.HttpResponse & {
+      /**
+       * The response body as text (string format)
+       */
+      bodyAsText: string;
+
+      /**
+       * The response body as parsed JSON or XML
+       */
+      parsedBody: VideoEntityCollection;
+    };
+};
+
+/**
+ * Contains response data for the get operation.
+ */
+export type VideosGetResponse = VideoEntity & {
+  /**
+   * The underlying HTTP response.
+   */
+  _response: msRest.HttpResponse & {
+      /**
+       * The response body as text (string format)
+       */
+      bodyAsText: string;
+
+      /**
+       * The response body as parsed JSON or XML
+       */
+      parsedBody: VideoEntity;
+    };
+};
+
+/**
+ * Contains response data for the createOrUpdate operation.
+ */
+export type VideosCreateOrUpdateResponse = VideoEntity & {
+  /**
+   * The underlying HTTP response.
+   */
+  _response: msRest.HttpResponse & {
+      /**
+       * The response body as text (string format)
+       */
+      bodyAsText: string;
+
+      /**
+       * The response body as parsed JSON or XML
+       */
+      parsedBody: VideoEntity;
+    };
+};
+
+/**
+ * Contains response data for the update operation.
+ */
+export type VideosUpdateResponse = VideoEntity & {
+  /**
+   * The underlying HTTP response.
+   */
+  _response: msRest.HttpResponse & {
+      /**
+       * The response body as text (string format)
+       */
+      bodyAsText: string;
+
+      /**
+       * The response body as parsed JSON or XML
+       */
+      parsedBody: VideoEntity;
+    };
+};
+
+/**
+ * Contains response data for the listContentToken operation.
+ */
+export type VideosListContentTokenResponse = VideoContentToken & {
+  /**
+   * The underlying HTTP response.
+   */
+  _response: msRest.HttpResponse & {
+      /**
+       * The response body as text (string format)
+       */
+      bodyAsText: string;
+
+      /**
+       * The response body as parsed JSON or XML
+       */
+      parsedBody: VideoContentToken;
+    };
+};
+
+/**
+ * Contains response data for the listNext operation.
+ */
+export type VideosListNextResponse = VideoEntityCollection & {
+  /**
+   * The underlying HTTP response.
+   */
+  _response: msRest.HttpResponse & {
+      /**
+       * The response body as text (string format)
+       */
+      bodyAsText: string;
+
+      /**
+       * The response body as parsed JSON or XML
+       */
+      parsedBody: VideoEntityCollection;
+    };
+};
+
+/**
+ * Contains response data for the list operation.
+ */
+export type AccessPoliciesListResponse = AccessPolicyEntityCollection & {
+  /**
+   * The underlying HTTP response.
+   */
+  _response: msRest.HttpResponse & {
+      /**
+       * The response body as text (string format)
+       */
+      bodyAsText: string;
+
+      /**
+       * The response body as parsed JSON or XML
+       */
+      parsedBody: AccessPolicyEntityCollection;
+    };
+};
+
+/**
+ * Contains response data for the get operation.
+ */
+export type AccessPoliciesGetResponse = AccessPolicyEntity & {
+  /**
+   * The underlying HTTP response.
+   */
+  _response: msRest.HttpResponse & {
+      /**
+       * The response body as text (string format)
+       */
+      bodyAsText: string;
+
+      /**
+       * The response body as parsed JSON or XML
+       */
+      parsedBody: AccessPolicyEntity;
+    };
+};
+
+/**
+ * Contains response data for the createOrUpdate operation.
+ */
+export type AccessPoliciesCreateOrUpdateResponse = AccessPolicyEntity & {
+  /**
+   * The underlying HTTP response.
+   */
+  _response: msRest.HttpResponse & {
+      /**
+       * The response body as text (string format)
+       */
+      bodyAsText: string;
+
+      /**
+       * The response body as parsed JSON or XML
+       */
+      parsedBody: AccessPolicyEntity;
+    };
+};
+
+/**
+ * Contains response data for the update operation.
+ */
+export type AccessPoliciesUpdateResponse = AccessPolicyEntity & {
+  /**
+   * The underlying HTTP response.
+   */
+  _response: msRest.HttpResponse & {
+      /**
+       * The response body as text (string format)
+       */
+      bodyAsText: string;
+
+      /**
+       * The response body as parsed JSON or XML
+       */
+      parsedBody: AccessPolicyEntity;
+    };
+};
+
+/**
+ * Contains response data for the listNext operation.
+ */
+export type AccessPoliciesListNextResponse = AccessPolicyEntityCollection & {
+  /**
+   * The underlying HTTP response.
+   */
+  _response: msRest.HttpResponse & {
+      /**
+       * The response body as text (string format)
+       */
+      bodyAsText: string;
+
+      /**
+       * The response body as parsed JSON or XML
+       */
+      parsedBody: AccessPolicyEntityCollection;
+    };
+};
diff --git a/sdk/videoanalyzer/arm-videoanalyzer/src/models/livePipelineOperationStatusesMappers.ts b/sdk/videoanalyzer/arm-videoanalyzer/src/models/livePipelineOperationStatusesMappers.ts
new file mode 100644
index 000000000000..46c36c2751cb
--- /dev/null
+++ b/sdk/videoanalyzer/arm-videoanalyzer/src/models/livePipelineOperationStatusesMappers.ts
@@ -0,0 +1,15 @@
+/*
+ * Copyright (c) Microsoft Corporation.
+ * Licensed under the MIT License.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ * Changes may cause incorrect behavior and will be lost if the code is regenerated.
+ */
+
+export {
+  discriminators,
+  ErrorAdditionalInfo,
+  ErrorDetail,
+  ErrorResponse,
+  LivePipelineOperationStatus
+} from "../models/mappers";
diff --git a/sdk/videoanalyzer/arm-videoanalyzer/src/models/livePipelinesMappers.ts b/sdk/videoanalyzer/arm-videoanalyzer/src/models/livePipelinesMappers.ts
new file mode 100644
index 000000000000..c2a6dbf711a1
--- /dev/null
+++ b/sdk/videoanalyzer/arm-videoanalyzer/src/models/livePipelinesMappers.ts
@@ -0,0 +1,91 @@
+/*
+ * Copyright (c) Microsoft Corporation.
+ * Licensed under the MIT License.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ * Changes may cause incorrect behavior and will be lost if the code is regenerated.
+ */
+
+export {
+  discriminators,
+  AccessPolicyEntity,
+  AccountEncryption,
+  AudioEncoderAac,
+  AudioEncoderBase,
+  AuthenticationBase,
+  AzureEntityResource,
+  BaseResource,
+  CertificateSource,
+  CredentialsBase,
+  EccTokenKey,
+  EdgeModuleEntity,
+  EncoderCustomPreset,
+  EncoderPresetBase,
+  EncoderProcessor,
+  EncoderSystemPreset,
+  Endpoint,
+  EndpointBase,
+  ErrorAdditionalInfo,
+  ErrorDetail,
+  ErrorResponse,
+  GroupLevelAccessControl,
+  IotHub,
+  JwtAuthentication,
+  KeyVaultProperties,
+  LivePipeline,
+  LivePipelineCollection,
+  LivePipelineUpdate,
+  NetworkAccessControl,
+  NodeBase,
+  NodeInput,
+  ParameterDeclaration,
+  ParameterDefinition,
+  PemCertificateList,
+  PipelineJob,
+  PipelineJobError,
+  PipelineJobUpdate,
+  PipelineTopology,
+  PipelineTopologyUpdate,
+  PrivateEndpoint,
+  PrivateEndpointConnection,
+  PrivateLinkResource,
+  PrivateLinkServiceConnectionState,
+  ProcessorNodeBase,
+  ProxyResource,
+  Resource,
+  ResourceIdentity,
+  RsaTokenKey,
+  RtspSource,
+  SecureIotDeviceRemoteTunnel,
+  SinkNodeBase,
+  Sku,
+  SourceNodeBase,
+  StorageAccount,
+  SystemData,
+  TimeSequenceBase,
+  TlsEndpoint,
+  TlsValidationOptions,
+  TokenClaim,
+  TokenKey,
+  TrackedResource,
+  TunnelBase,
+  UnsecuredEndpoint,
+  UserAssignedManagedIdentity,
+  UsernamePasswordCredentials,
+  VideoAnalyzerIdentity,
+  VideoAnalyzerModel,
+  VideoArchival,
+  VideoContentUrls,
+  VideoCreationProperties,
+  VideoEncoderBase,
+  VideoEncoderH264,
+  VideoEntity,
+  VideoFlags,
+  VideoMediaInfo,
+  VideoPreviewImageUrls,
+  VideoPublishingOptions,
+  VideoScale,
+  VideoSequenceAbsoluteTimeMarkers,
+  VideoSink,
+  VideoSource
+} from "../models/mappers";
diff --git a/sdk/videoanalyzer/arm-videoanalyzer/src/models/locationsMappers.ts b/sdk/videoanalyzer/arm-videoanalyzer/src/models/locationsMappers.ts
new file mode 100644
index 000000000000..2e6b25ad20cf
--- /dev/null
+++ b/sdk/videoanalyzer/arm-videoanalyzer/src/models/locationsMappers.ts
@@ -0,0 +1,16 @@
+/*
+ * Copyright (c) Microsoft Corporation.
+ * Licensed under the MIT License.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ * Changes may cause incorrect behavior and will be lost if the code is regenerated.
+ */
+
+export {
+  discriminators,
+  CheckNameAvailabilityRequest,
+  CheckNameAvailabilityResponse,
+  ErrorAdditionalInfo,
+  ErrorDetail,
+  ErrorResponse
+} from "../models/mappers";
diff --git a/sdk/videoanalyzer/arm-videoanalyzer/src/models/mappers.ts b/sdk/videoanalyzer/arm-videoanalyzer/src/models/mappers.ts
new file mode 100644
index 000000000000..cb53cc597cd0
--- /dev/null
+++ b/sdk/videoanalyzer/arm-videoanalyzer/src/models/mappers.ts
@@ -0,0 +1,3502 @@
+/*
+ * Copyright (c) Microsoft Corporation.
+ * Licensed under the MIT License.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ * Changes may cause incorrect behavior and will be lost if the code is regenerated.
+ */
+
+import { CloudErrorMapper, BaseResourceMapper } from "@azure/ms-rest-azure-js";
+import * as msRest from "@azure/ms-rest-js";
+
+export const CloudError = CloudErrorMapper;
+export const BaseResource = BaseResourceMapper;
+
+export const ListProvisioningTokenInput: msRest.CompositeMapper = {
+  serializedName: "ListProvisioningTokenInput",
+  type: {
+    name: "Composite",
+    className: "ListProvisioningTokenInput",
+    modelProperties: {
+      expirationDate: {
+        required: true,
+        serializedName: "expirationDate",
+        type: {
+          name: "DateTime"
+        }
+      }
+    }
+  }
+};
+
+export const EdgeModuleProvisioningToken: msRest.CompositeMapper = {
+  serializedName: "EdgeModuleProvisioningToken",
+  type: {
+    name: "Composite",
+    className: "EdgeModuleProvisioningToken",
+    modelProperties: {
+      expirationDate: {
+        nullable: false,
+        readOnly: true,
+        serializedName: "expirationDate",
+        type: {
+          name: "DateTime"
+        }
+      },
+      token: {
+        readOnly: true,
+        serializedName: "token",
+        type: {
+          name: "String"
+        }
+      }
+    }
+  }
+};
+
+export const Resource: msRest.CompositeMapper = {
+  serializedName: "Resource",
+  type: {
+    name: "Composite",
+    className: "Resource",
+    modelProperties: {
+      id: {
+        readOnly: true,
+        serializedName: "id",
+        type: {
+          name: "String"
+        }
+      },
+      name: {
+        readOnly: true,
+        serializedName: "name",
+        type: {
+          name: "String"
+        }
+      },
+      type: {
+        readOnly: true,
+        serializedName: "type",
+        type: {
+          name: "String"
+        }
+      },
+      systemData: {
+        readOnly: true,
+        serializedName: "systemData",
+        type: {
+          name: "Composite",
+          className: "SystemData"
+        }
+      }
+    }
+  }
+};
+
+export const ProxyResource: msRest.CompositeMapper = {
+  serializedName: "ProxyResource",
+  type: {
+    name: "Composite",
+    className: "ProxyResource",
+    modelProperties: {
+      ...Resource.type.modelProperties
+    }
+  }
+};
+
+export const EdgeModuleEntity: msRest.CompositeMapper = {
+  serializedName: "EdgeModuleEntity",
+  type: {
+    name: "Composite",
+    className: "EdgeModuleEntity",
+    modelProperties: {
+      ...ProxyResource.type.modelProperties,
+      edgeModuleId: {
+        nullable: false,
+        readOnly: true,
+        serializedName: "properties.edgeModuleId",
+        type: {
+          name: "Uuid"
+        }
+      }
+    }
+  }
+};
+
+export const ErrorAdditionalInfo: msRest.CompositeMapper = {
+  serializedName: "ErrorAdditionalInfo",
+  type: {
+    name: "Composite",
+    className: "ErrorAdditionalInfo",
+    modelProperties: {
+      type: {
+        readOnly: true,
+        serializedName: "type",
+        type: {
+          name: "String"
+        }
+      },
+      info: {
+        readOnly: true,
+        serializedName: "info",
+        type: {
+          name: "Object"
+        }
+      }
+    }
+  }
+};
+
+export const ErrorDetail: msRest.CompositeMapper = {
+  serializedName: "ErrorDetail",
+  type: {
+    name: "Composite",
+    className: "ErrorDetail",
+    modelProperties: {
+      code: {
+        readOnly: true,
+        serializedName: "code",
+        type: {
+          name: "String"
+        }
+      },
+      message: {
+        readOnly: true,
+        serializedName: "message",
+        type: {
+          name: "String"
+        }
+      },
+      target: {
+        readOnly: true,
+        serializedName: "target",
+        type: {
+          name: "String"
+        }
+      },
+      details: {
+        readOnly: true,
+        serializedName: "details",
+        type: {
+          name: "Sequence",
+          element: {
+            type: {
+              name: "Composite",
+              className: "ErrorDetail"
+            }
+          }
+        }
+      },
+      additionalInfo: {
+        readOnly: true,
+        serializedName: "additionalInfo",
+        type: {
+          name: "Sequence",
+          element: {
+            type: {
+              name: "Composite",
+              className: "ErrorAdditionalInfo"
+            }
+          }
+        }
+      }
+    }
+  }
+};
+
+export const ErrorResponse: msRest.CompositeMapper = {
+  serializedName: "ErrorResponse",
+  type: {
+    name: "Composite",
+    className: "ErrorResponse",
+    modelProperties: {
+      error: {
+        serializedName: "error",
+        type: {
+          name: "Composite",
+          className: "ErrorDetail"
+        }
+      }
+    }
+  }
+};
+
+export const SystemData: msRest.CompositeMapper = {
+  serializedName: "systemData",
+  type: {
+    name: "Composite",
+    className: "SystemData",
+    modelProperties: {
+      createdBy: {
+        serializedName: "createdBy",
+        type: {
+          name: "String"
+        }
+      },
+      createdByType: {
+        serializedName: "createdByType",
+        type: {
+          name: "String"
+        }
+      },
+      createdAt: {
+        serializedName: "createdAt",
+        type: {
+          name: "DateTime"
+        }
+      },
+      lastModifiedBy: {
+        serializedName: "lastModifiedBy",
+        type: {
+          name: "String"
+        }
+      },
+      lastModifiedByType: {
+        serializedName: "lastModifiedByType",
+        type: {
+          name: "String"
+        }
+      },
+      lastModifiedAt: {
+        serializedName: "lastModifiedAt",
+        type: {
+          name: "DateTime"
+        }
+      }
+    }
+  }
+};
+
+export const TrackedResource: msRest.CompositeMapper = {
+  serializedName: "TrackedResource",
+  type: {
+    name: "Composite",
+    className: "TrackedResource",
+    modelProperties: {
+      ...Resource.type.modelProperties,
+      tags: {
+        serializedName: "tags",
+        type: {
+          name: "Dictionary",
+          value: {
+            type: {
+              name: "String"
+            }
+          }
+        }
+      },
+      location: {
+        required: true,
+        serializedName: "location",
+        type: {
+          name: "String"
+        }
+      }
+    }
+  }
+};
+
+export const AzureEntityResource: msRest.CompositeMapper = {
+  serializedName: "AzureEntityResource",
+  type: {
+    name: "Composite",
+    className: "AzureEntityResource",
+    modelProperties: {
+      ...Resource.type.modelProperties,
+      etag: {
+        readOnly: true,
+        serializedName: "etag",
+        type: {
+          name: "String"
+        }
+      }
+    }
+  }
+};
+
+export const Sku: msRest.CompositeMapper = {
+  serializedName: "Sku",
+  type: {
+    name: "Composite",
+    className: "Sku",
+    modelProperties: {
+      name: {
+        required: true,
+        serializedName: "name",
+        type: {
+          name: "String"
+        }
+      },
+      tier: {
+        nullable: false,
+        readOnly: true,
+        serializedName: "tier",
+        type: {
+          name: "String"
+        }
+      }
+    }
+  }
+};
+
+export const ParameterDeclaration: msRest.CompositeMapper = {
+  serializedName: "ParameterDeclaration",
+  type: {
+    name: "Composite",
+    className: "ParameterDeclaration",
+    modelProperties: {
+      name: {
+        required: true,
+        serializedName: "name",
+        type: {
+          name: "String"
+        }
+      },
+      type: {
+        required: true,
+        serializedName: "type",
+        type: {
+          name: "String"
+        }
+      },
+      description: {
+        serializedName: "description",
+        type: {
+          name: "String"
+        }
+      },
+      default: {
+        serializedName: "default",
+        type: {
+          name: "String"
+        }
+      }
+    }
+  }
+};
+
+export const NodeBase: msRest.CompositeMapper = {
+  serializedName: "NodeBase",
+  type: {
+    name: "Composite",
+    polymorphicDiscriminator: {
+      serializedName: "@type",
+      clientName: "type"
+    },
+    uberParent: "NodeBase",
+    className: "NodeBase",
+    modelProperties: {
+      name: {
+        required: true,
+        serializedName: "name",
+        type: {
+          name: "String"
+        }
+      },
+      type: {
+        required: true,
+        serializedName: "@type",
+        type: {
+          name: "String"
+        }
+      }
+    }
+  }
+};
+
+export const SourceNodeBase: msRest.CompositeMapper = {
+  serializedName: "#Microsoft.VideoAnalyzer.SourceNodeBase",
+  type: {
+    name: "Composite",
+    polymorphicDiscriminator: NodeBase.type.polymorphicDiscriminator,
+    uberParent: "NodeBase",
+    className: "SourceNodeBase",
+    modelProperties: {
+      ...NodeBase.type.modelProperties
+    }
+  }
+};
+
+export const NodeInput: msRest.CompositeMapper = {
+  serializedName: "NodeInput",
+  type: {
+    name: "Composite",
+    className: "NodeInput",
+    modelProperties: {
+      nodeName: {
+        required: true,
+        serializedName: "nodeName",
+        type: {
+          name: "String"
+        }
+      }
+    }
+  }
+};
+
+export const ProcessorNodeBase: msRest.CompositeMapper = {
+  serializedName: "#Microsoft.VideoAnalyzer.ProcessorNodeBase",
+  type: {
+    name: "Composite",
+    polymorphicDiscriminator: NodeBase.type.polymorphicDiscriminator,
+    uberParent: "NodeBase",
+    className: "ProcessorNodeBase",
+    modelProperties: {
+      ...NodeBase.type.modelProperties,
+      inputs: {
+        required: true,
+        serializedName: "inputs",
+        type: {
+          name: "Sequence",
+          element: {
+            type: {
+              name: "Composite",
+              className: "NodeInput"
+            }
+          }
+        }
+      }
+    }
+  }
+};
+
+export const SinkNodeBase: msRest.CompositeMapper = {
+  serializedName: "#Microsoft.VideoAnalyzer.SinkNodeBase",
+  type: {
+    name: "Composite",
+    polymorphicDiscriminator: NodeBase.type.polymorphicDiscriminator,
+    uberParent: "NodeBase",
+    className: "SinkNodeBase",
+    modelProperties: {
+      ...NodeBase.type.modelProperties,
+      inputs: {
+        required: true,
+        serializedName: "inputs",
+        type: {
+          name: "Sequence",
+          element: {
+            type: {
+              name: "Composite",
+              className: "NodeInput"
+            }
+          }
+        }
+      }
+    }
+  }
+};
+
+export const CredentialsBase: msRest.CompositeMapper = {
+  serializedName: "CredentialsBase",
+  type: {
+    name: "Composite",
+    polymorphicDiscriminator: {
+      serializedName: "@type",
+      clientName: "type"
+    },
+    uberParent: "CredentialsBase",
+    className: "CredentialsBase",
+    modelProperties: {
+      type: {
+        required: true,
+        serializedName: "@type",
+        type: {
+          name: "String"
+        }
+      }
+    }
+  }
+};
+
+export const TunnelBase: msRest.CompositeMapper = {
+  serializedName: "TunnelBase",
+  type: {
+    name: "Composite",
+    polymorphicDiscriminator: {
+      serializedName: "@type",
+      clientName: "type"
+    },
+    uberParent: "TunnelBase",
+    className: "TunnelBase",
+    modelProperties: {
+      type: {
+        required: true,
+        serializedName: "@type",
+        type: {
+          name: "String"
+        }
+      }
+    }
+  }
+};
+
+export const EndpointBase: msRest.CompositeMapper = {
+  serializedName: "EndpointBase",
+  type: {
+    name: "Composite",
+    polymorphicDiscriminator: {
+      serializedName: "@type",
+      clientName: "type"
+    },
+    uberParent: "EndpointBase",
+    className: "EndpointBase",
+    modelProperties: {
+      credentials: {
+        serializedName: "credentials",
+        type: {
+          name: "Composite",
+          className: "CredentialsBase"
+        }
+      },
+      url: {
+        required: true,
+        serializedName: "url",
+        type: {
+          name: "String"
+        }
+      },
+      tunnel: {
+        serializedName: "tunnel",
+        type: {
+          name: "Composite",
+          className: "TunnelBase"
+        }
+      },
+      type: {
+        required: true,
+        serializedName: "@type",
+        type: {
+          name: "String"
+        }
+      }
+    }
+  }
+};
+
+export const RtspSource: msRest.CompositeMapper = {
+  serializedName: "#Microsoft.VideoAnalyzer.RtspSource",
+  type: {
+    name: "Composite",
+    polymorphicDiscriminator: NodeBase.type.polymorphicDiscriminator,
+    uberParent: "NodeBase",
+    className: "RtspSource",
+    modelProperties: {
+      ...SourceNodeBase.type.modelProperties,
+      transport: {
+        serializedName: "transport",
+        type: {
+          name: "String"
+        }
+      },
+      endpoint: {
+        required: true,
+        serializedName: "endpoint",
+        type: {
+          name: "Composite",
+          className: "EndpointBase"
+        }
+      }
+    }
+  }
+};
+
+export const UsernamePasswordCredentials: msRest.CompositeMapper = {
+  serializedName: "#Microsoft.VideoAnalyzer.UsernamePasswordCredentials",
+  type: {
+    name: "Composite",
+    polymorphicDiscriminator: CredentialsBase.type.polymorphicDiscriminator,
+    uberParent: "CredentialsBase",
+    className: "UsernamePasswordCredentials",
+    modelProperties: {
+      ...CredentialsBase.type.modelProperties,
+      username: {
+        required: true,
+        serializedName: "username",
+        type: {
+          name: "String"
+        }
+      },
+      password: {
+        required: true,
+        serializedName: "password",
+        type: {
+          name: "String"
+        }
+      }
+    }
+  }
+};
+
+export const SecureIotDeviceRemoteTunnel: msRest.CompositeMapper = {
+  serializedName: "#Microsoft.VideoAnalyzer.SecureIotDeviceRemoteTunnel",
+  type: {
+    name: "Composite",
+    polymorphicDiscriminator: TunnelBase.type.polymorphicDiscriminator,
+    uberParent: "TunnelBase",
+    className: "SecureIotDeviceRemoteTunnel",
+    modelProperties: {
+      ...TunnelBase.type.modelProperties,
+      iotHubName: {
+        required: true,
+        serializedName: "iotHubName",
+        type: {
+          name: "String"
+        }
+      },
+      deviceId: {
+        required: true,
+        serializedName: "deviceId",
+        type: {
+          name: "String"
+        }
+      }
+    }
+  }
+};
+
+export const UnsecuredEndpoint: msRest.CompositeMapper = {
+  serializedName: "#Microsoft.VideoAnalyzer.UnsecuredEndpoint",
+  type: {
+    name: "Composite",
+    polymorphicDiscriminator: EndpointBase.type.polymorphicDiscriminator,
+    uberParent: "EndpointBase",
+    className: "UnsecuredEndpoint",
+    modelProperties: {
+      ...EndpointBase.type.modelProperties
+    }
+  }
+};
+
+export const CertificateSource: msRest.CompositeMapper = {
+  serializedName: "CertificateSource",
+  type: {
+    name: "Composite",
+    polymorphicDiscriminator: {
+      serializedName: "@type",
+      clientName: "type"
+    },
+    uberParent: "CertificateSource",
+    className: "CertificateSource",
+    modelProperties: {
+      type: {
+        required: true,
+        serializedName: "@type",
+        type: {
+          name: "String"
+        }
+      }
+    }
+  }
+};
+
+export const TlsValidationOptions: msRest.CompositeMapper = {
+  serializedName: "TlsValidationOptions",
+  type: {
+    name: "Composite",
+    className: "TlsValidationOptions",
+    modelProperties: {
+      ignoreHostname: {
+        serializedName: "ignoreHostname",
+        type: {
+          name: "String"
+        }
+      },
+      ignoreSignature: {
+        serializedName: "ignoreSignature",
+        type: {
+          name: "String"
+        }
+      }
+    }
+  }
+};
+
+export const TlsEndpoint: msRest.CompositeMapper = {
+  serializedName: "#Microsoft.VideoAnalyzer.TlsEndpoint",
+  type: {
+    name: "Composite",
+    polymorphicDiscriminator: EndpointBase.type.polymorphicDiscriminator,
+    uberParent: "EndpointBase",
+    className: "TlsEndpoint",
+    modelProperties: {
+      ...EndpointBase.type.modelProperties,
+      trustedCertificates: {
+        serializedName: "trustedCertificates",
+        type: {
+          name: "Composite",
+          className: "CertificateSource"
+        }
+      },
+      validationOptions: {
+        serializedName: "validationOptions",
+        type: {
+          name: "Composite",
+          className: "TlsValidationOptions"
+        }
+      }
+    }
+  }
+};
+
+export const PemCertificateList: msRest.CompositeMapper = {
+  serializedName: "#Microsoft.VideoAnalyzer.PemCertificateList",
+  type: {
+    name: "Composite",
+    polymorphicDiscriminator: CertificateSource.type.polymorphicDiscriminator,
+    uberParent: "CertificateSource",
+    className: "PemCertificateList",
+    modelProperties: {
+      ...CertificateSource.type.modelProperties,
+      certificates: {
+        required: true,
+        serializedName: "certificates",
+        type: {
+          name: "Sequence",
+          element: {
+            type: {
+              name: "String"
+            }
+          }
+        }
+      }
+    }
+  }
+};
+
+export const TimeSequenceBase: msRest.CompositeMapper = {
+  serializedName: "TimeSequenceBase",
+  type: {
+    name: "Composite",
+    polymorphicDiscriminator: {
+      serializedName: "@type",
+      clientName: "type"
+    },
+    uberParent: "TimeSequenceBase",
+    className: "TimeSequenceBase",
+    modelProperties: {
+      type: {
+        required: true,
+        serializedName: "@type",
+        type: {
+          name: "String"
+        }
+      }
+    }
+  }
+};
+
+export const VideoSource: msRest.CompositeMapper = {
+  serializedName: "#Microsoft.VideoAnalyzer.VideoSource",
+  type: {
+    name: "Composite",
+    polymorphicDiscriminator: NodeBase.type.polymorphicDiscriminator,
+    uberParent: "NodeBase",
+    className: "VideoSource",
+    modelProperties: {
+      ...SourceNodeBase.type.modelProperties,
+      videoName: {
+        required: true,
+        serializedName: "videoName",
+        type: {
+          name: "String"
+        }
+      },
+      timeSequences: {
+        required: true,
+        serializedName: "timeSequences",
+        type: {
+          name: "Composite",
+          className: "TimeSequenceBase"
+        }
+      }
+    }
+  }
+};
+
+export const VideoSequenceAbsoluteTimeMarkers: msRest.CompositeMapper = {
+  serializedName: "#Microsoft.VideoAnalyzer.VideoSequenceAbsoluteTimeMarkers",
+  type: {
+    name: "Composite",
+    polymorphicDiscriminator: TimeSequenceBase.type.polymorphicDiscriminator,
+    uberParent: "TimeSequenceBase",
+    className: "VideoSequenceAbsoluteTimeMarkers",
+    modelProperties: {
+      ...TimeSequenceBase.type.modelProperties,
+      ranges: {
+        required: true,
+        serializedName: "ranges",
+        type: {
+          name: "String"
+        }
+      }
+    }
+  }
+};
+
+export const EncoderPresetBase: msRest.CompositeMapper = {
+  serializedName: "EncoderPresetBase",
+  type: {
+    name: "Composite",
+    polymorphicDiscriminator: {
+      serializedName: "@type",
+      clientName: "type"
+    },
+    uberParent: "EncoderPresetBase",
+    className: "EncoderPresetBase",
+    modelProperties: {
+      type: {
+        required: true,
+        serializedName: "@type",
+        type: {
+          name: "String"
+        }
+      }
+    }
+  }
+};
+
+export const EncoderProcessor: msRest.CompositeMapper = {
+  serializedName: "#Microsoft.VideoAnalyzer.EncoderProcessor",
+  type: {
+    name: "Composite",
+    polymorphicDiscriminator: NodeBase.type.polymorphicDiscriminator,
+    uberParent: "NodeBase",
+    className: "EncoderProcessor",
+    modelProperties: {
+      ...ProcessorNodeBase.type.modelProperties,
+      preset: {
+        required: true,
+        serializedName: "preset",
+        type: {
+          name: "Composite",
+          className: "EncoderPresetBase"
+        }
+      }
+    }
+  }
+};
+
+export const EncoderSystemPreset: msRest.CompositeMapper = {
+  serializedName: "#Microsoft.VideoAnalyzer.EncoderSystemPreset",
+  type: {
+    name: "Composite",
+    polymorphicDiscriminator: EncoderPresetBase.type.polymorphicDiscriminator,
+    uberParent: "EncoderPresetBase",
+    className: "EncoderSystemPreset",
+    modelProperties: {
+      ...EncoderPresetBase.type.modelProperties,
+      name: {
+        required: true,
+        serializedName: "name",
+        type: {
+          name: "String"
+        }
+      }
+    }
+  }
+};
+
+export const AudioEncoderBase: msRest.CompositeMapper = {
+  serializedName: "AudioEncoderBase",
+  type: {
+    name: "Composite",
+    polymorphicDiscriminator: {
+      serializedName: "@type",
+      clientName: "type"
+    },
+    uberParent: "AudioEncoderBase",
+    className: "AudioEncoderBase",
+    modelProperties: {
+      bitrateKbps: {
+        serializedName: "bitrateKbps",
+        type: {
+          name: "String"
+        }
+      },
+      type: {
+        required: true,
+        serializedName: "@type",
+        type: {
+          name: "String"
+        }
+      }
+    }
+  }
+};
+
+export const VideoScale: msRest.CompositeMapper = {
+  serializedName: "VideoScale",
+  type: {
+    name: "Composite",
+    className: "VideoScale",
+    modelProperties: {
+      height: {
+        serializedName: "height",
+        type: {
+          name: "String"
+        }
+      },
+      width: {
+        serializedName: "width",
+        type: {
+          name: "String"
+        }
+      },
+      mode: {
+        serializedName: "mode",
+        type: {
+          name: "String"
+        }
+      }
+    }
+  }
+};
+
+export const VideoEncoderBase: msRest.CompositeMapper = {
+  serializedName: "VideoEncoderBase",
+  type: {
+    name: "Composite",
+    polymorphicDiscriminator: {
+      serializedName: "@type",
+      clientName: "type"
+    },
+    uberParent: "VideoEncoderBase",
+    className: "VideoEncoderBase",
+    modelProperties: {
+      bitrateKbps: {
+        serializedName: "bitrateKbps",
+        type: {
+          name: "String"
+        }
+      },
+      frameRate: {
+        serializedName: "frameRate",
+        type: {
+          name: "String"
+        }
+      },
+      scale: {
+        serializedName: "scale",
+        type: {
+          name: "Composite",
+          className: "VideoScale"
+        }
+      },
+      type: {
+        required: true,
+        serializedName: "@type",
+        type: {
+          name: "String"
+        }
+      }
+    }
+  }
+};
+
+export const EncoderCustomPreset: msRest.CompositeMapper = {
+  serializedName: "#Microsoft.VideoAnalyzer.EncoderCustomPreset",
+  type: {
+    name: "Composite",
+    polymorphicDiscriminator: EncoderPresetBase.type.polymorphicDiscriminator,
+    uberParent: "EncoderPresetBase",
+    className: "EncoderCustomPreset",
+    modelProperties: {
+      ...EncoderPresetBase.type.modelProperties,
+      audioEncoder: {
+        serializedName: "audioEncoder",
+        type: {
+          name: "Composite",
+          className: "AudioEncoderBase"
+        }
+      },
+      videoEncoder: {
+        serializedName: "videoEncoder",
+        type: {
+          name: "Composite",
+          className: "VideoEncoderBase"
+        }
+      }
+    }
+  }
+};
+
+export const AudioEncoderAac: msRest.CompositeMapper = {
+  serializedName: "#Microsoft.VideoAnalyzer.AudioEncoderAac",
+  type: {
+    name: "Composite",
+    polymorphicDiscriminator: AudioEncoderBase.type.polymorphicDiscriminator,
+    uberParent: "AudioEncoderBase",
+    className: "AudioEncoderAac",
+    modelProperties: {
+      ...AudioEncoderBase.type.modelProperties
+    }
+  }
+};
+
+export const VideoEncoderH264: msRest.CompositeMapper = {
+  serializedName: "#Microsoft.VideoAnalyzer.VideoEncoderH264",
+  type: {
+    name: "Composite",
+    polymorphicDiscriminator: VideoEncoderBase.type.polymorphicDiscriminator,
+    uberParent: "VideoEncoderBase",
+    className: "VideoEncoderH264",
+    modelProperties: {
+      ...VideoEncoderBase.type.modelProperties
+    }
+  }
+};
+
+export const VideoCreationProperties: msRest.CompositeMapper = {
+  serializedName: "VideoCreationProperties",
+  type: {
+    name: "Composite",
+    className: "VideoCreationProperties",
+    modelProperties: {
+      title: {
+        serializedName: "title",
+        type: {
+          name: "String"
+        }
+      },
+      description: {
+        serializedName: "description",
+        type: {
+          name: "String"
+        }
+      },
+      segmentLength: {
+        serializedName: "segmentLength",
+        type: {
+          name: "String"
+        }
+      },
+      retentionPeriod: {
+        serializedName: "retentionPeriod",
+        type: {
+          name: "String"
+        }
+      }
+    }
+  }
+};
+
+export const VideoPublishingOptions: msRest.CompositeMapper = {
+  serializedName: "VideoPublishingOptions",
+  type: {
+    name: "Composite",
+    className: "VideoPublishingOptions",
+    modelProperties: {
+      disableArchive: {
+        serializedName: "disableArchive",
+        type: {
+          name: "String"
+        }
+      },
+      disableRtspPublishing: {
+        serializedName: "disableRtspPublishing",
+        type: {
+          name: "String"
+        }
+      }
+    }
+  }
+};
+
+export const VideoSink: msRest.CompositeMapper = {
+  serializedName: "#Microsoft.VideoAnalyzer.VideoSink",
+  type: {
+    name: "Composite",
+    polymorphicDiscriminator: NodeBase.type.polymorphicDiscriminator,
+    uberParent: "NodeBase",
+    className: "VideoSink",
+    modelProperties: {
+      ...SinkNodeBase.type.modelProperties,
+      videoName: {
+        required: true,
+        serializedName: "videoName",
+        type: {
+          name: "String"
+        }
+      },
+      videoCreationProperties: {
+        serializedName: "videoCreationProperties",
+        type: {
+          name: "Composite",
+          className: "VideoCreationProperties"
+        }
+      },
+      videoPublishingOptions: {
+        serializedName: "videoPublishingOptions",
+        type: {
+          name: "Composite",
+          className: "VideoPublishingOptions"
+        }
+      }
+    }
+  }
+};
+
+export const ParameterDefinition: msRest.CompositeMapper = {
+  serializedName: "ParameterDefinition",
+  type: {
+    name: "Composite",
+    className: "ParameterDefinition",
+    modelProperties: {
+      name: {
+        required: true,
+        serializedName: "name",
+        type: {
+          name: "String"
+        }
+      },
+      value: {
+        serializedName: "value",
+        type: {
+          name: "String"
+        }
+      }
+    }
+  }
+};
+
+export const PipelineTopology: msRest.CompositeMapper = {
+  serializedName: "PipelineTopology",
+  type: {
+    name: "Composite",
+    className: "PipelineTopology",
+    modelProperties: {
+      ...ProxyResource.type.modelProperties,
+      description: {
+        serializedName: "properties.description",
+        type: {
+          name: "String"
+        }
+      },
+      parameters: {
+        serializedName: "properties.parameters",
+        type: {
+          name: "Sequence",
+          element: {
+            type: {
+              name: "Composite",
+              className: "ParameterDeclaration"
+            }
+          }
+        }
+      },
+      sources: {
+        required: true,
+        serializedName: "properties.sources",
+        type: {
+          name: "Sequence",
+          element: {
+            type: {
+              name: "Composite",
+              className: "SourceNodeBase"
+            }
+          }
+        }
+      },
+      processors: {
+        serializedName: "properties.processors",
+        type: {
+          name: "Sequence",
+          element: {
+            type: {
+              name: "Composite",
+              className: "ProcessorNodeBase"
+            }
+          }
+        }
+      },
+      sinks: {
+        required: true,
+        serializedName: "properties.sinks",
+        type: {
+          name: "Sequence",
+          element: {
+            type: {
+              name: "Composite",
+              className: "SinkNodeBase"
+            }
+          }
+        }
+      },
+      kind: {
+        required: true,
+        serializedName: "kind",
+        type: {
+          name: "String"
+        }
+      },
+      sku: {
+        required: true,
+        serializedName: "sku",
+        type: {
+          name: "Composite",
+          className: "Sku"
+        }
+      }
+    }
+  }
+};
+
+export const PipelineTopologyUpdate: msRest.CompositeMapper = {
+  serializedName: "PipelineTopologyUpdate",
+  type: {
+    name: "Composite",
+    className: "PipelineTopologyUpdate",
+    modelProperties: {
+      ...ProxyResource.type.modelProperties,
+      description: {
+        serializedName: "properties.description",
+        type: {
+          name: "String"
+        }
+      },
+      parameters: {
+        serializedName: "properties.parameters",
+        type: {
+          name: "Sequence",
+          element: {
+            type: {
+              name: "Composite",
+              className: "ParameterDeclaration"
+            }
+          }
+        }
+      },
+      sources: {
+        serializedName: "properties.sources",
+        type: {
+          name: "Sequence",
+          element: {
+            type: {
+              name: "Composite",
+              className: "SourceNodeBase"
+            }
+          }
+        }
+      },
+      processors: {
+        serializedName: "properties.processors",
+        type: {
+          name: "Sequence",
+          element: {
+            type: {
+              name: "Composite",
+              className: "ProcessorNodeBase"
+            }
+          }
+        }
+      },
+      sinks: {
+        serializedName: "properties.sinks",
+        type: {
+          name: "Sequence",
+          element: {
+            type: {
+              name: "Composite",
+              className: "SinkNodeBase"
+            }
+          }
+        }
+      },
+      kind: {
+        serializedName: "kind",
+        type: {
+          name: "String"
+        }
+      },
+      sku: {
+        serializedName: "sku",
+        type: {
+          name: "Composite",
+          className: "Sku"
+        }
+      }
+    }
+  }
+};
+
+export const LivePipeline: msRest.CompositeMapper = {
+  serializedName: "LivePipeline",
+  type: {
+    name: "Composite",
+    className: "LivePipeline",
+    modelProperties: {
+      ...ProxyResource.type.modelProperties,
+      topologyName: {
+        required: true,
+        serializedName: "properties.topologyName",
+        type: {
+          name: "String"
+        }
+      },
+      description: {
+        serializedName: "properties.description",
+        type: {
+          name: "String"
+        }
+      },
+      bitrateKbps: {
+        required: true,
+        serializedName: "properties.bitrateKbps",
+        type: {
+          name: "Number"
+        }
+      },
+      state: {
+        nullable: false,
+        readOnly: true,
+        serializedName: "properties.state",
+        type: {
+          name: "String"
+        }
+      },
+      parameters: {
+        serializedName: "properties.parameters",
+        type: {
+          name: "Sequence",
+          element: {
+            type: {
+              name: "Composite",
+              className: "ParameterDefinition"
+            }
+          }
+        }
+      }
+    }
+  }
+};
+
+export const LivePipelineUpdate: msRest.CompositeMapper = {
+  serializedName: "LivePipelineUpdate",
+  type: {
+    name: "Composite",
+    className: "LivePipelineUpdate",
+    modelProperties: {
+      ...ProxyResource.type.modelProperties,
+      topologyName: {
+        serializedName: "properties.topologyName",
+        type: {
+          name: "String"
+        }
+      },
+      description: {
+        serializedName: "properties.description",
+        type: {
+          name: "String"
+        }
+      },
+      bitrateKbps: {
+        serializedName: "properties.bitrateKbps",
+        type: {
+          name: "Number"
+        }
+      },
+      state: {
+        nullable: false,
+        readOnly: true,
+        serializedName: "properties.state",
+        type: {
+          name: "String"
+        }
+      },
+      parameters: {
+        serializedName: "properties.parameters",
+        type: {
+          name: "Sequence",
+          element: {
+            type: {
+              name: "Composite",
+              className: "ParameterDefinition"
+            }
+          }
+        }
+      }
+    }
+  }
+};
+
+export const PipelineJobError: msRest.CompositeMapper = {
+  serializedName: "PipelineJobError",
+  type: {
+    name: "Composite",
+    className: "PipelineJobError",
+    modelProperties: {
+      code: {
+        serializedName: "code",
+        type: {
+          name: "String"
+        }
+      },
+      message: {
+        serializedName: "message",
+        type: {
+          name: "String"
+        }
+      }
+    }
+  }
+};
+
+export const PipelineJob: msRest.CompositeMapper = {
+  serializedName: "PipelineJob",
+  type: {
+    name: "Composite",
+    className: "PipelineJob",
+    modelProperties: {
+      ...ProxyResource.type.modelProperties,
+      topologyName: {
+        required: true,
+        serializedName: "properties.topologyName",
+        type: {
+          name: "String"
+        }
+      },
+      description: {
+        serializedName: "properties.description",
+        type: {
+          name: "String"
+        }
+      },
+      state: {
+        nullable: false,
+        readOnly: true,
+        serializedName: "properties.state",
+        type: {
+          name: "String"
+        }
+      },
+      expiration: {
+        nullable: false,
+        readOnly: true,
+        serializedName: "properties.expiration",
+        type: {
+          name: "DateTime"
+        }
+      },
+      error: {
+        readOnly: true,
+        serializedName: "properties.error",
+        type: {
+          name: "Composite",
+          className: "PipelineJobError"
+        }
+      },
+      parameters: {
+        serializedName: "properties.parameters",
+        type: {
+          name: "Sequence",
+          element: {
+            type: {
+              name: "Composite",
+              className: "ParameterDefinition"
+            }
+          }
+        }
+      }
+    }
+  }
+};
+
+export const PipelineJobUpdate: msRest.CompositeMapper = {
+  serializedName: "PipelineJobUpdate",
+  type: {
+    name: "Composite",
+    className: "PipelineJobUpdate",
+    modelProperties: {
+      ...ProxyResource.type.modelProperties,
+      topologyName: {
+        serializedName: "properties.topologyName",
+        type: {
+          name: "String"
+        }
+      },
+      description: {
+        serializedName: "properties.description",
+        type: {
+          name: "String"
+        }
+      },
+      state: {
+        nullable: false,
+        readOnly: true,
+        serializedName: "properties.state",
+        type: {
+          name: "String"
+        }
+      },
+      expiration: {
+        nullable: false,
+        readOnly: true,
+        serializedName: "properties.expiration",
+        type: {
+          name: "DateTime"
+        }
+      },
+      error: {
+        readOnly: true,
+        serializedName: "properties.error",
+        type: {
+          name: "Composite",
+          className: "PipelineJobError"
+        }
+      },
+      parameters: {
+        serializedName: "properties.parameters",
+        type: {
+          name: "Sequence",
+          element: {
+            type: {
+              name: "Composite",
+              className: "ParameterDefinition"
+            }
+          }
+        }
+      }
+    }
+  }
+};
+
+export const LivePipelineOperationStatus: msRest.CompositeMapper = {
+  serializedName: "LivePipelineOperationStatus",
+  type: {
+    name: "Composite",
+    className: "LivePipelineOperationStatus",
+    modelProperties: {
+      name: {
+        readOnly: true,
+        serializedName: "name",
+        type: {
+          name: "String"
+        }
+      },
+      status: {
+        readOnly: true,
+        serializedName: "status",
+        type: {
+          name: "String"
+        }
+      },
+      error: {
+        readOnly: true,
+        serializedName: "error",
+        type: {
+          name: "Composite",
+          className: "ErrorDetail"
+        }
+      }
+    }
+  }
+};
+
+export const PipelineJobOperationStatus: msRest.CompositeMapper = {
+  serializedName: "PipelineJobOperationStatus",
+  type: {
+    name: "Composite",
+    className: "PipelineJobOperationStatus",
+    modelProperties: {
+      name: {
+        readOnly: true,
+        serializedName: "name",
+        type: {
+          name: "String"
+        }
+      },
+      status: {
+        readOnly: true,
+        serializedName: "status",
+        type: {
+          name: "String"
+        }
+      },
+      error: {
+        readOnly: true,
+        serializedName: "error",
+        type: {
+          name: "Composite",
+          className: "ErrorDetail"
+        }
+      }
+    }
+  }
+};
+
+export const OperationDisplay: msRest.CompositeMapper = {
+  serializedName: "OperationDisplay",
+  type: {
+    name: "Composite",
+    className: "OperationDisplay",
+    modelProperties: {
+      provider: {
+        serializedName: "provider",
+        type: {
+          name: "String"
+        }
+      },
+      resource: {
+        serializedName: "resource",
+        type: {
+          name: "String"
+        }
+      },
+      operation: {
+        serializedName: "operation",
+        type: {
+          name: "String"
+        }
+      },
+      description: {
+        serializedName: "description",
+        type: {
+          name: "String"
+        }
+      }
+    }
+  }
+};
+
+export const MetricDimension: msRest.CompositeMapper = {
+  serializedName: "MetricDimension",
+  type: {
+    name: "Composite",
+    className: "MetricDimension",
+    modelProperties: {
+      name: {
+        readOnly: true,
+        serializedName: "name",
+        type: {
+          name: "String"
+        }
+      },
+      displayName: {
+        readOnly: true,
+        serializedName: "displayName",
+        type: {
+          name: "String"
+        }
+      },
+      toBeExportedForShoebox: {
+        nullable: false,
+        readOnly: true,
+        serializedName: "toBeExportedForShoebox",
+        type: {
+          name: "Boolean"
+        }
+      }
+    }
+  }
+};
+
+export const MetricSpecification: msRest.CompositeMapper = {
+  serializedName: "MetricSpecification",
+  type: {
+    name: "Composite",
+    className: "MetricSpecification",
+    modelProperties: {
+      name: {
+        readOnly: true,
+        serializedName: "name",
+        type: {
+          name: "String"
+        }
+      },
+      displayName: {
+        readOnly: true,
+        serializedName: "displayName",
+        type: {
+          name: "String"
+        }
+      },
+      displayDescription: {
+        readOnly: true,
+        serializedName: "displayDescription",
+        type: {
+          name: "String"
+        }
+      },
+      unit: {
+        nullable: false,
+        readOnly: true,
+        serializedName: "unit",
+        type: {
+          name: "String"
+        }
+      },
+      aggregationType: {
+        nullable: false,
+        readOnly: true,
+        serializedName: "aggregationType",
+        type: {
+          name: "String"
+        }
+      },
+      lockAggregationType: {
+        nullable: true,
+        readOnly: true,
+        serializedName: "lockAggregationType",
+        type: {
+          name: "String"
+        }
+      },
+      supportedAggregationTypes: {
+        serializedName: "supportedAggregationTypes",
+        type: {
+          name: "Sequence",
+          element: {
+            type: {
+              name: "String"
+            }
+          }
+        }
+      },
+      dimensions: {
+        readOnly: true,
+        serializedName: "dimensions",
+        type: {
+          name: "Sequence",
+          element: {
+            type: {
+              name: "Composite",
+              className: "MetricDimension"
+            }
+          }
+        }
+      },
+      enableRegionalMdmAccount: {
+        nullable: false,
+        readOnly: true,
+        serializedName: "enableRegionalMdmAccount",
+        type: {
+          name: "Boolean"
+        }
+      },
+      sourceMdmAccount: {
+        readOnly: true,
+        serializedName: "sourceMdmAccount",
+        type: {
+          name: "String"
+        }
+      },
+      sourceMdmNamespace: {
+        readOnly: true,
+        serializedName: "sourceMdmNamespace",
+        type: {
+          name: "String"
+        }
+      },
+      supportedTimeGrainTypes: {
+        readOnly: true,
+        serializedName: "supportedTimeGrainTypes",
+        type: {
+          name: "Sequence",
+          element: {
+            type: {
+              name: "String"
+            }
+          }
+        }
+      }
+    }
+  }
+};
+
+export const LogSpecification: msRest.CompositeMapper = {
+  serializedName: "LogSpecification",
+  type: {
+    name: "Composite",
+    className: "LogSpecification",
+    modelProperties: {
+      name: {
+        readOnly: true,
+        serializedName: "name",
+        type: {
+          name: "String"
+        }
+      },
+      displayName: {
+        readOnly: true,
+        serializedName: "displayName",
+        type: {
+          name: "String"
+        }
+      },
+      blobDuration: {
+        readOnly: true,
+        serializedName: "blobDuration",
+        type: {
+          name: "String"
+        }
+      }
+    }
+  }
+};
+
+export const ServiceSpecification: msRest.CompositeMapper = {
+  serializedName: "ServiceSpecification",
+  type: {
+    name: "Composite",
+    className: "ServiceSpecification",
+    modelProperties: {
+      logSpecifications: {
+        readOnly: true,
+        serializedName: "logSpecifications",
+        type: {
+          name: "Sequence",
+          element: {
+            type: {
+              name: "Composite",
+              className: "LogSpecification"
+            }
+          }
+        }
+      },
+      metricSpecifications: {
+        readOnly: true,
+        serializedName: "metricSpecifications",
+        type: {
+          name: "Sequence",
+          element: {
+            type: {
+              name: "Composite",
+              className: "MetricSpecification"
+            }
+          }
+        }
+      }
+    }
+  }
+};
+
+export const Properties: msRest.CompositeMapper = {
+  serializedName: "Properties",
+  type: {
+    name: "Composite",
+    className: "Properties",
+    modelProperties: {
+      serviceSpecification: {
+        readOnly: true,
+        serializedName: "serviceSpecification",
+        type: {
+          name: "Composite",
+          className: "ServiceSpecification"
+        }
+      }
+    }
+  }
+};
+
+export const Operation: msRest.CompositeMapper = {
+  serializedName: "Operation",
+  type: {
+    name: "Composite",
+    className: "Operation",
+    modelProperties: {
+      name: {
+        required: true,
+        serializedName: "name",
+        type: {
+          name: "String"
+        }
+      },
+      display: {
+        serializedName: "display",
+        type: {
+          name: "Composite",
+          className: "OperationDisplay"
+        }
+      },
+      origin: {
+        serializedName: "origin",
+        type: {
+          name: "String"
+        }
+      },
+      properties: {
+        serializedName: "properties",
+        type: {
+          name: "Composite",
+          className: "Properties"
+        }
+      },
+      isDataAction: {
+        nullable: true,
+        serializedName: "isDataAction",
+        type: {
+          name: "Boolean"
+        }
+      },
+      actionType: {
+        nullable: true,
+        serializedName: "actionType",
+        type: {
+          name: "String"
+        }
+      }
+    }
+  }
+};
+
+export const ResourceIdentity: msRest.CompositeMapper = {
+  serializedName: "ResourceIdentity",
+  type: {
+    name: "Composite",
+    className: "ResourceIdentity",
+    modelProperties: {
+      userAssignedIdentity: {
+        required: true,
+        serializedName: "userAssignedIdentity",
+        type: {
+          name: "String"
+        }
+      }
+    }
+  }
+};
+
+export const StorageAccount: msRest.CompositeMapper = {
+  serializedName: "StorageAccount",
+  type: {
+    name: "Composite",
+    className: "StorageAccount",
+    modelProperties: {
+      id: {
+        required: true,
+        serializedName: "id",
+        type: {
+          name: "String"
+        }
+      },
+      identity: {
+        serializedName: "identity",
+        type: {
+          name: "Composite",
+          className: "ResourceIdentity"
+        }
+      },
+      status: {
+        readOnly: true,
+        serializedName: "status",
+        type: {
+          name: "String"
+        }
+      }
+    }
+  }
+};
+
+export const Endpoint: msRest.CompositeMapper = {
+  serializedName: "Endpoint",
+  type: {
+    name: "Composite",
+    className: "Endpoint",
+    modelProperties: {
+      endpointUrl: {
+        serializedName: "endpointUrl",
+        type: {
+          name: "String"
+        }
+      },
+      type: {
+        required: true,
+        isConstant: true,
+        serializedName: "type",
+        defaultValue: 'ClientApi',
+        type: {
+          name: "String"
+        }
+      }
+    }
+  }
+};
+
+export const KeyVaultProperties: msRest.CompositeMapper = {
+  serializedName: "KeyVaultProperties",
+  type: {
+    name: "Composite",
+    className: "KeyVaultProperties",
+    modelProperties: {
+      keyIdentifier: {
+        required: true,
+        serializedName: "keyIdentifier",
+        type: {
+          name: "String"
+        }
+      },
+      currentKeyIdentifier: {
+        readOnly: true,
+        serializedName: "currentKeyIdentifier",
+        type: {
+          name: "String"
+        }
+      }
+    }
+  }
+};
+
+export const AccountEncryption: msRest.CompositeMapper = {
+  serializedName: "AccountEncryption",
+  type: {
+    name: "Composite",
+    className: "AccountEncryption",
+    modelProperties: {
+      type: {
+        required: true,
+        serializedName: "type",
+        type: {
+          name: "String"
+        }
+      },
+      keyVaultProperties: {
+        serializedName: "keyVaultProperties",
+        type: {
+          name: "Composite",
+          className: "KeyVaultProperties"
+        }
+      },
+      identity: {
+        serializedName: "identity",
+        type: {
+          name: "Composite",
+          className: "ResourceIdentity"
+        }
+      },
+      status: {
+        readOnly: true,
+        serializedName: "status",
+        type: {
+          name: "String"
+        }
+      }
+    }
+  }
+};
+
+export const IotHub: msRest.CompositeMapper = {
+  serializedName: "IotHub",
+  type: {
+    name: "Composite",
+    className: "IotHub",
+    modelProperties: {
+      id: {
+        required: true,
+        serializedName: "id",
+        type: {
+          name: "String"
+        }
+      },
+      identity: {
+        required: true,
+        serializedName: "identity",
+        type: {
+          name: "Composite",
+          className: "ResourceIdentity"
+        }
+      },
+      status: {
+        readOnly: true,
+        serializedName: "status",
+        type: {
+          name: "String"
+        }
+      }
+    }
+  }
+};
+
+export const GroupLevelAccessControl: msRest.CompositeMapper = {
+  serializedName: "GroupLevelAccessControl",
+  type: {
+    name: "Composite",
+    className: "GroupLevelAccessControl",
+    modelProperties: {
+      publicNetworkAccess: {
+        nullable: true,
+        serializedName: "publicNetworkAccess",
+        type: {
+          name: "String"
+        }
+      }
+    }
+  }
+};
+
+export const NetworkAccessControl: msRest.CompositeMapper = {
+  serializedName: "NetworkAccessControl",
+  type: {
+    name: "Composite",
+    className: "NetworkAccessControl",
+    modelProperties: {
+      integration: {
+        nullable: true,
+        serializedName: "integration",
+        type: {
+          name: "Composite",
+          className: "GroupLevelAccessControl"
+        }
+      },
+      ingestion: {
+        nullable: true,
+        serializedName: "ingestion",
+        type: {
+          name: "Composite",
+          className: "GroupLevelAccessControl"
+        }
+      },
+      consumption: {
+        nullable: true,
+        serializedName: "consumption",
+        type: {
+          name: "Composite",
+          className: "GroupLevelAccessControl"
+        }
+      }
+    }
+  }
+};
+
+export const PrivateEndpoint: msRest.CompositeMapper = {
+  serializedName: "PrivateEndpoint",
+  type: {
+    name: "Composite",
+    className: "PrivateEndpoint",
+    modelProperties: {
+      id: {
+        readOnly: true,
+        serializedName: "id",
+        type: {
+          name: "String"
+        }
+      }
+    }
+  }
+};
+
+export const PrivateLinkServiceConnectionState: msRest.CompositeMapper = {
+  serializedName: "PrivateLinkServiceConnectionState",
+  type: {
+    name: "Composite",
+    className: "PrivateLinkServiceConnectionState",
+    modelProperties: {
+      status: {
+        serializedName: "status",
+        type: {
+          name: "String"
+        }
+      },
+      description: {
+        serializedName: "description",
+        type: {
+          name: "String"
+        }
+      },
+      actionsRequired: {
+        serializedName: "actionsRequired",
+        type: {
+          name: "String"
+        }
+      }
+    }
+  }
+};
+
+export const PrivateEndpointConnection: msRest.CompositeMapper = {
+  serializedName: "PrivateEndpointConnection",
+  type: {
+    name: "Composite",
+    className: "PrivateEndpointConnection",
+    modelProperties: {
+      ...Resource.type.modelProperties,
+      privateEndpoint: {
+        serializedName: "properties.privateEndpoint",
+        type: {
+          name: "Composite",
+          className: "PrivateEndpoint"
+        }
+      },
+      privateLinkServiceConnectionState: {
+        required: true,
+        serializedName: "properties.privateLinkServiceConnectionState",
+        type: {
+          name: "Composite",
+          className: "PrivateLinkServiceConnectionState"
+        }
+      },
+      provisioningState: {
+        serializedName: "properties.provisioningState",
+        type: {
+          name: "String"
+        }
+      }
+    }
+  }
+};
+
+export const UserAssignedManagedIdentity: msRest.CompositeMapper = {
+  serializedName: "UserAssignedManagedIdentity",
+  type: {
+    name: "Composite",
+    className: "UserAssignedManagedIdentity",
+    modelProperties: {
+      clientId: {
+        nullable: true,
+        readOnly: true,
+        serializedName: "clientId",
+        type: {
+          name: "Uuid"
+        }
+      },
+      principalId: {
+        nullable: true,
+        readOnly: true,
+        serializedName: "principalId",
+        type: {
+          name: "Uuid"
+        }
+      }
+    }
+  }
+};
+
+export const VideoAnalyzerIdentity: msRest.CompositeMapper = {
+  serializedName: "VideoAnalyzerIdentity",
+  type: {
+    name: "Composite",
+    className: "VideoAnalyzerIdentity",
+    modelProperties: {
+      type: {
+        required: true,
+        serializedName: "type",
+        type: {
+          name: "String"
+        }
+      },
+      userAssignedIdentities: {
+        serializedName: "userAssignedIdentities",
+        type: {
+          name: "Dictionary",
+          value: {
+            type: {
+              name: "Composite",
+              className: "UserAssignedManagedIdentity"
+            }
+          }
+        }
+      }
+    }
+  }
+};
+
+export const VideoAnalyzerModel: msRest.CompositeMapper = {
+  serializedName: "VideoAnalyzer",
+  type: {
+    name: "Composite",
+    className: "VideoAnalyzerModel",
+    modelProperties: {
+      ...TrackedResource.type.modelProperties,
+      storageAccounts: {
+        required: true,
+        serializedName: "properties.storageAccounts",
+        type: {
+          name: "Sequence",
+          element: {
+            type: {
+              name: "Composite",
+              className: "StorageAccount"
+            }
+          }
+        }
+      },
+      endpoints: {
+        readOnly: true,
+        serializedName: "properties.endpoints",
+        type: {
+          name: "Sequence",
+          element: {
+            type: {
+              name: "Composite",
+              className: "Endpoint"
+            }
+          }
+        }
+      },
+      encryption: {
+        serializedName: "properties.encryption",
+        type: {
+          name: "Composite",
+          className: "AccountEncryption"
+        }
+      },
+      iotHubs: {
+        serializedName: "properties.iotHubs",
+        type: {
+          name: "Sequence",
+          element: {
+            type: {
+              name: "Composite",
+              className: "IotHub"
+            }
+          }
+        }
+      },
+      publicNetworkAccess: {
+        nullable: true,
+        serializedName: "properties.publicNetworkAccess",
+        type: {
+          name: "String"
+        }
+      },
+      networkAccessControl: {
+        nullable: true,
+        serializedName: "properties.networkAccessControl",
+        type: {
+          name: "Composite",
+          className: "NetworkAccessControl"
+        }
+      },
+      provisioningState: {
+        nullable: false,
+        readOnly: true,
+        serializedName: "properties.provisioningState",
+        type: {
+          name: "String"
+        }
+      },
+      privateEndpointConnections: {
+        readOnly: true,
+        serializedName: "properties.privateEndpointConnections",
+        type: {
+          name: "Sequence",
+          element: {
+            type: {
+              name: "Composite",
+              className: "PrivateEndpointConnection"
+            }
+          }
+        }
+      },
+      identity: {
+        serializedName: "identity",
+        type: {
+          name: "Composite",
+          className: "VideoAnalyzerIdentity"
+        }
+      }
+    }
+  }
+};
+
+export const VideoAnalyzerUpdate: msRest.CompositeMapper = {
+  serializedName: "VideoAnalyzerUpdate",
+  type: {
+    name: "Composite",
+    className: "VideoAnalyzerUpdate",
+    modelProperties: {
+      tags: {
+        serializedName: "tags",
+        type: {
+          name: "Dictionary",
+          value: {
+            type: {
+              name: "String"
+            }
+          }
+        }
+      },
+      storageAccounts: {
+        serializedName: "properties.storageAccounts",
+        type: {
+          name: "Sequence",
+          element: {
+            type: {
+              name: "Composite",
+              className: "StorageAccount"
+            }
+          }
+        }
+      },
+      endpoints: {
+        readOnly: true,
+        serializedName: "properties.endpoints",
+        type: {
+          name: "Sequence",
+          element: {
+            type: {
+              name: "Composite",
+              className: "Endpoint"
+            }
+          }
+        }
+      },
+      encryption: {
+        serializedName: "properties.encryption",
+        type: {
+          name: "Composite",
+          className: "AccountEncryption"
+        }
+      },
+      iotHubs: {
+        serializedName: "properties.iotHubs",
+        type: {
+          name: "Sequence",
+          element: {
+            type: {
+              name: "Composite",
+              className: "IotHub"
+            }
+          }
+        }
+      },
+      publicNetworkAccess: {
+        nullable: true,
+        serializedName: "properties.publicNetworkAccess",
+        type: {
+          name: "String"
+        }
+      },
+      networkAccessControl: {
+        nullable: true,
+        serializedName: "properties.networkAccessControl",
+        type: {
+          name: "Composite",
+          className: "NetworkAccessControl"
+        }
+      },
+      provisioningState: {
+        nullable: false,
+        readOnly: true,
+        serializedName: "properties.provisioningState",
+        type: {
+          name: "String"
+        }
+      },
+      privateEndpointConnections: {
+        readOnly: true,
+        serializedName: "properties.privateEndpointConnections",
+        type: {
+          name: "Sequence",
+          element: {
+            type: {
+              name: "Composite",
+              className: "PrivateEndpointConnection"
+            }
+          }
+        }
+      },
+      identity: {
+        serializedName: "identity",
+        type: {
+          name: "Composite",
+          className: "VideoAnalyzerIdentity"
+        }
+      }
+    }
+  }
+};
+
+export const VideoAnalyzerPrivateEndpointConnectionOperationStatus: msRest.CompositeMapper = {
+  serializedName: "VideoAnalyzerPrivateEndpointConnectionOperationStatus",
+  type: {
+    name: "Composite",
+    className: "VideoAnalyzerPrivateEndpointConnectionOperationStatus",
+    modelProperties: {
+      name: {
+        required: true,
+        serializedName: "name",
+        type: {
+          name: "String"
+        }
+      },
+      id: {
+        serializedName: "id",
+        type: {
+          name: "String"
+        }
+      },
+      startTime: {
+        serializedName: "startTime",
+        type: {
+          name: "String"
+        }
+      },
+      endTime: {
+        serializedName: "endTime",
+        type: {
+          name: "String"
+        }
+      },
+      status: {
+        serializedName: "status",
+        type: {
+          name: "String"
+        }
+      },
+      error: {
+        nullable: true,
+        serializedName: "error",
+        type: {
+          name: "Composite",
+          className: "ErrorDetail"
+        }
+      }
+    }
+  }
+};
+
+export const VideoAnalyzerOperationStatus: msRest.CompositeMapper = {
+  serializedName: "VideoAnalyzerOperationStatus",
+  type: {
+    name: "Composite",
+    className: "VideoAnalyzerOperationStatus",
+    modelProperties: {
+      name: {
+        required: true,
+        serializedName: "name",
+        type: {
+          name: "String"
+        }
+      },
+      id: {
+        serializedName: "id",
+        type: {
+          name: "String"
+        }
+      },
+      startTime: {
+        serializedName: "startTime",
+        type: {
+          name: "String"
+        }
+      },
+      endTime: {
+        serializedName: "endTime",
+        type: {
+          name: "String"
+        }
+      },
+      status: {
+        serializedName: "status",
+        type: {
+          name: "String"
+        }
+      },
+      error: {
+        nullable: true,
+        serializedName: "error",
+        type: {
+          name: "Composite",
+          className: "ErrorDetail"
+        }
+      }
+    }
+  }
+};
+
+export const OperationCollection: msRest.CompositeMapper = {
+  serializedName: "OperationCollection",
+  type: {
+    name: "Composite",
+    className: "OperationCollection",
+    modelProperties: {
+      value: {
+        serializedName: "value",
+        type: {
+          name: "Sequence",
+          element: {
+            type: {
+              name: "Composite",
+              className: "Operation"
+            }
+          }
+        }
+      }
+    }
+  }
+};
+
+export const VideoAnalyzerCollection: msRest.CompositeMapper = {
+  serializedName: "VideoAnalyzerCollection",
+  type: {
+    name: "Composite",
+    className: "VideoAnalyzerCollection",
+    modelProperties: {
+      value: {
+        serializedName: "value",
+        type: {
+          name: "Sequence",
+          element: {
+            type: {
+              name: "Composite",
+              className: "VideoAnalyzerModel"
+            }
+          }
+        }
+      }
+    }
+  }
+};
+
+export const CheckNameAvailabilityRequest: msRest.CompositeMapper = {
+  serializedName: "CheckNameAvailabilityRequest",
+  type: {
+    name: "Composite",
+    className: "CheckNameAvailabilityRequest",
+    modelProperties: {
+      name: {
+        serializedName: "name",
+        type: {
+          name: "String"
+        }
+      },
+      type: {
+        serializedName: "type",
+        type: {
+          name: "String"
+        }
+      }
+    }
+  }
+};
+
+export const CheckNameAvailabilityResponse: msRest.CompositeMapper = {
+  serializedName: "CheckNameAvailabilityResponse",
+  type: {
+    name: "Composite",
+    className: "CheckNameAvailabilityResponse",
+    modelProperties: {
+      nameAvailable: {
+        serializedName: "nameAvailable",
+        type: {
+          name: "Boolean"
+        }
+      },
+      reason: {
+        serializedName: "reason",
+        type: {
+          name: "String"
+        }
+      },
+      message: {
+        serializedName: "message",
+        type: {
+          name: "String"
+        }
+      }
+    }
+  }
+};
+
+export const PrivateEndpointConnectionListResult: msRest.CompositeMapper = {
+  serializedName: "PrivateEndpointConnectionListResult",
+  type: {
+    name: "Composite",
+    className: "PrivateEndpointConnectionListResult",
+    modelProperties: {
+      value: {
+        serializedName: "value",
+        type: {
+          name: "Sequence",
+          element: {
+            type: {
+              name: "Composite",
+              className: "PrivateEndpointConnection"
+            }
+          }
+        }
+      }
+    }
+  }
+};
+
+export const PrivateLinkResource: msRest.CompositeMapper = {
+  serializedName: "PrivateLinkResource",
+  type: {
+    name: "Composite",
+    className: "PrivateLinkResource",
+    modelProperties: {
+      ...Resource.type.modelProperties,
+      groupId: {
+        readOnly: true,
+        serializedName: "properties.groupId",
+        type: {
+          name: "String"
+        }
+      },
+      requiredMembers: {
+        readOnly: true,
+        serializedName: "properties.requiredMembers",
+        type: {
+          name: "Sequence",
+          element: {
+            type: {
+              name: "String"
+            }
+          }
+        }
+      },
+      requiredZoneNames: {
+        serializedName: "properties.requiredZoneNames",
+        type: {
+          name: "Sequence",
+          element: {
+            type: {
+              name: "String"
+            }
+          }
+        }
+      }
+    }
+  }
+};
+
+export const PrivateLinkResourceListResult: msRest.CompositeMapper = {
+  serializedName: "PrivateLinkResourceListResult",
+  type: {
+    name: "Composite",
+    className: "PrivateLinkResourceListResult",
+    modelProperties: {
+      value: {
+        serializedName: "value",
+        type: {
+          name: "Sequence",
+          element: {
+            type: {
+              name: "Composite",
+              className: "PrivateLinkResource"
+            }
+          }
+        }
+      }
+    }
+  }
+};
+
+export const VideoPreviewImageUrls: msRest.CompositeMapper = {
+  serializedName: "VideoPreviewImageUrls",
+  type: {
+    name: "Composite",
+    className: "VideoPreviewImageUrls",
+    modelProperties: {
+      small: {
+        serializedName: "small",
+        type: {
+          name: "String"
+        }
+      },
+      medium: {
+        serializedName: "medium",
+        type: {
+          name: "String"
+        }
+      },
+      large: {
+        serializedName: "large",
+        type: {
+          name: "String"
+        }
+      }
+    }
+  }
+};
+
+export const VideoContentUrls: msRest.CompositeMapper = {
+  serializedName: "VideoContentUrls",
+  type: {
+    name: "Composite",
+    className: "VideoContentUrls",
+    modelProperties: {
+      downloadUrl: {
+        serializedName: "downloadUrl",
+        type: {
+          name: "String"
+        }
+      },
+      archiveBaseUrl: {
+        serializedName: "archiveBaseUrl",
+        type: {
+          name: "String"
+        }
+      },
+      rtspTunnelUrl: {
+        serializedName: "rtspTunnelUrl",
+        type: {
+          name: "String"
+        }
+      },
+      previewImageUrls: {
+        serializedName: "previewImageUrls",
+        type: {
+          name: "Composite",
+          className: "VideoPreviewImageUrls"
+        }
+      }
+    }
+  }
+};
+
+export const VideoFlags: msRest.CompositeMapper = {
+  serializedName: "VideoFlags",
+  type: {
+    name: "Composite",
+    className: "VideoFlags",
+    modelProperties: {
+      canStream: {
+        required: true,
+        serializedName: "canStream",
+        type: {
+          name: "Boolean"
+        }
+      },
+      hasData: {
+        required: true,
+        serializedName: "hasData",
+        type: {
+          name: "Boolean"
+        }
+      },
+      isInUse: {
+        required: true,
+        serializedName: "isInUse",
+        type: {
+          name: "Boolean"
+        }
+      }
+    }
+  }
+};
+
+export const VideoMediaInfo: msRest.CompositeMapper = {
+  serializedName: "VideoMediaInfo",
+  type: {
+    name: "Composite",
+    className: "VideoMediaInfo",
+    modelProperties: {
+      segmentLength: {
+        readOnly: true,
+        serializedName: "segmentLength",
+        type: {
+          name: "String"
+        }
+      }
+    }
+  }
+};
+
+export const VideoContentToken: msRest.CompositeMapper = {
+  serializedName: "VideoContentToken",
+  type: {
+    name: "Composite",
+    className: "VideoContentToken",
+    modelProperties: {
+      expirationDate: {
+        nullable: false,
+        readOnly: true,
+        serializedName: "expirationDate",
+        type: {
+          name: "DateTime"
+        }
+      },
+      token: {
+        readOnly: true,
+        serializedName: "token",
+        type: {
+          name: "String"
+        }
+      }
+    }
+  }
+};
+
+export const VideoArchival: msRest.CompositeMapper = {
+  serializedName: "VideoArchival",
+  type: {
+    name: "Composite",
+    className: "VideoArchival",
+    modelProperties: {
+      retentionPeriod: {
+        serializedName: "retentionPeriod",
+        type: {
+          name: "String"
+        }
+      }
+    }
+  }
+};
+
+export const AuthenticationBase: msRest.CompositeMapper = {
+  serializedName: "AuthenticationBase",
+  type: {
+    name: "Composite",
+    polymorphicDiscriminator: {
+      serializedName: "@type",
+      clientName: "type"
+    },
+    uberParent: "AuthenticationBase",
+    className: "AuthenticationBase",
+    modelProperties: {
+      type: {
+        required: true,
+        serializedName: "@type",
+        type: {
+          name: "String"
+        }
+      }
+    }
+  }
+};
+
+export const TokenClaim: msRest.CompositeMapper = {
+  serializedName: "TokenClaim",
+  type: {
+    name: "Composite",
+    className: "TokenClaim",
+    modelProperties: {
+      name: {
+        required: true,
+        serializedName: "name",
+        type: {
+          name: "String"
+        }
+      },
+      value: {
+        required: true,
+        serializedName: "value",
+        type: {
+          name: "String"
+        }
+      }
+    }
+  }
+};
+
+export const TokenKey: msRest.CompositeMapper = {
+  serializedName: "TokenKey",
+  type: {
+    name: "Composite",
+    polymorphicDiscriminator: {
+      serializedName: "@type",
+      clientName: "type"
+    },
+    uberParent: "TokenKey",
+    className: "TokenKey",
+    modelProperties: {
+      kid: {
+        required: true,
+        serializedName: "kid",
+        type: {
+          name: "String"
+        }
+      },
+      type: {
+        required: true,
+        serializedName: "@type",
+        type: {
+          name: "String"
+        }
+      }
+    }
+  }
+};
+
+export const JwtAuthentication: msRest.CompositeMapper = {
+  serializedName: "#Microsoft.VideoAnalyzer.JwtAuthentication",
+  type: {
+    name: "Composite",
+    polymorphicDiscriminator: AuthenticationBase.type.polymorphicDiscriminator,
+    uberParent: "AuthenticationBase",
+    className: "JwtAuthentication",
+    modelProperties: {
+      ...AuthenticationBase.type.modelProperties,
+      issuers: {
+        serializedName: "issuers",
+        type: {
+          name: "Sequence",
+          element: {
+            type: {
+              name: "String"
+            }
+          }
+        }
+      },
+      audiences: {
+        serializedName: "audiences",
+        type: {
+          name: "Sequence",
+          element: {
+            type: {
+              name: "String"
+            }
+          }
+        }
+      },
+      claims: {
+        serializedName: "claims",
+        type: {
+          name: "Sequence",
+          element: {
+            type: {
+              name: "Composite",
+              className: "TokenClaim"
+            }
+          }
+        }
+      },
+      keys: {
+        serializedName: "keys",
+        type: {
+          name: "Sequence",
+          element: {
+            type: {
+              name: "Composite",
+              className: "TokenKey"
+            }
+          }
+        }
+      }
+    }
+  }
+};
+
+export const RsaTokenKey: msRest.CompositeMapper = {
+  serializedName: "#Microsoft.VideoAnalyzer.RsaTokenKey",
+  type: {
+    name: "Composite",
+    polymorphicDiscriminator: TokenKey.type.polymorphicDiscriminator,
+    uberParent: "TokenKey",
+    className: "RsaTokenKey",
+    modelProperties: {
+      ...TokenKey.type.modelProperties,
+      alg: {
+        required: true,
+        serializedName: "alg",
+        type: {
+          name: "String"
+        }
+      },
+      n: {
+        required: true,
+        serializedName: "n",
+        type: {
+          name: "String"
+        }
+      },
+      e: {
+        required: true,
+        serializedName: "e",
+        type: {
+          name: "String"
+        }
+      }
+    }
+  }
+};
+
+export const EccTokenKey: msRest.CompositeMapper = {
+  serializedName: "#Microsoft.VideoAnalyzer.EccTokenKey",
+  type: {
+    name: "Composite",
+    polymorphicDiscriminator: TokenKey.type.polymorphicDiscriminator,
+    uberParent: "TokenKey",
+    className: "EccTokenKey",
+    modelProperties: {
+      ...TokenKey.type.modelProperties,
+      alg: {
+        required: true,
+        serializedName: "alg",
+        type: {
+          name: "String"
+        }
+      },
+      x: {
+        required: true,
+        serializedName: "x",
+        type: {
+          name: "String"
+        }
+      },
+      y: {
+        required: true,
+        serializedName: "y",
+        type: {
+          name: "String"
+        }
+      }
+    }
+  }
+};
+
+export const VideoEntity: msRest.CompositeMapper = {
+  serializedName: "VideoEntity",
+  type: {
+    name: "Composite",
+    className: "VideoEntity",
+    modelProperties: {
+      ...ProxyResource.type.modelProperties,
+      title: {
+        serializedName: "properties.title",
+        type: {
+          name: "String"
+        }
+      },
+      description: {
+        serializedName: "properties.description",
+        type: {
+          name: "String"
+        }
+      },
+      videoEntityType: {
+        nullable: false,
+        readOnly: true,
+        serializedName: "properties.type",
+        type: {
+          name: "String"
+        }
+      },
+      flags: {
+        readOnly: true,
+        serializedName: "properties.flags",
+        type: {
+          name: "Composite",
+          className: "VideoFlags"
+        }
+      },
+      contentUrls: {
+        readOnly: true,
+        serializedName: "properties.contentUrls",
+        type: {
+          name: "Composite",
+          className: "VideoContentUrls"
+        }
+      },
+      mediaInfo: {
+        readOnly: true,
+        serializedName: "properties.mediaInfo",
+        type: {
+          name: "Composite",
+          className: "VideoMediaInfo"
+        }
+      },
+      archival: {
+        serializedName: "properties.archival",
+        type: {
+          name: "Composite",
+          className: "VideoArchival"
+        }
+      }
+    }
+  }
+};
+
+export const AccessPolicyEntity: msRest.CompositeMapper = {
+  serializedName: "AccessPolicyEntity",
+  type: {
+    name: "Composite",
+    className: "AccessPolicyEntity",
+    modelProperties: {
+      ...ProxyResource.type.modelProperties,
+      role: {
+        nullable: true,
+        serializedName: "properties.role",
+        type: {
+          name: "String"
+        }
+      },
+      authentication: {
+        serializedName: "properties.authentication",
+        type: {
+          name: "Composite",
+          className: "AuthenticationBase"
+        }
+      }
+    }
+  }
+};
+
+export const VideoAnalyzersCreateOrUpdateHeaders: msRest.CompositeMapper = {
+  serializedName: "videoanalyzers-createorupdate-headers",
+  type: {
+    name: "Composite",
+    className: "VideoAnalyzersCreateOrUpdateHeaders",
+    modelProperties: {
+      retryAfter: {
+        serializedName: "retry-after",
+        type: {
+          name: "Number"
+        }
+      },
+      locationHeader: {
+        serializedName: "location",
+        type: {
+          name: "String"
+        }
+      },
+      azureAsyncOperation: {
+        serializedName: "azure-asyncoperation",
+        type: {
+          name: "String"
+        }
+      }
+    }
+  }
+};
+
+export const VideoAnalyzersUpdateHeaders: msRest.CompositeMapper = {
+  serializedName: "videoanalyzers-update-headers",
+  type: {
+    name: "Composite",
+    className: "VideoAnalyzersUpdateHeaders",
+    modelProperties: {
+      retryAfter: {
+        serializedName: "retry-after",
+        type: {
+          name: "Number"
+        }
+      },
+      locationHeader: {
+        serializedName: "location",
+        type: {
+          name: "String"
+        }
+      },
+      azureAsyncOperation: {
+        serializedName: "azure-asyncoperation",
+        type: {
+          name: "String"
+        }
+      }
+    }
+  }
+};
+
+export const PrivateEndpointConnectionsCreateOrUpdateHeaders: msRest.CompositeMapper = {
+  serializedName: "privateendpointconnections-createorupdate-headers",
+  type: {
+    name: "Composite",
+    className: "PrivateEndpointConnectionsCreateOrUpdateHeaders",
+    modelProperties: {
+      retryAfter: {
+        serializedName: "retry-after",
+        type: {
+          name: "Number"
+        }
+      },
+      location: {
+        serializedName: "location",
+        type: {
+          name: "String"
+        }
+      },
+      azureAsyncOperation: {
+        serializedName: "azure-asyncoperation",
+        type: {
+          name: "String"
+        }
+      }
+    }
+  }
+};
+
+export const EdgeModuleEntityCollection: msRest.CompositeMapper = {
+  serializedName: "EdgeModuleEntityCollection",
+  type: {
+    name: "Composite",
+    className: "EdgeModuleEntityCollection",
+    modelProperties: {
+      value: {
+        serializedName: "",
+        type: {
+          name: "Sequence",
+          element: {
+            type: {
+              name: "Composite",
+              className: "EdgeModuleEntity"
+            }
+          }
+        }
+      },
+      nextLink: {
+        serializedName: "@nextLink",
+        type: {
+          name: "String"
+        }
+      }
+    }
+  }
+};
+
+export const PipelineTopologyCollection: msRest.CompositeMapper = {
+  serializedName: "PipelineTopologyCollection",
+  type: {
+    name: "Composite",
+    className: "PipelineTopologyCollection",
+    modelProperties: {
+      value: {
+        serializedName: "",
+        type: {
+          name: "Sequence",
+          element: {
+            type: {
+              name: "Composite",
+              className: "PipelineTopology"
+            }
+          }
+        }
+      },
+      nextLink: {
+        serializedName: "@nextLink",
+        type: {
+          name: "String"
+        }
+      }
+    }
+  }
+};
+
+export const LivePipelineCollection: msRest.CompositeMapper = {
+  serializedName: "LivePipelineCollection",
+  type: {
+    name: "Composite",
+    className: "LivePipelineCollection",
+    modelProperties: {
+      value: {
+        serializedName: "",
+        type: {
+          name: "Sequence",
+          element: {
+            type: {
+              name: "Composite",
+              className: "LivePipeline"
+            }
+          }
+        }
+      },
+      nextLink: {
+        serializedName: "@nextLink",
+        type: {
+          name: "String"
+        }
+      }
+    }
+  }
+};
+
+export const PipelineJobCollection: msRest.CompositeMapper = {
+  serializedName: "PipelineJobCollection",
+  type: {
+    name: "Composite",
+    className: "PipelineJobCollection",
+    modelProperties: {
+      value: {
+        serializedName: "",
+        type: {
+          name: "Sequence",
+          element: {
+            type: {
+              name: "Composite",
+              className: "PipelineJob"
+            }
+          }
+        }
+      },
+      nextLink: {
+        serializedName: "@nextLink",
+        type: {
+          name: "String"
+        }
+      }
+    }
+  }
+};
+
+export const VideoEntityCollection: msRest.CompositeMapper = {
+  serializedName: "VideoEntityCollection",
+  type: {
+    name: "Composite",
+    className: "VideoEntityCollection",
+    modelProperties: {
+      value: {
+        serializedName: "",
+        type: {
+          name: "Sequence",
+          element: {
+            type: {
+              name: "Composite",
+              className: "VideoEntity"
+            }
+          }
+        }
+      },
+      nextLink: {
+        serializedName: "@nextLink",
+        type: {
+          name: "String"
+        }
+      }
+    }
+  }
+};
+
+export const AccessPolicyEntityCollection: msRest.CompositeMapper = {
+  serializedName: "AccessPolicyEntityCollection",
+  type: {
+    name: "Composite",
+    className: "AccessPolicyEntityCollection",
+    modelProperties: {
+      value: {
+        serializedName: "",
+        type: {
+          name: "Sequence",
+          element: {
+            type: {
+              name: "Composite",
+              className: "AccessPolicyEntity"
+            }
+          }
+        }
+      },
+      nextLink: {
+        serializedName: "@nextLink",
+        type: {
+          name: "String"
+        }
+      }
+    }
+  }
+};
+
+export const discriminators = {
+  'NodeBase.#Microsoft.VideoAnalyzer.SourceNodeBase' : SourceNodeBase,
+  'NodeBase.#Microsoft.VideoAnalyzer.ProcessorNodeBase' : ProcessorNodeBase,
+  'NodeBase.#Microsoft.VideoAnalyzer.SinkNodeBase' : SinkNodeBase,
+  'NodeBase' : NodeBase,
+  'CredentialsBase' : CredentialsBase,
+  'TunnelBase' : TunnelBase,
+  'EndpointBase' : EndpointBase,
+  'NodeBase.#Microsoft.VideoAnalyzer.RtspSource' : RtspSource,
+  'CredentialsBase.#Microsoft.VideoAnalyzer.UsernamePasswordCredentials' : UsernamePasswordCredentials,
+  'TunnelBase.#Microsoft.VideoAnalyzer.SecureIotDeviceRemoteTunnel' : SecureIotDeviceRemoteTunnel,
+  'EndpointBase.#Microsoft.VideoAnalyzer.UnsecuredEndpoint' : UnsecuredEndpoint,
+  'CertificateSource' : CertificateSource,
+  'EndpointBase.#Microsoft.VideoAnalyzer.TlsEndpoint' : TlsEndpoint,
+  'CertificateSource.#Microsoft.VideoAnalyzer.PemCertificateList' : PemCertificateList,
+  'TimeSequenceBase' : TimeSequenceBase,
+  'NodeBase.#Microsoft.VideoAnalyzer.VideoSource' : VideoSource,
+  'TimeSequenceBase.#Microsoft.VideoAnalyzer.VideoSequenceAbsoluteTimeMarkers' : VideoSequenceAbsoluteTimeMarkers,
+  'EncoderPresetBase' : EncoderPresetBase,
+  'NodeBase.#Microsoft.VideoAnalyzer.EncoderProcessor' : EncoderProcessor,
+  'EncoderPresetBase.#Microsoft.VideoAnalyzer.EncoderSystemPreset' : EncoderSystemPreset,
+  'AudioEncoderBase' : AudioEncoderBase,
+  'VideoEncoderBase' : VideoEncoderBase,
+  'EncoderPresetBase.#Microsoft.VideoAnalyzer.EncoderCustomPreset' : EncoderCustomPreset,
+  'AudioEncoderBase.#Microsoft.VideoAnalyzer.AudioEncoderAac' : AudioEncoderAac,
+  'VideoEncoderBase.#Microsoft.VideoAnalyzer.VideoEncoderH264' : VideoEncoderH264,
+  'NodeBase.#Microsoft.VideoAnalyzer.VideoSink' : VideoSink,
+  'AuthenticationBase' : AuthenticationBase,
+  'TokenKey' : TokenKey,
+  'AuthenticationBase.#Microsoft.VideoAnalyzer.JwtAuthentication' : JwtAuthentication,
+  'TokenKey.#Microsoft.VideoAnalyzer.RsaTokenKey' : RsaTokenKey,
+  'TokenKey.#Microsoft.VideoAnalyzer.EccTokenKey' : EccTokenKey
+
+};
diff --git a/sdk/videoanalyzer/arm-videoanalyzer/src/models/operationResultsMappers.ts b/sdk/videoanalyzer/arm-videoanalyzer/src/models/operationResultsMappers.ts
new file mode 100644
index 000000000000..803c914d53cb
--- /dev/null
+++ b/sdk/videoanalyzer/arm-videoanalyzer/src/models/operationResultsMappers.ts
@@ -0,0 +1,90 @@
+/*
+ * Copyright (c) Microsoft Corporation.
+ * Licensed under the MIT License.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ * Changes may cause incorrect behavior and will be lost if the code is regenerated.
+ */
+
+export {
+  discriminators,
+  AccessPolicyEntity,
+  AccountEncryption,
+  AudioEncoderAac,
+  AudioEncoderBase,
+  AuthenticationBase,
+  AzureEntityResource,
+  BaseResource,
+  CertificateSource,
+  CredentialsBase,
+  EccTokenKey,
+  EdgeModuleEntity,
+  EncoderCustomPreset,
+  EncoderPresetBase,
+  EncoderProcessor,
+  EncoderSystemPreset,
+  Endpoint,
+  EndpointBase,
+  ErrorAdditionalInfo,
+  ErrorDetail,
+  ErrorResponse,
+  GroupLevelAccessControl,
+  IotHub,
+  JwtAuthentication,
+  KeyVaultProperties,
+  LivePipeline,
+  LivePipelineUpdate,
+  NetworkAccessControl,
+  NodeBase,
+  NodeInput,
+  ParameterDeclaration,
+  ParameterDefinition,
+  PemCertificateList,
+  PipelineJob,
+  PipelineJobError,
+  PipelineJobUpdate,
+  PipelineTopology,
+  PipelineTopologyUpdate,
+  PrivateEndpoint,
+  PrivateEndpointConnection,
+  PrivateLinkResource,
+  PrivateLinkServiceConnectionState,
+  ProcessorNodeBase,
+  ProxyResource,
+  Resource,
+  ResourceIdentity,
+  RsaTokenKey,
+  RtspSource,
+  SecureIotDeviceRemoteTunnel,
+  SinkNodeBase,
+  Sku,
+  SourceNodeBase,
+  StorageAccount,
+  SystemData,
+  TimeSequenceBase,
+  TlsEndpoint,
+  TlsValidationOptions,
+  TokenClaim,
+  TokenKey,
+  TrackedResource,
+  TunnelBase,
+  UnsecuredEndpoint,
+  UserAssignedManagedIdentity,
+  UsernamePasswordCredentials,
+  VideoAnalyzerIdentity,
+  VideoAnalyzerModel,
+  VideoArchival,
+  VideoContentUrls,
+  VideoCreationProperties,
+  VideoEncoderBase,
+  VideoEncoderH264,
+  VideoEntity,
+  VideoFlags,
+  VideoMediaInfo,
+  VideoPreviewImageUrls,
+  VideoPublishingOptions,
+  VideoScale,
+  VideoSequenceAbsoluteTimeMarkers,
+  VideoSink,
+  VideoSource
+} from "../models/mappers";
diff --git a/sdk/videoanalyzer/arm-videoanalyzer/src/models/operationStatusesMappers.ts b/sdk/videoanalyzer/arm-videoanalyzer/src/models/operationStatusesMappers.ts
new file mode 100644
index 000000000000..6f64aa09afab
--- /dev/null
+++ b/sdk/videoanalyzer/arm-videoanalyzer/src/models/operationStatusesMappers.ts
@@ -0,0 +1,15 @@
+/*
+ * Copyright (c) Microsoft Corporation.
+ * Licensed under the MIT License.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ * Changes may cause incorrect behavior and will be lost if the code is regenerated.
+ */
+
+export {
+  discriminators,
+  ErrorAdditionalInfo,
+  ErrorDetail,
+  ErrorResponse,
+  VideoAnalyzerPrivateEndpointConnectionOperationStatus
+} from "../models/mappers";
diff --git a/sdk/videoanalyzer/arm-videoanalyzer/src/models/operationsMappers.ts b/sdk/videoanalyzer/arm-videoanalyzer/src/models/operationsMappers.ts
new file mode 100644
index 000000000000..580ccfeafd49
--- /dev/null
+++ b/sdk/videoanalyzer/arm-videoanalyzer/src/models/operationsMappers.ts
@@ -0,0 +1,22 @@
+/*
+ * Copyright (c) Microsoft Corporation.
+ * Licensed under the MIT License.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ * Changes may cause incorrect behavior and will be lost if the code is regenerated.
+ */
+
+export {
+  discriminators,
+  ErrorAdditionalInfo,
+  ErrorDetail,
+  ErrorResponse,
+  LogSpecification,
+  MetricDimension,
+  MetricSpecification,
+  Operation,
+  OperationCollection,
+  OperationDisplay,
+  Properties,
+  ServiceSpecification
+} from "../models/mappers";
diff --git a/sdk/videoanalyzer/arm-videoanalyzer/src/models/parameters.ts b/sdk/videoanalyzer/arm-videoanalyzer/src/models/parameters.ts
new file mode 100644
index 000000000000..5faac433965d
--- /dev/null
+++ b/sdk/videoanalyzer/arm-videoanalyzer/src/models/parameters.ts
@@ -0,0 +1,196 @@
+/*
+ * Copyright (c) Microsoft Corporation.
+ * Licensed under the MIT License.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ * Changes may cause incorrect behavior and will be lost if the code is
+ * regenerated.
+ */
+
+import * as msRest from "@azure/ms-rest-js";
+
+export const acceptLanguage: msRest.OperationParameter = {
+  parameterPath: "acceptLanguage",
+  mapper: {
+    serializedName: "accept-language",
+    defaultValue: 'en-US',
+    type: {
+      name: "String"
+    }
+  }
+};
+export const accessPolicyName: msRest.OperationURLParameter = {
+  parameterPath: "accessPolicyName",
+  mapper: {
+    required: true,
+    serializedName: "accessPolicyName",
+    type: {
+      name: "String"
+    }
+  }
+};
+export const accountName: msRest.OperationURLParameter = {
+  parameterPath: "accountName",
+  mapper: {
+    required: true,
+    serializedName: "accountName",
+    type: {
+      name: "String"
+    }
+  }
+};
+export const apiVersion: msRest.OperationQueryParameter = {
+  parameterPath: "apiVersion",
+  mapper: {
+    required: true,
+    serializedName: "api-version",
+    constraints: {
+      MinLength: 1
+    },
+    type: {
+      name: "String"
+    }
+  }
+};
+export const edgeModuleName: msRest.OperationURLParameter = {
+  parameterPath: "edgeModuleName",
+  mapper: {
+    required: true,
+    serializedName: "edgeModuleName",
+    type: {
+      name: "String"
+    }
+  }
+};
+export const filter: msRest.OperationQueryParameter = {
+  parameterPath: [
+    "options",
+    "filter"
+  ],
+  mapper: {
+    serializedName: "$filter",
+    type: {
+      name: "String"
+    }
+  }
+};
+export const livePipelineName: msRest.OperationURLParameter = {
+  parameterPath: "livePipelineName",
+  mapper: {
+    required: true,
+    serializedName: "livePipelineName",
+    type: {
+      name: "String"
+    }
+  }
+};
+export const locationName: msRest.OperationURLParameter = {
+  parameterPath: "locationName",
+  mapper: {
+    required: true,
+    serializedName: "locationName",
+    type: {
+      name: "String"
+    }
+  }
+};
+export const name: msRest.OperationURLParameter = {
+  parameterPath: "name",
+  mapper: {
+    required: true,
+    serializedName: "name",
+    type: {
+      name: "String"
+    }
+  }
+};
+export const nextPageLink: msRest.OperationURLParameter = {
+  parameterPath: "nextPageLink",
+  mapper: {
+    required: true,
+    serializedName: "nextLink",
+    type: {
+      name: "String"
+    }
+  },
+  skipEncoding: true
+};
+export const operationId: msRest.OperationURLParameter = {
+  parameterPath: "operationId",
+  mapper: {
+    required: true,
+    serializedName: "operationId",
+    type: {
+      name: "String"
+    }
+  }
+};
+export const pipelineJobName: msRest.OperationURLParameter = {
+  parameterPath: "pipelineJobName",
+  mapper: {
+    required: true,
+    serializedName: "pipelineJobName",
+    type: {
+      name: "String"
+    }
+  }
+};
+export const pipelineTopologyName: msRest.OperationURLParameter = {
+  parameterPath: "pipelineTopologyName",
+  mapper: {
+    required: true,
+    serializedName: "pipelineTopologyName",
+    type: {
+      name: "String"
+    }
+  }
+};
+export const resourceGroupName: msRest.OperationURLParameter = {
+  parameterPath: "resourceGroupName",
+  mapper: {
+    required: true,
+    serializedName: "resourceGroupName",
+    constraints: {
+      MaxLength: 90,
+      MinLength: 1
+    },
+    type: {
+      name: "String"
+    }
+  }
+};
+export const subscriptionId: msRest.OperationURLParameter = {
+  parameterPath: "subscriptionId",
+  mapper: {
+    required: true,
+    serializedName: "subscriptionId",
+    constraints: {
+      MinLength: 1
+    },
+    type: {
+      name: "String"
+    }
+  }
+};
+export const top: msRest.OperationQueryParameter = {
+  parameterPath: [
+    "options",
+    "top"
+  ],
+  mapper: {
+    serializedName: "$top",
+    type: {
+      name: "Number"
+    }
+  }
+};
+export const videoName: msRest.OperationURLParameter = {
+  parameterPath: "videoName",
+  mapper: {
+    required: true,
+    serializedName: "videoName",
+    type: {
+      name: "String"
+    }
+  }
+};
diff --git a/sdk/videoanalyzer/arm-videoanalyzer/src/models/pipelineJobOperationStatusesMappers.ts b/sdk/videoanalyzer/arm-videoanalyzer/src/models/pipelineJobOperationStatusesMappers.ts
new file mode 100644
index 000000000000..11ef17aa41fa
--- /dev/null
+++ b/sdk/videoanalyzer/arm-videoanalyzer/src/models/pipelineJobOperationStatusesMappers.ts
@@ -0,0 +1,15 @@
+/*
+ * Copyright (c) Microsoft Corporation.
+ * Licensed under the MIT License.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ * Changes may cause incorrect behavior and will be lost if the code is regenerated.
+ */
+
+export {
+  discriminators,
+  ErrorAdditionalInfo,
+  ErrorDetail,
+  ErrorResponse,
+  PipelineJobOperationStatus
+} from "../models/mappers";
diff --git a/sdk/videoanalyzer/arm-videoanalyzer/src/models/pipelineJobsMappers.ts b/sdk/videoanalyzer/arm-videoanalyzer/src/models/pipelineJobsMappers.ts
new file mode 100644
index 000000000000..940b8b23a312
--- /dev/null
+++ b/sdk/videoanalyzer/arm-videoanalyzer/src/models/pipelineJobsMappers.ts
@@ -0,0 +1,91 @@
+/*
+ * Copyright (c) Microsoft Corporation.
+ * Licensed under the MIT License.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ * Changes may cause incorrect behavior and will be lost if the code is regenerated.
+ */
+
+export {
+  discriminators,
+  AccessPolicyEntity,
+  AccountEncryption,
+  AudioEncoderAac,
+  AudioEncoderBase,
+  AuthenticationBase,
+  AzureEntityResource,
+  BaseResource,
+  CertificateSource,
+  CredentialsBase,
+  EccTokenKey,
+  EdgeModuleEntity,
+  EncoderCustomPreset,
+  EncoderPresetBase,
+  EncoderProcessor,
+  EncoderSystemPreset,
+  Endpoint,
+  EndpointBase,
+  ErrorAdditionalInfo,
+  ErrorDetail,
+  ErrorResponse,
+  GroupLevelAccessControl,
+  IotHub,
+  JwtAuthentication,
+  KeyVaultProperties,
+  LivePipeline,
+  LivePipelineUpdate,
+  NetworkAccessControl,
+  NodeBase,
+  NodeInput,
+  ParameterDeclaration,
+  ParameterDefinition,
+  PemCertificateList,
+  PipelineJob,
+  PipelineJobCollection,
+  PipelineJobError,
+  PipelineJobUpdate,
+  PipelineTopology,
+  PipelineTopologyUpdate,
+  PrivateEndpoint,
+  PrivateEndpointConnection,
+  PrivateLinkResource,
+  PrivateLinkServiceConnectionState,
+  ProcessorNodeBase,
+  ProxyResource,
+  Resource,
+  ResourceIdentity,
+  RsaTokenKey,
+  RtspSource,
+  SecureIotDeviceRemoteTunnel,
+  SinkNodeBase,
+  Sku,
+  SourceNodeBase,
+  StorageAccount,
+  SystemData,
+  TimeSequenceBase,
+  TlsEndpoint,
+  TlsValidationOptions,
+  TokenClaim,
+  TokenKey,
+  TrackedResource,
+  TunnelBase,
+  UnsecuredEndpoint,
+  UserAssignedManagedIdentity,
+  UsernamePasswordCredentials,
+  VideoAnalyzerIdentity,
+  VideoAnalyzerModel,
+  VideoArchival,
+  VideoContentUrls,
+  VideoCreationProperties,
+  VideoEncoderBase,
+  VideoEncoderH264,
+  VideoEntity,
+  VideoFlags,
+  VideoMediaInfo,
+  VideoPreviewImageUrls,
+  VideoPublishingOptions,
+  VideoScale,
+  VideoSequenceAbsoluteTimeMarkers,
+  VideoSink,
+  VideoSource
+} from "../models/mappers";
diff --git a/sdk/videoanalyzer/arm-videoanalyzer/src/models/pipelineTopologiesMappers.ts b/sdk/videoanalyzer/arm-videoanalyzer/src/models/pipelineTopologiesMappers.ts
new file mode 100644
index 000000000000..462aa21e10f1
--- /dev/null
+++ b/sdk/videoanalyzer/arm-videoanalyzer/src/models/pipelineTopologiesMappers.ts
@@ -0,0 +1,91 @@
+/*
+ * Copyright (c) Microsoft Corporation.
+ * Licensed under the MIT License.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ * Changes may cause incorrect behavior and will be lost if the code is regenerated.
+ */
+
+export {
+  discriminators,
+  AccessPolicyEntity,
+  AccountEncryption,
+  AudioEncoderAac,
+  AudioEncoderBase,
+  AuthenticationBase,
+  AzureEntityResource,
+  BaseResource,
+  CertificateSource,
+  CredentialsBase,
+  EccTokenKey,
+  EdgeModuleEntity,
+  EncoderCustomPreset,
+  EncoderPresetBase,
+  EncoderProcessor,
+  EncoderSystemPreset,
+  Endpoint,
+  EndpointBase,
+  ErrorAdditionalInfo,
+  ErrorDetail,
+  ErrorResponse,
+  GroupLevelAccessControl,
+  IotHub,
+  JwtAuthentication,
+  KeyVaultProperties,
+  LivePipeline,
+  LivePipelineUpdate,
+  NetworkAccessControl,
+  NodeBase,
+  NodeInput,
+  ParameterDeclaration,
+  ParameterDefinition,
+  PemCertificateList,
+  PipelineJob,
+  PipelineJobError,
+  PipelineJobUpdate,
+  PipelineTopology,
+  PipelineTopologyCollection,
+  PipelineTopologyUpdate,
+  PrivateEndpoint,
+  PrivateEndpointConnection,
+  PrivateLinkResource,
+  PrivateLinkServiceConnectionState,
+  ProcessorNodeBase,
+  ProxyResource,
+  Resource,
+  ResourceIdentity,
+  RsaTokenKey,
+  RtspSource,
+  SecureIotDeviceRemoteTunnel,
+  SinkNodeBase,
+  Sku,
+  SourceNodeBase,
+  StorageAccount,
+  SystemData,
+  TimeSequenceBase,
+  TlsEndpoint,
+  TlsValidationOptions,
+  TokenClaim,
+  TokenKey,
+  TrackedResource,
+  TunnelBase,
+  UnsecuredEndpoint,
+  UserAssignedManagedIdentity,
+  UsernamePasswordCredentials,
+  VideoAnalyzerIdentity,
+  VideoAnalyzerModel,
+  VideoArchival,
+  VideoContentUrls,
+  VideoCreationProperties,
+  VideoEncoderBase,
+  VideoEncoderH264,
+  VideoEntity,
+  VideoFlags,
+  VideoMediaInfo,
+  VideoPreviewImageUrls,
+  VideoPublishingOptions,
+  VideoScale,
+  VideoSequenceAbsoluteTimeMarkers,
+  VideoSink,
+  VideoSource
+} from "../models/mappers";
diff --git a/sdk/videoanalyzer/arm-videoanalyzer/src/models/privateEndpointConnectionsMappers.ts b/sdk/videoanalyzer/arm-videoanalyzer/src/models/privateEndpointConnectionsMappers.ts
new file mode 100644
index 000000000000..751c03cd527e
--- /dev/null
+++ b/sdk/videoanalyzer/arm-videoanalyzer/src/models/privateEndpointConnectionsMappers.ts
@@ -0,0 +1,92 @@
+/*
+ * Copyright (c) Microsoft Corporation.
+ * Licensed under the MIT License.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ * Changes may cause incorrect behavior and will be lost if the code is regenerated.
+ */
+
+export {
+  discriminators,
+  AccessPolicyEntity,
+  AccountEncryption,
+  AudioEncoderAac,
+  AudioEncoderBase,
+  AuthenticationBase,
+  AzureEntityResource,
+  BaseResource,
+  CertificateSource,
+  CredentialsBase,
+  EccTokenKey,
+  EdgeModuleEntity,
+  EncoderCustomPreset,
+  EncoderPresetBase,
+  EncoderProcessor,
+  EncoderSystemPreset,
+  Endpoint,
+  EndpointBase,
+  ErrorAdditionalInfo,
+  ErrorDetail,
+  ErrorResponse,
+  GroupLevelAccessControl,
+  IotHub,
+  JwtAuthentication,
+  KeyVaultProperties,
+  LivePipeline,
+  LivePipelineUpdate,
+  NetworkAccessControl,
+  NodeBase,
+  NodeInput,
+  ParameterDeclaration,
+  ParameterDefinition,
+  PemCertificateList,
+  PipelineJob,
+  PipelineJobError,
+  PipelineJobUpdate,
+  PipelineTopology,
+  PipelineTopologyUpdate,
+  PrivateEndpoint,
+  PrivateEndpointConnection,
+  PrivateEndpointConnectionListResult,
+  PrivateEndpointConnectionsCreateOrUpdateHeaders,
+  PrivateLinkResource,
+  PrivateLinkServiceConnectionState,
+  ProcessorNodeBase,
+  ProxyResource,
+  Resource,
+  ResourceIdentity,
+  RsaTokenKey,
+  RtspSource,
+  SecureIotDeviceRemoteTunnel,
+  SinkNodeBase,
+  Sku,
+  SourceNodeBase,
+  StorageAccount,
+  SystemData,
+  TimeSequenceBase,
+  TlsEndpoint,
+  TlsValidationOptions,
+  TokenClaim,
+  TokenKey,
+  TrackedResource,
+  TunnelBase,
+  UnsecuredEndpoint,
+  UserAssignedManagedIdentity,
+  UsernamePasswordCredentials,
+  VideoAnalyzerIdentity,
+  VideoAnalyzerModel,
+  VideoArchival,
+  VideoContentUrls,
+  VideoCreationProperties,
+  VideoEncoderBase,
+  VideoEncoderH264,
+  VideoEntity,
+  VideoFlags,
+  VideoMediaInfo,
+  VideoPreviewImageUrls,
+  VideoPublishingOptions,
+  VideoScale,
+  VideoSequenceAbsoluteTimeMarkers,
+  VideoSink,
+  VideoSource
+} from "../models/mappers";
diff --git a/sdk/videoanalyzer/arm-videoanalyzer/src/models/privateLinkResourcesMappers.ts b/sdk/videoanalyzer/arm-videoanalyzer/src/models/privateLinkResourcesMappers.ts
new file mode 100644
index 000000000000..3df963b56b36
--- /dev/null
+++ b/sdk/videoanalyzer/arm-videoanalyzer/src/models/privateLinkResourcesMappers.ts
@@ -0,0 +1,91 @@
+/*
+ * Copyright (c) Microsoft Corporation.
+ * Licensed under the MIT License.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ * Changes may cause incorrect behavior and will be lost if the code is regenerated.
+ */
+
+export {
+  discriminators,
+  AccessPolicyEntity,
+  AccountEncryption,
+  AudioEncoderAac,
+  AudioEncoderBase,
+  AuthenticationBase,
+  AzureEntityResource,
+  BaseResource,
+  CertificateSource,
+  CredentialsBase,
+  EccTokenKey,
+  EdgeModuleEntity,
+  EncoderCustomPreset,
+  EncoderPresetBase,
+  EncoderProcessor,
+  EncoderSystemPreset,
+  Endpoint,
+  EndpointBase,
+  ErrorAdditionalInfo,
+  ErrorDetail,
+  ErrorResponse,
+  GroupLevelAccessControl,
+  IotHub,
+  JwtAuthentication,
+  KeyVaultProperties,
+  LivePipeline,
+  LivePipelineUpdate,
+  NetworkAccessControl,
+  NodeBase,
+  NodeInput,
+  ParameterDeclaration,
+  ParameterDefinition,
+  PemCertificateList,
+  PipelineJob,
+  PipelineJobError,
+  PipelineJobUpdate,
+  PipelineTopology,
+  PipelineTopologyUpdate,
+  PrivateEndpoint,
+  PrivateEndpointConnection,
+  PrivateLinkResource,
+  PrivateLinkResourceListResult,
+  PrivateLinkServiceConnectionState,
+  ProcessorNodeBase,
+  ProxyResource,
+  Resource,
+  ResourceIdentity,
+  RsaTokenKey,
+  RtspSource,
+  SecureIotDeviceRemoteTunnel,
+  SinkNodeBase,
+  Sku,
+  SourceNodeBase,
+  StorageAccount,
+  SystemData,
+  TimeSequenceBase,
+  TlsEndpoint,
+  TlsValidationOptions,
+  TokenClaim,
+  TokenKey,
+  TrackedResource,
+  TunnelBase,
+  UnsecuredEndpoint,
+  UserAssignedManagedIdentity,
+  UsernamePasswordCredentials,
+  VideoAnalyzerIdentity,
+  VideoAnalyzerModel,
+  VideoArchival,
+  VideoContentUrls,
+  VideoCreationProperties,
+  VideoEncoderBase,
+  VideoEncoderH264,
+  VideoEntity,
+  VideoFlags,
+  VideoMediaInfo,
+  VideoPreviewImageUrls,
+  VideoPublishingOptions,
+  VideoScale,
+  VideoSequenceAbsoluteTimeMarkers,
+  VideoSink,
+  VideoSource
+} from "../models/mappers";
diff --git a/sdk/videoanalyzer/arm-videoanalyzer/src/models/videoAnalyzerOperationResultsMappers.ts b/sdk/videoanalyzer/arm-videoanalyzer/src/models/videoAnalyzerOperationResultsMappers.ts
new file mode 100644
index 000000000000..803c914d53cb
--- /dev/null
+++ b/sdk/videoanalyzer/arm-videoanalyzer/src/models/videoAnalyzerOperationResultsMappers.ts
@@ -0,0 +1,90 @@
+/*
+ * Copyright (c) Microsoft Corporation.
+ * Licensed under the MIT License.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ * Changes may cause incorrect behavior and will be lost if the code is regenerated.
+ */
+
+export {
+  discriminators,
+  AccessPolicyEntity,
+  AccountEncryption,
+  AudioEncoderAac,
+  AudioEncoderBase,
+  AuthenticationBase,
+  AzureEntityResource,
+  BaseResource,
+  CertificateSource,
+  CredentialsBase,
+  EccTokenKey,
+  EdgeModuleEntity,
+  EncoderCustomPreset,
+  EncoderPresetBase,
+  EncoderProcessor,
+  EncoderSystemPreset,
+  Endpoint,
+  EndpointBase,
+  ErrorAdditionalInfo,
+  ErrorDetail,
+  ErrorResponse,
+  GroupLevelAccessControl,
+  IotHub,
+  JwtAuthentication,
+  KeyVaultProperties,
+  LivePipeline,
+  LivePipelineUpdate,
+  NetworkAccessControl,
+  NodeBase,
+  NodeInput,
+  ParameterDeclaration,
+  ParameterDefinition,
+  PemCertificateList,
+  PipelineJob,
+  PipelineJobError,
+  PipelineJobUpdate,
+  PipelineTopology,
+  PipelineTopologyUpdate,
+  PrivateEndpoint,
+  PrivateEndpointConnection,
+  PrivateLinkResource,
+  PrivateLinkServiceConnectionState,
+  ProcessorNodeBase,
+  ProxyResource,
+  Resource,
+  ResourceIdentity,
+  RsaTokenKey,
+  RtspSource,
+  SecureIotDeviceRemoteTunnel,
+  SinkNodeBase,
+  Sku,
+  SourceNodeBase,
+  StorageAccount,
+  SystemData,
+  TimeSequenceBase,
+  TlsEndpoint,
+  TlsValidationOptions,
+  TokenClaim,
+  TokenKey,
+  TrackedResource,
+  TunnelBase,
+  UnsecuredEndpoint,
+  UserAssignedManagedIdentity,
+  UsernamePasswordCredentials,
+  VideoAnalyzerIdentity,
+  VideoAnalyzerModel,
+  VideoArchival,
+  VideoContentUrls,
+  VideoCreationProperties,
+  VideoEncoderBase,
+  VideoEncoderH264,
+  VideoEntity,
+  VideoFlags,
+  VideoMediaInfo,
+  VideoPreviewImageUrls,
+  VideoPublishingOptions,
+  VideoScale,
+  VideoSequenceAbsoluteTimeMarkers,
+  VideoSink,
+  VideoSource
+} from "../models/mappers";
diff --git a/sdk/videoanalyzer/arm-videoanalyzer/src/models/videoAnalyzerOperationStatusesMappers.ts b/sdk/videoanalyzer/arm-videoanalyzer/src/models/videoAnalyzerOperationStatusesMappers.ts
new file mode 100644
index 000000000000..753831f9b410
--- /dev/null
+++ b/sdk/videoanalyzer/arm-videoanalyzer/src/models/videoAnalyzerOperationStatusesMappers.ts
@@ -0,0 +1,15 @@
+/*
+ * Copyright (c) Microsoft Corporation.
+ * Licensed under the MIT License.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ * Changes may cause incorrect behavior and will be lost if the code is regenerated.
+ */
+
+export {
+  discriminators,
+  ErrorAdditionalInfo,
+  ErrorDetail,
+  ErrorResponse,
+  VideoAnalyzerOperationStatus
+} from "../models/mappers";
diff --git a/sdk/videoanalyzer/arm-videoanalyzer/src/models/videoAnalyzersMappers.ts b/sdk/videoanalyzer/arm-videoanalyzer/src/models/videoAnalyzersMappers.ts
new file mode 100644
index 000000000000..6cda9c2a9b10
--- /dev/null
+++ b/sdk/videoanalyzer/arm-videoanalyzer/src/models/videoAnalyzersMappers.ts
@@ -0,0 +1,94 @@
+/*
+ * Copyright (c) Microsoft Corporation.
+ * Licensed under the MIT License.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ * Changes may cause incorrect behavior and will be lost if the code is regenerated.
+ */
+
+export {
+  discriminators,
+  AccessPolicyEntity,
+  AccountEncryption,
+  AudioEncoderAac,
+  AudioEncoderBase,
+  AuthenticationBase,
+  AzureEntityResource,
+  BaseResource,
+  CertificateSource,
+  CredentialsBase,
+  EccTokenKey,
+  EdgeModuleEntity,
+  EncoderCustomPreset,
+  EncoderPresetBase,
+  EncoderProcessor,
+  EncoderSystemPreset,
+  Endpoint,
+  EndpointBase,
+  ErrorAdditionalInfo,
+  ErrorDetail,
+  ErrorResponse,
+  GroupLevelAccessControl,
+  IotHub,
+  JwtAuthentication,
+  KeyVaultProperties,
+  LivePipeline,
+  LivePipelineUpdate,
+  NetworkAccessControl,
+  NodeBase,
+  NodeInput,
+  ParameterDeclaration,
+  ParameterDefinition,
+  PemCertificateList,
+  PipelineJob,
+  PipelineJobError,
+  PipelineJobUpdate,
+  PipelineTopology,
+  PipelineTopologyUpdate,
+  PrivateEndpoint,
+  PrivateEndpointConnection,
+  PrivateLinkResource,
+  PrivateLinkServiceConnectionState,
+  ProcessorNodeBase,
+  ProxyResource,
+  Resource,
+  ResourceIdentity,
+  RsaTokenKey,
+  RtspSource,
+  SecureIotDeviceRemoteTunnel,
+  SinkNodeBase,
+  Sku,
+  SourceNodeBase,
+  StorageAccount,
+  SystemData,
+  TimeSequenceBase,
+  TlsEndpoint,
+  TlsValidationOptions,
+  TokenClaim,
+  TokenKey,
+  TrackedResource,
+  TunnelBase,
+  UnsecuredEndpoint,
+  UserAssignedManagedIdentity,
+  UsernamePasswordCredentials,
+  VideoAnalyzerCollection,
+  VideoAnalyzerIdentity,
+  VideoAnalyzerModel,
+  VideoAnalyzersCreateOrUpdateHeaders,
+  VideoAnalyzersUpdateHeaders,
+  VideoAnalyzerUpdate,
+  VideoArchival,
+  VideoContentUrls,
+  VideoCreationProperties,
+  VideoEncoderBase,
+  VideoEncoderH264,
+  VideoEntity,
+  VideoFlags,
+  VideoMediaInfo,
+  VideoPreviewImageUrls,
+  VideoPublishingOptions,
+  VideoScale,
+  VideoSequenceAbsoluteTimeMarkers,
+  VideoSink,
+  VideoSource
+} from "../models/mappers";
diff --git a/sdk/videoanalyzer/arm-videoanalyzer/src/models/videosMappers.ts b/sdk/videoanalyzer/arm-videoanalyzer/src/models/videosMappers.ts
new file mode 100644
index 000000000000..693d2c40a722
--- /dev/null
+++ b/sdk/videoanalyzer/arm-videoanalyzer/src/models/videosMappers.ts
@@ -0,0 +1,92 @@
+/*
+ * Copyright (c) Microsoft Corporation.
+ * Licensed under the MIT License.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ * Changes may cause incorrect behavior and will be lost if the code is regenerated.
+ */
+
+export {
+  discriminators,
+  AccessPolicyEntity,
+  AccountEncryption,
+  AudioEncoderAac,
+  AudioEncoderBase,
+  AuthenticationBase,
+  AzureEntityResource,
+  BaseResource,
+  CertificateSource,
+  CredentialsBase,
+  EccTokenKey,
+  EdgeModuleEntity,
+  EncoderCustomPreset,
+  EncoderPresetBase,
+  EncoderProcessor,
+  EncoderSystemPreset,
+  Endpoint,
+  EndpointBase,
+  ErrorAdditionalInfo,
+  ErrorDetail,
+  ErrorResponse,
+  GroupLevelAccessControl,
+  IotHub,
+  JwtAuthentication,
+  KeyVaultProperties,
+  LivePipeline,
+  LivePipelineUpdate,
+  NetworkAccessControl,
+  NodeBase,
+  NodeInput,
+  ParameterDeclaration,
+  ParameterDefinition,
+  PemCertificateList,
+  PipelineJob,
+  PipelineJobError,
+  PipelineJobUpdate,
+  PipelineTopology,
+  PipelineTopologyUpdate,
+  PrivateEndpoint,
+  PrivateEndpointConnection,
+  PrivateLinkResource,
+  PrivateLinkServiceConnectionState,
+  ProcessorNodeBase,
+  ProxyResource,
+  Resource,
+  ResourceIdentity,
+  RsaTokenKey,
+  RtspSource,
+  SecureIotDeviceRemoteTunnel,
+  SinkNodeBase,
+  Sku,
+  SourceNodeBase,
+  StorageAccount,
+  SystemData,
+  TimeSequenceBase,
+  TlsEndpoint,
+  TlsValidationOptions,
+  TokenClaim,
+  TokenKey,
+  TrackedResource,
+  TunnelBase,
+  UnsecuredEndpoint,
+  UserAssignedManagedIdentity,
+  UsernamePasswordCredentials,
+  VideoAnalyzerIdentity,
+  VideoAnalyzerModel,
+  VideoArchival,
+  VideoContentToken,
+  VideoContentUrls,
+  VideoCreationProperties,
+  VideoEncoderBase,
+  VideoEncoderH264,
+  VideoEntity,
+  VideoEntityCollection,
+  VideoFlags,
+  VideoMediaInfo,
+  VideoPreviewImageUrls,
+  VideoPublishingOptions,
+  VideoScale,
+  VideoSequenceAbsoluteTimeMarkers,
+  VideoSink,
+  VideoSource
+} from "../models/mappers";
diff --git a/sdk/videoanalyzer/arm-videoanalyzer/src/operations/accessPolicies.ts b/sdk/videoanalyzer/arm-videoanalyzer/src/operations/accessPolicies.ts
new file mode 100644
index 000000000000..314438534195
--- /dev/null
+++ b/sdk/videoanalyzer/arm-videoanalyzer/src/operations/accessPolicies.ts
@@ -0,0 +1,418 @@
+/*
+ * Copyright (c) Microsoft Corporation.
+ * Licensed under the MIT License.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ * Changes may cause incorrect behavior and will be lost if the code is
+ * regenerated.
+ */
+
+import * as msRest from "@azure/ms-rest-js";
+import * as Models from "../models";
+import * as Mappers from "../models/accessPoliciesMappers";
+import * as Parameters from "../models/parameters";
+import { VideoAnalyzerContext } from "../videoAnalyzerContext";
+
+/** Class representing a AccessPolicies. */
+export class AccessPolicies {
+  private readonly client: VideoAnalyzerContext;
+
+  /**
+   * Create a AccessPolicies.
+   * @param {VideoAnalyzerContext} client Reference to the service client.
+   */
+  constructor(client: VideoAnalyzerContext) {
+    this.client = client;
+  }
+
+  /**
+   * Retrieves all existing access policy resources, along with their JSON representations.
+   * @summary List all existing access policy resources.
+   * @param resourceGroupName The name of the resource group. The name is case insensitive.
+   * @param accountName The Azure Video Analyzer account name.
+   * @param [options] The optional parameters
+   * @returns Promise
+   */
+  list(resourceGroupName: string, accountName: string, options?: Models.AccessPoliciesListOptionalParams): Promise;
+  /**
+   * @param resourceGroupName The name of the resource group. The name is case insensitive.
+   * @param accountName The Azure Video Analyzer account name.
+   * @param callback The callback
+   */
+  list(resourceGroupName: string, accountName: string, callback: msRest.ServiceCallback): void;
+  /**
+   * @param resourceGroupName The name of the resource group. The name is case insensitive.
+   * @param accountName The Azure Video Analyzer account name.
+   * @param options The optional parameters
+   * @param callback The callback
+   */
+  list(resourceGroupName: string, accountName: string, options: Models.AccessPoliciesListOptionalParams, callback: msRest.ServiceCallback): void;
+  list(resourceGroupName: string, accountName: string, options?: Models.AccessPoliciesListOptionalParams | msRest.ServiceCallback, callback?: msRest.ServiceCallback): Promise {
+    return this.client.sendOperationRequest(
+      {
+        resourceGroupName,
+        accountName,
+        options
+      },
+      listOperationSpec,
+      callback) as Promise;
+  }
+
+  /**
+   * Retrieves an existing access policy resource with the given name.
+   * @summary Retrieves an existing access policy resource.
+   * @param resourceGroupName The name of the resource group. The name is case insensitive.
+   * @param accountName The Azure Video Analyzer account name.
+   * @param accessPolicyName The Access Policy name.
+   * @param [options] The optional parameters
+   * @returns Promise
+   */
+  get(resourceGroupName: string, accountName: string, accessPolicyName: string, options?: msRest.RequestOptionsBase): Promise;
+  /**
+   * @param resourceGroupName The name of the resource group. The name is case insensitive.
+   * @param accountName The Azure Video Analyzer account name.
+   * @param accessPolicyName The Access Policy name.
+   * @param callback The callback
+   */
+  get(resourceGroupName: string, accountName: string, accessPolicyName: string, callback: msRest.ServiceCallback): void;
+  /**
+   * @param resourceGroupName The name of the resource group. The name is case insensitive.
+   * @param accountName The Azure Video Analyzer account name.
+   * @param accessPolicyName The Access Policy name.
+   * @param options The optional parameters
+   * @param callback The callback
+   */
+  get(resourceGroupName: string, accountName: string, accessPolicyName: string, options: msRest.RequestOptionsBase, callback: msRest.ServiceCallback): void;
+  get(resourceGroupName: string, accountName: string, accessPolicyName: string, options?: msRest.RequestOptionsBase | msRest.ServiceCallback, callback?: msRest.ServiceCallback): Promise {
+    return this.client.sendOperationRequest(
+      {
+        resourceGroupName,
+        accountName,
+        accessPolicyName,
+        options
+      },
+      getOperationSpec,
+      callback) as Promise;
+  }
+
+  /**
+   * Creates a new access policy resource or updates an existing one with the given name.
+   * @summary Creates a new access policy resource or updates an existing one.
+   * @param resourceGroupName The name of the resource group. The name is case insensitive.
+   * @param accountName The Azure Video Analyzer account name.
+   * @param accessPolicyName The Access Policy name.
+   * @param parameters The request parameters
+   * @param [options] The optional parameters
+   * @returns Promise
+   */
+  createOrUpdate(resourceGroupName: string, accountName: string, accessPolicyName: string, parameters: Models.AccessPolicyEntity, options?: msRest.RequestOptionsBase): Promise;
+  /**
+   * @param resourceGroupName The name of the resource group. The name is case insensitive.
+   * @param accountName The Azure Video Analyzer account name.
+   * @param accessPolicyName The Access Policy name.
+   * @param parameters The request parameters
+   * @param callback The callback
+   */
+  createOrUpdate(resourceGroupName: string, accountName: string, accessPolicyName: string, parameters: Models.AccessPolicyEntity, callback: msRest.ServiceCallback): void;
+  /**
+   * @param resourceGroupName The name of the resource group. The name is case insensitive.
+   * @param accountName The Azure Video Analyzer account name.
+   * @param accessPolicyName The Access Policy name.
+   * @param parameters The request parameters
+   * @param options The optional parameters
+   * @param callback The callback
+   */
+  createOrUpdate(resourceGroupName: string, accountName: string, accessPolicyName: string, parameters: Models.AccessPolicyEntity, options: msRest.RequestOptionsBase, callback: msRest.ServiceCallback): void;
+  createOrUpdate(resourceGroupName: string, accountName: string, accessPolicyName: string, parameters: Models.AccessPolicyEntity, options?: msRest.RequestOptionsBase | msRest.ServiceCallback, callback?: msRest.ServiceCallback): Promise {
+    return this.client.sendOperationRequest(
+      {
+        resourceGroupName,
+        accountName,
+        accessPolicyName,
+        parameters,
+        options
+      },
+      createOrUpdateOperationSpec,
+      callback) as Promise;
+  }
+
+  /**
+   * Deletes an existing access policy resource with the given name.
+   * @summary Deletes an existing access policy resource.
+   * @param resourceGroupName The name of the resource group. The name is case insensitive.
+   * @param accountName The Azure Video Analyzer account name.
+   * @param accessPolicyName The Access Policy name.
+   * @param [options] The optional parameters
+   * @returns Promise
+   */
+  deleteMethod(resourceGroupName: string, accountName: string, accessPolicyName: string, options?: msRest.RequestOptionsBase): Promise;
+  /**
+   * @param resourceGroupName The name of the resource group. The name is case insensitive.
+   * @param accountName The Azure Video Analyzer account name.
+   * @param accessPolicyName The Access Policy name.
+   * @param callback The callback
+   */
+  deleteMethod(resourceGroupName: string, accountName: string, accessPolicyName: string, callback: msRest.ServiceCallback): void;
+  /**
+   * @param resourceGroupName The name of the resource group. The name is case insensitive.
+   * @param accountName The Azure Video Analyzer account name.
+   * @param accessPolicyName The Access Policy name.
+   * @param options The optional parameters
+   * @param callback The callback
+   */
+  deleteMethod(resourceGroupName: string, accountName: string, accessPolicyName: string, options: msRest.RequestOptionsBase, callback: msRest.ServiceCallback): void;
+  deleteMethod(resourceGroupName: string, accountName: string, accessPolicyName: string, options?: msRest.RequestOptionsBase | msRest.ServiceCallback, callback?: msRest.ServiceCallback): Promise {
+    return this.client.sendOperationRequest(
+      {
+        resourceGroupName,
+        accountName,
+        accessPolicyName,
+        options
+      },
+      deleteMethodOperationSpec,
+      callback);
+  }
+
+  /**
+   * Updates individual properties of an existing access policy resource with the given name.
+   * @summary Updates individual properties of an existing access policy resource.
+   * @param resourceGroupName The name of the resource group. The name is case insensitive.
+   * @param accountName The Azure Video Analyzer account name.
+   * @param accessPolicyName The Access Policy name.
+   * @param parameters The request parameters
+   * @param [options] The optional parameters
+   * @returns Promise
+   */
+  update(resourceGroupName: string, accountName: string, accessPolicyName: string, parameters: Models.AccessPolicyEntity, options?: msRest.RequestOptionsBase): Promise;
+  /**
+   * @param resourceGroupName The name of the resource group. The name is case insensitive.
+   * @param accountName The Azure Video Analyzer account name.
+   * @param accessPolicyName The Access Policy name.
+   * @param parameters The request parameters
+   * @param callback The callback
+   */
+  update(resourceGroupName: string, accountName: string, accessPolicyName: string, parameters: Models.AccessPolicyEntity, callback: msRest.ServiceCallback): void;
+  /**
+   * @param resourceGroupName The name of the resource group. The name is case insensitive.
+   * @param accountName The Azure Video Analyzer account name.
+   * @param accessPolicyName The Access Policy name.
+   * @param parameters The request parameters
+   * @param options The optional parameters
+   * @param callback The callback
+   */
+  update(resourceGroupName: string, accountName: string, accessPolicyName: string, parameters: Models.AccessPolicyEntity, options: msRest.RequestOptionsBase, callback: msRest.ServiceCallback): void;
+  update(resourceGroupName: string, accountName: string, accessPolicyName: string, parameters: Models.AccessPolicyEntity, options?: msRest.RequestOptionsBase | msRest.ServiceCallback, callback?: msRest.ServiceCallback): Promise {
+    return this.client.sendOperationRequest(
+      {
+        resourceGroupName,
+        accountName,
+        accessPolicyName,
+        parameters,
+        options
+      },
+      updateOperationSpec,
+      callback) as Promise;
+  }
+
+  /**
+   * Retrieves all existing access policy resources, along with their JSON representations.
+   * @summary List all existing access policy resources.
+   * @param nextPageLink The NextLink from the previous successful call to List operation.
+   * @param [options] The optional parameters
+   * @returns Promise
+   */
+  listNext(nextPageLink: string, options?: Models.AccessPoliciesListNextOptionalParams): Promise;
+  /**
+   * @param nextPageLink The NextLink from the previous successful call to List operation.
+   * @param callback The callback
+   */
+  listNext(nextPageLink: string, callback: msRest.ServiceCallback): void;
+  /**
+   * @param nextPageLink The NextLink from the previous successful call to List operation.
+   * @param options The optional parameters
+   * @param callback The callback
+   */
+  listNext(nextPageLink: string, options: Models.AccessPoliciesListNextOptionalParams, callback: msRest.ServiceCallback): void;
+  listNext(nextPageLink: string, options?: Models.AccessPoliciesListNextOptionalParams | msRest.ServiceCallback, callback?: msRest.ServiceCallback): Promise {
+    return this.client.sendOperationRequest(
+      {
+        nextPageLink,
+        options
+      },
+      listNextOperationSpec,
+      callback) as Promise;
+  }
+}
+
+// Operation Specifications
+const serializer = new msRest.Serializer(Mappers);
+const listOperationSpec: msRest.OperationSpec = {
+  httpMethod: "GET",
+  path: "subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Media/videoAnalyzers/{accountName}/accessPolicies",
+  urlParameters: [
+    Parameters.subscriptionId,
+    Parameters.resourceGroupName,
+    Parameters.accountName
+  ],
+  queryParameters: [
+    Parameters.apiVersion,
+    Parameters.top
+  ],
+  headerParameters: [
+    Parameters.acceptLanguage
+  ],
+  responses: {
+    200: {
+      bodyMapper: Mappers.AccessPolicyEntityCollection
+    },
+    default: {
+      bodyMapper: Mappers.ErrorResponse
+    }
+  },
+  serializer
+};
+
+const getOperationSpec: msRest.OperationSpec = {
+  httpMethod: "GET",
+  path: "subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Media/videoAnalyzers/{accountName}/accessPolicies/{accessPolicyName}",
+  urlParameters: [
+    Parameters.subscriptionId,
+    Parameters.resourceGroupName,
+    Parameters.accountName,
+    Parameters.accessPolicyName
+  ],
+  queryParameters: [
+    Parameters.apiVersion
+  ],
+  headerParameters: [
+    Parameters.acceptLanguage
+  ],
+  responses: {
+    200: {
+      bodyMapper: Mappers.AccessPolicyEntity
+    },
+    default: {
+      bodyMapper: Mappers.ErrorResponse
+    }
+  },
+  serializer
+};
+
+const createOrUpdateOperationSpec: msRest.OperationSpec = {
+  httpMethod: "PUT",
+  path: "subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Media/videoAnalyzers/{accountName}/accessPolicies/{accessPolicyName}",
+  urlParameters: [
+    Parameters.subscriptionId,
+    Parameters.resourceGroupName,
+    Parameters.accountName,
+    Parameters.accessPolicyName
+  ],
+  queryParameters: [
+    Parameters.apiVersion
+  ],
+  headerParameters: [
+    Parameters.acceptLanguage
+  ],
+  requestBody: {
+    parameterPath: "parameters",
+    mapper: {
+      ...Mappers.AccessPolicyEntity,
+      required: true
+    }
+  },
+  responses: {
+    200: {
+      bodyMapper: Mappers.AccessPolicyEntity
+    },
+    201: {
+      bodyMapper: Mappers.AccessPolicyEntity
+    },
+    default: {
+      bodyMapper: Mappers.ErrorResponse
+    }
+  },
+  serializer
+};
+
+const deleteMethodOperationSpec: msRest.OperationSpec = {
+  httpMethod: "DELETE",
+  path: "subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Media/videoAnalyzers/{accountName}/accessPolicies/{accessPolicyName}",
+  urlParameters: [
+    Parameters.subscriptionId,
+    Parameters.resourceGroupName,
+    Parameters.accountName,
+    Parameters.accessPolicyName
+  ],
+  queryParameters: [
+    Parameters.apiVersion
+  ],
+  headerParameters: [
+    Parameters.acceptLanguage
+  ],
+  responses: {
+    200: {},
+    204: {},
+    default: {
+      bodyMapper: Mappers.ErrorResponse
+    }
+  },
+  serializer
+};
+
+const updateOperationSpec: msRest.OperationSpec = {
+  httpMethod: "PATCH",
+  path: "subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Media/videoAnalyzers/{accountName}/accessPolicies/{accessPolicyName}",
+  urlParameters: [
+    Parameters.subscriptionId,
+    Parameters.resourceGroupName,
+    Parameters.accountName,
+    Parameters.accessPolicyName
+  ],
+  queryParameters: [
+    Parameters.apiVersion
+  ],
+  headerParameters: [
+    Parameters.acceptLanguage
+  ],
+  requestBody: {
+    parameterPath: "parameters",
+    mapper: {
+      ...Mappers.AccessPolicyEntity,
+      required: true
+    }
+  },
+  responses: {
+    200: {
+      bodyMapper: Mappers.AccessPolicyEntity
+    },
+    default: {
+      bodyMapper: Mappers.ErrorResponse
+    }
+  },
+  serializer
+};
+
+const listNextOperationSpec: msRest.OperationSpec = {
+  httpMethod: "GET",
+  baseUrl: "https://management.azure.com",
+  path: "{nextLink}",
+  urlParameters: [
+    Parameters.nextPageLink
+  ],
+  queryParameters: [
+    Parameters.apiVersion,
+    Parameters.top
+  ],
+  headerParameters: [
+    Parameters.acceptLanguage
+  ],
+  responses: {
+    200: {
+      bodyMapper: Mappers.AccessPolicyEntityCollection
+    },
+    default: {
+      bodyMapper: Mappers.ErrorResponse
+    }
+  },
+  serializer
+};
diff --git a/sdk/videoanalyzer/arm-videoanalyzer/src/operations/edgeModules.ts b/sdk/videoanalyzer/arm-videoanalyzer/src/operations/edgeModules.ts
new file mode 100644
index 000000000000..26b1f316befd
--- /dev/null
+++ b/sdk/videoanalyzer/arm-videoanalyzer/src/operations/edgeModules.ts
@@ -0,0 +1,436 @@
+/*
+ * Copyright (c) Microsoft Corporation.
+ * Licensed under the MIT License.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ * Changes may cause incorrect behavior and will be lost if the code is
+ * regenerated.
+ */
+
+import * as msRest from "@azure/ms-rest-js";
+import * as Models from "../models";
+import * as Mappers from "../models/edgeModulesMappers";
+import * as Parameters from "../models/parameters";
+import { VideoAnalyzerContext } from "../videoAnalyzerContext";
+
+/** Class representing a EdgeModules. */
+export class EdgeModules {
+  private readonly client: VideoAnalyzerContext;
+
+  /**
+   * Create a EdgeModules.
+   * @param {VideoAnalyzerContext} client Reference to the service client.
+   */
+  constructor(client: VideoAnalyzerContext) {
+    this.client = client;
+  }
+
+  /**
+   * List all existing edge module resources, along with their JSON representations.
+   * @summary List all existing edge module resources.
+   * @param resourceGroupName The name of the resource group. The name is case insensitive.
+   * @param accountName The Azure Video Analyzer account name.
+   * @param [options] The optional parameters
+   * @returns Promise
+   */
+  list(resourceGroupName: string, accountName: string, options?: Models.EdgeModulesListOptionalParams): Promise;
+  /**
+   * @param resourceGroupName The name of the resource group. The name is case insensitive.
+   * @param accountName The Azure Video Analyzer account name.
+   * @param callback The callback
+   */
+  list(resourceGroupName: string, accountName: string, callback: msRest.ServiceCallback): void;
+  /**
+   * @param resourceGroupName The name of the resource group. The name is case insensitive.
+   * @param accountName The Azure Video Analyzer account name.
+   * @param options The optional parameters
+   * @param callback The callback
+   */
+  list(resourceGroupName: string, accountName: string, options: Models.EdgeModulesListOptionalParams, callback: msRest.ServiceCallback): void;
+  list(resourceGroupName: string, accountName: string, options?: Models.EdgeModulesListOptionalParams | msRest.ServiceCallback, callback?: msRest.ServiceCallback): Promise {
+    return this.client.sendOperationRequest(
+      {
+        resourceGroupName,
+        accountName,
+        options
+      },
+      listOperationSpec,
+      callback) as Promise;
+  }
+
+  /**
+   * Retrieves an existing edge module resource with the given name.
+   * @summary Retrieves an existing edge module resource.
+   * @param resourceGroupName The name of the resource group. The name is case insensitive.
+   * @param accountName The Azure Video Analyzer account name.
+   * @param edgeModuleName The Edge Module name.
+   * @param [options] The optional parameters
+   * @returns Promise
+   */
+  get(resourceGroupName: string, accountName: string, edgeModuleName: string, options?: msRest.RequestOptionsBase): Promise;
+  /**
+   * @param resourceGroupName The name of the resource group. The name is case insensitive.
+   * @param accountName The Azure Video Analyzer account name.
+   * @param edgeModuleName The Edge Module name.
+   * @param callback The callback
+   */
+  get(resourceGroupName: string, accountName: string, edgeModuleName: string, callback: msRest.ServiceCallback): void;
+  /**
+   * @param resourceGroupName The name of the resource group. The name is case insensitive.
+   * @param accountName The Azure Video Analyzer account name.
+   * @param edgeModuleName The Edge Module name.
+   * @param options The optional parameters
+   * @param callback The callback
+   */
+  get(resourceGroupName: string, accountName: string, edgeModuleName: string, options: msRest.RequestOptionsBase, callback: msRest.ServiceCallback): void;
+  get(resourceGroupName: string, accountName: string, edgeModuleName: string, options?: msRest.RequestOptionsBase | msRest.ServiceCallback, callback?: msRest.ServiceCallback): Promise {
+    return this.client.sendOperationRequest(
+      {
+        resourceGroupName,
+        accountName,
+        edgeModuleName,
+        options
+      },
+      getOperationSpec,
+      callback) as Promise;
+  }
+
+  /**
+   * Creates a new edge module or updates an existing one. An edge module resource enables a single
+   * instance of an Azure Video Analyzer IoT edge module to interact with the Video Analyzer Account.
+   * This is used for authorization and also to make sure that the particular edge module instance
+   * only has access to the data it requires from the Azure Video Analyzer service. A new edge module
+   * resource should be created for every new instance of an Azure Video Analyzer edge module
+   * deployed to you Azure IoT edge environment. Edge module resources can be deleted if the specific
+   * module is not in use anymore.
+   * @summary Creates a new edge module or updates an existing one.
+   * @param resourceGroupName The name of the resource group. The name is case insensitive.
+   * @param accountName The Azure Video Analyzer account name.
+   * @param edgeModuleName The Edge Module name.
+   * @param [options] The optional parameters
+   * @returns Promise
+   */
+  createOrUpdate(resourceGroupName: string, accountName: string, edgeModuleName: string, options?: msRest.RequestOptionsBase): Promise;
+  /**
+   * @param resourceGroupName The name of the resource group. The name is case insensitive.
+   * @param accountName The Azure Video Analyzer account name.
+   * @param edgeModuleName The Edge Module name.
+   * @param callback The callback
+   */
+  createOrUpdate(resourceGroupName: string, accountName: string, edgeModuleName: string, callback: msRest.ServiceCallback): void;
+  /**
+   * @param resourceGroupName The name of the resource group. The name is case insensitive.
+   * @param accountName The Azure Video Analyzer account name.
+   * @param edgeModuleName The Edge Module name.
+   * @param options The optional parameters
+   * @param callback The callback
+   */
+  createOrUpdate(resourceGroupName: string, accountName: string, edgeModuleName: string, options: msRest.RequestOptionsBase, callback: msRest.ServiceCallback): void;
+  createOrUpdate(resourceGroupName: string, accountName: string, edgeModuleName: string, options?: msRest.RequestOptionsBase | msRest.ServiceCallback, callback?: msRest.ServiceCallback): Promise {
+    return this.client.sendOperationRequest(
+      {
+        resourceGroupName,
+        accountName,
+        edgeModuleName,
+        options
+      },
+      createOrUpdateOperationSpec,
+      callback) as Promise;
+  }
+
+  /**
+   * Deletes an existing edge module resource. Deleting the edge module resource will prevent an
+   * Azure Video Analyzer IoT edge module which was previously initiated with the module provisioning
+   * token from communicating with the cloud.
+   * @summary Deletes an existing edge module resource.
+   * @param resourceGroupName The name of the resource group. The name is case insensitive.
+   * @param accountName The Azure Video Analyzer account name.
+   * @param edgeModuleName The Edge Module name.
+   * @param [options] The optional parameters
+   * @returns Promise
+   */
+  deleteMethod(resourceGroupName: string, accountName: string, edgeModuleName: string, options?: msRest.RequestOptionsBase): Promise;
+  /**
+   * @param resourceGroupName The name of the resource group. The name is case insensitive.
+   * @param accountName The Azure Video Analyzer account name.
+   * @param edgeModuleName The Edge Module name.
+   * @param callback The callback
+   */
+  deleteMethod(resourceGroupName: string, accountName: string, edgeModuleName: string, callback: msRest.ServiceCallback): void;
+  /**
+   * @param resourceGroupName The name of the resource group. The name is case insensitive.
+   * @param accountName The Azure Video Analyzer account name.
+   * @param edgeModuleName The Edge Module name.
+   * @param options The optional parameters
+   * @param callback The callback
+   */
+  deleteMethod(resourceGroupName: string, accountName: string, edgeModuleName: string, options: msRest.RequestOptionsBase, callback: msRest.ServiceCallback): void;
+  deleteMethod(resourceGroupName: string, accountName: string, edgeModuleName: string, options?: msRest.RequestOptionsBase | msRest.ServiceCallback, callback?: msRest.ServiceCallback): Promise {
+    return this.client.sendOperationRequest(
+      {
+        resourceGroupName,
+        accountName,
+        edgeModuleName,
+        options
+      },
+      deleteMethodOperationSpec,
+      callback);
+  }
+
+  /**
+   * Creates a new provisioning token. A provisioning token allows for a single instance of Azure
+   * Video analyzer IoT edge module to be initialized and authorized to the cloud account. The
+   * provisioning token itself is short lived and it is only used for the initial handshake between
+   * IoT edge module and the cloud. After the initial handshake, the IoT edge module will agree on a
+   * set of authentication keys which will be auto-rotated as long as the module is able to
+   * periodically connect to the cloud. A new provisioning token can be generated for the same IoT
+   * edge module in case the module state lost or reset.
+   * @summary Creates a new provisioning token.
+   * @param resourceGroupName The name of the resource group. The name is case insensitive.
+   * @param accountName The Azure Video Analyzer account name.
+   * @param edgeModuleName The Edge Module name.
+   * @param expirationDate The desired expiration date of the registration token. The Azure Video
+   * Analyzer IoT edge module must be initialized and connected to the Internet prior to the token
+   * expiration date.
+   * @param [options] The optional parameters
+   * @returns Promise
+   */
+  listProvisioningToken(resourceGroupName: string, accountName: string, edgeModuleName: string, expirationDate: Date | string, options?: msRest.RequestOptionsBase): Promise;
+  /**
+   * @param resourceGroupName The name of the resource group. The name is case insensitive.
+   * @param accountName The Azure Video Analyzer account name.
+   * @param edgeModuleName The Edge Module name.
+   * @param expirationDate The desired expiration date of the registration token. The Azure Video
+   * Analyzer IoT edge module must be initialized and connected to the Internet prior to the token
+   * expiration date.
+   * @param callback The callback
+   */
+  listProvisioningToken(resourceGroupName: string, accountName: string, edgeModuleName: string, expirationDate: Date | string, callback: msRest.ServiceCallback): void;
+  /**
+   * @param resourceGroupName The name of the resource group. The name is case insensitive.
+   * @param accountName The Azure Video Analyzer account name.
+   * @param edgeModuleName The Edge Module name.
+   * @param expirationDate The desired expiration date of the registration token. The Azure Video
+   * Analyzer IoT edge module must be initialized and connected to the Internet prior to the token
+   * expiration date.
+   * @param options The optional parameters
+   * @param callback The callback
+   */
+  listProvisioningToken(resourceGroupName: string, accountName: string, edgeModuleName: string, expirationDate: Date | string, options: msRest.RequestOptionsBase, callback: msRest.ServiceCallback): void;
+  listProvisioningToken(resourceGroupName: string, accountName: string, edgeModuleName: string, expirationDate: Date | string, options?: msRest.RequestOptionsBase | msRest.ServiceCallback, callback?: msRest.ServiceCallback): Promise {
+    return this.client.sendOperationRequest(
+      {
+        resourceGroupName,
+        accountName,
+        edgeModuleName,
+        expirationDate,
+        options
+      },
+      listProvisioningTokenOperationSpec,
+      callback) as Promise;
+  }
+
+  /**
+   * List all existing edge module resources, along with their JSON representations.
+   * @summary List all existing edge module resources.
+   * @param nextPageLink The NextLink from the previous successful call to List operation.
+   * @param [options] The optional parameters
+   * @returns Promise
+   */
+  listNext(nextPageLink: string, options?: Models.EdgeModulesListNextOptionalParams): Promise;
+  /**
+   * @param nextPageLink The NextLink from the previous successful call to List operation.
+   * @param callback The callback
+   */
+  listNext(nextPageLink: string, callback: msRest.ServiceCallback): void;
+  /**
+   * @param nextPageLink The NextLink from the previous successful call to List operation.
+   * @param options The optional parameters
+   * @param callback The callback
+   */
+  listNext(nextPageLink: string, options: Models.EdgeModulesListNextOptionalParams, callback: msRest.ServiceCallback): void;
+  listNext(nextPageLink: string, options?: Models.EdgeModulesListNextOptionalParams | msRest.ServiceCallback, callback?: msRest.ServiceCallback): Promise {
+    return this.client.sendOperationRequest(
+      {
+        nextPageLink,
+        options
+      },
+      listNextOperationSpec,
+      callback) as Promise;
+  }
+}
+
+// Operation Specifications
+const serializer = new msRest.Serializer(Mappers);
+const listOperationSpec: msRest.OperationSpec = {
+  httpMethod: "GET",
+  path: "subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Media/videoAnalyzers/{accountName}/edgeModules",
+  urlParameters: [
+    Parameters.subscriptionId,
+    Parameters.resourceGroupName,
+    Parameters.accountName
+  ],
+  queryParameters: [
+    Parameters.apiVersion,
+    Parameters.top
+  ],
+  headerParameters: [
+    Parameters.acceptLanguage
+  ],
+  responses: {
+    200: {
+      bodyMapper: Mappers.EdgeModuleEntityCollection
+    },
+    default: {
+      bodyMapper: Mappers.ErrorResponse
+    }
+  },
+  serializer
+};
+
+const getOperationSpec: msRest.OperationSpec = {
+  httpMethod: "GET",
+  path: "subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Media/videoAnalyzers/{accountName}/edgeModules/{edgeModuleName}",
+  urlParameters: [
+    Parameters.subscriptionId,
+    Parameters.resourceGroupName,
+    Parameters.accountName,
+    Parameters.edgeModuleName
+  ],
+  queryParameters: [
+    Parameters.apiVersion
+  ],
+  headerParameters: [
+    Parameters.acceptLanguage
+  ],
+  responses: {
+    200: {
+      bodyMapper: Mappers.EdgeModuleEntity
+    },
+    default: {
+      bodyMapper: Mappers.ErrorResponse
+    }
+  },
+  serializer
+};
+
+const createOrUpdateOperationSpec: msRest.OperationSpec = {
+  httpMethod: "PUT",
+  path: "subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Media/videoAnalyzers/{accountName}/edgeModules/{edgeModuleName}",
+  urlParameters: [
+    Parameters.subscriptionId,
+    Parameters.resourceGroupName,
+    Parameters.accountName,
+    Parameters.edgeModuleName
+  ],
+  queryParameters: [
+    Parameters.apiVersion
+  ],
+  headerParameters: [
+    Parameters.acceptLanguage
+  ],
+  requestBody: {
+    parameterPath: "parameters",
+    mapper: {
+      ...Mappers.EdgeModuleEntity,
+      required: true
+    }
+  },
+  responses: {
+    200: {
+      bodyMapper: Mappers.EdgeModuleEntity
+    },
+    201: {
+      bodyMapper: Mappers.EdgeModuleEntity
+    },
+    default: {
+      bodyMapper: Mappers.ErrorResponse
+    }
+  },
+  serializer
+};
+
+const deleteMethodOperationSpec: msRest.OperationSpec = {
+  httpMethod: "DELETE",
+  path: "subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Media/videoAnalyzers/{accountName}/edgeModules/{edgeModuleName}",
+  urlParameters: [
+    Parameters.subscriptionId,
+    Parameters.resourceGroupName,
+    Parameters.accountName,
+    Parameters.edgeModuleName
+  ],
+  queryParameters: [
+    Parameters.apiVersion
+  ],
+  headerParameters: [
+    Parameters.acceptLanguage
+  ],
+  responses: {
+    200: {},
+    204: {},
+    default: {
+      bodyMapper: Mappers.ErrorResponse
+    }
+  },
+  serializer
+};
+
+const listProvisioningTokenOperationSpec: msRest.OperationSpec = {
+  httpMethod: "POST",
+  path: "subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Media/videoAnalyzers/{accountName}/edgeModules/{edgeModuleName}/listProvisioningToken",
+  urlParameters: [
+    Parameters.subscriptionId,
+    Parameters.resourceGroupName,
+    Parameters.accountName,
+    Parameters.edgeModuleName
+  ],
+  queryParameters: [
+    Parameters.apiVersion
+  ],
+  headerParameters: [
+    Parameters.acceptLanguage
+  ],
+  requestBody: {
+    parameterPath: {
+      expirationDate: "expirationDate"
+    },
+    mapper: {
+      ...Mappers.ListProvisioningTokenInput,
+      required: true
+    }
+  },
+  responses: {
+    200: {
+      bodyMapper: Mappers.EdgeModuleProvisioningToken
+    },
+    default: {
+      bodyMapper: Mappers.ErrorResponse
+    }
+  },
+  serializer
+};
+
+const listNextOperationSpec: msRest.OperationSpec = {
+  httpMethod: "GET",
+  baseUrl: "https://management.azure.com",
+  path: "{nextLink}",
+  urlParameters: [
+    Parameters.nextPageLink
+  ],
+  queryParameters: [
+    Parameters.apiVersion,
+    Parameters.top
+  ],
+  headerParameters: [
+    Parameters.acceptLanguage
+  ],
+  responses: {
+    200: {
+      bodyMapper: Mappers.EdgeModuleEntityCollection
+    },
+    default: {
+      bodyMapper: Mappers.ErrorResponse
+    }
+  },
+  serializer
+};
diff --git a/sdk/videoanalyzer/arm-videoanalyzer/src/operations/index.ts b/sdk/videoanalyzer/arm-videoanalyzer/src/operations/index.ts
new file mode 100644
index 000000000000..25f3190a75f0
--- /dev/null
+++ b/sdk/videoanalyzer/arm-videoanalyzer/src/operations/index.ts
@@ -0,0 +1,26 @@
+/*
+ * Copyright (c) Microsoft Corporation.
+ * Licensed under the MIT License.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ * Changes may cause incorrect behavior and will be lost if the code is
+ * regenerated.
+ */
+
+export * from "./edgeModules";
+export * from "./pipelineTopologies";
+export * from "./livePipelines";
+export * from "./pipelineJobs";
+export * from "./livePipelineOperationStatuses";
+export * from "./pipelineJobOperationStatuses";
+export * from "./operations";
+export * from "./videoAnalyzers";
+export * from "./privateLinkResources";
+export * from "./privateEndpointConnections";
+export * from "./operationStatuses";
+export * from "./operationResults";
+export * from "./videoAnalyzerOperationStatuses";
+export * from "./videoAnalyzerOperationResults";
+export * from "./locations";
+export * from "./videos";
+export * from "./accessPolicies";
diff --git a/sdk/videoanalyzer/arm-videoanalyzer/src/operations/livePipelineOperationStatuses.ts b/sdk/videoanalyzer/arm-videoanalyzer/src/operations/livePipelineOperationStatuses.ts
new file mode 100644
index 000000000000..26ee17d4834b
--- /dev/null
+++ b/sdk/videoanalyzer/arm-videoanalyzer/src/operations/livePipelineOperationStatuses.ts
@@ -0,0 +1,97 @@
+/*
+ * Copyright (c) Microsoft Corporation.
+ * Licensed under the MIT License.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ * Changes may cause incorrect behavior and will be lost if the code is
+ * regenerated.
+ */
+
+import * as msRest from "@azure/ms-rest-js";
+import * as Models from "../models";
+import * as Mappers from "../models/livePipelineOperationStatusesMappers";
+import * as Parameters from "../models/parameters";
+import { VideoAnalyzerContext } from "../videoAnalyzerContext";
+
+/** Class representing a LivePipelineOperationStatuses. */
+export class LivePipelineOperationStatuses {
+  private readonly client: VideoAnalyzerContext;
+
+  /**
+   * Create a LivePipelineOperationStatuses.
+   * @param {VideoAnalyzerContext} client Reference to the service client.
+   */
+  constructor(client: VideoAnalyzerContext) {
+    this.client = client;
+  }
+
+  /**
+   * Get the operation status of a live pipeline.
+   * @summary Get the operation status
+   * @param resourceGroupName The name of the resource group. The name is case insensitive.
+   * @param accountName The Azure Video Analyzer account name.
+   * @param livePipelineName Live pipeline unique identifier.
+   * @param operationId The operation ID.
+   * @param [options] The optional parameters
+   * @returns Promise
+   */
+  get(resourceGroupName: string, accountName: string, livePipelineName: string, operationId: string, options?: msRest.RequestOptionsBase): Promise;
+  /**
+   * @param resourceGroupName The name of the resource group. The name is case insensitive.
+   * @param accountName The Azure Video Analyzer account name.
+   * @param livePipelineName Live pipeline unique identifier.
+   * @param operationId The operation ID.
+   * @param callback The callback
+   */
+  get(resourceGroupName: string, accountName: string, livePipelineName: string, operationId: string, callback: msRest.ServiceCallback): void;
+  /**
+   * @param resourceGroupName The name of the resource group. The name is case insensitive.
+   * @param accountName The Azure Video Analyzer account name.
+   * @param livePipelineName Live pipeline unique identifier.
+   * @param operationId The operation ID.
+   * @param options The optional parameters
+   * @param callback The callback
+   */
+  get(resourceGroupName: string, accountName: string, livePipelineName: string, operationId: string, options: msRest.RequestOptionsBase, callback: msRest.ServiceCallback): void;
+  get(resourceGroupName: string, accountName: string, livePipelineName: string, operationId: string, options?: msRest.RequestOptionsBase | msRest.ServiceCallback, callback?: msRest.ServiceCallback): Promise {
+    return this.client.sendOperationRequest(
+      {
+        resourceGroupName,
+        accountName,
+        livePipelineName,
+        operationId,
+        options
+      },
+      getOperationSpec,
+      callback) as Promise;
+  }
+}
+
+// Operation Specifications
+const serializer = new msRest.Serializer(Mappers);
+const getOperationSpec: msRest.OperationSpec = {
+  httpMethod: "GET",
+  path: "subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Media/videoAnalyzers/{accountName}/livePipelines/{livePipelineName}/operationStatuses/{operationId}",
+  urlParameters: [
+    Parameters.subscriptionId,
+    Parameters.resourceGroupName,
+    Parameters.accountName,
+    Parameters.livePipelineName,
+    Parameters.operationId
+  ],
+  queryParameters: [
+    Parameters.apiVersion
+  ],
+  headerParameters: [
+    Parameters.acceptLanguage
+  ],
+  responses: {
+    200: {
+      bodyMapper: Mappers.LivePipelineOperationStatus
+    },
+    default: {
+      bodyMapper: Mappers.ErrorResponse
+    }
+  },
+  serializer
+};
diff --git a/sdk/videoanalyzer/arm-videoanalyzer/src/operations/livePipelines.ts b/sdk/videoanalyzer/arm-videoanalyzer/src/operations/livePipelines.ts
new file mode 100644
index 000000000000..a30d535cb9d2
--- /dev/null
+++ b/sdk/videoanalyzer/arm-videoanalyzer/src/operations/livePipelines.ts
@@ -0,0 +1,546 @@
+/*
+ * Copyright (c) Microsoft Corporation.
+ * Licensed under the MIT License.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ * Changes may cause incorrect behavior and will be lost if the code is
+ * regenerated.
+ */
+
+import * as msRest from "@azure/ms-rest-js";
+import * as msRestAzure from "@azure/ms-rest-azure-js";
+import * as Models from "../models";
+import * as Mappers from "../models/livePipelinesMappers";
+import * as Parameters from "../models/parameters";
+import { VideoAnalyzerContext } from "../videoAnalyzerContext";
+
+/** Class representing a LivePipelines. */
+export class LivePipelines {
+  private readonly client: VideoAnalyzerContext;
+
+  /**
+   * Create a LivePipelines.
+   * @param {VideoAnalyzerContext} client Reference to the service client.
+   */
+  constructor(client: VideoAnalyzerContext) {
+    this.client = client;
+  }
+
+  /**
+   * Retrieves a list of live pipelines that have been created, along with their JSON
+   * representations.
+   * @summary Retrieves a list of live pipelines.
+   * @param resourceGroupName The name of the resource group. The name is case insensitive.
+   * @param accountName The Azure Video Analyzer account name.
+   * @param [options] The optional parameters
+   * @returns Promise
+   */
+  list(resourceGroupName: string, accountName: string, options?: Models.LivePipelinesListOptionalParams): Promise;
+  /**
+   * @param resourceGroupName The name of the resource group. The name is case insensitive.
+   * @param accountName The Azure Video Analyzer account name.
+   * @param callback The callback
+   */
+  list(resourceGroupName: string, accountName: string, callback: msRest.ServiceCallback): void;
+  /**
+   * @param resourceGroupName The name of the resource group. The name is case insensitive.
+   * @param accountName The Azure Video Analyzer account name.
+   * @param options The optional parameters
+   * @param callback The callback
+   */
+  list(resourceGroupName: string, accountName: string, options: Models.LivePipelinesListOptionalParams, callback: msRest.ServiceCallback): void;
+  list(resourceGroupName: string, accountName: string, options?: Models.LivePipelinesListOptionalParams | msRest.ServiceCallback, callback?: msRest.ServiceCallback): Promise {
+    return this.client.sendOperationRequest(
+      {
+        resourceGroupName,
+        accountName,
+        options
+      },
+      listOperationSpec,
+      callback) as Promise;
+  }
+
+  /**
+   * Retrieves a specific live pipeline by name. If a live pipeline with that name has been
+   * previously created, the call will return the JSON representation of that instance.
+   * @summary Retrieves a specific live pipeline by name.
+   * @param resourceGroupName The name of the resource group. The name is case insensitive.
+   * @param accountName The Azure Video Analyzer account name.
+   * @param livePipelineName Live pipeline unique identifier.
+   * @param [options] The optional parameters
+   * @returns Promise
+   */
+  get(resourceGroupName: string, accountName: string, livePipelineName: string, options?: msRest.RequestOptionsBase): Promise;
+  /**
+   * @param resourceGroupName The name of the resource group. The name is case insensitive.
+   * @param accountName The Azure Video Analyzer account name.
+   * @param livePipelineName Live pipeline unique identifier.
+   * @param callback The callback
+   */
+  get(resourceGroupName: string, accountName: string, livePipelineName: string, callback: msRest.ServiceCallback): void;
+  /**
+   * @param resourceGroupName The name of the resource group. The name is case insensitive.
+   * @param accountName The Azure Video Analyzer account name.
+   * @param livePipelineName Live pipeline unique identifier.
+   * @param options The optional parameters
+   * @param callback The callback
+   */
+  get(resourceGroupName: string, accountName: string, livePipelineName: string, options: msRest.RequestOptionsBase, callback: msRest.ServiceCallback): void;
+  get(resourceGroupName: string, accountName: string, livePipelineName: string, options?: msRest.RequestOptionsBase | msRest.ServiceCallback, callback?: msRest.ServiceCallback): Promise {
+    return this.client.sendOperationRequest(
+      {
+        resourceGroupName,
+        accountName,
+        livePipelineName,
+        options
+      },
+      getOperationSpec,
+      callback) as Promise;
+  }
+
+  /**
+   * Creates a new live pipeline or updates an existing one, with the given name.
+   * @summary Creates or updates a live pipeline.
+   * @param resourceGroupName The name of the resource group. The name is case insensitive.
+   * @param accountName The Azure Video Analyzer account name.
+   * @param livePipelineName Live pipeline unique identifier.
+   * @param parameters The request parameters
+   * @param [options] The optional parameters
+   * @returns Promise
+   */
+  createOrUpdate(resourceGroupName: string, accountName: string, livePipelineName: string, parameters: Models.LivePipeline, options?: msRest.RequestOptionsBase): Promise;
+  /**
+   * @param resourceGroupName The name of the resource group. The name is case insensitive.
+   * @param accountName The Azure Video Analyzer account name.
+   * @param livePipelineName Live pipeline unique identifier.
+   * @param parameters The request parameters
+   * @param callback The callback
+   */
+  createOrUpdate(resourceGroupName: string, accountName: string, livePipelineName: string, parameters: Models.LivePipeline, callback: msRest.ServiceCallback): void;
+  /**
+   * @param resourceGroupName The name of the resource group. The name is case insensitive.
+   * @param accountName The Azure Video Analyzer account name.
+   * @param livePipelineName Live pipeline unique identifier.
+   * @param parameters The request parameters
+   * @param options The optional parameters
+   * @param callback The callback
+   */
+  createOrUpdate(resourceGroupName: string, accountName: string, livePipelineName: string, parameters: Models.LivePipeline, options: msRest.RequestOptionsBase, callback: msRest.ServiceCallback): void;
+  createOrUpdate(resourceGroupName: string, accountName: string, livePipelineName: string, parameters: Models.LivePipeline, options?: msRest.RequestOptionsBase | msRest.ServiceCallback, callback?: msRest.ServiceCallback): Promise {
+    return this.client.sendOperationRequest(
+      {
+        resourceGroupName,
+        accountName,
+        livePipelineName,
+        parameters,
+        options
+      },
+      createOrUpdateOperationSpec,
+      callback) as Promise;
+  }
+
+  /**
+   * Deletes a live pipeline with the given name.
+   * @summary Deletes a live pipeline.
+   * @param resourceGroupName The name of the resource group. The name is case insensitive.
+   * @param accountName The Azure Video Analyzer account name.
+   * @param livePipelineName Live pipeline unique identifier.
+   * @param [options] The optional parameters
+   * @returns Promise
+   */
+  deleteMethod(resourceGroupName: string, accountName: string, livePipelineName: string, options?: msRest.RequestOptionsBase): Promise;
+  /**
+   * @param resourceGroupName The name of the resource group. The name is case insensitive.
+   * @param accountName The Azure Video Analyzer account name.
+   * @param livePipelineName Live pipeline unique identifier.
+   * @param callback The callback
+   */
+  deleteMethod(resourceGroupName: string, accountName: string, livePipelineName: string, callback: msRest.ServiceCallback): void;
+  /**
+   * @param resourceGroupName The name of the resource group. The name is case insensitive.
+   * @param accountName The Azure Video Analyzer account name.
+   * @param livePipelineName Live pipeline unique identifier.
+   * @param options The optional parameters
+   * @param callback The callback
+   */
+  deleteMethod(resourceGroupName: string, accountName: string, livePipelineName: string, options: msRest.RequestOptionsBase, callback: msRest.ServiceCallback): void;
+  deleteMethod(resourceGroupName: string, accountName: string, livePipelineName: string, options?: msRest.RequestOptionsBase | msRest.ServiceCallback, callback?: msRest.ServiceCallback): Promise {
+    return this.client.sendOperationRequest(
+      {
+        resourceGroupName,
+        accountName,
+        livePipelineName,
+        options
+      },
+      deleteMethodOperationSpec,
+      callback);
+  }
+
+  /**
+   * Updates an existing live pipeline with the given name. Properties that can be updated include:
+   * description, bitrateKbps, and parameter definitions. Only the description can be updated while
+   * the live pipeline is active.
+   * @summary Updates an existing live pipeline.
+   * @param resourceGroupName The name of the resource group. The name is case insensitive.
+   * @param accountName The Azure Video Analyzer account name.
+   * @param livePipelineName Live pipeline unique identifier.
+   * @param parameters The request parameters
+   * @param [options] The optional parameters
+   * @returns Promise
+   */
+  update(resourceGroupName: string, accountName: string, livePipelineName: string, parameters: Models.LivePipelineUpdate, options?: msRest.RequestOptionsBase): Promise;
+  /**
+   * @param resourceGroupName The name of the resource group. The name is case insensitive.
+   * @param accountName The Azure Video Analyzer account name.
+   * @param livePipelineName Live pipeline unique identifier.
+   * @param parameters The request parameters
+   * @param callback The callback
+   */
+  update(resourceGroupName: string, accountName: string, livePipelineName: string, parameters: Models.LivePipelineUpdate, callback: msRest.ServiceCallback): void;
+  /**
+   * @param resourceGroupName The name of the resource group. The name is case insensitive.
+   * @param accountName The Azure Video Analyzer account name.
+   * @param livePipelineName Live pipeline unique identifier.
+   * @param parameters The request parameters
+   * @param options The optional parameters
+   * @param callback The callback
+   */
+  update(resourceGroupName: string, accountName: string, livePipelineName: string, parameters: Models.LivePipelineUpdate, options: msRest.RequestOptionsBase, callback: msRest.ServiceCallback): void;
+  update(resourceGroupName: string, accountName: string, livePipelineName: string, parameters: Models.LivePipelineUpdate, options?: msRest.RequestOptionsBase | msRest.ServiceCallback, callback?: msRest.ServiceCallback): Promise {
+    return this.client.sendOperationRequest(
+      {
+        resourceGroupName,
+        accountName,
+        livePipelineName,
+        parameters,
+        options
+      },
+      updateOperationSpec,
+      callback) as Promise;
+  }
+
+  /**
+   * Activates a live pipeline with the given name.
+   * @summary Activates a live pipeline.
+   * @param resourceGroupName The name of the resource group. The name is case insensitive.
+   * @param accountName The Azure Video Analyzer account name.
+   * @param livePipelineName Live pipeline unique identifier.
+   * @param [options] The optional parameters
+   * @returns Promise
+   */
+  activate(resourceGroupName: string, accountName: string, livePipelineName: string, options?: msRest.RequestOptionsBase): Promise {
+    return this.beginActivate(resourceGroupName,accountName,livePipelineName,options)
+      .then(lroPoller => lroPoller.pollUntilFinished());
+  }
+
+  /**
+   * Deactivates a live pipeline with the given name.
+   * @summary Deactivates a live pipeline.
+   * @param resourceGroupName The name of the resource group. The name is case insensitive.
+   * @param accountName The Azure Video Analyzer account name.
+   * @param livePipelineName Live pipeline unique identifier.
+   * @param [options] The optional parameters
+   * @returns Promise
+   */
+  deactivate(resourceGroupName: string, accountName: string, livePipelineName: string, options?: msRest.RequestOptionsBase): Promise {
+    return this.beginDeactivate(resourceGroupName,accountName,livePipelineName,options)
+      .then(lroPoller => lroPoller.pollUntilFinished());
+  }
+
+  /**
+   * Activates a live pipeline with the given name.
+   * @summary Activates a live pipeline.
+   * @param resourceGroupName The name of the resource group. The name is case insensitive.
+   * @param accountName The Azure Video Analyzer account name.
+   * @param livePipelineName Live pipeline unique identifier.
+   * @param [options] The optional parameters
+   * @returns Promise
+   */
+  beginActivate(resourceGroupName: string, accountName: string, livePipelineName: string, options?: msRest.RequestOptionsBase): Promise {
+    return this.client.sendLRORequest(
+      {
+        resourceGroupName,
+        accountName,
+        livePipelineName,
+        options
+      },
+      beginActivateOperationSpec,
+      options);
+  }
+
+  /**
+   * Deactivates a live pipeline with the given name.
+   * @summary Deactivates a live pipeline.
+   * @param resourceGroupName The name of the resource group. The name is case insensitive.
+   * @param accountName The Azure Video Analyzer account name.
+   * @param livePipelineName Live pipeline unique identifier.
+   * @param [options] The optional parameters
+   * @returns Promise
+   */
+  beginDeactivate(resourceGroupName: string, accountName: string, livePipelineName: string, options?: msRest.RequestOptionsBase): Promise {
+    return this.client.sendLRORequest(
+      {
+        resourceGroupName,
+        accountName,
+        livePipelineName,
+        options
+      },
+      beginDeactivateOperationSpec,
+      options);
+  }
+
+  /**
+   * Retrieves a list of live pipelines that have been created, along with their JSON
+   * representations.
+   * @summary Retrieves a list of live pipelines.
+   * @param nextPageLink The NextLink from the previous successful call to List operation.
+   * @param [options] The optional parameters
+   * @returns Promise
+   */
+  listNext(nextPageLink: string, options?: Models.LivePipelinesListNextOptionalParams): Promise;
+  /**
+   * @param nextPageLink The NextLink from the previous successful call to List operation.
+   * @param callback The callback
+   */
+  listNext(nextPageLink: string, callback: msRest.ServiceCallback): void;
+  /**
+   * @param nextPageLink The NextLink from the previous successful call to List operation.
+   * @param options The optional parameters
+   * @param callback The callback
+   */
+  listNext(nextPageLink: string, options: Models.LivePipelinesListNextOptionalParams, callback: msRest.ServiceCallback): void;
+  listNext(nextPageLink: string, options?: Models.LivePipelinesListNextOptionalParams | msRest.ServiceCallback, callback?: msRest.ServiceCallback): Promise {
+    return this.client.sendOperationRequest(
+      {
+        nextPageLink,
+        options
+      },
+      listNextOperationSpec,
+      callback) as Promise;
+  }
+}
+
+// Operation Specifications
+const serializer = new msRest.Serializer(Mappers);
+const listOperationSpec: msRest.OperationSpec = {
+  httpMethod: "GET",
+  path: "subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Media/videoAnalyzers/{accountName}/livePipelines",
+  urlParameters: [
+    Parameters.subscriptionId,
+    Parameters.resourceGroupName,
+    Parameters.accountName
+  ],
+  queryParameters: [
+    Parameters.apiVersion,
+    Parameters.filter,
+    Parameters.top
+  ],
+  headerParameters: [
+    Parameters.acceptLanguage
+  ],
+  responses: {
+    200: {
+      bodyMapper: Mappers.LivePipelineCollection
+    },
+    default: {
+      bodyMapper: Mappers.ErrorResponse
+    }
+  },
+  serializer
+};
+
+const getOperationSpec: msRest.OperationSpec = {
+  httpMethod: "GET",
+  path: "subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Media/videoAnalyzers/{accountName}/livePipelines/{livePipelineName}",
+  urlParameters: [
+    Parameters.subscriptionId,
+    Parameters.resourceGroupName,
+    Parameters.accountName,
+    Parameters.livePipelineName
+  ],
+  queryParameters: [
+    Parameters.apiVersion
+  ],
+  headerParameters: [
+    Parameters.acceptLanguage
+  ],
+  responses: {
+    200: {
+      bodyMapper: Mappers.LivePipeline
+    },
+    default: {
+      bodyMapper: Mappers.ErrorResponse
+    }
+  },
+  serializer
+};
+
+const createOrUpdateOperationSpec: msRest.OperationSpec = {
+  httpMethod: "PUT",
+  path: "subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Media/videoAnalyzers/{accountName}/livePipelines/{livePipelineName}",
+  urlParameters: [
+    Parameters.subscriptionId,
+    Parameters.resourceGroupName,
+    Parameters.accountName,
+    Parameters.livePipelineName
+  ],
+  queryParameters: [
+    Parameters.apiVersion
+  ],
+  headerParameters: [
+    Parameters.acceptLanguage
+  ],
+  requestBody: {
+    parameterPath: "parameters",
+    mapper: {
+      ...Mappers.LivePipeline,
+      required: true
+    }
+  },
+  responses: {
+    200: {
+      bodyMapper: Mappers.LivePipeline
+    },
+    201: {
+      bodyMapper: Mappers.LivePipeline
+    },
+    default: {
+      bodyMapper: Mappers.ErrorResponse
+    }
+  },
+  serializer
+};
+
+const deleteMethodOperationSpec: msRest.OperationSpec = {
+  httpMethod: "DELETE",
+  path: "subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Media/videoAnalyzers/{accountName}/livePipelines/{livePipelineName}",
+  urlParameters: [
+    Parameters.subscriptionId,
+    Parameters.resourceGroupName,
+    Parameters.accountName,
+    Parameters.livePipelineName
+  ],
+  queryParameters: [
+    Parameters.apiVersion
+  ],
+  headerParameters: [
+    Parameters.acceptLanguage
+  ],
+  responses: {
+    200: {},
+    204: {},
+    default: {
+      bodyMapper: Mappers.ErrorResponse
+    }
+  },
+  serializer
+};
+
+const updateOperationSpec: msRest.OperationSpec = {
+  httpMethod: "PATCH",
+  path: "subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Media/videoAnalyzers/{accountName}/livePipelines/{livePipelineName}",
+  urlParameters: [
+    Parameters.subscriptionId,
+    Parameters.resourceGroupName,
+    Parameters.accountName,
+    Parameters.livePipelineName
+  ],
+  queryParameters: [
+    Parameters.apiVersion
+  ],
+  headerParameters: [
+    Parameters.acceptLanguage
+  ],
+  requestBody: {
+    parameterPath: "parameters",
+    mapper: {
+      ...Mappers.LivePipelineUpdate,
+      required: true
+    }
+  },
+  responses: {
+    200: {
+      bodyMapper: Mappers.LivePipeline
+    },
+    default: {
+      bodyMapper: Mappers.ErrorResponse
+    }
+  },
+  serializer
+};
+
+const beginActivateOperationSpec: msRest.OperationSpec = {
+  httpMethod: "POST",
+  path: "subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Media/videoAnalyzers/{accountName}/livePipelines/{livePipelineName}/activate",
+  urlParameters: [
+    Parameters.subscriptionId,
+    Parameters.resourceGroupName,
+    Parameters.accountName,
+    Parameters.livePipelineName
+  ],
+  queryParameters: [
+    Parameters.apiVersion
+  ],
+  headerParameters: [
+    Parameters.acceptLanguage
+  ],
+  responses: {
+    200: {},
+    202: {},
+    default: {
+      bodyMapper: Mappers.ErrorResponse
+    }
+  },
+  serializer
+};
+
+const beginDeactivateOperationSpec: msRest.OperationSpec = {
+  httpMethod: "POST",
+  path: "subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Media/videoAnalyzers/{accountName}/livePipelines/{livePipelineName}/deactivate",
+  urlParameters: [
+    Parameters.subscriptionId,
+    Parameters.resourceGroupName,
+    Parameters.accountName,
+    Parameters.livePipelineName
+  ],
+  queryParameters: [
+    Parameters.apiVersion
+  ],
+  headerParameters: [
+    Parameters.acceptLanguage
+  ],
+  responses: {
+    200: {},
+    202: {},
+    default: {
+      bodyMapper: Mappers.ErrorResponse
+    }
+  },
+  serializer
+};
+
+const listNextOperationSpec: msRest.OperationSpec = {
+  httpMethod: "GET",
+  baseUrl: "https://management.azure.com",
+  path: "{nextLink}",
+  urlParameters: [
+    Parameters.nextPageLink
+  ],
+  queryParameters: [
+    Parameters.apiVersion,
+    Parameters.filter,
+    Parameters.top
+  ],
+  headerParameters: [
+    Parameters.acceptLanguage
+  ],
+  responses: {
+    200: {
+      bodyMapper: Mappers.LivePipelineCollection
+    },
+    default: {
+      bodyMapper: Mappers.ErrorResponse
+    }
+  },
+  serializer
+};
diff --git a/sdk/videoanalyzer/arm-videoanalyzer/src/operations/locations.ts b/sdk/videoanalyzer/arm-videoanalyzer/src/operations/locations.ts
new file mode 100644
index 000000000000..c618530b1707
--- /dev/null
+++ b/sdk/videoanalyzer/arm-videoanalyzer/src/operations/locations.ts
@@ -0,0 +1,93 @@
+/*
+ * Copyright (c) Microsoft Corporation.
+ * Licensed under the MIT License.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ * Changes may cause incorrect behavior and will be lost if the code is
+ * regenerated.
+ */
+
+import * as msRest from "@azure/ms-rest-js";
+import * as Models from "../models";
+import * as Mappers from "../models/locationsMappers";
+import * as Parameters from "../models/parameters";
+import { VideoAnalyzerContext } from "../videoAnalyzerContext";
+
+/** Class representing a Locations. */
+export class Locations {
+  private readonly client: VideoAnalyzerContext;
+
+  /**
+   * Create a Locations.
+   * @param {VideoAnalyzerContext} client Reference to the service client.
+   */
+  constructor(client: VideoAnalyzerContext) {
+    this.client = client;
+  }
+
+  /**
+   * Checks whether the Video Analyzer resource name is available.
+   * @summary Check Name Availability
+   * @param locationName Location Name.
+   * @param parameters The request parameters
+   * @param [options] The optional parameters
+   * @returns Promise
+   */
+  checkNameAvailability(locationName: string, parameters: Models.CheckNameAvailabilityRequest, options?: msRest.RequestOptionsBase): Promise;
+  /**
+   * @param locationName Location Name.
+   * @param parameters The request parameters
+   * @param callback The callback
+   */
+  checkNameAvailability(locationName: string, parameters: Models.CheckNameAvailabilityRequest, callback: msRest.ServiceCallback): void;
+  /**
+   * @param locationName Location Name.
+   * @param parameters The request parameters
+   * @param options The optional parameters
+   * @param callback The callback
+   */
+  checkNameAvailability(locationName: string, parameters: Models.CheckNameAvailabilityRequest, options: msRest.RequestOptionsBase, callback: msRest.ServiceCallback): void;
+  checkNameAvailability(locationName: string, parameters: Models.CheckNameAvailabilityRequest, options?: msRest.RequestOptionsBase | msRest.ServiceCallback, callback?: msRest.ServiceCallback): Promise {
+    return this.client.sendOperationRequest(
+      {
+        locationName,
+        parameters,
+        options
+      },
+      checkNameAvailabilityOperationSpec,
+      callback) as Promise;
+  }
+}
+
+// Operation Specifications
+const serializer = new msRest.Serializer(Mappers);
+const checkNameAvailabilityOperationSpec: msRest.OperationSpec = {
+  httpMethod: "POST",
+  path: "subscriptions/{subscriptionId}/providers/Microsoft.Media/locations/{locationName}/checkNameAvailability",
+  urlParameters: [
+    Parameters.subscriptionId,
+    Parameters.locationName
+  ],
+  queryParameters: [
+    Parameters.apiVersion
+  ],
+  headerParameters: [
+    Parameters.acceptLanguage
+  ],
+  requestBody: {
+    parameterPath: "parameters",
+    mapper: {
+      ...Mappers.CheckNameAvailabilityRequest,
+      required: true
+    }
+  },
+  responses: {
+    200: {
+      bodyMapper: Mappers.CheckNameAvailabilityResponse
+    },
+    default: {
+      bodyMapper: Mappers.ErrorResponse
+    }
+  },
+  serializer
+};
diff --git a/sdk/videoanalyzer/arm-videoanalyzer/src/operations/operationResults.ts b/sdk/videoanalyzer/arm-videoanalyzer/src/operations/operationResults.ts
new file mode 100644
index 000000000000..b36009bafc3a
--- /dev/null
+++ b/sdk/videoanalyzer/arm-videoanalyzer/src/operations/operationResults.ts
@@ -0,0 +1,98 @@
+/*
+ * Copyright (c) Microsoft Corporation.
+ * Licensed under the MIT License.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ * Changes may cause incorrect behavior and will be lost if the code is
+ * regenerated.
+ */
+
+import * as msRest from "@azure/ms-rest-js";
+import * as Models from "../models";
+import * as Mappers from "../models/operationResultsMappers";
+import * as Parameters from "../models/parameters";
+import { VideoAnalyzerContext } from "../videoAnalyzerContext";
+
+/** Class representing a OperationResults. */
+export class OperationResults {
+  private readonly client: VideoAnalyzerContext;
+
+  /**
+   * Create a OperationResults.
+   * @param {VideoAnalyzerContext} client Reference to the service client.
+   */
+  constructor(client: VideoAnalyzerContext) {
+    this.client = client;
+  }
+
+  /**
+   * Get private endpoint connection operation result.
+   * @summary Get operation result.
+   * @param resourceGroupName The name of the resource group. The name is case insensitive.
+   * @param accountName The Video Analyzer account name.
+   * @param name Private endpoint connection name.
+   * @param operationId Operation Id.
+   * @param [options] The optional parameters
+   * @returns Promise
+   */
+  get(resourceGroupName: string, accountName: string, name: string, operationId: string, options?: msRest.RequestOptionsBase): Promise;
+  /**
+   * @param resourceGroupName The name of the resource group. The name is case insensitive.
+   * @param accountName The Video Analyzer account name.
+   * @param name Private endpoint connection name.
+   * @param operationId Operation Id.
+   * @param callback The callback
+   */
+  get(resourceGroupName: string, accountName: string, name: string, operationId: string, callback: msRest.ServiceCallback): void;
+  /**
+   * @param resourceGroupName The name of the resource group. The name is case insensitive.
+   * @param accountName The Video Analyzer account name.
+   * @param name Private endpoint connection name.
+   * @param operationId Operation Id.
+   * @param options The optional parameters
+   * @param callback The callback
+   */
+  get(resourceGroupName: string, accountName: string, name: string, operationId: string, options: msRest.RequestOptionsBase, callback: msRest.ServiceCallback): void;
+  get(resourceGroupName: string, accountName: string, name: string, operationId: string, options?: msRest.RequestOptionsBase | msRest.ServiceCallback, callback?: msRest.ServiceCallback): Promise {
+    return this.client.sendOperationRequest(
+      {
+        resourceGroupName,
+        accountName,
+        name,
+        operationId,
+        options
+      },
+      getOperationSpec,
+      callback) as Promise;
+  }
+}
+
+// Operation Specifications
+const serializer = new msRest.Serializer(Mappers);
+const getOperationSpec: msRest.OperationSpec = {
+  httpMethod: "GET",
+  path: "subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Media/videoAnalyzers/{accountName}/privateEndpointConnections/{name}/operationResults/{operationId}",
+  urlParameters: [
+    Parameters.subscriptionId,
+    Parameters.resourceGroupName,
+    Parameters.accountName,
+    Parameters.name,
+    Parameters.operationId
+  ],
+  queryParameters: [
+    Parameters.apiVersion
+  ],
+  headerParameters: [
+    Parameters.acceptLanguage
+  ],
+  responses: {
+    200: {
+      bodyMapper: Mappers.PrivateEndpointConnection
+    },
+    202: {},
+    default: {
+      bodyMapper: Mappers.ErrorResponse
+    }
+  },
+  serializer
+};
diff --git a/sdk/videoanalyzer/arm-videoanalyzer/src/operations/operationStatuses.ts b/sdk/videoanalyzer/arm-videoanalyzer/src/operations/operationStatuses.ts
new file mode 100644
index 000000000000..c365370bfcb7
--- /dev/null
+++ b/sdk/videoanalyzer/arm-videoanalyzer/src/operations/operationStatuses.ts
@@ -0,0 +1,97 @@
+/*
+ * Copyright (c) Microsoft Corporation.
+ * Licensed under the MIT License.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ * Changes may cause incorrect behavior and will be lost if the code is
+ * regenerated.
+ */
+
+import * as msRest from "@azure/ms-rest-js";
+import * as Models from "../models";
+import * as Mappers from "../models/operationStatusesMappers";
+import * as Parameters from "../models/parameters";
+import { VideoAnalyzerContext } from "../videoAnalyzerContext";
+
+/** Class representing a OperationStatuses. */
+export class OperationStatuses {
+  private readonly client: VideoAnalyzerContext;
+
+  /**
+   * Create a OperationStatuses.
+   * @param {VideoAnalyzerContext} client Reference to the service client.
+   */
+  constructor(client: VideoAnalyzerContext) {
+    this.client = client;
+  }
+
+  /**
+   * Get private endpoint connection operation status.
+   * @summary Get operation status.
+   * @param resourceGroupName The name of the resource group. The name is case insensitive.
+   * @param accountName The Video Analyzer account name.
+   * @param name Private endpoint connection name.
+   * @param operationId Operation Id.
+   * @param [options] The optional parameters
+   * @returns Promise
+   */
+  get(resourceGroupName: string, accountName: string, name: string, operationId: string, options?: msRest.RequestOptionsBase): Promise;
+  /**
+   * @param resourceGroupName The name of the resource group. The name is case insensitive.
+   * @param accountName The Video Analyzer account name.
+   * @param name Private endpoint connection name.
+   * @param operationId Operation Id.
+   * @param callback The callback
+   */
+  get(resourceGroupName: string, accountName: string, name: string, operationId: string, callback: msRest.ServiceCallback): void;
+  /**
+   * @param resourceGroupName The name of the resource group. The name is case insensitive.
+   * @param accountName The Video Analyzer account name.
+   * @param name Private endpoint connection name.
+   * @param operationId Operation Id.
+   * @param options The optional parameters
+   * @param callback The callback
+   */
+  get(resourceGroupName: string, accountName: string, name: string, operationId: string, options: msRest.RequestOptionsBase, callback: msRest.ServiceCallback): void;
+  get(resourceGroupName: string, accountName: string, name: string, operationId: string, options?: msRest.RequestOptionsBase | msRest.ServiceCallback, callback?: msRest.ServiceCallback): Promise {
+    return this.client.sendOperationRequest(
+      {
+        resourceGroupName,
+        accountName,
+        name,
+        operationId,
+        options
+      },
+      getOperationSpec,
+      callback) as Promise;
+  }
+}
+
+// Operation Specifications
+const serializer = new msRest.Serializer(Mappers);
+const getOperationSpec: msRest.OperationSpec = {
+  httpMethod: "GET",
+  path: "subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Media/videoAnalyzers/{accountName}/privateEndpointConnections/{name}/operationStatuses/{operationId}",
+  urlParameters: [
+    Parameters.subscriptionId,
+    Parameters.resourceGroupName,
+    Parameters.accountName,
+    Parameters.name,
+    Parameters.operationId
+  ],
+  queryParameters: [
+    Parameters.apiVersion
+  ],
+  headerParameters: [
+    Parameters.acceptLanguage
+  ],
+  responses: {
+    200: {
+      bodyMapper: Mappers.VideoAnalyzerPrivateEndpointConnectionOperationStatus
+    },
+    default: {
+      bodyMapper: Mappers.ErrorResponse
+    }
+  },
+  serializer
+};
diff --git a/sdk/videoanalyzer/arm-videoanalyzer/src/operations/operations.ts b/sdk/videoanalyzer/arm-videoanalyzer/src/operations/operations.ts
new file mode 100644
index 000000000000..b0a68fdac111
--- /dev/null
+++ b/sdk/videoanalyzer/arm-videoanalyzer/src/operations/operations.ts
@@ -0,0 +1,74 @@
+/*
+ * Copyright (c) Microsoft Corporation.
+ * Licensed under the MIT License.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ * Changes may cause incorrect behavior and will be lost if the code is
+ * regenerated.
+ */
+
+import * as msRest from "@azure/ms-rest-js";
+import * as Models from "../models";
+import * as Mappers from "../models/operationsMappers";
+import * as Parameters from "../models/parameters";
+import { VideoAnalyzerContext } from "../videoAnalyzerContext";
+
+/** Class representing a Operations. */
+export class Operations {
+  private readonly client: VideoAnalyzerContext;
+
+  /**
+   * Create a Operations.
+   * @param {VideoAnalyzerContext} client Reference to the service client.
+   */
+  constructor(client: VideoAnalyzerContext) {
+    this.client = client;
+  }
+
+  /**
+   * Lists all the Media operations.
+   * @summary List Operations
+   * @param [options] The optional parameters
+   * @returns Promise
+   */
+  list(options?: msRest.RequestOptionsBase): Promise;
+  /**
+   * @param callback The callback
+   */
+  list(callback: msRest.ServiceCallback): void;
+  /**
+   * @param options The optional parameters
+   * @param callback The callback
+   */
+  list(options: msRest.RequestOptionsBase, callback: msRest.ServiceCallback): void;
+  list(options?: msRest.RequestOptionsBase | msRest.ServiceCallback, callback?: msRest.ServiceCallback): Promise {
+    return this.client.sendOperationRequest(
+      {
+        options
+      },
+      listOperationSpec,
+      callback) as Promise;
+  }
+}
+
+// Operation Specifications
+const serializer = new msRest.Serializer(Mappers);
+const listOperationSpec: msRest.OperationSpec = {
+  httpMethod: "GET",
+  path: "providers/Microsoft.Media/operations",
+  queryParameters: [
+    Parameters.apiVersion
+  ],
+  headerParameters: [
+    Parameters.acceptLanguage
+  ],
+  responses: {
+    200: {
+      bodyMapper: Mappers.OperationCollection
+    },
+    default: {
+      bodyMapper: Mappers.ErrorResponse
+    }
+  },
+  serializer
+};
diff --git a/sdk/videoanalyzer/arm-videoanalyzer/src/operations/pipelineJobOperationStatuses.ts b/sdk/videoanalyzer/arm-videoanalyzer/src/operations/pipelineJobOperationStatuses.ts
new file mode 100644
index 000000000000..7e5c6caa5a5e
--- /dev/null
+++ b/sdk/videoanalyzer/arm-videoanalyzer/src/operations/pipelineJobOperationStatuses.ts
@@ -0,0 +1,97 @@
+/*
+ * Copyright (c) Microsoft Corporation.
+ * Licensed under the MIT License.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ * Changes may cause incorrect behavior and will be lost if the code is
+ * regenerated.
+ */
+
+import * as msRest from "@azure/ms-rest-js";
+import * as Models from "../models";
+import * as Mappers from "../models/pipelineJobOperationStatusesMappers";
+import * as Parameters from "../models/parameters";
+import { VideoAnalyzerContext } from "../videoAnalyzerContext";
+
+/** Class representing a PipelineJobOperationStatuses. */
+export class PipelineJobOperationStatuses {
+  private readonly client: VideoAnalyzerContext;
+
+  /**
+   * Create a PipelineJobOperationStatuses.
+   * @param {VideoAnalyzerContext} client Reference to the service client.
+   */
+  constructor(client: VideoAnalyzerContext) {
+    this.client = client;
+  }
+
+  /**
+   * Get the operation status of a pipeline job with the given operationId.
+   * @summary Get the operation statuses.
+   * @param resourceGroupName The name of the resource group. The name is case insensitive.
+   * @param accountName The Azure Video Analyzer account name.
+   * @param pipelineJobName The pipeline job name.
+   * @param operationId The operation ID.
+   * @param [options] The optional parameters
+   * @returns Promise
+   */
+  get(resourceGroupName: string, accountName: string, pipelineJobName: string, operationId: string, options?: msRest.RequestOptionsBase): Promise;
+  /**
+   * @param resourceGroupName The name of the resource group. The name is case insensitive.
+   * @param accountName The Azure Video Analyzer account name.
+   * @param pipelineJobName The pipeline job name.
+   * @param operationId The operation ID.
+   * @param callback The callback
+   */
+  get(resourceGroupName: string, accountName: string, pipelineJobName: string, operationId: string, callback: msRest.ServiceCallback): void;
+  /**
+   * @param resourceGroupName The name of the resource group. The name is case insensitive.
+   * @param accountName The Azure Video Analyzer account name.
+   * @param pipelineJobName The pipeline job name.
+   * @param operationId The operation ID.
+   * @param options The optional parameters
+   * @param callback The callback
+   */
+  get(resourceGroupName: string, accountName: string, pipelineJobName: string, operationId: string, options: msRest.RequestOptionsBase, callback: msRest.ServiceCallback): void;
+  get(resourceGroupName: string, accountName: string, pipelineJobName: string, operationId: string, options?: msRest.RequestOptionsBase | msRest.ServiceCallback, callback?: msRest.ServiceCallback): Promise {
+    return this.client.sendOperationRequest(
+      {
+        resourceGroupName,
+        accountName,
+        pipelineJobName,
+        operationId,
+        options
+      },
+      getOperationSpec,
+      callback) as Promise;
+  }
+}
+
+// Operation Specifications
+const serializer = new msRest.Serializer(Mappers);
+const getOperationSpec: msRest.OperationSpec = {
+  httpMethod: "GET",
+  path: "subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Media/videoAnalyzers/{accountName}/pipelineJobs/{pipelineJobName}/operationStatuses/{operationId}",
+  urlParameters: [
+    Parameters.subscriptionId,
+    Parameters.resourceGroupName,
+    Parameters.accountName,
+    Parameters.pipelineJobName,
+    Parameters.operationId
+  ],
+  queryParameters: [
+    Parameters.apiVersion
+  ],
+  headerParameters: [
+    Parameters.acceptLanguage
+  ],
+  responses: {
+    200: {
+      bodyMapper: Mappers.PipelineJobOperationStatus
+    },
+    default: {
+      bodyMapper: Mappers.ErrorResponse
+    }
+  },
+  serializer
+};
diff --git a/sdk/videoanalyzer/arm-videoanalyzer/src/operations/pipelineJobs.ts b/sdk/videoanalyzer/arm-videoanalyzer/src/operations/pipelineJobs.ts
new file mode 100644
index 000000000000..21f709ae3544
--- /dev/null
+++ b/sdk/videoanalyzer/arm-videoanalyzer/src/operations/pipelineJobs.ts
@@ -0,0 +1,485 @@
+/*
+ * Copyright (c) Microsoft Corporation.
+ * Licensed under the MIT License.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ * Changes may cause incorrect behavior and will be lost if the code is
+ * regenerated.
+ */
+
+import * as msRest from "@azure/ms-rest-js";
+import * as msRestAzure from "@azure/ms-rest-azure-js";
+import * as Models from "../models";
+import * as Mappers from "../models/pipelineJobsMappers";
+import * as Parameters from "../models/parameters";
+import { VideoAnalyzerContext } from "../videoAnalyzerContext";
+
+/** Class representing a PipelineJobs. */
+export class PipelineJobs {
+  private readonly client: VideoAnalyzerContext;
+
+  /**
+   * Create a PipelineJobs.
+   * @param {VideoAnalyzerContext} client Reference to the service client.
+   */
+  constructor(client: VideoAnalyzerContext) {
+    this.client = client;
+  }
+
+  /**
+   * Retrieves a list of all live pipelines that have been created, along with their JSON
+   * representations.
+   * @summary Retrieves a list of pipeline jobs.
+   * @param resourceGroupName The name of the resource group. The name is case insensitive.
+   * @param accountName The Azure Video Analyzer account name.
+   * @param [options] The optional parameters
+   * @returns Promise
+   */
+  list(resourceGroupName: string, accountName: string, options?: Models.PipelineJobsListOptionalParams): Promise;
+  /**
+   * @param resourceGroupName The name of the resource group. The name is case insensitive.
+   * @param accountName The Azure Video Analyzer account name.
+   * @param callback The callback
+   */
+  list(resourceGroupName: string, accountName: string, callback: msRest.ServiceCallback): void;
+  /**
+   * @param resourceGroupName The name of the resource group. The name is case insensitive.
+   * @param accountName The Azure Video Analyzer account name.
+   * @param options The optional parameters
+   * @param callback The callback
+   */
+  list(resourceGroupName: string, accountName: string, options: Models.PipelineJobsListOptionalParams, callback: msRest.ServiceCallback): void;
+  list(resourceGroupName: string, accountName: string, options?: Models.PipelineJobsListOptionalParams | msRest.ServiceCallback, callback?: msRest.ServiceCallback): Promise {
+    return this.client.sendOperationRequest(
+      {
+        resourceGroupName,
+        accountName,
+        options
+      },
+      listOperationSpec,
+      callback) as Promise;
+  }
+
+  /**
+   * Retrieves a specific pipeline job by name. If a pipeline job with that name has been previously
+   * created, the call will return the JSON representation of that instance.
+   * @summary Gets a specific pipeline job by name.
+   * @param resourceGroupName The name of the resource group. The name is case insensitive.
+   * @param accountName The Azure Video Analyzer account name.
+   * @param pipelineJobName The pipeline job name.
+   * @param [options] The optional parameters
+   * @returns Promise
+   */
+  get(resourceGroupName: string, accountName: string, pipelineJobName: string, options?: msRest.RequestOptionsBase): Promise;
+  /**
+   * @param resourceGroupName The name of the resource group. The name is case insensitive.
+   * @param accountName The Azure Video Analyzer account name.
+   * @param pipelineJobName The pipeline job name.
+   * @param callback The callback
+   */
+  get(resourceGroupName: string, accountName: string, pipelineJobName: string, callback: msRest.ServiceCallback): void;
+  /**
+   * @param resourceGroupName The name of the resource group. The name is case insensitive.
+   * @param accountName The Azure Video Analyzer account name.
+   * @param pipelineJobName The pipeline job name.
+   * @param options The optional parameters
+   * @param callback The callback
+   */
+  get(resourceGroupName: string, accountName: string, pipelineJobName: string, options: msRest.RequestOptionsBase, callback: msRest.ServiceCallback): void;
+  get(resourceGroupName: string, accountName: string, pipelineJobName: string, options?: msRest.RequestOptionsBase | msRest.ServiceCallback, callback?: msRest.ServiceCallback): Promise {
+    return this.client.sendOperationRequest(
+      {
+        resourceGroupName,
+        accountName,
+        pipelineJobName,
+        options
+      },
+      getOperationSpec,
+      callback) as Promise;
+  }
+
+  /**
+   * Creates a new pipeline job or updates an existing one, with the given name.
+   * @summary Creates or updates a pipeline job.
+   * @param resourceGroupName The name of the resource group. The name is case insensitive.
+   * @param accountName The Azure Video Analyzer account name.
+   * @param pipelineJobName The pipeline job name.
+   * @param parameters The request parameters
+   * @param [options] The optional parameters
+   * @returns Promise
+   */
+  createOrUpdate(resourceGroupName: string, accountName: string, pipelineJobName: string, parameters: Models.PipelineJob, options?: msRest.RequestOptionsBase): Promise;
+  /**
+   * @param resourceGroupName The name of the resource group. The name is case insensitive.
+   * @param accountName The Azure Video Analyzer account name.
+   * @param pipelineJobName The pipeline job name.
+   * @param parameters The request parameters
+   * @param callback The callback
+   */
+  createOrUpdate(resourceGroupName: string, accountName: string, pipelineJobName: string, parameters: Models.PipelineJob, callback: msRest.ServiceCallback): void;
+  /**
+   * @param resourceGroupName The name of the resource group. The name is case insensitive.
+   * @param accountName The Azure Video Analyzer account name.
+   * @param pipelineJobName The pipeline job name.
+   * @param parameters The request parameters
+   * @param options The optional parameters
+   * @param callback The callback
+   */
+  createOrUpdate(resourceGroupName: string, accountName: string, pipelineJobName: string, parameters: Models.PipelineJob, options: msRest.RequestOptionsBase, callback: msRest.ServiceCallback): void;
+  createOrUpdate(resourceGroupName: string, accountName: string, pipelineJobName: string, parameters: Models.PipelineJob, options?: msRest.RequestOptionsBase | msRest.ServiceCallback, callback?: msRest.ServiceCallback): Promise {
+    return this.client.sendOperationRequest(
+      {
+        resourceGroupName,
+        accountName,
+        pipelineJobName,
+        parameters,
+        options
+      },
+      createOrUpdateOperationSpec,
+      callback) as Promise;
+  }
+
+  /**
+   * Deletes a pipeline job with the given name.
+   * @summary Deletes a pipeline job.
+   * @param resourceGroupName The name of the resource group. The name is case insensitive.
+   * @param accountName The Azure Video Analyzer account name.
+   * @param pipelineJobName The pipeline job name.
+   * @param [options] The optional parameters
+   * @returns Promise
+   */
+  deleteMethod(resourceGroupName: string, accountName: string, pipelineJobName: string, options?: msRest.RequestOptionsBase): Promise;
+  /**
+   * @param resourceGroupName The name of the resource group. The name is case insensitive.
+   * @param accountName The Azure Video Analyzer account name.
+   * @param pipelineJobName The pipeline job name.
+   * @param callback The callback
+   */
+  deleteMethod(resourceGroupName: string, accountName: string, pipelineJobName: string, callback: msRest.ServiceCallback): void;
+  /**
+   * @param resourceGroupName The name of the resource group. The name is case insensitive.
+   * @param accountName The Azure Video Analyzer account name.
+   * @param pipelineJobName The pipeline job name.
+   * @param options The optional parameters
+   * @param callback The callback
+   */
+  deleteMethod(resourceGroupName: string, accountName: string, pipelineJobName: string, options: msRest.RequestOptionsBase, callback: msRest.ServiceCallback): void;
+  deleteMethod(resourceGroupName: string, accountName: string, pipelineJobName: string, options?: msRest.RequestOptionsBase | msRest.ServiceCallback, callback?: msRest.ServiceCallback): Promise {
+    return this.client.sendOperationRequest(
+      {
+        resourceGroupName,
+        accountName,
+        pipelineJobName,
+        options
+      },
+      deleteMethodOperationSpec,
+      callback);
+  }
+
+  /**
+   * Updates an existing pipeline job with the given name. Properties that can be updated include:
+   * description.
+   * @summary Updates an existing pipeline job.
+   * @param resourceGroupName The name of the resource group. The name is case insensitive.
+   * @param accountName The Azure Video Analyzer account name.
+   * @param pipelineJobName The pipeline job name.
+   * @param parameters The request parameters
+   * @param [options] The optional parameters
+   * @returns Promise
+   */
+  update(resourceGroupName: string, accountName: string, pipelineJobName: string, parameters: Models.PipelineJobUpdate, options?: msRest.RequestOptionsBase): Promise;
+  /**
+   * @param resourceGroupName The name of the resource group. The name is case insensitive.
+   * @param accountName The Azure Video Analyzer account name.
+   * @param pipelineJobName The pipeline job name.
+   * @param parameters The request parameters
+   * @param callback The callback
+   */
+  update(resourceGroupName: string, accountName: string, pipelineJobName: string, parameters: Models.PipelineJobUpdate, callback: msRest.ServiceCallback): void;
+  /**
+   * @param resourceGroupName The name of the resource group. The name is case insensitive.
+   * @param accountName The Azure Video Analyzer account name.
+   * @param pipelineJobName The pipeline job name.
+   * @param parameters The request parameters
+   * @param options The optional parameters
+   * @param callback The callback
+   */
+  update(resourceGroupName: string, accountName: string, pipelineJobName: string, parameters: Models.PipelineJobUpdate, options: msRest.RequestOptionsBase, callback: msRest.ServiceCallback): void;
+  update(resourceGroupName: string, accountName: string, pipelineJobName: string, parameters: Models.PipelineJobUpdate, options?: msRest.RequestOptionsBase | msRest.ServiceCallback, callback?: msRest.ServiceCallback): Promise {
+    return this.client.sendOperationRequest(
+      {
+        resourceGroupName,
+        accountName,
+        pipelineJobName,
+        parameters,
+        options
+      },
+      updateOperationSpec,
+      callback) as Promise;
+  }
+
+  /**
+   * Cancels a pipeline job with the given name.
+   * @summary Cancels a pipeline job.
+   * @param resourceGroupName The name of the resource group. The name is case insensitive.
+   * @param accountName The Azure Video Analyzer account name.
+   * @param pipelineJobName The pipeline job name.
+   * @param [options] The optional parameters
+   * @returns Promise
+   */
+  cancel(resourceGroupName: string, accountName: string, pipelineJobName: string, options?: msRest.RequestOptionsBase): Promise {
+    return this.beginCancel(resourceGroupName,accountName,pipelineJobName,options)
+      .then(lroPoller => lroPoller.pollUntilFinished());
+  }
+
+  /**
+   * Cancels a pipeline job with the given name.
+   * @summary Cancels a pipeline job.
+   * @param resourceGroupName The name of the resource group. The name is case insensitive.
+   * @param accountName The Azure Video Analyzer account name.
+   * @param pipelineJobName The pipeline job name.
+   * @param [options] The optional parameters
+   * @returns Promise
+   */
+  beginCancel(resourceGroupName: string, accountName: string, pipelineJobName: string, options?: msRest.RequestOptionsBase): Promise {
+    return this.client.sendLRORequest(
+      {
+        resourceGroupName,
+        accountName,
+        pipelineJobName,
+        options
+      },
+      beginCancelOperationSpec,
+      options);
+  }
+
+  /**
+   * Retrieves a list of all live pipelines that have been created, along with their JSON
+   * representations.
+   * @summary Retrieves a list of pipeline jobs.
+   * @param nextPageLink The NextLink from the previous successful call to List operation.
+   * @param [options] The optional parameters
+   * @returns Promise
+   */
+  listNext(nextPageLink: string, options?: Models.PipelineJobsListNextOptionalParams): Promise