/*
 * 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 { PagedAsyncIterableIterator, PageSettings } from "@azure/core-paging";
import { setContinuationToken } from "../pagingHelper";
import { WebApps } from "../operationsInterfaces";
import * as coreClient from "@azure/core-client";
import * as Mappers from "../models/mappers";
import * as Parameters from "../models/parameters";
import { WebSiteManagementClient } from "../webSiteManagementClient";
import {
  SimplePollerLike,
  OperationState,
  createHttpPoller
} from "@azure/core-lro";
import { createLroSpec } from "../lroImpl";
import {
  Site,
  WebAppsListNextOptionalParams,
  WebAppsListOptionalParams,
  WebAppsListResponse,
  WebAppsListByResourceGroupNextOptionalParams,
  WebAppsListByResourceGroupOptionalParams,
  WebAppsListByResourceGroupResponse,
  BackupItem,
  WebAppsListBackupsNextOptionalParams,
  WebAppsListBackupsOptionalParams,
  WebAppsListBackupsResponse,
  CsmPublishingCredentialsPoliciesEntity,
  WebAppsListBasicPublishingCredentialsPoliciesNextOptionalParams,
  WebAppsListBasicPublishingCredentialsPoliciesOptionalParams,
  WebAppsListBasicPublishingCredentialsPoliciesResponse,
  SiteConfigResource,
  WebAppsListConfigurationsNextOptionalParams,
  WebAppsListConfigurationsOptionalParams,
  WebAppsListConfigurationsResponse,
  ApiKVReference,
  WebAppsGetAppSettingsKeyVaultReferencesNextOptionalParams,
  WebAppsGetAppSettingsKeyVaultReferencesOptionalParams,
  WebAppsGetAppSettingsKeyVaultReferencesResponse,
  WebAppsGetSiteConnectionStringKeyVaultReferencesNextOptionalParams,
  WebAppsGetSiteConnectionStringKeyVaultReferencesOptionalParams,
  WebAppsGetSiteConnectionStringKeyVaultReferencesResponse,
  SiteConfigurationSnapshotInfo,
  WebAppsListConfigurationSnapshotInfoNextOptionalParams,
  WebAppsListConfigurationSnapshotInfoOptionalParams,
  WebAppsListConfigurationSnapshotInfoResponse,
  ContinuousWebJob,
  WebAppsListContinuousWebJobsNextOptionalParams,
  WebAppsListContinuousWebJobsOptionalParams,
  WebAppsListContinuousWebJobsResponse,
  CsmDeploymentStatus,
  WebAppsListProductionSiteDeploymentStatusesNextOptionalParams,
  WebAppsListProductionSiteDeploymentStatusesOptionalParams,
  WebAppsListProductionSiteDeploymentStatusesResponse,
  Deployment,
  WebAppsListDeploymentsNextOptionalParams,
  WebAppsListDeploymentsOptionalParams,
  WebAppsListDeploymentsResponse,
  Identifier,
  WebAppsListDomainOwnershipIdentifiersNextOptionalParams,
  WebAppsListDomainOwnershipIdentifiersOptionalParams,
  WebAppsListDomainOwnershipIdentifiersResponse,
  FunctionEnvelope,
  WebAppsListFunctionsNextOptionalParams,
  WebAppsListFunctionsOptionalParams,
  WebAppsListFunctionsResponse,
  HostNameBinding,
  WebAppsListHostNameBindingsNextOptionalParams,
  WebAppsListHostNameBindingsOptionalParams,
  WebAppsListHostNameBindingsResponse,
  WebSiteInstanceStatus,
  WebAppsListInstanceIdentifiersNextOptionalParams,
  WebAppsListInstanceIdentifiersOptionalParams,
  WebAppsListInstanceIdentifiersResponse,
  ProcessInfo,
  WebAppsListInstanceProcessesNextOptionalParams,
  WebAppsListInstanceProcessesOptionalParams,
  WebAppsListInstanceProcessesResponse,
  ProcessModuleInfo,
  WebAppsListInstanceProcessModulesNextOptionalParams,
  WebAppsListInstanceProcessModulesOptionalParams,
  WebAppsListInstanceProcessModulesResponse,
  ProcessThreadInfo,
  WebAppsListInstanceProcessThreadsNextOptionalParams,
  WebAppsListInstanceProcessThreadsOptionalParams,
  WebAppsListInstanceProcessThreadsResponse,
  WebAppsListSiteBackupsNextOptionalParams,
  WebAppsListSiteBackupsOptionalParams,
  WebAppsListSiteBackupsResponse,
  PerfMonResponse,
  WebAppsListPerfMonCountersNextOptionalParams,
  WebAppsListPerfMonCountersOptionalParams,
  WebAppsListPerfMonCountersResponse,
  RemotePrivateEndpointConnectionARMResource,
  WebAppsGetPrivateEndpointConnectionListNextOptionalParams,
  WebAppsGetPrivateEndpointConnectionListOptionalParams,
  WebAppsGetPrivateEndpointConnectionListResponse,
  WebAppsListProcessesNextOptionalParams,
  WebAppsListProcessesOptionalParams,
  WebAppsListProcessesResponse,
  WebAppsListProcessModulesNextOptionalParams,
  WebAppsListProcessModulesOptionalParams,
  WebAppsListProcessModulesResponse,
  WebAppsListProcessThreadsNextOptionalParams,
  WebAppsListProcessThreadsOptionalParams,
  WebAppsListProcessThreadsResponse,
  PublicCertificate,
  WebAppsListPublicCertificatesNextOptionalParams,
  WebAppsListPublicCertificatesOptionalParams,
  WebAppsListPublicCertificatesResponse,
  SiteExtensionInfo,
  WebAppsListSiteExtensionsNextOptionalParams,
  WebAppsListSiteExtensionsOptionalParams,
  WebAppsListSiteExtensionsResponse,
  WebAppsListSlotsNextOptionalParams,
  WebAppsListSlotsOptionalParams,
  WebAppsListSlotsResponse,
  WebAppsListBackupsSlotNextOptionalParams,
  WebAppsListBackupsSlotOptionalParams,
  WebAppsListBackupsSlotResponse,
  WebAppsListBasicPublishingCredentialsPoliciesSlotNextOptionalParams,
  WebAppsListBasicPublishingCredentialsPoliciesSlotOptionalParams,
  WebAppsListBasicPublishingCredentialsPoliciesSlotResponse,
  WebAppsListConfigurationsSlotNextOptionalParams,
  WebAppsListConfigurationsSlotOptionalParams,
  WebAppsListConfigurationsSlotResponse,
  WebAppsGetAppSettingsKeyVaultReferencesSlotNextOptionalParams,
  WebAppsGetAppSettingsKeyVaultReferencesSlotOptionalParams,
  WebAppsGetAppSettingsKeyVaultReferencesSlotResponse,
  WebAppsGetSiteConnectionStringKeyVaultReferencesSlotNextOptionalParams,
  WebAppsGetSiteConnectionStringKeyVaultReferencesSlotOptionalParams,
  WebAppsGetSiteConnectionStringKeyVaultReferencesSlotResponse,
  WebAppsListConfigurationSnapshotInfoSlotNextOptionalParams,
  WebAppsListConfigurationSnapshotInfoSlotOptionalParams,
  WebAppsListConfigurationSnapshotInfoSlotResponse,
  WebAppsListContinuousWebJobsSlotNextOptionalParams,
  WebAppsListContinuousWebJobsSlotOptionalParams,
  WebAppsListContinuousWebJobsSlotResponse,
  WebAppsListSlotSiteDeploymentStatusesSlotNextOptionalParams,
  WebAppsListSlotSiteDeploymentStatusesSlotOptionalParams,
  WebAppsListSlotSiteDeploymentStatusesSlotResponse,
  WebAppsListDeploymentsSlotNextOptionalParams,
  WebAppsListDeploymentsSlotOptionalParams,
  WebAppsListDeploymentsSlotResponse,
  WebAppsListDomainOwnershipIdentifiersSlotNextOptionalParams,
  WebAppsListDomainOwnershipIdentifiersSlotOptionalParams,
  WebAppsListDomainOwnershipIdentifiersSlotResponse,
  WebAppsListInstanceFunctionsSlotNextOptionalParams,
  WebAppsListInstanceFunctionsSlotOptionalParams,
  WebAppsListInstanceFunctionsSlotResponse,
  WebAppsListHostNameBindingsSlotNextOptionalParams,
  WebAppsListHostNameBindingsSlotOptionalParams,
  WebAppsListHostNameBindingsSlotResponse,
  WebAppsListInstanceIdentifiersSlotNextOptionalParams,
  WebAppsListInstanceIdentifiersSlotOptionalParams,
  WebAppsListInstanceIdentifiersSlotResponse,
  WebAppsListInstanceProcessesSlotNextOptionalParams,
  WebAppsListInstanceProcessesSlotOptionalParams,
  WebAppsListInstanceProcessesSlotResponse,
  WebAppsListInstanceProcessModulesSlotNextOptionalParams,
  WebAppsListInstanceProcessModulesSlotOptionalParams,
  WebAppsListInstanceProcessModulesSlotResponse,
  WebAppsListInstanceProcessThreadsSlotNextOptionalParams,
  WebAppsListInstanceProcessThreadsSlotOptionalParams,
  WebAppsListInstanceProcessThreadsSlotResponse,
  WebAppsListSiteBackupsSlotNextOptionalParams,
  WebAppsListSiteBackupsSlotOptionalParams,
  WebAppsListSiteBackupsSlotResponse,
  WebAppsListPerfMonCountersSlotNextOptionalParams,
  WebAppsListPerfMonCountersSlotOptionalParams,
  WebAppsListPerfMonCountersSlotResponse,
  WebAppsGetPrivateEndpointConnectionListSlotNextOptionalParams,
  WebAppsGetPrivateEndpointConnectionListSlotOptionalParams,
  WebAppsGetPrivateEndpointConnectionListSlotResponse,
  WebAppsListProcessesSlotNextOptionalParams,
  WebAppsListProcessesSlotOptionalParams,
  WebAppsListProcessesSlotResponse,
  WebAppsListProcessModulesSlotNextOptionalParams,
  WebAppsListProcessModulesSlotOptionalParams,
  WebAppsListProcessModulesSlotResponse,
  WebAppsListProcessThreadsSlotNextOptionalParams,
  WebAppsListProcessThreadsSlotOptionalParams,
  WebAppsListProcessThreadsSlotResponse,
  WebAppsListPublicCertificatesSlotNextOptionalParams,
  WebAppsListPublicCertificatesSlotOptionalParams,
  WebAppsListPublicCertificatesSlotResponse,
  WebAppsListSiteExtensionsSlotNextOptionalParams,
  WebAppsListSiteExtensionsSlotOptionalParams,
  WebAppsListSiteExtensionsSlotResponse,
  SlotDifference,
  CsmSlotEntity,
  WebAppsListSlotDifferencesSlotNextOptionalParams,
  WebAppsListSlotDifferencesSlotOptionalParams,
  WebAppsListSlotDifferencesSlotResponse,
  Snapshot,
  WebAppsListSnapshotsSlotNextOptionalParams,
  WebAppsListSnapshotsSlotOptionalParams,
  WebAppsListSnapshotsSlotResponse,
  WebAppsListSnapshotsFromDRSecondarySlotNextOptionalParams,
  WebAppsListSnapshotsFromDRSecondarySlotOptionalParams,
  WebAppsListSnapshotsFromDRSecondarySlotResponse,
  TriggeredWebJob,
  WebAppsListTriggeredWebJobsSlotNextOptionalParams,
  WebAppsListTriggeredWebJobsSlotOptionalParams,
  WebAppsListTriggeredWebJobsSlotResponse,
  TriggeredJobHistory,
  WebAppsListTriggeredWebJobHistorySlotNextOptionalParams,
  WebAppsListTriggeredWebJobHistorySlotOptionalParams,
  WebAppsListTriggeredWebJobHistorySlotResponse,
  CsmUsageQuota,
  WebAppsListUsagesSlotNextOptionalParams,
  WebAppsListUsagesSlotOptionalParams,
  WebAppsListUsagesSlotResponse,
  WebJob,
  WebAppsListWebJobsSlotNextOptionalParams,
  WebAppsListWebJobsSlotOptionalParams,
  WebAppsListWebJobsSlotResponse,
  WebAppsListSlotDifferencesFromProductionNextOptionalParams,
  WebAppsListSlotDifferencesFromProductionOptionalParams,
  WebAppsListSlotDifferencesFromProductionResponse,
  WebAppsListSnapshotsNextOptionalParams,
  WebAppsListSnapshotsOptionalParams,
  WebAppsListSnapshotsResponse,
  WebAppsListSnapshotsFromDRSecondaryNextOptionalParams,
  WebAppsListSnapshotsFromDRSecondaryOptionalParams,
  WebAppsListSnapshotsFromDRSecondaryResponse,
  WebAppsListTriggeredWebJobsNextOptionalParams,
  WebAppsListTriggeredWebJobsOptionalParams,
  WebAppsListTriggeredWebJobsResponse,
  WebAppsListTriggeredWebJobHistoryNextOptionalParams,
  WebAppsListTriggeredWebJobHistoryOptionalParams,
  WebAppsListTriggeredWebJobHistoryResponse,
  WebAppsListUsagesNextOptionalParams,
  WebAppsListUsagesOptionalParams,
  WebAppsListUsagesResponse,
  WebAppsListWebJobsNextOptionalParams,
  WebAppsListWebJobsOptionalParams,
  WebAppsListWebJobsResponse,
  WorkflowEnvelope,
  WebAppsListInstanceWorkflowsSlotNextOptionalParams,
  WebAppsListInstanceWorkflowsSlotOptionalParams,
  WebAppsListInstanceWorkflowsSlotResponse,
  WebAppsListWorkflowsNextOptionalParams,
  WebAppsListWorkflowsOptionalParams,
  WebAppsListWorkflowsResponse,
  WebAppsGetOptionalParams,
  WebAppsGetResponse,
  WebAppsCreateOrUpdateOptionalParams,
  WebAppsCreateOrUpdateResponse,
  WebAppsDeleteOptionalParams,
  SitePatchResource,
  WebAppsUpdateOptionalParams,
  WebAppsUpdateResponse,
  WebAppsAnalyzeCustomHostnameOptionalParams,
  WebAppsAnalyzeCustomHostnameResponse,
  WebAppsApplySlotConfigToProductionOptionalParams,
  BackupRequest,
  WebAppsBackupOptionalParams,
  WebAppsBackupResponse,
  WebAppsGetBackupStatusOptionalParams,
  WebAppsGetBackupStatusResponse,
  WebAppsDeleteBackupOptionalParams,
  WebAppsListBackupStatusSecretsOptionalParams,
  WebAppsListBackupStatusSecretsResponse,
  RestoreRequest,
  WebAppsRestoreOptionalParams,
  WebAppsGetFtpAllowedOptionalParams,
  WebAppsGetFtpAllowedResponse,
  WebAppsUpdateFtpAllowedOptionalParams,
  WebAppsUpdateFtpAllowedResponse,
  WebAppsGetScmAllowedOptionalParams,
  WebAppsGetScmAllowedResponse,
  WebAppsUpdateScmAllowedOptionalParams,
  WebAppsUpdateScmAllowedResponse,
  StringDictionary,
  WebAppsUpdateApplicationSettingsOptionalParams,
  WebAppsUpdateApplicationSettingsResponse,
  WebAppsListApplicationSettingsOptionalParams,
  WebAppsListApplicationSettingsResponse,
  SiteAuthSettings,
  WebAppsUpdateAuthSettingsOptionalParams,
  WebAppsUpdateAuthSettingsResponse,
  WebAppsGetAuthSettingsOptionalParams,
  WebAppsGetAuthSettingsResponse,
  WebAppsGetAuthSettingsV2WithoutSecretsOptionalParams,
  WebAppsGetAuthSettingsV2WithoutSecretsResponse,
  SiteAuthSettingsV2,
  WebAppsUpdateAuthSettingsV2OptionalParams,
  WebAppsUpdateAuthSettingsV2Response,
  WebAppsGetAuthSettingsV2OptionalParams,
  WebAppsGetAuthSettingsV2Response,
  AzureStoragePropertyDictionaryResource,
  WebAppsUpdateAzureStorageAccountsOptionalParams,
  WebAppsUpdateAzureStorageAccountsResponse,
  WebAppsListAzureStorageAccountsOptionalParams,
  WebAppsListAzureStorageAccountsResponse,
  WebAppsUpdateBackupConfigurationOptionalParams,
  WebAppsUpdateBackupConfigurationResponse,
  WebAppsDeleteBackupConfigurationOptionalParams,
  WebAppsGetBackupConfigurationOptionalParams,
  WebAppsGetBackupConfigurationResponse,
  WebAppsGetAppSettingKeyVaultReferenceOptionalParams,
  WebAppsGetAppSettingKeyVaultReferenceResponse,
  WebAppsGetSiteConnectionStringKeyVaultReferenceOptionalParams,
  WebAppsGetSiteConnectionStringKeyVaultReferenceResponse,
  ConnectionStringDictionary,
  WebAppsUpdateConnectionStringsOptionalParams,
  WebAppsUpdateConnectionStringsResponse,
  WebAppsListConnectionStringsOptionalParams,
  WebAppsListConnectionStringsResponse,
  WebAppsGetDiagnosticLogsConfigurationOptionalParams,
  WebAppsGetDiagnosticLogsConfigurationResponse,
  SiteLogsConfig,
  WebAppsUpdateDiagnosticLogsConfigOptionalParams,
  WebAppsUpdateDiagnosticLogsConfigResponse,
  WebAppsUpdateMetadataOptionalParams,
  WebAppsUpdateMetadataResponse,
  WebAppsListMetadataOptionalParams,
  WebAppsListMetadataResponse,
  WebAppsListPublishingCredentialsOptionalParams,
  WebAppsListPublishingCredentialsResponse,
  PushSettings,
  WebAppsUpdateSitePushSettingsOptionalParams,
  WebAppsUpdateSitePushSettingsResponse,
  WebAppsListSitePushSettingsOptionalParams,
  WebAppsListSitePushSettingsResponse,
  WebAppsListSlotConfigurationNamesOptionalParams,
  WebAppsListSlotConfigurationNamesResponse,
  SlotConfigNamesResource,
  WebAppsUpdateSlotConfigurationNamesOptionalParams,
  WebAppsUpdateSlotConfigurationNamesResponse,
  WebAppsGetConfigurationOptionalParams,
  WebAppsGetConfigurationResponse,
  WebAppsCreateOrUpdateConfigurationOptionalParams,
  WebAppsCreateOrUpdateConfigurationResponse,
  WebAppsUpdateConfigurationOptionalParams,
  WebAppsUpdateConfigurationResponse,
  WebAppsGetConfigurationSnapshotOptionalParams,
  WebAppsGetConfigurationSnapshotResponse,
  WebAppsRecoverSiteConfigurationSnapshotOptionalParams,
  WebAppsGetWebSiteContainerLogsOptionalParams,
  WebAppsGetWebSiteContainerLogsResponse,
  WebAppsGetContainerLogsZipOptionalParams,
  WebAppsGetContainerLogsZipResponse,
  WebAppsGetContinuousWebJobOptionalParams,
  WebAppsGetContinuousWebJobResponse,
  WebAppsDeleteContinuousWebJobOptionalParams,
  WebAppsStartContinuousWebJobOptionalParams,
  WebAppsStopContinuousWebJobOptionalParams,
  WebAppsGetProductionSiteDeploymentStatusOptionalParams,
  WebAppsGetProductionSiteDeploymentStatusResponse,
  WebAppsGetDeploymentOptionalParams,
  WebAppsGetDeploymentResponse,
  WebAppsCreateDeploymentOptionalParams,
  WebAppsCreateDeploymentResponse,
  WebAppsDeleteDeploymentOptionalParams,
  WebAppsListDeploymentLogOptionalParams,
  WebAppsListDeploymentLogResponse,
  WebAppsDiscoverBackupOptionalParams,
  WebAppsDiscoverBackupResponse,
  WebAppsGetDomainOwnershipIdentifierOptionalParams,
  WebAppsGetDomainOwnershipIdentifierResponse,
  WebAppsCreateOrUpdateDomainOwnershipIdentifierOptionalParams,
  WebAppsCreateOrUpdateDomainOwnershipIdentifierResponse,
  WebAppsDeleteDomainOwnershipIdentifierOptionalParams,
  WebAppsUpdateDomainOwnershipIdentifierOptionalParams,
  WebAppsUpdateDomainOwnershipIdentifierResponse,
  WebAppsGetMSDeployStatusOptionalParams,
  WebAppsGetMSDeployStatusResponse,
  MSDeploy,
  WebAppsCreateMSDeployOperationOptionalParams,
  WebAppsCreateMSDeployOperationResponse,
  WebAppsGetMSDeployLogOptionalParams,
  WebAppsGetMSDeployLogResponse,
  WebAppsGetOneDeployStatusOptionalParams,
  WebAppsGetOneDeployStatusResponse,
  WebAppsCreateOneDeployOperationOptionalParams,
  WebAppsCreateOneDeployOperationResponse,
  WebAppsGetFunctionsAdminTokenOptionalParams,
  WebAppsGetFunctionsAdminTokenResponse,
  WebAppsGetFunctionOptionalParams,
  WebAppsGetFunctionResponse,
  WebAppsCreateFunctionOptionalParams,
  WebAppsCreateFunctionResponse,
  WebAppsDeleteFunctionOptionalParams,
  KeyInfo,
  WebAppsCreateOrUpdateFunctionSecretOptionalParams,
  WebAppsCreateOrUpdateFunctionSecretResponse,
  WebAppsDeleteFunctionSecretOptionalParams,
  WebAppsListFunctionKeysOptionalParams,
  WebAppsListFunctionKeysResponse,
  WebAppsListFunctionSecretsOptionalParams,
  WebAppsListFunctionSecretsResponse,
  WebAppsListHostKeysOptionalParams,
  WebAppsListHostKeysResponse,
  WebAppsListSyncStatusOptionalParams,
  WebAppsSyncFunctionsOptionalParams,
  WebAppsCreateOrUpdateHostSecretOptionalParams,
  WebAppsCreateOrUpdateHostSecretResponse,
  WebAppsDeleteHostSecretOptionalParams,
  WebAppsGetHostNameBindingOptionalParams,
  WebAppsGetHostNameBindingResponse,
  WebAppsCreateOrUpdateHostNameBindingOptionalParams,
  WebAppsCreateOrUpdateHostNameBindingResponse,
  WebAppsDeleteHostNameBindingOptionalParams,
  WebAppsGetHybridConnectionOptionalParams,
  WebAppsGetHybridConnectionResponse,
  HybridConnection,
  WebAppsCreateOrUpdateHybridConnectionOptionalParams,
  WebAppsCreateOrUpdateHybridConnectionResponse,
  WebAppsDeleteHybridConnectionOptionalParams,
  WebAppsUpdateHybridConnectionOptionalParams,
  WebAppsUpdateHybridConnectionResponse,
  WebAppsListHybridConnectionsOptionalParams,
  WebAppsListHybridConnectionsResponse,
  WebAppsListRelayServiceConnectionsOptionalParams,
  WebAppsListRelayServiceConnectionsResponse,
  WebAppsGetRelayServiceConnectionOptionalParams,
  WebAppsGetRelayServiceConnectionResponse,
  RelayServiceConnectionEntity,
  WebAppsCreateOrUpdateRelayServiceConnectionOptionalParams,
  WebAppsCreateOrUpdateRelayServiceConnectionResponse,
  WebAppsDeleteRelayServiceConnectionOptionalParams,
  WebAppsUpdateRelayServiceConnectionOptionalParams,
  WebAppsUpdateRelayServiceConnectionResponse,
  WebAppsGetInstanceInfoOptionalParams,
  WebAppsGetInstanceInfoResponse,
  WebAppsGetInstanceMsDeployStatusOptionalParams,
  WebAppsGetInstanceMsDeployStatusResponse,
  WebAppsCreateInstanceMSDeployOperationOptionalParams,
  WebAppsCreateInstanceMSDeployOperationResponse,
  WebAppsGetInstanceMSDeployLogOptionalParams,
  WebAppsGetInstanceMSDeployLogResponse,
  WebAppsGetInstanceProcessOptionalParams,
  WebAppsGetInstanceProcessResponse,
  WebAppsDeleteInstanceProcessOptionalParams,
  WebAppsGetInstanceProcessDumpOptionalParams,
  WebAppsGetInstanceProcessDumpResponse,
  WebAppsGetInstanceProcessModuleOptionalParams,
  WebAppsGetInstanceProcessModuleResponse,
  WebAppsIsCloneableOptionalParams,
  WebAppsIsCloneableResponse,
  WebAppsListSyncFunctionTriggersOptionalParams,
  WebAppsListSyncFunctionTriggersResponse,
  StorageMigrationOptions,
  WebAppsMigrateStorageOptionalParams,
  WebAppsMigrateStorageResponse,
  MigrateMySqlRequest,
  WebAppsMigrateMySqlOptionalParams,
  WebAppsMigrateMySqlResponse,
  WebAppsGetMigrateMySqlStatusOptionalParams,
  WebAppsGetMigrateMySqlStatusResponse,
  WebAppsGetSwiftVirtualNetworkConnectionOptionalParams,
  WebAppsGetSwiftVirtualNetworkConnectionResponse,
  SwiftVirtualNetwork,
  WebAppsCreateOrUpdateSwiftVirtualNetworkConnectionWithCheckOptionalParams,
  WebAppsCreateOrUpdateSwiftVirtualNetworkConnectionWithCheckResponse,
  WebAppsDeleteSwiftVirtualNetworkOptionalParams,
  WebAppsUpdateSwiftVirtualNetworkConnectionWithCheckOptionalParams,
  WebAppsUpdateSwiftVirtualNetworkConnectionWithCheckResponse,
  WebAppsListNetworkFeaturesOptionalParams,
  WebAppsListNetworkFeaturesResponse,
  WebAppsGetNetworkTraceOperationOptionalParams,
  WebAppsGetNetworkTraceOperationResponse,
  WebAppsStartWebSiteNetworkTraceOptionalParams,
  WebAppsStartWebSiteNetworkTraceResponse,
  WebAppsStartWebSiteNetworkTraceOperationOptionalParams,
  WebAppsStartWebSiteNetworkTraceOperationResponse,
  WebAppsStopWebSiteNetworkTraceOptionalParams,
  WebAppsGetNetworkTracesOptionalParams,
  WebAppsGetNetworkTracesResponse,
  WebAppsGetNetworkTraceOperationV2OptionalParams,
  WebAppsGetNetworkTraceOperationV2Response,
  WebAppsGetNetworkTracesV2OptionalParams,
  WebAppsGetNetworkTracesV2Response,
  WebAppsGenerateNewSitePublishingPasswordOptionalParams,
  WebAppsGetSitePhpErrorLogFlagOptionalParams,
  WebAppsGetSitePhpErrorLogFlagResponse,
  WebAppsListPremierAddOnsOptionalParams,
  WebAppsListPremierAddOnsResponse,
  WebAppsGetPremierAddOnOptionalParams,
  WebAppsGetPremierAddOnResponse,
  PremierAddOn,
  WebAppsAddPremierAddOnOptionalParams,
  WebAppsAddPremierAddOnResponse,
  WebAppsDeletePremierAddOnOptionalParams,
  PremierAddOnPatchResource,
  WebAppsUpdatePremierAddOnOptionalParams,
  WebAppsUpdatePremierAddOnResponse,
  WebAppsGetPrivateAccessOptionalParams,
  WebAppsGetPrivateAccessResponse,
  PrivateAccess,
  WebAppsPutPrivateAccessVnetOptionalParams,
  WebAppsPutPrivateAccessVnetResponse,
  WebAppsGetPrivateEndpointConnectionOptionalParams,
  WebAppsGetPrivateEndpointConnectionResponse,
  PrivateLinkConnectionApprovalRequestResource,
  WebAppsApproveOrRejectPrivateEndpointConnectionOptionalParams,
  WebAppsApproveOrRejectPrivateEndpointConnectionResponse,
  WebAppsDeletePrivateEndpointConnectionOptionalParams,
  WebAppsDeletePrivateEndpointConnectionResponse,
  WebAppsGetPrivateLinkResourcesOptionalParams,
  WebAppsGetPrivateLinkResourcesResponse,
  WebAppsGetProcessOptionalParams,
  WebAppsGetProcessResponse,
  WebAppsDeleteProcessOptionalParams,
  WebAppsGetProcessDumpOptionalParams,
  WebAppsGetProcessDumpResponse,
  WebAppsGetProcessModuleOptionalParams,
  WebAppsGetProcessModuleResponse,
  WebAppsGetPublicCertificateOptionalParams,
  WebAppsGetPublicCertificateResponse,
  WebAppsCreateOrUpdatePublicCertificateOptionalParams,
  WebAppsCreateOrUpdatePublicCertificateResponse,
  WebAppsDeletePublicCertificateOptionalParams,
  CsmPublishingProfileOptions,
  WebAppsListPublishingProfileXmlWithSecretsOptionalParams,
  WebAppsListPublishingProfileXmlWithSecretsResponse,
  WebAppsResetProductionSlotConfigOptionalParams,
  WebAppsRestartOptionalParams,
  WebAppsRestoreFromBackupBlobOptionalParams,
  DeletedAppRestoreRequest,
  WebAppsRestoreFromDeletedAppOptionalParams,
  SnapshotRestoreRequest,
  WebAppsRestoreSnapshotOptionalParams,
  WebAppsGetSiteExtensionOptionalParams,
  WebAppsGetSiteExtensionResponse,
  WebAppsInstallSiteExtensionOptionalParams,
  WebAppsInstallSiteExtensionResponse,
  WebAppsDeleteSiteExtensionOptionalParams,
  WebAppsGetSlotOptionalParams,
  WebAppsGetSlotResponse,
  WebAppsCreateOrUpdateSlotOptionalParams,
  WebAppsCreateOrUpdateSlotResponse,
  WebAppsDeleteSlotOptionalParams,
  WebAppsUpdateSlotOptionalParams,
  WebAppsUpdateSlotResponse,
  WebAppsAnalyzeCustomHostnameSlotOptionalParams,
  WebAppsAnalyzeCustomHostnameSlotResponse,
  WebAppsApplySlotConfigurationSlotOptionalParams,
  WebAppsBackupSlotOptionalParams,
  WebAppsBackupSlotResponse,
  WebAppsGetBackupStatusSlotOptionalParams,
  WebAppsGetBackupStatusSlotResponse,
  WebAppsDeleteBackupSlotOptionalParams,
  WebAppsListBackupStatusSecretsSlotOptionalParams,
  WebAppsListBackupStatusSecretsSlotResponse,
  WebAppsRestoreSlotOptionalParams,
  WebAppsGetFtpAllowedSlotOptionalParams,
  WebAppsGetFtpAllowedSlotResponse,
  WebAppsUpdateFtpAllowedSlotOptionalParams,
  WebAppsUpdateFtpAllowedSlotResponse,
  WebAppsGetScmAllowedSlotOptionalParams,
  WebAppsGetScmAllowedSlotResponse,
  WebAppsUpdateScmAllowedSlotOptionalParams,
  WebAppsUpdateScmAllowedSlotResponse,
  WebAppsUpdateApplicationSettingsSlotOptionalParams,
  WebAppsUpdateApplicationSettingsSlotResponse,
  WebAppsListApplicationSettingsSlotOptionalParams,
  WebAppsListApplicationSettingsSlotResponse,
  WebAppsUpdateAuthSettingsSlotOptionalParams,
  WebAppsUpdateAuthSettingsSlotResponse,
  WebAppsGetAuthSettingsSlotOptionalParams,
  WebAppsGetAuthSettingsSlotResponse,
  WebAppsGetAuthSettingsV2WithoutSecretsSlotOptionalParams,
  WebAppsGetAuthSettingsV2WithoutSecretsSlotResponse,
  WebAppsUpdateAuthSettingsV2SlotOptionalParams,
  WebAppsUpdateAuthSettingsV2SlotResponse,
  WebAppsGetAuthSettingsV2SlotOptionalParams,
  WebAppsGetAuthSettingsV2SlotResponse,
  WebAppsUpdateAzureStorageAccountsSlotOptionalParams,
  WebAppsUpdateAzureStorageAccountsSlotResponse,
  WebAppsListAzureStorageAccountsSlotOptionalParams,
  WebAppsListAzureStorageAccountsSlotResponse,
  WebAppsUpdateBackupConfigurationSlotOptionalParams,
  WebAppsUpdateBackupConfigurationSlotResponse,
  WebAppsDeleteBackupConfigurationSlotOptionalParams,
  WebAppsGetBackupConfigurationSlotOptionalParams,
  WebAppsGetBackupConfigurationSlotResponse,
  WebAppsGetAppSettingKeyVaultReferenceSlotOptionalParams,
  WebAppsGetAppSettingKeyVaultReferenceSlotResponse,
  WebAppsGetSiteConnectionStringKeyVaultReferenceSlotOptionalParams,
  WebAppsGetSiteConnectionStringKeyVaultReferenceSlotResponse,
  WebAppsUpdateConnectionStringsSlotOptionalParams,
  WebAppsUpdateConnectionStringsSlotResponse,
  WebAppsListConnectionStringsSlotOptionalParams,
  WebAppsListConnectionStringsSlotResponse,
  WebAppsGetDiagnosticLogsConfigurationSlotOptionalParams,
  WebAppsGetDiagnosticLogsConfigurationSlotResponse,
  WebAppsUpdateDiagnosticLogsConfigSlotOptionalParams,
  WebAppsUpdateDiagnosticLogsConfigSlotResponse,
  WebAppsUpdateMetadataSlotOptionalParams,
  WebAppsUpdateMetadataSlotResponse,
  WebAppsListMetadataSlotOptionalParams,
  WebAppsListMetadataSlotResponse,
  WebAppsListPublishingCredentialsSlotOptionalParams,
  WebAppsListPublishingCredentialsSlotResponse,
  WebAppsUpdateSitePushSettingsSlotOptionalParams,
  WebAppsUpdateSitePushSettingsSlotResponse,
  WebAppsListSitePushSettingsSlotOptionalParams,
  WebAppsListSitePushSettingsSlotResponse,
  WebAppsGetConfigurationSlotOptionalParams,
  WebAppsGetConfigurationSlotResponse,
  WebAppsCreateOrUpdateConfigurationSlotOptionalParams,
  WebAppsCreateOrUpdateConfigurationSlotResponse,
  WebAppsUpdateConfigurationSlotOptionalParams,
  WebAppsUpdateConfigurationSlotResponse,
  WebAppsGetConfigurationSnapshotSlotOptionalParams,
  WebAppsGetConfigurationSnapshotSlotResponse,
  WebAppsRecoverSiteConfigurationSnapshotSlotOptionalParams,
  WebAppsGetWebSiteContainerLogsSlotOptionalParams,
  WebAppsGetWebSiteContainerLogsSlotResponse,
  WebAppsGetContainerLogsZipSlotOptionalParams,
  WebAppsGetContainerLogsZipSlotResponse,
  WebAppsGetContinuousWebJobSlotOptionalParams,
  WebAppsGetContinuousWebJobSlotResponse,
  WebAppsDeleteContinuousWebJobSlotOptionalParams,
  WebAppsStartContinuousWebJobSlotOptionalParams,
  WebAppsStopContinuousWebJobSlotOptionalParams,
  WebAppsGetSlotSiteDeploymentStatusSlotOptionalParams,
  WebAppsGetSlotSiteDeploymentStatusSlotResponse,
  WebAppsGetDeploymentSlotOptionalParams,
  WebAppsGetDeploymentSlotResponse,
  WebAppsCreateDeploymentSlotOptionalParams,
  WebAppsCreateDeploymentSlotResponse,
  WebAppsDeleteDeploymentSlotOptionalParams,
  WebAppsListDeploymentLogSlotOptionalParams,
  WebAppsListDeploymentLogSlotResponse,
  WebAppsDiscoverBackupSlotOptionalParams,
  WebAppsDiscoverBackupSlotResponse,
  WebAppsGetDomainOwnershipIdentifierSlotOptionalParams,
  WebAppsGetDomainOwnershipIdentifierSlotResponse,
  WebAppsCreateOrUpdateDomainOwnershipIdentifierSlotOptionalParams,
  WebAppsCreateOrUpdateDomainOwnershipIdentifierSlotResponse,
  WebAppsDeleteDomainOwnershipIdentifierSlotOptionalParams,
  WebAppsUpdateDomainOwnershipIdentifierSlotOptionalParams,
  WebAppsUpdateDomainOwnershipIdentifierSlotResponse,
  WebAppsGetMSDeployStatusSlotOptionalParams,
  WebAppsGetMSDeployStatusSlotResponse,
  WebAppsCreateMSDeployOperationSlotOptionalParams,
  WebAppsCreateMSDeployOperationSlotResponse,
  WebAppsGetMSDeployLogSlotOptionalParams,
  WebAppsGetMSDeployLogSlotResponse,
  WebAppsGetFunctionsAdminTokenSlotOptionalParams,
  WebAppsGetFunctionsAdminTokenSlotResponse,
  WebAppsGetInstanceFunctionSlotOptionalParams,
  WebAppsGetInstanceFunctionSlotResponse,
  WebAppsCreateInstanceFunctionSlotOptionalParams,
  WebAppsCreateInstanceFunctionSlotResponse,
  WebAppsDeleteInstanceFunctionSlotOptionalParams,
  WebAppsCreateOrUpdateFunctionSecretSlotOptionalParams,
  WebAppsCreateOrUpdateFunctionSecretSlotResponse,
  WebAppsDeleteFunctionSecretSlotOptionalParams,
  WebAppsListFunctionKeysSlotOptionalParams,
  WebAppsListFunctionKeysSlotResponse,
  WebAppsListFunctionSecretsSlotOptionalParams,
  WebAppsListFunctionSecretsSlotResponse,
  WebAppsListHostKeysSlotOptionalParams,
  WebAppsListHostKeysSlotResponse,
  WebAppsListSyncStatusSlotOptionalParams,
  WebAppsSyncFunctionsSlotOptionalParams,
  WebAppsCreateOrUpdateHostSecretSlotOptionalParams,
  WebAppsCreateOrUpdateHostSecretSlotResponse,
  WebAppsDeleteHostSecretSlotOptionalParams,
  WebAppsGetHostNameBindingSlotOptionalParams,
  WebAppsGetHostNameBindingSlotResponse,
  WebAppsCreateOrUpdateHostNameBindingSlotOptionalParams,
  WebAppsCreateOrUpdateHostNameBindingSlotResponse,
  WebAppsDeleteHostNameBindingSlotOptionalParams,
  WebAppsGetHybridConnectionSlotOptionalParams,
  WebAppsGetHybridConnectionSlotResponse,
  WebAppsCreateOrUpdateHybridConnectionSlotOptionalParams,
  WebAppsCreateOrUpdateHybridConnectionSlotResponse,
  WebAppsDeleteHybridConnectionSlotOptionalParams,
  WebAppsUpdateHybridConnectionSlotOptionalParams,
  WebAppsUpdateHybridConnectionSlotResponse,
  WebAppsListHybridConnectionsSlotOptionalParams,
  WebAppsListHybridConnectionsSlotResponse,
  WebAppsListRelayServiceConnectionsSlotOptionalParams,
  WebAppsListRelayServiceConnectionsSlotResponse,
  WebAppsGetRelayServiceConnectionSlotOptionalParams,
  WebAppsGetRelayServiceConnectionSlotResponse,
  WebAppsCreateOrUpdateRelayServiceConnectionSlotOptionalParams,
  WebAppsCreateOrUpdateRelayServiceConnectionSlotResponse,
  WebAppsDeleteRelayServiceConnectionSlotOptionalParams,
  WebAppsUpdateRelayServiceConnectionSlotOptionalParams,
  WebAppsUpdateRelayServiceConnectionSlotResponse,
  WebAppsGetInstanceInfoSlotOptionalParams,
  WebAppsGetInstanceInfoSlotResponse,
  WebAppsGetInstanceMsDeployStatusSlotOptionalParams,
  WebAppsGetInstanceMsDeployStatusSlotResponse,
  WebAppsCreateInstanceMSDeployOperationSlotOptionalParams,
  WebAppsCreateInstanceMSDeployOperationSlotResponse,
  WebAppsGetInstanceMSDeployLogSlotOptionalParams,
  WebAppsGetInstanceMSDeployLogSlotResponse,
  WebAppsGetInstanceProcessSlotOptionalParams,
  WebAppsGetInstanceProcessSlotResponse,
  WebAppsDeleteInstanceProcessSlotOptionalParams,
  WebAppsGetInstanceProcessDumpSlotOptionalParams,
  WebAppsGetInstanceProcessDumpSlotResponse,
  WebAppsGetInstanceProcessModuleSlotOptionalParams,
  WebAppsGetInstanceProcessModuleSlotResponse,
  WebAppsIsCloneableSlotOptionalParams,
  WebAppsIsCloneableSlotResponse,
  WebAppsListSyncFunctionTriggersSlotOptionalParams,
  WebAppsListSyncFunctionTriggersSlotResponse,
  WebAppsGetMigrateMySqlStatusSlotOptionalParams,
  WebAppsGetMigrateMySqlStatusSlotResponse,
  WebAppsGetSwiftVirtualNetworkConnectionSlotOptionalParams,
  WebAppsGetSwiftVirtualNetworkConnectionSlotResponse,
  WebAppsCreateOrUpdateSwiftVirtualNetworkConnectionWithCheckSlotOptionalParams,
  WebAppsCreateOrUpdateSwiftVirtualNetworkConnectionWithCheckSlotResponse,
  WebAppsDeleteSwiftVirtualNetworkSlotOptionalParams,
  WebAppsUpdateSwiftVirtualNetworkConnectionWithCheckSlotOptionalParams,
  WebAppsUpdateSwiftVirtualNetworkConnectionWithCheckSlotResponse,
  WebAppsListNetworkFeaturesSlotOptionalParams,
  WebAppsListNetworkFeaturesSlotResponse,
  WebAppsGetNetworkTraceOperationSlotOptionalParams,
  WebAppsGetNetworkTraceOperationSlotResponse,
  WebAppsStartWebSiteNetworkTraceSlotOptionalParams,
  WebAppsStartWebSiteNetworkTraceSlotResponse,
  WebAppsStartWebSiteNetworkTraceOperationSlotOptionalParams,
  WebAppsStartWebSiteNetworkTraceOperationSlotResponse,
  WebAppsStopWebSiteNetworkTraceSlotOptionalParams,
  WebAppsGetNetworkTracesSlotOptionalParams,
  WebAppsGetNetworkTracesSlotResponse,
  WebAppsGetNetworkTraceOperationSlotV2OptionalParams,
  WebAppsGetNetworkTraceOperationSlotV2Response,
  WebAppsGetNetworkTracesSlotV2OptionalParams,
  WebAppsGetNetworkTracesSlotV2Response,
  WebAppsGenerateNewSitePublishingPasswordSlotOptionalParams,
  WebAppsGetSitePhpErrorLogFlagSlotOptionalParams,
  WebAppsGetSitePhpErrorLogFlagSlotResponse,
  WebAppsListPremierAddOnsSlotOptionalParams,
  WebAppsListPremierAddOnsSlotResponse,
  WebAppsGetPremierAddOnSlotOptionalParams,
  WebAppsGetPremierAddOnSlotResponse,
  WebAppsAddPremierAddOnSlotOptionalParams,
  WebAppsAddPremierAddOnSlotResponse,
  WebAppsDeletePremierAddOnSlotOptionalParams,
  WebAppsUpdatePremierAddOnSlotOptionalParams,
  WebAppsUpdatePremierAddOnSlotResponse,
  WebAppsGetPrivateAccessSlotOptionalParams,
  WebAppsGetPrivateAccessSlotResponse,
  WebAppsPutPrivateAccessVnetSlotOptionalParams,
  WebAppsPutPrivateAccessVnetSlotResponse,
  WebAppsGetPrivateEndpointConnectionSlotOptionalParams,
  WebAppsGetPrivateEndpointConnectionSlotResponse,
  WebAppsApproveOrRejectPrivateEndpointConnectionSlotOptionalParams,
  WebAppsApproveOrRejectPrivateEndpointConnectionSlotResponse,
  WebAppsDeletePrivateEndpointConnectionSlotOptionalParams,
  WebAppsDeletePrivateEndpointConnectionSlotResponse,
  WebAppsGetPrivateLinkResourcesSlotOptionalParams,
  WebAppsGetPrivateLinkResourcesSlotResponse,
  WebAppsGetProcessSlotOptionalParams,
  WebAppsGetProcessSlotResponse,
  WebAppsDeleteProcessSlotOptionalParams,
  WebAppsGetProcessDumpSlotOptionalParams,
  WebAppsGetProcessDumpSlotResponse,
  WebAppsGetProcessModuleSlotOptionalParams,
  WebAppsGetProcessModuleSlotResponse,
  WebAppsGetPublicCertificateSlotOptionalParams,
  WebAppsGetPublicCertificateSlotResponse,
  WebAppsCreateOrUpdatePublicCertificateSlotOptionalParams,
  WebAppsCreateOrUpdatePublicCertificateSlotResponse,
  WebAppsDeletePublicCertificateSlotOptionalParams,
  WebAppsListPublishingProfileXmlWithSecretsSlotOptionalParams,
  WebAppsListPublishingProfileXmlWithSecretsSlotResponse,
  WebAppsResetSlotConfigurationSlotOptionalParams,
  WebAppsRestartSlotOptionalParams,
  WebAppsRestoreFromBackupBlobSlotOptionalParams,
  WebAppsRestoreFromDeletedAppSlotOptionalParams,
  WebAppsRestoreSnapshotSlotOptionalParams,
  WebAppsGetSiteExtensionSlotOptionalParams,
  WebAppsGetSiteExtensionSlotResponse,
  WebAppsInstallSiteExtensionSlotOptionalParams,
  WebAppsInstallSiteExtensionSlotResponse,
  WebAppsDeleteSiteExtensionSlotOptionalParams,
  WebAppsSwapSlotOptionalParams,
  WebAppsGetSourceControlSlotOptionalParams,
  WebAppsGetSourceControlSlotResponse,
  SiteSourceControl,
  WebAppsCreateOrUpdateSourceControlSlotOptionalParams,
  WebAppsCreateOrUpdateSourceControlSlotResponse,
  WebAppsDeleteSourceControlSlotOptionalParams,
  WebAppsUpdateSourceControlSlotOptionalParams,
  WebAppsUpdateSourceControlSlotResponse,
  WebAppsStartSlotOptionalParams,
  WebAppsStartNetworkTraceSlotOptionalParams,
  WebAppsStartNetworkTraceSlotResponse,
  WebAppsStopSlotOptionalParams,
  WebAppsStopNetworkTraceSlotOptionalParams,
  WebAppsSyncRepositorySlotOptionalParams,
  WebAppsSyncFunctionTriggersSlotOptionalParams,
  WebAppsGetTriggeredWebJobSlotOptionalParams,
  WebAppsGetTriggeredWebJobSlotResponse,
  WebAppsDeleteTriggeredWebJobSlotOptionalParams,
  WebAppsGetTriggeredWebJobHistorySlotOptionalParams,
  WebAppsGetTriggeredWebJobHistorySlotResponse,
  WebAppsRunTriggeredWebJobSlotOptionalParams,
  WebAppsListVnetConnectionsSlotOptionalParams,
  WebAppsListVnetConnectionsSlotResponse,
  WebAppsGetVnetConnectionSlotOptionalParams,
  WebAppsGetVnetConnectionSlotResponse,
  VnetInfoResource,
  WebAppsCreateOrUpdateVnetConnectionSlotOptionalParams,
  WebAppsCreateOrUpdateVnetConnectionSlotResponse,
  WebAppsDeleteVnetConnectionSlotOptionalParams,
  WebAppsUpdateVnetConnectionSlotOptionalParams,
  WebAppsUpdateVnetConnectionSlotResponse,
  WebAppsGetVnetConnectionGatewaySlotOptionalParams,
  WebAppsGetVnetConnectionGatewaySlotResponse,
  VnetGateway,
  WebAppsCreateOrUpdateVnetConnectionGatewaySlotOptionalParams,
  WebAppsCreateOrUpdateVnetConnectionGatewaySlotResponse,
  WebAppsUpdateVnetConnectionGatewaySlotOptionalParams,
  WebAppsUpdateVnetConnectionGatewaySlotResponse,
  WebAppsGetWebJobSlotOptionalParams,
  WebAppsGetWebJobSlotResponse,
  WebAppsSwapSlotWithProductionOptionalParams,
  WebAppsGetSourceControlOptionalParams,
  WebAppsGetSourceControlResponse,
  WebAppsCreateOrUpdateSourceControlOptionalParams,
  WebAppsCreateOrUpdateSourceControlResponse,
  WebAppsDeleteSourceControlOptionalParams,
  WebAppsUpdateSourceControlOptionalParams,
  WebAppsUpdateSourceControlResponse,
  WebAppsStartOptionalParams,
  WebAppsStartNetworkTraceOptionalParams,
  WebAppsStartNetworkTraceResponse,
  WebAppsStopOptionalParams,
  WebAppsStopNetworkTraceOptionalParams,
  WebAppsSyncRepositoryOptionalParams,
  WebAppsSyncFunctionTriggersOptionalParams,
  WebAppsGetTriggeredWebJobOptionalParams,
  WebAppsGetTriggeredWebJobResponse,
  WebAppsDeleteTriggeredWebJobOptionalParams,
  WebAppsGetTriggeredWebJobHistoryOptionalParams,
  WebAppsGetTriggeredWebJobHistoryResponse,
  WebAppsRunTriggeredWebJobOptionalParams,
  WebAppsListVnetConnectionsOptionalParams,
  WebAppsListVnetConnectionsResponse,
  WebAppsGetVnetConnectionOptionalParams,
  WebAppsGetVnetConnectionResponse,
  WebAppsCreateOrUpdateVnetConnectionOptionalParams,
  WebAppsCreateOrUpdateVnetConnectionResponse,
  WebAppsDeleteVnetConnectionOptionalParams,
  WebAppsUpdateVnetConnectionOptionalParams,
  WebAppsUpdateVnetConnectionResponse,
  WebAppsGetVnetConnectionGatewayOptionalParams,
  WebAppsGetVnetConnectionGatewayResponse,
  WebAppsCreateOrUpdateVnetConnectionGatewayOptionalParams,
  WebAppsCreateOrUpdateVnetConnectionGatewayResponse,
  WebAppsUpdateVnetConnectionGatewayOptionalParams,
  WebAppsUpdateVnetConnectionGatewayResponse,
  WebAppsGetWebJobOptionalParams,
  WebAppsGetWebJobResponse,
  WebAppsDeployWorkflowArtifactsOptionalParams,
  WebAppsDeployWorkflowArtifactsSlotOptionalParams,
  WebAppsGetInstanceWorkflowSlotOptionalParams,
  WebAppsGetInstanceWorkflowSlotResponse,
  WebAppsListWorkflowsConnectionsSlotOptionalParams,
  WebAppsListWorkflowsConnectionsSlotResponse,
  WebAppsGetWorkflowOptionalParams,
  WebAppsGetWorkflowResponse,
  WebAppsListWorkflowsConnectionsOptionalParams,
  WebAppsListWorkflowsConnectionsResponse,
  WebAppsListNextResponse,
  WebAppsListByResourceGroupNextResponse,
  WebAppsListBackupsNextResponse,
  WebAppsListBasicPublishingCredentialsPoliciesNextResponse,
  WebAppsListConfigurationsNextResponse,
  WebAppsGetAppSettingsKeyVaultReferencesNextResponse,
  WebAppsGetSiteConnectionStringKeyVaultReferencesNextResponse,
  WebAppsListConfigurationSnapshotInfoNextResponse,
  WebAppsListContinuousWebJobsNextResponse,
  WebAppsListProductionSiteDeploymentStatusesNextResponse,
  WebAppsListDeploymentsNextResponse,
  WebAppsListDomainOwnershipIdentifiersNextResponse,
  WebAppsListFunctionsNextResponse,
  WebAppsListHostNameBindingsNextResponse,
  WebAppsListInstanceIdentifiersNextResponse,
  WebAppsListInstanceProcessesNextResponse,
  WebAppsListInstanceProcessModulesNextResponse,
  WebAppsListInstanceProcessThreadsNextResponse,
  WebAppsListSiteBackupsNextResponse,
  WebAppsListPerfMonCountersNextResponse,
  WebAppsGetPrivateEndpointConnectionListNextResponse,
  WebAppsListProcessesNextResponse,
  WebAppsListProcessModulesNextResponse,
  WebAppsListProcessThreadsNextResponse,
  WebAppsListPublicCertificatesNextResponse,
  WebAppsListSiteExtensionsNextResponse,
  WebAppsListSlotsNextResponse,
  WebAppsListBackupsSlotNextResponse,
  WebAppsListBasicPublishingCredentialsPoliciesSlotNextResponse,
  WebAppsListConfigurationsSlotNextResponse,
  WebAppsGetAppSettingsKeyVaultReferencesSlotNextResponse,
  WebAppsGetSiteConnectionStringKeyVaultReferencesSlotNextResponse,
  WebAppsListConfigurationSnapshotInfoSlotNextResponse,
  WebAppsListContinuousWebJobsSlotNextResponse,
  WebAppsListSlotSiteDeploymentStatusesSlotNextResponse,
  WebAppsListDeploymentsSlotNextResponse,
  WebAppsListDomainOwnershipIdentifiersSlotNextResponse,
  WebAppsListInstanceFunctionsSlotNextResponse,
  WebAppsListHostNameBindingsSlotNextResponse,
  WebAppsListInstanceIdentifiersSlotNextResponse,
  WebAppsListInstanceProcessesSlotNextResponse,
  WebAppsListInstanceProcessModulesSlotNextResponse,
  WebAppsListInstanceProcessThreadsSlotNextResponse,
  WebAppsListSiteBackupsSlotNextResponse,
  WebAppsListPerfMonCountersSlotNextResponse,
  WebAppsGetPrivateEndpointConnectionListSlotNextResponse,
  WebAppsListProcessesSlotNextResponse,
  WebAppsListProcessModulesSlotNextResponse,
  WebAppsListProcessThreadsSlotNextResponse,
  WebAppsListPublicCertificatesSlotNextResponse,
  WebAppsListSiteExtensionsSlotNextResponse,
  WebAppsListSlotDifferencesSlotNextResponse,
  WebAppsListSnapshotsSlotNextResponse,
  WebAppsListSnapshotsFromDRSecondarySlotNextResponse,
  WebAppsListTriggeredWebJobsSlotNextResponse,
  WebAppsListTriggeredWebJobHistorySlotNextResponse,
  WebAppsListUsagesSlotNextResponse,
  WebAppsListWebJobsSlotNextResponse,
  WebAppsListSlotDifferencesFromProductionNextResponse,
  WebAppsListSnapshotsNextResponse,
  WebAppsListSnapshotsFromDRSecondaryNextResponse,
  WebAppsListTriggeredWebJobsNextResponse,
  WebAppsListTriggeredWebJobHistoryNextResponse,
  WebAppsListUsagesNextResponse,
  WebAppsListWebJobsNextResponse,
  WebAppsListInstanceWorkflowsSlotNextResponse,
  WebAppsListWorkflowsNextResponse
} from "../models";

/// <reference lib="esnext.asynciterable" />
/** Class containing WebApps operations. */
export class WebAppsImpl implements WebApps {
  private readonly client: WebSiteManagementClient;

  /**
   * Initialize a new instance of the class WebApps class.
   * @param client Reference to the service client
   */
  constructor(client: WebSiteManagementClient) {
    this.client = client;
  }

  /**
   * Description for Get all apps for a subscription.
   * @param options The options parameters.
   */
  public list(
    options?: WebAppsListOptionalParams
  ): PagedAsyncIterableIterator<Site> {
    const iter = this.listPagingAll(options);
    return {
      next() {
        return iter.next();
      },
      [Symbol.asyncIterator]() {
        return this;
      },
      byPage: (settings?: PageSettings) => {
        if (settings?.maxPageSize) {
          throw new Error("maxPageSize is not supported by this operation.");
        }
        return this.listPagingPage(options, settings);
      }
    };
  }

  private async *listPagingPage(
    options?: WebAppsListOptionalParams,
    settings?: PageSettings
  ): AsyncIterableIterator<Site[]> {
    let result: WebAppsListResponse;
    let continuationToken = settings?.continuationToken;
    if (!continuationToken) {
      result = await this._list(options);
      let page = result.value || [];
      continuationToken = result.nextLink;
      setContinuationToken(page, continuationToken);
      yield page;
    }
    while (continuationToken) {
      result = await this._listNext(continuationToken, options);
      continuationToken = result.nextLink;
      let page = result.value || [];
      setContinuationToken(page, continuationToken);
      yield page;
    }
  }

  private async *listPagingAll(
    options?: WebAppsListOptionalParams
  ): AsyncIterableIterator<Site> {
    for await (const page of this.listPagingPage(options)) {
      yield* page;
    }
  }

  /**
   * Description for Gets all web, mobile, and API apps in the specified resource group.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param options The options parameters.
   */
  public listByResourceGroup(
    resourceGroupName: string,
    options?: WebAppsListByResourceGroupOptionalParams
  ): PagedAsyncIterableIterator<Site> {
    const iter = this.listByResourceGroupPagingAll(resourceGroupName, options);
    return {
      next() {
        return iter.next();
      },
      [Symbol.asyncIterator]() {
        return this;
      },
      byPage: (settings?: PageSettings) => {
        if (settings?.maxPageSize) {
          throw new Error("maxPageSize is not supported by this operation.");
        }
        return this.listByResourceGroupPagingPage(
          resourceGroupName,
          options,
          settings
        );
      }
    };
  }

  private async *listByResourceGroupPagingPage(
    resourceGroupName: string,
    options?: WebAppsListByResourceGroupOptionalParams,
    settings?: PageSettings
  ): AsyncIterableIterator<Site[]> {
    let result: WebAppsListByResourceGroupResponse;
    let continuationToken = settings?.continuationToken;
    if (!continuationToken) {
      result = await this._listByResourceGroup(resourceGroupName, options);
      let page = result.value || [];
      continuationToken = result.nextLink;
      setContinuationToken(page, continuationToken);
      yield page;
    }
    while (continuationToken) {
      result = await this._listByResourceGroupNext(
        resourceGroupName,
        continuationToken,
        options
      );
      continuationToken = result.nextLink;
      let page = result.value || [];
      setContinuationToken(page, continuationToken);
      yield page;
    }
  }

  private async *listByResourceGroupPagingAll(
    resourceGroupName: string,
    options?: WebAppsListByResourceGroupOptionalParams
  ): AsyncIterableIterator<Site> {
    for await (const page of this.listByResourceGroupPagingPage(
      resourceGroupName,
      options
    )) {
      yield* page;
    }
  }

  /**
   * Description for Gets existing backups of an app.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the app.
   * @param options The options parameters.
   */
  public listBackups(
    resourceGroupName: string,
    name: string,
    options?: WebAppsListBackupsOptionalParams
  ): PagedAsyncIterableIterator<BackupItem> {
    const iter = this.listBackupsPagingAll(resourceGroupName, name, options);
    return {
      next() {
        return iter.next();
      },
      [Symbol.asyncIterator]() {
        return this;
      },
      byPage: (settings?: PageSettings) => {
        if (settings?.maxPageSize) {
          throw new Error("maxPageSize is not supported by this operation.");
        }
        return this.listBackupsPagingPage(
          resourceGroupName,
          name,
          options,
          settings
        );
      }
    };
  }

  private async *listBackupsPagingPage(
    resourceGroupName: string,
    name: string,
    options?: WebAppsListBackupsOptionalParams,
    settings?: PageSettings
  ): AsyncIterableIterator<BackupItem[]> {
    let result: WebAppsListBackupsResponse;
    let continuationToken = settings?.continuationToken;
    if (!continuationToken) {
      result = await this._listBackups(resourceGroupName, name, options);
      let page = result.value || [];
      continuationToken = result.nextLink;
      setContinuationToken(page, continuationToken);
      yield page;
    }
    while (continuationToken) {
      result = await this._listBackupsNext(
        resourceGroupName,
        name,
        continuationToken,
        options
      );
      continuationToken = result.nextLink;
      let page = result.value || [];
      setContinuationToken(page, continuationToken);
      yield page;
    }
  }

  private async *listBackupsPagingAll(
    resourceGroupName: string,
    name: string,
    options?: WebAppsListBackupsOptionalParams
  ): AsyncIterableIterator<BackupItem> {
    for await (const page of this.listBackupsPagingPage(
      resourceGroupName,
      name,
      options
    )) {
      yield* page;
    }
  }

  /**
   * Description for Returns whether Scm basic auth is allowed and whether Ftp is allowed for a given
   * site.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the app.
   * @param options The options parameters.
   */
  public listBasicPublishingCredentialsPolicies(
    resourceGroupName: string,
    name: string,
    options?: WebAppsListBasicPublishingCredentialsPoliciesOptionalParams
  ): PagedAsyncIterableIterator<CsmPublishingCredentialsPoliciesEntity> {
    const iter = this.listBasicPublishingCredentialsPoliciesPagingAll(
      resourceGroupName,
      name,
      options
    );
    return {
      next() {
        return iter.next();
      },
      [Symbol.asyncIterator]() {
        return this;
      },
      byPage: (settings?: PageSettings) => {
        if (settings?.maxPageSize) {
          throw new Error("maxPageSize is not supported by this operation.");
        }
        return this.listBasicPublishingCredentialsPoliciesPagingPage(
          resourceGroupName,
          name,
          options,
          settings
        );
      }
    };
  }

  private async *listBasicPublishingCredentialsPoliciesPagingPage(
    resourceGroupName: string,
    name: string,
    options?: WebAppsListBasicPublishingCredentialsPoliciesOptionalParams,
    settings?: PageSettings
  ): AsyncIterableIterator<CsmPublishingCredentialsPoliciesEntity[]> {
    let result: WebAppsListBasicPublishingCredentialsPoliciesResponse;
    let continuationToken = settings?.continuationToken;
    if (!continuationToken) {
      result = await this._listBasicPublishingCredentialsPolicies(
        resourceGroupName,
        name,
        options
      );
      let page = result.value || [];
      continuationToken = result.nextLink;
      setContinuationToken(page, continuationToken);
      yield page;
    }
    while (continuationToken) {
      result = await this._listBasicPublishingCredentialsPoliciesNext(
        resourceGroupName,
        name,
        continuationToken,
        options
      );
      continuationToken = result.nextLink;
      let page = result.value || [];
      setContinuationToken(page, continuationToken);
      yield page;
    }
  }

  private async *listBasicPublishingCredentialsPoliciesPagingAll(
    resourceGroupName: string,
    name: string,
    options?: WebAppsListBasicPublishingCredentialsPoliciesOptionalParams
  ): AsyncIterableIterator<CsmPublishingCredentialsPoliciesEntity> {
    for await (const page of this.listBasicPublishingCredentialsPoliciesPagingPage(
      resourceGroupName,
      name,
      options
    )) {
      yield* page;
    }
  }

  /**
   * Description for List the configurations of an app
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the app.
   * @param options The options parameters.
   */
  public listConfigurations(
    resourceGroupName: string,
    name: string,
    options?: WebAppsListConfigurationsOptionalParams
  ): PagedAsyncIterableIterator<SiteConfigResource> {
    const iter = this.listConfigurationsPagingAll(
      resourceGroupName,
      name,
      options
    );
    return {
      next() {
        return iter.next();
      },
      [Symbol.asyncIterator]() {
        return this;
      },
      byPage: (settings?: PageSettings) => {
        if (settings?.maxPageSize) {
          throw new Error("maxPageSize is not supported by this operation.");
        }
        return this.listConfigurationsPagingPage(
          resourceGroupName,
          name,
          options,
          settings
        );
      }
    };
  }

  private async *listConfigurationsPagingPage(
    resourceGroupName: string,
    name: string,
    options?: WebAppsListConfigurationsOptionalParams,
    settings?: PageSettings
  ): AsyncIterableIterator<SiteConfigResource[]> {
    let result: WebAppsListConfigurationsResponse;
    let continuationToken = settings?.continuationToken;
    if (!continuationToken) {
      result = await this._listConfigurations(resourceGroupName, name, options);
      let page = result.value || [];
      continuationToken = result.nextLink;
      setContinuationToken(page, continuationToken);
      yield page;
    }
    while (continuationToken) {
      result = await this._listConfigurationsNext(
        resourceGroupName,
        name,
        continuationToken,
        options
      );
      continuationToken = result.nextLink;
      let page = result.value || [];
      setContinuationToken(page, continuationToken);
      yield page;
    }
  }

  private async *listConfigurationsPagingAll(
    resourceGroupName: string,
    name: string,
    options?: WebAppsListConfigurationsOptionalParams
  ): AsyncIterableIterator<SiteConfigResource> {
    for await (const page of this.listConfigurationsPagingPage(
      resourceGroupName,
      name,
      options
    )) {
      yield* page;
    }
  }

  /**
   * Description for Gets the config reference app settings and status of an app
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the app.
   * @param options The options parameters.
   */
  public listAppSettingsKeyVaultReferences(
    resourceGroupName: string,
    name: string,
    options?: WebAppsGetAppSettingsKeyVaultReferencesOptionalParams
  ): PagedAsyncIterableIterator<ApiKVReference> {
    const iter = this.getAppSettingsKeyVaultReferencesPagingAll(
      resourceGroupName,
      name,
      options
    );
    return {
      next() {
        return iter.next();
      },
      [Symbol.asyncIterator]() {
        return this;
      },
      byPage: (settings?: PageSettings) => {
        if (settings?.maxPageSize) {
          throw new Error("maxPageSize is not supported by this operation.");
        }
        return this.getAppSettingsKeyVaultReferencesPagingPage(
          resourceGroupName,
          name,
          options,
          settings
        );
      }
    };
  }

  private async *getAppSettingsKeyVaultReferencesPagingPage(
    resourceGroupName: string,
    name: string,
    options?: WebAppsGetAppSettingsKeyVaultReferencesOptionalParams,
    settings?: PageSettings
  ): AsyncIterableIterator<ApiKVReference[]> {
    let result: WebAppsGetAppSettingsKeyVaultReferencesResponse;
    let continuationToken = settings?.continuationToken;
    if (!continuationToken) {
      result = await this._getAppSettingsKeyVaultReferences(
        resourceGroupName,
        name,
        options
      );
      let page = result.value || [];
      continuationToken = result.nextLink;
      setContinuationToken(page, continuationToken);
      yield page;
    }
    while (continuationToken) {
      result = await this._getAppSettingsKeyVaultReferencesNext(
        resourceGroupName,
        name,
        continuationToken,
        options
      );
      continuationToken = result.nextLink;
      let page = result.value || [];
      setContinuationToken(page, continuationToken);
      yield page;
    }
  }

  private async *getAppSettingsKeyVaultReferencesPagingAll(
    resourceGroupName: string,
    name: string,
    options?: WebAppsGetAppSettingsKeyVaultReferencesOptionalParams
  ): AsyncIterableIterator<ApiKVReference> {
    for await (const page of this.getAppSettingsKeyVaultReferencesPagingPage(
      resourceGroupName,
      name,
      options
    )) {
      yield* page;
    }
  }

  /**
   * Description for Gets the config reference app settings and status of an app
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the app.
   * @param options The options parameters.
   */
  public listSiteConnectionStringKeyVaultReferences(
    resourceGroupName: string,
    name: string,
    options?: WebAppsGetSiteConnectionStringKeyVaultReferencesOptionalParams
  ): PagedAsyncIterableIterator<ApiKVReference> {
    const iter = this.getSiteConnectionStringKeyVaultReferencesPagingAll(
      resourceGroupName,
      name,
      options
    );
    return {
      next() {
        return iter.next();
      },
      [Symbol.asyncIterator]() {
        return this;
      },
      byPage: (settings?: PageSettings) => {
        if (settings?.maxPageSize) {
          throw new Error("maxPageSize is not supported by this operation.");
        }
        return this.getSiteConnectionStringKeyVaultReferencesPagingPage(
          resourceGroupName,
          name,
          options,
          settings
        );
      }
    };
  }

  private async *getSiteConnectionStringKeyVaultReferencesPagingPage(
    resourceGroupName: string,
    name: string,
    options?: WebAppsGetSiteConnectionStringKeyVaultReferencesOptionalParams,
    settings?: PageSettings
  ): AsyncIterableIterator<ApiKVReference[]> {
    let result: WebAppsGetSiteConnectionStringKeyVaultReferencesResponse;
    let continuationToken = settings?.continuationToken;
    if (!continuationToken) {
      result = await this._getSiteConnectionStringKeyVaultReferences(
        resourceGroupName,
        name,
        options
      );
      let page = result.value || [];
      continuationToken = result.nextLink;
      setContinuationToken(page, continuationToken);
      yield page;
    }
    while (continuationToken) {
      result = await this._getSiteConnectionStringKeyVaultReferencesNext(
        resourceGroupName,
        name,
        continuationToken,
        options
      );
      continuationToken = result.nextLink;
      let page = result.value || [];
      setContinuationToken(page, continuationToken);
      yield page;
    }
  }

  private async *getSiteConnectionStringKeyVaultReferencesPagingAll(
    resourceGroupName: string,
    name: string,
    options?: WebAppsGetSiteConnectionStringKeyVaultReferencesOptionalParams
  ): AsyncIterableIterator<ApiKVReference> {
    for await (const page of this.getSiteConnectionStringKeyVaultReferencesPagingPage(
      resourceGroupName,
      name,
      options
    )) {
      yield* page;
    }
  }

  /**
   * Description for Gets a list of web app configuration snapshots identifiers. Each element of the list
   * contains a timestamp and the ID of the snapshot.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the app.
   * @param options The options parameters.
   */
  public listConfigurationSnapshotInfo(
    resourceGroupName: string,
    name: string,
    options?: WebAppsListConfigurationSnapshotInfoOptionalParams
  ): PagedAsyncIterableIterator<SiteConfigurationSnapshotInfo> {
    const iter = this.listConfigurationSnapshotInfoPagingAll(
      resourceGroupName,
      name,
      options
    );
    return {
      next() {
        return iter.next();
      },
      [Symbol.asyncIterator]() {
        return this;
      },
      byPage: (settings?: PageSettings) => {
        if (settings?.maxPageSize) {
          throw new Error("maxPageSize is not supported by this operation.");
        }
        return this.listConfigurationSnapshotInfoPagingPage(
          resourceGroupName,
          name,
          options,
          settings
        );
      }
    };
  }

  private async *listConfigurationSnapshotInfoPagingPage(
    resourceGroupName: string,
    name: string,
    options?: WebAppsListConfigurationSnapshotInfoOptionalParams,
    settings?: PageSettings
  ): AsyncIterableIterator<SiteConfigurationSnapshotInfo[]> {
    let result: WebAppsListConfigurationSnapshotInfoResponse;
    let continuationToken = settings?.continuationToken;
    if (!continuationToken) {
      result = await this._listConfigurationSnapshotInfo(
        resourceGroupName,
        name,
        options
      );
      let page = result.value || [];
      continuationToken = result.nextLink;
      setContinuationToken(page, continuationToken);
      yield page;
    }
    while (continuationToken) {
      result = await this._listConfigurationSnapshotInfoNext(
        resourceGroupName,
        name,
        continuationToken,
        options
      );
      continuationToken = result.nextLink;
      let page = result.value || [];
      setContinuationToken(page, continuationToken);
      yield page;
    }
  }

  private async *listConfigurationSnapshotInfoPagingAll(
    resourceGroupName: string,
    name: string,
    options?: WebAppsListConfigurationSnapshotInfoOptionalParams
  ): AsyncIterableIterator<SiteConfigurationSnapshotInfo> {
    for await (const page of this.listConfigurationSnapshotInfoPagingPage(
      resourceGroupName,
      name,
      options
    )) {
      yield* page;
    }
  }

  /**
   * Description for List continuous web jobs for an app, or a deployment slot.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Site name.
   * @param options The options parameters.
   */
  public listContinuousWebJobs(
    resourceGroupName: string,
    name: string,
    options?: WebAppsListContinuousWebJobsOptionalParams
  ): PagedAsyncIterableIterator<ContinuousWebJob> {
    const iter = this.listContinuousWebJobsPagingAll(
      resourceGroupName,
      name,
      options
    );
    return {
      next() {
        return iter.next();
      },
      [Symbol.asyncIterator]() {
        return this;
      },
      byPage: (settings?: PageSettings) => {
        if (settings?.maxPageSize) {
          throw new Error("maxPageSize is not supported by this operation.");
        }
        return this.listContinuousWebJobsPagingPage(
          resourceGroupName,
          name,
          options,
          settings
        );
      }
    };
  }

  private async *listContinuousWebJobsPagingPage(
    resourceGroupName: string,
    name: string,
    options?: WebAppsListContinuousWebJobsOptionalParams,
    settings?: PageSettings
  ): AsyncIterableIterator<ContinuousWebJob[]> {
    let result: WebAppsListContinuousWebJobsResponse;
    let continuationToken = settings?.continuationToken;
    if (!continuationToken) {
      result = await this._listContinuousWebJobs(
        resourceGroupName,
        name,
        options
      );
      let page = result.value || [];
      continuationToken = result.nextLink;
      setContinuationToken(page, continuationToken);
      yield page;
    }
    while (continuationToken) {
      result = await this._listContinuousWebJobsNext(
        resourceGroupName,
        name,
        continuationToken,
        options
      );
      continuationToken = result.nextLink;
      let page = result.value || [];
      setContinuationToken(page, continuationToken);
      yield page;
    }
  }

  private async *listContinuousWebJobsPagingAll(
    resourceGroupName: string,
    name: string,
    options?: WebAppsListContinuousWebJobsOptionalParams
  ): AsyncIterableIterator<ContinuousWebJob> {
    for await (const page of this.listContinuousWebJobsPagingPage(
      resourceGroupName,
      name,
      options
    )) {
      yield* page;
    }
  }

  /**
   * List deployment statuses for an app (or deployment slot, if specified).
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the app.
   * @param options The options parameters.
   */
  public listProductionSiteDeploymentStatuses(
    resourceGroupName: string,
    name: string,
    options?: WebAppsListProductionSiteDeploymentStatusesOptionalParams
  ): PagedAsyncIterableIterator<CsmDeploymentStatus> {
    const iter = this.listProductionSiteDeploymentStatusesPagingAll(
      resourceGroupName,
      name,
      options
    );
    return {
      next() {
        return iter.next();
      },
      [Symbol.asyncIterator]() {
        return this;
      },
      byPage: (settings?: PageSettings) => {
        if (settings?.maxPageSize) {
          throw new Error("maxPageSize is not supported by this operation.");
        }
        return this.listProductionSiteDeploymentStatusesPagingPage(
          resourceGroupName,
          name,
          options,
          settings
        );
      }
    };
  }

  private async *listProductionSiteDeploymentStatusesPagingPage(
    resourceGroupName: string,
    name: string,
    options?: WebAppsListProductionSiteDeploymentStatusesOptionalParams,
    settings?: PageSettings
  ): AsyncIterableIterator<CsmDeploymentStatus[]> {
    let result: WebAppsListProductionSiteDeploymentStatusesResponse;
    let continuationToken = settings?.continuationToken;
    if (!continuationToken) {
      result = await this._listProductionSiteDeploymentStatuses(
        resourceGroupName,
        name,
        options
      );
      let page = result.value || [];
      continuationToken = result.nextLink;
      setContinuationToken(page, continuationToken);
      yield page;
    }
    while (continuationToken) {
      result = await this._listProductionSiteDeploymentStatusesNext(
        resourceGroupName,
        name,
        continuationToken,
        options
      );
      continuationToken = result.nextLink;
      let page = result.value || [];
      setContinuationToken(page, continuationToken);
      yield page;
    }
  }

  private async *listProductionSiteDeploymentStatusesPagingAll(
    resourceGroupName: string,
    name: string,
    options?: WebAppsListProductionSiteDeploymentStatusesOptionalParams
  ): AsyncIterableIterator<CsmDeploymentStatus> {
    for await (const page of this.listProductionSiteDeploymentStatusesPagingPage(
      resourceGroupName,
      name,
      options
    )) {
      yield* page;
    }
  }

  /**
   * Description for List deployments for an app, or a deployment slot.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the app.
   * @param options The options parameters.
   */
  public listDeployments(
    resourceGroupName: string,
    name: string,
    options?: WebAppsListDeploymentsOptionalParams
  ): PagedAsyncIterableIterator<Deployment> {
    const iter = this.listDeploymentsPagingAll(
      resourceGroupName,
      name,
      options
    );
    return {
      next() {
        return iter.next();
      },
      [Symbol.asyncIterator]() {
        return this;
      },
      byPage: (settings?: PageSettings) => {
        if (settings?.maxPageSize) {
          throw new Error("maxPageSize is not supported by this operation.");
        }
        return this.listDeploymentsPagingPage(
          resourceGroupName,
          name,
          options,
          settings
        );
      }
    };
  }

  private async *listDeploymentsPagingPage(
    resourceGroupName: string,
    name: string,
    options?: WebAppsListDeploymentsOptionalParams,
    settings?: PageSettings
  ): AsyncIterableIterator<Deployment[]> {
    let result: WebAppsListDeploymentsResponse;
    let continuationToken = settings?.continuationToken;
    if (!continuationToken) {
      result = await this._listDeployments(resourceGroupName, name, options);
      let page = result.value || [];
      continuationToken = result.nextLink;
      setContinuationToken(page, continuationToken);
      yield page;
    }
    while (continuationToken) {
      result = await this._listDeploymentsNext(
        resourceGroupName,
        name,
        continuationToken,
        options
      );
      continuationToken = result.nextLink;
      let page = result.value || [];
      setContinuationToken(page, continuationToken);
      yield page;
    }
  }

  private async *listDeploymentsPagingAll(
    resourceGroupName: string,
    name: string,
    options?: WebAppsListDeploymentsOptionalParams
  ): AsyncIterableIterator<Deployment> {
    for await (const page of this.listDeploymentsPagingPage(
      resourceGroupName,
      name,
      options
    )) {
      yield* page;
    }
  }

  /**
   * Description for Lists ownership identifiers for domain associated with web app.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the app.
   * @param options The options parameters.
   */
  public listDomainOwnershipIdentifiers(
    resourceGroupName: string,
    name: string,
    options?: WebAppsListDomainOwnershipIdentifiersOptionalParams
  ): PagedAsyncIterableIterator<Identifier> {
    const iter = this.listDomainOwnershipIdentifiersPagingAll(
      resourceGroupName,
      name,
      options
    );
    return {
      next() {
        return iter.next();
      },
      [Symbol.asyncIterator]() {
        return this;
      },
      byPage: (settings?: PageSettings) => {
        if (settings?.maxPageSize) {
          throw new Error("maxPageSize is not supported by this operation.");
        }
        return this.listDomainOwnershipIdentifiersPagingPage(
          resourceGroupName,
          name,
          options,
          settings
        );
      }
    };
  }

  private async *listDomainOwnershipIdentifiersPagingPage(
    resourceGroupName: string,
    name: string,
    options?: WebAppsListDomainOwnershipIdentifiersOptionalParams,
    settings?: PageSettings
  ): AsyncIterableIterator<Identifier[]> {
    let result: WebAppsListDomainOwnershipIdentifiersResponse;
    let continuationToken = settings?.continuationToken;
    if (!continuationToken) {
      result = await this._listDomainOwnershipIdentifiers(
        resourceGroupName,
        name,
        options
      );
      let page = result.value || [];
      continuationToken = result.nextLink;
      setContinuationToken(page, continuationToken);
      yield page;
    }
    while (continuationToken) {
      result = await this._listDomainOwnershipIdentifiersNext(
        resourceGroupName,
        name,
        continuationToken,
        options
      );
      continuationToken = result.nextLink;
      let page = result.value || [];
      setContinuationToken(page, continuationToken);
      yield page;
    }
  }

  private async *listDomainOwnershipIdentifiersPagingAll(
    resourceGroupName: string,
    name: string,
    options?: WebAppsListDomainOwnershipIdentifiersOptionalParams
  ): AsyncIterableIterator<Identifier> {
    for await (const page of this.listDomainOwnershipIdentifiersPagingPage(
      resourceGroupName,
      name,
      options
    )) {
      yield* page;
    }
  }

  /**
   * Description for List the functions for a web site, or a deployment slot.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Site name.
   * @param options The options parameters.
   */
  public listFunctions(
    resourceGroupName: string,
    name: string,
    options?: WebAppsListFunctionsOptionalParams
  ): PagedAsyncIterableIterator<FunctionEnvelope> {
    const iter = this.listFunctionsPagingAll(resourceGroupName, name, options);
    return {
      next() {
        return iter.next();
      },
      [Symbol.asyncIterator]() {
        return this;
      },
      byPage: (settings?: PageSettings) => {
        if (settings?.maxPageSize) {
          throw new Error("maxPageSize is not supported by this operation.");
        }
        return this.listFunctionsPagingPage(
          resourceGroupName,
          name,
          options,
          settings
        );
      }
    };
  }

  private async *listFunctionsPagingPage(
    resourceGroupName: string,
    name: string,
    options?: WebAppsListFunctionsOptionalParams,
    settings?: PageSettings
  ): AsyncIterableIterator<FunctionEnvelope[]> {
    let result: WebAppsListFunctionsResponse;
    let continuationToken = settings?.continuationToken;
    if (!continuationToken) {
      result = await this._listFunctions(resourceGroupName, name, options);
      let page = result.value || [];
      continuationToken = result.nextLink;
      setContinuationToken(page, continuationToken);
      yield page;
    }
    while (continuationToken) {
      result = await this._listFunctionsNext(
        resourceGroupName,
        name,
        continuationToken,
        options
      );
      continuationToken = result.nextLink;
      let page = result.value || [];
      setContinuationToken(page, continuationToken);
      yield page;
    }
  }

  private async *listFunctionsPagingAll(
    resourceGroupName: string,
    name: string,
    options?: WebAppsListFunctionsOptionalParams
  ): AsyncIterableIterator<FunctionEnvelope> {
    for await (const page of this.listFunctionsPagingPage(
      resourceGroupName,
      name,
      options
    )) {
      yield* page;
    }
  }

  /**
   * Description for Get hostname bindings for an app or a deployment slot.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the app.
   * @param options The options parameters.
   */
  public listHostNameBindings(
    resourceGroupName: string,
    name: string,
    options?: WebAppsListHostNameBindingsOptionalParams
  ): PagedAsyncIterableIterator<HostNameBinding> {
    const iter = this.listHostNameBindingsPagingAll(
      resourceGroupName,
      name,
      options
    );
    return {
      next() {
        return iter.next();
      },
      [Symbol.asyncIterator]() {
        return this;
      },
      byPage: (settings?: PageSettings) => {
        if (settings?.maxPageSize) {
          throw new Error("maxPageSize is not supported by this operation.");
        }
        return this.listHostNameBindingsPagingPage(
          resourceGroupName,
          name,
          options,
          settings
        );
      }
    };
  }

  private async *listHostNameBindingsPagingPage(
    resourceGroupName: string,
    name: string,
    options?: WebAppsListHostNameBindingsOptionalParams,
    settings?: PageSettings
  ): AsyncIterableIterator<HostNameBinding[]> {
    let result: WebAppsListHostNameBindingsResponse;
    let continuationToken = settings?.continuationToken;
    if (!continuationToken) {
      result = await this._listHostNameBindings(
        resourceGroupName,
        name,
        options
      );
      let page = result.value || [];
      continuationToken = result.nextLink;
      setContinuationToken(page, continuationToken);
      yield page;
    }
    while (continuationToken) {
      result = await this._listHostNameBindingsNext(
        resourceGroupName,
        name,
        continuationToken,
        options
      );
      continuationToken = result.nextLink;
      let page = result.value || [];
      setContinuationToken(page, continuationToken);
      yield page;
    }
  }

  private async *listHostNameBindingsPagingAll(
    resourceGroupName: string,
    name: string,
    options?: WebAppsListHostNameBindingsOptionalParams
  ): AsyncIterableIterator<HostNameBinding> {
    for await (const page of this.listHostNameBindingsPagingPage(
      resourceGroupName,
      name,
      options
    )) {
      yield* page;
    }
  }

  /**
   * Description for Gets all scale-out instances of an app.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the app.
   * @param options The options parameters.
   */
  public listInstanceIdentifiers(
    resourceGroupName: string,
    name: string,
    options?: WebAppsListInstanceIdentifiersOptionalParams
  ): PagedAsyncIterableIterator<WebSiteInstanceStatus> {
    const iter = this.listInstanceIdentifiersPagingAll(
      resourceGroupName,
      name,
      options
    );
    return {
      next() {
        return iter.next();
      },
      [Symbol.asyncIterator]() {
        return this;
      },
      byPage: (settings?: PageSettings) => {
        if (settings?.maxPageSize) {
          throw new Error("maxPageSize is not supported by this operation.");
        }
        return this.listInstanceIdentifiersPagingPage(
          resourceGroupName,
          name,
          options,
          settings
        );
      }
    };
  }

  private async *listInstanceIdentifiersPagingPage(
    resourceGroupName: string,
    name: string,
    options?: WebAppsListInstanceIdentifiersOptionalParams,
    settings?: PageSettings
  ): AsyncIterableIterator<WebSiteInstanceStatus[]> {
    let result: WebAppsListInstanceIdentifiersResponse;
    let continuationToken = settings?.continuationToken;
    if (!continuationToken) {
      result = await this._listInstanceIdentifiers(
        resourceGroupName,
        name,
        options
      );
      let page = result.value || [];
      continuationToken = result.nextLink;
      setContinuationToken(page, continuationToken);
      yield page;
    }
    while (continuationToken) {
      result = await this._listInstanceIdentifiersNext(
        resourceGroupName,
        name,
        continuationToken,
        options
      );
      continuationToken = result.nextLink;
      let page = result.value || [];
      setContinuationToken(page, continuationToken);
      yield page;
    }
  }

  private async *listInstanceIdentifiersPagingAll(
    resourceGroupName: string,
    name: string,
    options?: WebAppsListInstanceIdentifiersOptionalParams
  ): AsyncIterableIterator<WebSiteInstanceStatus> {
    for await (const page of this.listInstanceIdentifiersPagingPage(
      resourceGroupName,
      name,
      options
    )) {
      yield* page;
    }
  }

  /**
   * Description for Get list of processes for a web site, or a deployment slot, or for a specific
   * scaled-out instance in a web site.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Site name.
   * @param instanceId ID of a specific scaled-out instance. This is the value of the name property in
   *                   the JSON response from "GET api/sites/{siteName}/instances".
   * @param options The options parameters.
   */
  public listInstanceProcesses(
    resourceGroupName: string,
    name: string,
    instanceId: string,
    options?: WebAppsListInstanceProcessesOptionalParams
  ): PagedAsyncIterableIterator<ProcessInfo> {
    const iter = this.listInstanceProcessesPagingAll(
      resourceGroupName,
      name,
      instanceId,
      options
    );
    return {
      next() {
        return iter.next();
      },
      [Symbol.asyncIterator]() {
        return this;
      },
      byPage: (settings?: PageSettings) => {
        if (settings?.maxPageSize) {
          throw new Error("maxPageSize is not supported by this operation.");
        }
        return this.listInstanceProcessesPagingPage(
          resourceGroupName,
          name,
          instanceId,
          options,
          settings
        );
      }
    };
  }

  private async *listInstanceProcessesPagingPage(
    resourceGroupName: string,
    name: string,
    instanceId: string,
    options?: WebAppsListInstanceProcessesOptionalParams,
    settings?: PageSettings
  ): AsyncIterableIterator<ProcessInfo[]> {
    let result: WebAppsListInstanceProcessesResponse;
    let continuationToken = settings?.continuationToken;
    if (!continuationToken) {
      result = await this._listInstanceProcesses(
        resourceGroupName,
        name,
        instanceId,
        options
      );
      let page = result.value || [];
      continuationToken = result.nextLink;
      setContinuationToken(page, continuationToken);
      yield page;
    }
    while (continuationToken) {
      result = await this._listInstanceProcessesNext(
        resourceGroupName,
        name,
        instanceId,
        continuationToken,
        options
      );
      continuationToken = result.nextLink;
      let page = result.value || [];
      setContinuationToken(page, continuationToken);
      yield page;
    }
  }

  private async *listInstanceProcessesPagingAll(
    resourceGroupName: string,
    name: string,
    instanceId: string,
    options?: WebAppsListInstanceProcessesOptionalParams
  ): AsyncIterableIterator<ProcessInfo> {
    for await (const page of this.listInstanceProcessesPagingPage(
      resourceGroupName,
      name,
      instanceId,
      options
    )) {
      yield* page;
    }
  }

  /**
   * Description for List module information for a process by its ID for a specific scaled-out instance
   * in a web site.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Site name.
   * @param processId PID.
   * @param instanceId ID of a specific scaled-out instance. This is the value of the name property in
   *                   the JSON response from "GET api/sites/{siteName}/instances".
   * @param options The options parameters.
   */
  public listInstanceProcessModules(
    resourceGroupName: string,
    name: string,
    processId: string,
    instanceId: string,
    options?: WebAppsListInstanceProcessModulesOptionalParams
  ): PagedAsyncIterableIterator<ProcessModuleInfo> {
    const iter = this.listInstanceProcessModulesPagingAll(
      resourceGroupName,
      name,
      processId,
      instanceId,
      options
    );
    return {
      next() {
        return iter.next();
      },
      [Symbol.asyncIterator]() {
        return this;
      },
      byPage: (settings?: PageSettings) => {
        if (settings?.maxPageSize) {
          throw new Error("maxPageSize is not supported by this operation.");
        }
        return this.listInstanceProcessModulesPagingPage(
          resourceGroupName,
          name,
          processId,
          instanceId,
          options,
          settings
        );
      }
    };
  }

  private async *listInstanceProcessModulesPagingPage(
    resourceGroupName: string,
    name: string,
    processId: string,
    instanceId: string,
    options?: WebAppsListInstanceProcessModulesOptionalParams,
    settings?: PageSettings
  ): AsyncIterableIterator<ProcessModuleInfo[]> {
    let result: WebAppsListInstanceProcessModulesResponse;
    let continuationToken = settings?.continuationToken;
    if (!continuationToken) {
      result = await this._listInstanceProcessModules(
        resourceGroupName,
        name,
        processId,
        instanceId,
        options
      );
      let page = result.value || [];
      continuationToken = result.nextLink;
      setContinuationToken(page, continuationToken);
      yield page;
    }
    while (continuationToken) {
      result = await this._listInstanceProcessModulesNext(
        resourceGroupName,
        name,
        processId,
        instanceId,
        continuationToken,
        options
      );
      continuationToken = result.nextLink;
      let page = result.value || [];
      setContinuationToken(page, continuationToken);
      yield page;
    }
  }

  private async *listInstanceProcessModulesPagingAll(
    resourceGroupName: string,
    name: string,
    processId: string,
    instanceId: string,
    options?: WebAppsListInstanceProcessModulesOptionalParams
  ): AsyncIterableIterator<ProcessModuleInfo> {
    for await (const page of this.listInstanceProcessModulesPagingPage(
      resourceGroupName,
      name,
      processId,
      instanceId,
      options
    )) {
      yield* page;
    }
  }

  /**
   * Description for List the threads in a process by its ID for a specific scaled-out instance in a web
   * site.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Site name.
   * @param processId PID.
   * @param instanceId ID of a specific scaled-out instance. This is the value of the name property in
   *                   the JSON response from "GET api/sites/{siteName}/instances".
   * @param options The options parameters.
   */
  public listInstanceProcessThreads(
    resourceGroupName: string,
    name: string,
    processId: string,
    instanceId: string,
    options?: WebAppsListInstanceProcessThreadsOptionalParams
  ): PagedAsyncIterableIterator<ProcessThreadInfo> {
    const iter = this.listInstanceProcessThreadsPagingAll(
      resourceGroupName,
      name,
      processId,
      instanceId,
      options
    );
    return {
      next() {
        return iter.next();
      },
      [Symbol.asyncIterator]() {
        return this;
      },
      byPage: (settings?: PageSettings) => {
        if (settings?.maxPageSize) {
          throw new Error("maxPageSize is not supported by this operation.");
        }
        return this.listInstanceProcessThreadsPagingPage(
          resourceGroupName,
          name,
          processId,
          instanceId,
          options,
          settings
        );
      }
    };
  }

  private async *listInstanceProcessThreadsPagingPage(
    resourceGroupName: string,
    name: string,
    processId: string,
    instanceId: string,
    options?: WebAppsListInstanceProcessThreadsOptionalParams,
    settings?: PageSettings
  ): AsyncIterableIterator<ProcessThreadInfo[]> {
    let result: WebAppsListInstanceProcessThreadsResponse;
    let continuationToken = settings?.continuationToken;
    if (!continuationToken) {
      result = await this._listInstanceProcessThreads(
        resourceGroupName,
        name,
        processId,
        instanceId,
        options
      );
      let page = result.value || [];
      continuationToken = result.nextLink;
      setContinuationToken(page, continuationToken);
      yield page;
    }
    while (continuationToken) {
      result = await this._listInstanceProcessThreadsNext(
        resourceGroupName,
        name,
        processId,
        instanceId,
        continuationToken,
        options
      );
      continuationToken = result.nextLink;
      let page = result.value || [];
      setContinuationToken(page, continuationToken);
      yield page;
    }
  }

  private async *listInstanceProcessThreadsPagingAll(
    resourceGroupName: string,
    name: string,
    processId: string,
    instanceId: string,
    options?: WebAppsListInstanceProcessThreadsOptionalParams
  ): AsyncIterableIterator<ProcessThreadInfo> {
    for await (const page of this.listInstanceProcessThreadsPagingPage(
      resourceGroupName,
      name,
      processId,
      instanceId,
      options
    )) {
      yield* page;
    }
  }

  /**
   * Description for Gets existing backups of an app.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the app.
   * @param options The options parameters.
   */
  public listSiteBackups(
    resourceGroupName: string,
    name: string,
    options?: WebAppsListSiteBackupsOptionalParams
  ): PagedAsyncIterableIterator<BackupItem> {
    const iter = this.listSiteBackupsPagingAll(
      resourceGroupName,
      name,
      options
    );
    return {
      next() {
        return iter.next();
      },
      [Symbol.asyncIterator]() {
        return this;
      },
      byPage: (settings?: PageSettings) => {
        if (settings?.maxPageSize) {
          throw new Error("maxPageSize is not supported by this operation.");
        }
        return this.listSiteBackupsPagingPage(
          resourceGroupName,
          name,
          options,
          settings
        );
      }
    };
  }

  private async *listSiteBackupsPagingPage(
    resourceGroupName: string,
    name: string,
    options?: WebAppsListSiteBackupsOptionalParams,
    settings?: PageSettings
  ): AsyncIterableIterator<BackupItem[]> {
    let result: WebAppsListSiteBackupsResponse;
    let continuationToken = settings?.continuationToken;
    if (!continuationToken) {
      result = await this._listSiteBackups(resourceGroupName, name, options);
      let page = result.value || [];
      continuationToken = result.nextLink;
      setContinuationToken(page, continuationToken);
      yield page;
    }
    while (continuationToken) {
      result = await this._listSiteBackupsNext(
        resourceGroupName,
        name,
        continuationToken,
        options
      );
      continuationToken = result.nextLink;
      let page = result.value || [];
      setContinuationToken(page, continuationToken);
      yield page;
    }
  }

  private async *listSiteBackupsPagingAll(
    resourceGroupName: string,
    name: string,
    options?: WebAppsListSiteBackupsOptionalParams
  ): AsyncIterableIterator<BackupItem> {
    for await (const page of this.listSiteBackupsPagingPage(
      resourceGroupName,
      name,
      options
    )) {
      yield* page;
    }
  }

  /**
   * Description for Gets perfmon counters for web app.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of web app.
   * @param options The options parameters.
   */
  public listPerfMonCounters(
    resourceGroupName: string,
    name: string,
    options?: WebAppsListPerfMonCountersOptionalParams
  ): PagedAsyncIterableIterator<PerfMonResponse> {
    const iter = this.listPerfMonCountersPagingAll(
      resourceGroupName,
      name,
      options
    );
    return {
      next() {
        return iter.next();
      },
      [Symbol.asyncIterator]() {
        return this;
      },
      byPage: (settings?: PageSettings) => {
        if (settings?.maxPageSize) {
          throw new Error("maxPageSize is not supported by this operation.");
        }
        return this.listPerfMonCountersPagingPage(
          resourceGroupName,
          name,
          options,
          settings
        );
      }
    };
  }

  private async *listPerfMonCountersPagingPage(
    resourceGroupName: string,
    name: string,
    options?: WebAppsListPerfMonCountersOptionalParams,
    settings?: PageSettings
  ): AsyncIterableIterator<PerfMonResponse[]> {
    let result: WebAppsListPerfMonCountersResponse;
    let continuationToken = settings?.continuationToken;
    if (!continuationToken) {
      result = await this._listPerfMonCounters(
        resourceGroupName,
        name,
        options
      );
      let page = result.value || [];
      continuationToken = result.nextLink;
      setContinuationToken(page, continuationToken);
      yield page;
    }
    while (continuationToken) {
      result = await this._listPerfMonCountersNext(
        resourceGroupName,
        name,
        continuationToken,
        options
      );
      continuationToken = result.nextLink;
      let page = result.value || [];
      setContinuationToken(page, continuationToken);
      yield page;
    }
  }

  private async *listPerfMonCountersPagingAll(
    resourceGroupName: string,
    name: string,
    options?: WebAppsListPerfMonCountersOptionalParams
  ): AsyncIterableIterator<PerfMonResponse> {
    for await (const page of this.listPerfMonCountersPagingPage(
      resourceGroupName,
      name,
      options
    )) {
      yield* page;
    }
  }

  /**
   * Description for Gets the list of private endpoint connections associated with a site
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the site.
   * @param options The options parameters.
   */
  public listPrivateEndpointConnectionList(
    resourceGroupName: string,
    name: string,
    options?: WebAppsGetPrivateEndpointConnectionListOptionalParams
  ): PagedAsyncIterableIterator<RemotePrivateEndpointConnectionARMResource> {
    const iter = this.getPrivateEndpointConnectionListPagingAll(
      resourceGroupName,
      name,
      options
    );
    return {
      next() {
        return iter.next();
      },
      [Symbol.asyncIterator]() {
        return this;
      },
      byPage: (settings?: PageSettings) => {
        if (settings?.maxPageSize) {
          throw new Error("maxPageSize is not supported by this operation.");
        }
        return this.getPrivateEndpointConnectionListPagingPage(
          resourceGroupName,
          name,
          options,
          settings
        );
      }
    };
  }

  private async *getPrivateEndpointConnectionListPagingPage(
    resourceGroupName: string,
    name: string,
    options?: WebAppsGetPrivateEndpointConnectionListOptionalParams,
    settings?: PageSettings
  ): AsyncIterableIterator<RemotePrivateEndpointConnectionARMResource[]> {
    let result: WebAppsGetPrivateEndpointConnectionListResponse;
    let continuationToken = settings?.continuationToken;
    if (!continuationToken) {
      result = await this._getPrivateEndpointConnectionList(
        resourceGroupName,
        name,
        options
      );
      let page = result.value || [];
      continuationToken = result.nextLink;
      setContinuationToken(page, continuationToken);
      yield page;
    }
    while (continuationToken) {
      result = await this._getPrivateEndpointConnectionListNext(
        resourceGroupName,
        name,
        continuationToken,
        options
      );
      continuationToken = result.nextLink;
      let page = result.value || [];
      setContinuationToken(page, continuationToken);
      yield page;
    }
  }

  private async *getPrivateEndpointConnectionListPagingAll(
    resourceGroupName: string,
    name: string,
    options?: WebAppsGetPrivateEndpointConnectionListOptionalParams
  ): AsyncIterableIterator<RemotePrivateEndpointConnectionARMResource> {
    for await (const page of this.getPrivateEndpointConnectionListPagingPage(
      resourceGroupName,
      name,
      options
    )) {
      yield* page;
    }
  }

  /**
   * Description for Get list of processes for a web site, or a deployment slot, or for a specific
   * scaled-out instance in a web site.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Site name.
   * @param options The options parameters.
   */
  public listProcesses(
    resourceGroupName: string,
    name: string,
    options?: WebAppsListProcessesOptionalParams
  ): PagedAsyncIterableIterator<ProcessInfo> {
    const iter = this.listProcessesPagingAll(resourceGroupName, name, options);
    return {
      next() {
        return iter.next();
      },
      [Symbol.asyncIterator]() {
        return this;
      },
      byPage: (settings?: PageSettings) => {
        if (settings?.maxPageSize) {
          throw new Error("maxPageSize is not supported by this operation.");
        }
        return this.listProcessesPagingPage(
          resourceGroupName,
          name,
          options,
          settings
        );
      }
    };
  }

  private async *listProcessesPagingPage(
    resourceGroupName: string,
    name: string,
    options?: WebAppsListProcessesOptionalParams,
    settings?: PageSettings
  ): AsyncIterableIterator<ProcessInfo[]> {
    let result: WebAppsListProcessesResponse;
    let continuationToken = settings?.continuationToken;
    if (!continuationToken) {
      result = await this._listProcesses(resourceGroupName, name, options);
      let page = result.value || [];
      continuationToken = result.nextLink;
      setContinuationToken(page, continuationToken);
      yield page;
    }
    while (continuationToken) {
      result = await this._listProcessesNext(
        resourceGroupName,
        name,
        continuationToken,
        options
      );
      continuationToken = result.nextLink;
      let page = result.value || [];
      setContinuationToken(page, continuationToken);
      yield page;
    }
  }

  private async *listProcessesPagingAll(
    resourceGroupName: string,
    name: string,
    options?: WebAppsListProcessesOptionalParams
  ): AsyncIterableIterator<ProcessInfo> {
    for await (const page of this.listProcessesPagingPage(
      resourceGroupName,
      name,
      options
    )) {
      yield* page;
    }
  }

  /**
   * Description for List module information for a process by its ID for a specific scaled-out instance
   * in a web site.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Site name.
   * @param processId PID.
   * @param options The options parameters.
   */
  public listProcessModules(
    resourceGroupName: string,
    name: string,
    processId: string,
    options?: WebAppsListProcessModulesOptionalParams
  ): PagedAsyncIterableIterator<ProcessModuleInfo> {
    const iter = this.listProcessModulesPagingAll(
      resourceGroupName,
      name,
      processId,
      options
    );
    return {
      next() {
        return iter.next();
      },
      [Symbol.asyncIterator]() {
        return this;
      },
      byPage: (settings?: PageSettings) => {
        if (settings?.maxPageSize) {
          throw new Error("maxPageSize is not supported by this operation.");
        }
        return this.listProcessModulesPagingPage(
          resourceGroupName,
          name,
          processId,
          options,
          settings
        );
      }
    };
  }

  private async *listProcessModulesPagingPage(
    resourceGroupName: string,
    name: string,
    processId: string,
    options?: WebAppsListProcessModulesOptionalParams,
    settings?: PageSettings
  ): AsyncIterableIterator<ProcessModuleInfo[]> {
    let result: WebAppsListProcessModulesResponse;
    let continuationToken = settings?.continuationToken;
    if (!continuationToken) {
      result = await this._listProcessModules(
        resourceGroupName,
        name,
        processId,
        options
      );
      let page = result.value || [];
      continuationToken = result.nextLink;
      setContinuationToken(page, continuationToken);
      yield page;
    }
    while (continuationToken) {
      result = await this._listProcessModulesNext(
        resourceGroupName,
        name,
        processId,
        continuationToken,
        options
      );
      continuationToken = result.nextLink;
      let page = result.value || [];
      setContinuationToken(page, continuationToken);
      yield page;
    }
  }

  private async *listProcessModulesPagingAll(
    resourceGroupName: string,
    name: string,
    processId: string,
    options?: WebAppsListProcessModulesOptionalParams
  ): AsyncIterableIterator<ProcessModuleInfo> {
    for await (const page of this.listProcessModulesPagingPage(
      resourceGroupName,
      name,
      processId,
      options
    )) {
      yield* page;
    }
  }

  /**
   * Description for List the threads in a process by its ID for a specific scaled-out instance in a web
   * site.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Site name.
   * @param processId PID.
   * @param options The options parameters.
   */
  public listProcessThreads(
    resourceGroupName: string,
    name: string,
    processId: string,
    options?: WebAppsListProcessThreadsOptionalParams
  ): PagedAsyncIterableIterator<ProcessThreadInfo> {
    const iter = this.listProcessThreadsPagingAll(
      resourceGroupName,
      name,
      processId,
      options
    );
    return {
      next() {
        return iter.next();
      },
      [Symbol.asyncIterator]() {
        return this;
      },
      byPage: (settings?: PageSettings) => {
        if (settings?.maxPageSize) {
          throw new Error("maxPageSize is not supported by this operation.");
        }
        return this.listProcessThreadsPagingPage(
          resourceGroupName,
          name,
          processId,
          options,
          settings
        );
      }
    };
  }

  private async *listProcessThreadsPagingPage(
    resourceGroupName: string,
    name: string,
    processId: string,
    options?: WebAppsListProcessThreadsOptionalParams,
    settings?: PageSettings
  ): AsyncIterableIterator<ProcessThreadInfo[]> {
    let result: WebAppsListProcessThreadsResponse;
    let continuationToken = settings?.continuationToken;
    if (!continuationToken) {
      result = await this._listProcessThreads(
        resourceGroupName,
        name,
        processId,
        options
      );
      let page = result.value || [];
      continuationToken = result.nextLink;
      setContinuationToken(page, continuationToken);
      yield page;
    }
    while (continuationToken) {
      result = await this._listProcessThreadsNext(
        resourceGroupName,
        name,
        processId,
        continuationToken,
        options
      );
      continuationToken = result.nextLink;
      let page = result.value || [];
      setContinuationToken(page, continuationToken);
      yield page;
    }
  }

  private async *listProcessThreadsPagingAll(
    resourceGroupName: string,
    name: string,
    processId: string,
    options?: WebAppsListProcessThreadsOptionalParams
  ): AsyncIterableIterator<ProcessThreadInfo> {
    for await (const page of this.listProcessThreadsPagingPage(
      resourceGroupName,
      name,
      processId,
      options
    )) {
      yield* page;
    }
  }

  /**
   * Description for Get public certificates for an app or a deployment slot.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the app.
   * @param options The options parameters.
   */
  public listPublicCertificates(
    resourceGroupName: string,
    name: string,
    options?: WebAppsListPublicCertificatesOptionalParams
  ): PagedAsyncIterableIterator<PublicCertificate> {
    const iter = this.listPublicCertificatesPagingAll(
      resourceGroupName,
      name,
      options
    );
    return {
      next() {
        return iter.next();
      },
      [Symbol.asyncIterator]() {
        return this;
      },
      byPage: (settings?: PageSettings) => {
        if (settings?.maxPageSize) {
          throw new Error("maxPageSize is not supported by this operation.");
        }
        return this.listPublicCertificatesPagingPage(
          resourceGroupName,
          name,
          options,
          settings
        );
      }
    };
  }

  private async *listPublicCertificatesPagingPage(
    resourceGroupName: string,
    name: string,
    options?: WebAppsListPublicCertificatesOptionalParams,
    settings?: PageSettings
  ): AsyncIterableIterator<PublicCertificate[]> {
    let result: WebAppsListPublicCertificatesResponse;
    let continuationToken = settings?.continuationToken;
    if (!continuationToken) {
      result = await this._listPublicCertificates(
        resourceGroupName,
        name,
        options
      );
      let page = result.value || [];
      continuationToken = result.nextLink;
      setContinuationToken(page, continuationToken);
      yield page;
    }
    while (continuationToken) {
      result = await this._listPublicCertificatesNext(
        resourceGroupName,
        name,
        continuationToken,
        options
      );
      continuationToken = result.nextLink;
      let page = result.value || [];
      setContinuationToken(page, continuationToken);
      yield page;
    }
  }

  private async *listPublicCertificatesPagingAll(
    resourceGroupName: string,
    name: string,
    options?: WebAppsListPublicCertificatesOptionalParams
  ): AsyncIterableIterator<PublicCertificate> {
    for await (const page of this.listPublicCertificatesPagingPage(
      resourceGroupName,
      name,
      options
    )) {
      yield* page;
    }
  }

  /**
   * Description for Get list of siteextensions for a web site, or a deployment slot.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Site name.
   * @param options The options parameters.
   */
  public listSiteExtensions(
    resourceGroupName: string,
    name: string,
    options?: WebAppsListSiteExtensionsOptionalParams
  ): PagedAsyncIterableIterator<SiteExtensionInfo> {
    const iter = this.listSiteExtensionsPagingAll(
      resourceGroupName,
      name,
      options
    );
    return {
      next() {
        return iter.next();
      },
      [Symbol.asyncIterator]() {
        return this;
      },
      byPage: (settings?: PageSettings) => {
        if (settings?.maxPageSize) {
          throw new Error("maxPageSize is not supported by this operation.");
        }
        return this.listSiteExtensionsPagingPage(
          resourceGroupName,
          name,
          options,
          settings
        );
      }
    };
  }

  private async *listSiteExtensionsPagingPage(
    resourceGroupName: string,
    name: string,
    options?: WebAppsListSiteExtensionsOptionalParams,
    settings?: PageSettings
  ): AsyncIterableIterator<SiteExtensionInfo[]> {
    let result: WebAppsListSiteExtensionsResponse;
    let continuationToken = settings?.continuationToken;
    if (!continuationToken) {
      result = await this._listSiteExtensions(resourceGroupName, name, options);
      let page = result.value || [];
      continuationToken = result.nextLink;
      setContinuationToken(page, continuationToken);
      yield page;
    }
    while (continuationToken) {
      result = await this._listSiteExtensionsNext(
        resourceGroupName,
        name,
        continuationToken,
        options
      );
      continuationToken = result.nextLink;
      let page = result.value || [];
      setContinuationToken(page, continuationToken);
      yield page;
    }
  }

  private async *listSiteExtensionsPagingAll(
    resourceGroupName: string,
    name: string,
    options?: WebAppsListSiteExtensionsOptionalParams
  ): AsyncIterableIterator<SiteExtensionInfo> {
    for await (const page of this.listSiteExtensionsPagingPage(
      resourceGroupName,
      name,
      options
    )) {
      yield* page;
    }
  }

  /**
   * Description for Gets an app's deployment slots.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the app.
   * @param options The options parameters.
   */
  public listSlots(
    resourceGroupName: string,
    name: string,
    options?: WebAppsListSlotsOptionalParams
  ): PagedAsyncIterableIterator<Site> {
    const iter = this.listSlotsPagingAll(resourceGroupName, name, options);
    return {
      next() {
        return iter.next();
      },
      [Symbol.asyncIterator]() {
        return this;
      },
      byPage: (settings?: PageSettings) => {
        if (settings?.maxPageSize) {
          throw new Error("maxPageSize is not supported by this operation.");
        }
        return this.listSlotsPagingPage(
          resourceGroupName,
          name,
          options,
          settings
        );
      }
    };
  }

  private async *listSlotsPagingPage(
    resourceGroupName: string,
    name: string,
    options?: WebAppsListSlotsOptionalParams,
    settings?: PageSettings
  ): AsyncIterableIterator<Site[]> {
    let result: WebAppsListSlotsResponse;
    let continuationToken = settings?.continuationToken;
    if (!continuationToken) {
      result = await this._listSlots(resourceGroupName, name, options);
      let page = result.value || [];
      continuationToken = result.nextLink;
      setContinuationToken(page, continuationToken);
      yield page;
    }
    while (continuationToken) {
      result = await this._listSlotsNext(
        resourceGroupName,
        name,
        continuationToken,
        options
      );
      continuationToken = result.nextLink;
      let page = result.value || [];
      setContinuationToken(page, continuationToken);
      yield page;
    }
  }

  private async *listSlotsPagingAll(
    resourceGroupName: string,
    name: string,
    options?: WebAppsListSlotsOptionalParams
  ): AsyncIterableIterator<Site> {
    for await (const page of this.listSlotsPagingPage(
      resourceGroupName,
      name,
      options
    )) {
      yield* page;
    }
  }

  /**
   * Description for Gets existing backups of an app.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the app.
   * @param slot Name of the deployment slot. If a slot is not specified, the API will get backups of the
   *             production slot.
   * @param options The options parameters.
   */
  public listBackupsSlot(
    resourceGroupName: string,
    name: string,
    slot: string,
    options?: WebAppsListBackupsSlotOptionalParams
  ): PagedAsyncIterableIterator<BackupItem> {
    const iter = this.listBackupsSlotPagingAll(
      resourceGroupName,
      name,
      slot,
      options
    );
    return {
      next() {
        return iter.next();
      },
      [Symbol.asyncIterator]() {
        return this;
      },
      byPage: (settings?: PageSettings) => {
        if (settings?.maxPageSize) {
          throw new Error("maxPageSize is not supported by this operation.");
        }
        return this.listBackupsSlotPagingPage(
          resourceGroupName,
          name,
          slot,
          options,
          settings
        );
      }
    };
  }

  private async *listBackupsSlotPagingPage(
    resourceGroupName: string,
    name: string,
    slot: string,
    options?: WebAppsListBackupsSlotOptionalParams,
    settings?: PageSettings
  ): AsyncIterableIterator<BackupItem[]> {
    let result: WebAppsListBackupsSlotResponse;
    let continuationToken = settings?.continuationToken;
    if (!continuationToken) {
      result = await this._listBackupsSlot(
        resourceGroupName,
        name,
        slot,
        options
      );
      let page = result.value || [];
      continuationToken = result.nextLink;
      setContinuationToken(page, continuationToken);
      yield page;
    }
    while (continuationToken) {
      result = await this._listBackupsSlotNext(
        resourceGroupName,
        name,
        slot,
        continuationToken,
        options
      );
      continuationToken = result.nextLink;
      let page = result.value || [];
      setContinuationToken(page, continuationToken);
      yield page;
    }
  }

  private async *listBackupsSlotPagingAll(
    resourceGroupName: string,
    name: string,
    slot: string,
    options?: WebAppsListBackupsSlotOptionalParams
  ): AsyncIterableIterator<BackupItem> {
    for await (const page of this.listBackupsSlotPagingPage(
      resourceGroupName,
      name,
      slot,
      options
    )) {
      yield* page;
    }
  }

  /**
   * Description for Returns whether Scm basic auth is allowed and whether Ftp is allowed for a given
   * site.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the app.
   * @param slot
   * @param options The options parameters.
   */
  public listBasicPublishingCredentialsPoliciesSlot(
    resourceGroupName: string,
    name: string,
    slot: string,
    options?: WebAppsListBasicPublishingCredentialsPoliciesSlotOptionalParams
  ): PagedAsyncIterableIterator<CsmPublishingCredentialsPoliciesEntity> {
    const iter = this.listBasicPublishingCredentialsPoliciesSlotPagingAll(
      resourceGroupName,
      name,
      slot,
      options
    );
    return {
      next() {
        return iter.next();
      },
      [Symbol.asyncIterator]() {
        return this;
      },
      byPage: (settings?: PageSettings) => {
        if (settings?.maxPageSize) {
          throw new Error("maxPageSize is not supported by this operation.");
        }
        return this.listBasicPublishingCredentialsPoliciesSlotPagingPage(
          resourceGroupName,
          name,
          slot,
          options,
          settings
        );
      }
    };
  }

  private async *listBasicPublishingCredentialsPoliciesSlotPagingPage(
    resourceGroupName: string,
    name: string,
    slot: string,
    options?: WebAppsListBasicPublishingCredentialsPoliciesSlotOptionalParams,
    settings?: PageSettings
  ): AsyncIterableIterator<CsmPublishingCredentialsPoliciesEntity[]> {
    let result: WebAppsListBasicPublishingCredentialsPoliciesSlotResponse;
    let continuationToken = settings?.continuationToken;
    if (!continuationToken) {
      result = await this._listBasicPublishingCredentialsPoliciesSlot(
        resourceGroupName,
        name,
        slot,
        options
      );
      let page = result.value || [];
      continuationToken = result.nextLink;
      setContinuationToken(page, continuationToken);
      yield page;
    }
    while (continuationToken) {
      result = await this._listBasicPublishingCredentialsPoliciesSlotNext(
        resourceGroupName,
        name,
        slot,
        continuationToken,
        options
      );
      continuationToken = result.nextLink;
      let page = result.value || [];
      setContinuationToken(page, continuationToken);
      yield page;
    }
  }

  private async *listBasicPublishingCredentialsPoliciesSlotPagingAll(
    resourceGroupName: string,
    name: string,
    slot: string,
    options?: WebAppsListBasicPublishingCredentialsPoliciesSlotOptionalParams
  ): AsyncIterableIterator<CsmPublishingCredentialsPoliciesEntity> {
    for await (const page of this.listBasicPublishingCredentialsPoliciesSlotPagingPage(
      resourceGroupName,
      name,
      slot,
      options
    )) {
      yield* page;
    }
  }

  /**
   * Description for List the configurations of an app
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the app.
   * @param slot Name of the deployment slot. If a slot is not specified, the API will return
   *             configuration for the production slot.
   * @param options The options parameters.
   */
  public listConfigurationsSlot(
    resourceGroupName: string,
    name: string,
    slot: string,
    options?: WebAppsListConfigurationsSlotOptionalParams
  ): PagedAsyncIterableIterator<SiteConfigResource> {
    const iter = this.listConfigurationsSlotPagingAll(
      resourceGroupName,
      name,
      slot,
      options
    );
    return {
      next() {
        return iter.next();
      },
      [Symbol.asyncIterator]() {
        return this;
      },
      byPage: (settings?: PageSettings) => {
        if (settings?.maxPageSize) {
          throw new Error("maxPageSize is not supported by this operation.");
        }
        return this.listConfigurationsSlotPagingPage(
          resourceGroupName,
          name,
          slot,
          options,
          settings
        );
      }
    };
  }

  private async *listConfigurationsSlotPagingPage(
    resourceGroupName: string,
    name: string,
    slot: string,
    options?: WebAppsListConfigurationsSlotOptionalParams,
    settings?: PageSettings
  ): AsyncIterableIterator<SiteConfigResource[]> {
    let result: WebAppsListConfigurationsSlotResponse;
    let continuationToken = settings?.continuationToken;
    if (!continuationToken) {
      result = await this._listConfigurationsSlot(
        resourceGroupName,
        name,
        slot,
        options
      );
      let page = result.value || [];
      continuationToken = result.nextLink;
      setContinuationToken(page, continuationToken);
      yield page;
    }
    while (continuationToken) {
      result = await this._listConfigurationsSlotNext(
        resourceGroupName,
        name,
        slot,
        continuationToken,
        options
      );
      continuationToken = result.nextLink;
      let page = result.value || [];
      setContinuationToken(page, continuationToken);
      yield page;
    }
  }

  private async *listConfigurationsSlotPagingAll(
    resourceGroupName: string,
    name: string,
    slot: string,
    options?: WebAppsListConfigurationsSlotOptionalParams
  ): AsyncIterableIterator<SiteConfigResource> {
    for await (const page of this.listConfigurationsSlotPagingPage(
      resourceGroupName,
      name,
      slot,
      options
    )) {
      yield* page;
    }
  }

  /**
   * Description for Gets the config reference app settings and status of an app
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the app.
   * @param slot
   * @param options The options parameters.
   */
  public listAppSettingsKeyVaultReferencesSlot(
    resourceGroupName: string,
    name: string,
    slot: string,
    options?: WebAppsGetAppSettingsKeyVaultReferencesSlotOptionalParams
  ): PagedAsyncIterableIterator<ApiKVReference> {
    const iter = this.getAppSettingsKeyVaultReferencesSlotPagingAll(
      resourceGroupName,
      name,
      slot,
      options
    );
    return {
      next() {
        return iter.next();
      },
      [Symbol.asyncIterator]() {
        return this;
      },
      byPage: (settings?: PageSettings) => {
        if (settings?.maxPageSize) {
          throw new Error("maxPageSize is not supported by this operation.");
        }
        return this.getAppSettingsKeyVaultReferencesSlotPagingPage(
          resourceGroupName,
          name,
          slot,
          options,
          settings
        );
      }
    };
  }

  private async *getAppSettingsKeyVaultReferencesSlotPagingPage(
    resourceGroupName: string,
    name: string,
    slot: string,
    options?: WebAppsGetAppSettingsKeyVaultReferencesSlotOptionalParams,
    settings?: PageSettings
  ): AsyncIterableIterator<ApiKVReference[]> {
    let result: WebAppsGetAppSettingsKeyVaultReferencesSlotResponse;
    let continuationToken = settings?.continuationToken;
    if (!continuationToken) {
      result = await this._getAppSettingsKeyVaultReferencesSlot(
        resourceGroupName,
        name,
        slot,
        options
      );
      let page = result.value || [];
      continuationToken = result.nextLink;
      setContinuationToken(page, continuationToken);
      yield page;
    }
    while (continuationToken) {
      result = await this._getAppSettingsKeyVaultReferencesSlotNext(
        resourceGroupName,
        name,
        slot,
        continuationToken,
        options
      );
      continuationToken = result.nextLink;
      let page = result.value || [];
      setContinuationToken(page, continuationToken);
      yield page;
    }
  }

  private async *getAppSettingsKeyVaultReferencesSlotPagingAll(
    resourceGroupName: string,
    name: string,
    slot: string,
    options?: WebAppsGetAppSettingsKeyVaultReferencesSlotOptionalParams
  ): AsyncIterableIterator<ApiKVReference> {
    for await (const page of this.getAppSettingsKeyVaultReferencesSlotPagingPage(
      resourceGroupName,
      name,
      slot,
      options
    )) {
      yield* page;
    }
  }

  /**
   * Description for Gets the config reference app settings and status of an app
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the app.
   * @param slot
   * @param options The options parameters.
   */
  public listSiteConnectionStringKeyVaultReferencesSlot(
    resourceGroupName: string,
    name: string,
    slot: string,
    options?: WebAppsGetSiteConnectionStringKeyVaultReferencesSlotOptionalParams
  ): PagedAsyncIterableIterator<ApiKVReference> {
    const iter = this.getSiteConnectionStringKeyVaultReferencesSlotPagingAll(
      resourceGroupName,
      name,
      slot,
      options
    );
    return {
      next() {
        return iter.next();
      },
      [Symbol.asyncIterator]() {
        return this;
      },
      byPage: (settings?: PageSettings) => {
        if (settings?.maxPageSize) {
          throw new Error("maxPageSize is not supported by this operation.");
        }
        return this.getSiteConnectionStringKeyVaultReferencesSlotPagingPage(
          resourceGroupName,
          name,
          slot,
          options,
          settings
        );
      }
    };
  }

  private async *getSiteConnectionStringKeyVaultReferencesSlotPagingPage(
    resourceGroupName: string,
    name: string,
    slot: string,
    options?: WebAppsGetSiteConnectionStringKeyVaultReferencesSlotOptionalParams,
    settings?: PageSettings
  ): AsyncIterableIterator<ApiKVReference[]> {
    let result: WebAppsGetSiteConnectionStringKeyVaultReferencesSlotResponse;
    let continuationToken = settings?.continuationToken;
    if (!continuationToken) {
      result = await this._getSiteConnectionStringKeyVaultReferencesSlot(
        resourceGroupName,
        name,
        slot,
        options
      );
      let page = result.value || [];
      continuationToken = result.nextLink;
      setContinuationToken(page, continuationToken);
      yield page;
    }
    while (continuationToken) {
      result = await this._getSiteConnectionStringKeyVaultReferencesSlotNext(
        resourceGroupName,
        name,
        slot,
        continuationToken,
        options
      );
      continuationToken = result.nextLink;
      let page = result.value || [];
      setContinuationToken(page, continuationToken);
      yield page;
    }
  }

  private async *getSiteConnectionStringKeyVaultReferencesSlotPagingAll(
    resourceGroupName: string,
    name: string,
    slot: string,
    options?: WebAppsGetSiteConnectionStringKeyVaultReferencesSlotOptionalParams
  ): AsyncIterableIterator<ApiKVReference> {
    for await (const page of this.getSiteConnectionStringKeyVaultReferencesSlotPagingPage(
      resourceGroupName,
      name,
      slot,
      options
    )) {
      yield* page;
    }
  }

  /**
   * Description for Gets a list of web app configuration snapshots identifiers. Each element of the list
   * contains a timestamp and the ID of the snapshot.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the app.
   * @param slot Name of the deployment slot. If a slot is not specified, the API will return
   *             configuration for the production slot.
   * @param options The options parameters.
   */
  public listConfigurationSnapshotInfoSlot(
    resourceGroupName: string,
    name: string,
    slot: string,
    options?: WebAppsListConfigurationSnapshotInfoSlotOptionalParams
  ): PagedAsyncIterableIterator<SiteConfigurationSnapshotInfo> {
    const iter = this.listConfigurationSnapshotInfoSlotPagingAll(
      resourceGroupName,
      name,
      slot,
      options
    );
    return {
      next() {
        return iter.next();
      },
      [Symbol.asyncIterator]() {
        return this;
      },
      byPage: (settings?: PageSettings) => {
        if (settings?.maxPageSize) {
          throw new Error("maxPageSize is not supported by this operation.");
        }
        return this.listConfigurationSnapshotInfoSlotPagingPage(
          resourceGroupName,
          name,
          slot,
          options,
          settings
        );
      }
    };
  }

  private async *listConfigurationSnapshotInfoSlotPagingPage(
    resourceGroupName: string,
    name: string,
    slot: string,
    options?: WebAppsListConfigurationSnapshotInfoSlotOptionalParams,
    settings?: PageSettings
  ): AsyncIterableIterator<SiteConfigurationSnapshotInfo[]> {
    let result: WebAppsListConfigurationSnapshotInfoSlotResponse;
    let continuationToken = settings?.continuationToken;
    if (!continuationToken) {
      result = await this._listConfigurationSnapshotInfoSlot(
        resourceGroupName,
        name,
        slot,
        options
      );
      let page = result.value || [];
      continuationToken = result.nextLink;
      setContinuationToken(page, continuationToken);
      yield page;
    }
    while (continuationToken) {
      result = await this._listConfigurationSnapshotInfoSlotNext(
        resourceGroupName,
        name,
        slot,
        continuationToken,
        options
      );
      continuationToken = result.nextLink;
      let page = result.value || [];
      setContinuationToken(page, continuationToken);
      yield page;
    }
  }

  private async *listConfigurationSnapshotInfoSlotPagingAll(
    resourceGroupName: string,
    name: string,
    slot: string,
    options?: WebAppsListConfigurationSnapshotInfoSlotOptionalParams
  ): AsyncIterableIterator<SiteConfigurationSnapshotInfo> {
    for await (const page of this.listConfigurationSnapshotInfoSlotPagingPage(
      resourceGroupName,
      name,
      slot,
      options
    )) {
      yield* page;
    }
  }

  /**
   * Description for List continuous web jobs for an app, or a deployment slot.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Site name.
   * @param slot Name of the deployment slot. If a slot is not specified, the API deletes a deployment
   *             for the production slot.
   * @param options The options parameters.
   */
  public listContinuousWebJobsSlot(
    resourceGroupName: string,
    name: string,
    slot: string,
    options?: WebAppsListContinuousWebJobsSlotOptionalParams
  ): PagedAsyncIterableIterator<ContinuousWebJob> {
    const iter = this.listContinuousWebJobsSlotPagingAll(
      resourceGroupName,
      name,
      slot,
      options
    );
    return {
      next() {
        return iter.next();
      },
      [Symbol.asyncIterator]() {
        return this;
      },
      byPage: (settings?: PageSettings) => {
        if (settings?.maxPageSize) {
          throw new Error("maxPageSize is not supported by this operation.");
        }
        return this.listContinuousWebJobsSlotPagingPage(
          resourceGroupName,
          name,
          slot,
          options,
          settings
        );
      }
    };
  }

  private async *listContinuousWebJobsSlotPagingPage(
    resourceGroupName: string,
    name: string,
    slot: string,
    options?: WebAppsListContinuousWebJobsSlotOptionalParams,
    settings?: PageSettings
  ): AsyncIterableIterator<ContinuousWebJob[]> {
    let result: WebAppsListContinuousWebJobsSlotResponse;
    let continuationToken = settings?.continuationToken;
    if (!continuationToken) {
      result = await this._listContinuousWebJobsSlot(
        resourceGroupName,
        name,
        slot,
        options
      );
      let page = result.value || [];
      continuationToken = result.nextLink;
      setContinuationToken(page, continuationToken);
      yield page;
    }
    while (continuationToken) {
      result = await this._listContinuousWebJobsSlotNext(
        resourceGroupName,
        name,
        slot,
        continuationToken,
        options
      );
      continuationToken = result.nextLink;
      let page = result.value || [];
      setContinuationToken(page, continuationToken);
      yield page;
    }
  }

  private async *listContinuousWebJobsSlotPagingAll(
    resourceGroupName: string,
    name: string,
    slot: string,
    options?: WebAppsListContinuousWebJobsSlotOptionalParams
  ): AsyncIterableIterator<ContinuousWebJob> {
    for await (const page of this.listContinuousWebJobsSlotPagingPage(
      resourceGroupName,
      name,
      slot,
      options
    )) {
      yield* page;
    }
  }

  /**
   * List deployment statuses for an app (or deployment slot, if specified).
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the app.
   * @param slot Name of the deployment slot. If a slot is not specified, the API will get the deployment
   *             status for the production slot.
   * @param options The options parameters.
   */
  public listSlotSiteDeploymentStatusesSlot(
    resourceGroupName: string,
    name: string,
    slot: string,
    options?: WebAppsListSlotSiteDeploymentStatusesSlotOptionalParams
  ): PagedAsyncIterableIterator<CsmDeploymentStatus> {
    const iter = this.listSlotSiteDeploymentStatusesSlotPagingAll(
      resourceGroupName,
      name,
      slot,
      options
    );
    return {
      next() {
        return iter.next();
      },
      [Symbol.asyncIterator]() {
        return this;
      },
      byPage: (settings?: PageSettings) => {
        if (settings?.maxPageSize) {
          throw new Error("maxPageSize is not supported by this operation.");
        }
        return this.listSlotSiteDeploymentStatusesSlotPagingPage(
          resourceGroupName,
          name,
          slot,
          options,
          settings
        );
      }
    };
  }

  private async *listSlotSiteDeploymentStatusesSlotPagingPage(
    resourceGroupName: string,
    name: string,
    slot: string,
    options?: WebAppsListSlotSiteDeploymentStatusesSlotOptionalParams,
    settings?: PageSettings
  ): AsyncIterableIterator<CsmDeploymentStatus[]> {
    let result: WebAppsListSlotSiteDeploymentStatusesSlotResponse;
    let continuationToken = settings?.continuationToken;
    if (!continuationToken) {
      result = await this._listSlotSiteDeploymentStatusesSlot(
        resourceGroupName,
        name,
        slot,
        options
      );
      let page = result.value || [];
      continuationToken = result.nextLink;
      setContinuationToken(page, continuationToken);
      yield page;
    }
    while (continuationToken) {
      result = await this._listSlotSiteDeploymentStatusesSlotNext(
        resourceGroupName,
        name,
        slot,
        continuationToken,
        options
      );
      continuationToken = result.nextLink;
      let page = result.value || [];
      setContinuationToken(page, continuationToken);
      yield page;
    }
  }

  private async *listSlotSiteDeploymentStatusesSlotPagingAll(
    resourceGroupName: string,
    name: string,
    slot: string,
    options?: WebAppsListSlotSiteDeploymentStatusesSlotOptionalParams
  ): AsyncIterableIterator<CsmDeploymentStatus> {
    for await (const page of this.listSlotSiteDeploymentStatusesSlotPagingPage(
      resourceGroupName,
      name,
      slot,
      options
    )) {
      yield* page;
    }
  }

  /**
   * Description for List deployments for an app, or a deployment slot.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the app.
   * @param slot Name of the deployment slot. If a slot is not specified, the API returns deployments for
   *             the production slot.
   * @param options The options parameters.
   */
  public listDeploymentsSlot(
    resourceGroupName: string,
    name: string,
    slot: string,
    options?: WebAppsListDeploymentsSlotOptionalParams
  ): PagedAsyncIterableIterator<Deployment> {
    const iter = this.listDeploymentsSlotPagingAll(
      resourceGroupName,
      name,
      slot,
      options
    );
    return {
      next() {
        return iter.next();
      },
      [Symbol.asyncIterator]() {
        return this;
      },
      byPage: (settings?: PageSettings) => {
        if (settings?.maxPageSize) {
          throw new Error("maxPageSize is not supported by this operation.");
        }
        return this.listDeploymentsSlotPagingPage(
          resourceGroupName,
          name,
          slot,
          options,
          settings
        );
      }
    };
  }

  private async *listDeploymentsSlotPagingPage(
    resourceGroupName: string,
    name: string,
    slot: string,
    options?: WebAppsListDeploymentsSlotOptionalParams,
    settings?: PageSettings
  ): AsyncIterableIterator<Deployment[]> {
    let result: WebAppsListDeploymentsSlotResponse;
    let continuationToken = settings?.continuationToken;
    if (!continuationToken) {
      result = await this._listDeploymentsSlot(
        resourceGroupName,
        name,
        slot,
        options
      );
      let page = result.value || [];
      continuationToken = result.nextLink;
      setContinuationToken(page, continuationToken);
      yield page;
    }
    while (continuationToken) {
      result = await this._listDeploymentsSlotNext(
        resourceGroupName,
        name,
        slot,
        continuationToken,
        options
      );
      continuationToken = result.nextLink;
      let page = result.value || [];
      setContinuationToken(page, continuationToken);
      yield page;
    }
  }

  private async *listDeploymentsSlotPagingAll(
    resourceGroupName: string,
    name: string,
    slot: string,
    options?: WebAppsListDeploymentsSlotOptionalParams
  ): AsyncIterableIterator<Deployment> {
    for await (const page of this.listDeploymentsSlotPagingPage(
      resourceGroupName,
      name,
      slot,
      options
    )) {
      yield* page;
    }
  }

  /**
   * Description for Lists ownership identifiers for domain associated with web app.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the app.
   * @param slot Name of the deployment slot. If a slot is not specified, the API will delete the binding
   *             for the production slot.
   * @param options The options parameters.
   */
  public listDomainOwnershipIdentifiersSlot(
    resourceGroupName: string,
    name: string,
    slot: string,
    options?: WebAppsListDomainOwnershipIdentifiersSlotOptionalParams
  ): PagedAsyncIterableIterator<Identifier> {
    const iter = this.listDomainOwnershipIdentifiersSlotPagingAll(
      resourceGroupName,
      name,
      slot,
      options
    );
    return {
      next() {
        return iter.next();
      },
      [Symbol.asyncIterator]() {
        return this;
      },
      byPage: (settings?: PageSettings) => {
        if (settings?.maxPageSize) {
          throw new Error("maxPageSize is not supported by this operation.");
        }
        return this.listDomainOwnershipIdentifiersSlotPagingPage(
          resourceGroupName,
          name,
          slot,
          options,
          settings
        );
      }
    };
  }

  private async *listDomainOwnershipIdentifiersSlotPagingPage(
    resourceGroupName: string,
    name: string,
    slot: string,
    options?: WebAppsListDomainOwnershipIdentifiersSlotOptionalParams,
    settings?: PageSettings
  ): AsyncIterableIterator<Identifier[]> {
    let result: WebAppsListDomainOwnershipIdentifiersSlotResponse;
    let continuationToken = settings?.continuationToken;
    if (!continuationToken) {
      result = await this._listDomainOwnershipIdentifiersSlot(
        resourceGroupName,
        name,
        slot,
        options
      );
      let page = result.value || [];
      continuationToken = result.nextLink;
      setContinuationToken(page, continuationToken);
      yield page;
    }
    while (continuationToken) {
      result = await this._listDomainOwnershipIdentifiersSlotNext(
        resourceGroupName,
        name,
        slot,
        continuationToken,
        options
      );
      continuationToken = result.nextLink;
      let page = result.value || [];
      setContinuationToken(page, continuationToken);
      yield page;
    }
  }

  private async *listDomainOwnershipIdentifiersSlotPagingAll(
    resourceGroupName: string,
    name: string,
    slot: string,
    options?: WebAppsListDomainOwnershipIdentifiersSlotOptionalParams
  ): AsyncIterableIterator<Identifier> {
    for await (const page of this.listDomainOwnershipIdentifiersSlotPagingPage(
      resourceGroupName,
      name,
      slot,
      options
    )) {
      yield* page;
    }
  }

  /**
   * Description for List the functions for a web site, or a deployment slot.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Site name.
   * @param slot Name of the deployment slot.
   * @param options The options parameters.
   */
  public listInstanceFunctionsSlot(
    resourceGroupName: string,
    name: string,
    slot: string,
    options?: WebAppsListInstanceFunctionsSlotOptionalParams
  ): PagedAsyncIterableIterator<FunctionEnvelope> {
    const iter = this.listInstanceFunctionsSlotPagingAll(
      resourceGroupName,
      name,
      slot,
      options
    );
    return {
      next() {
        return iter.next();
      },
      [Symbol.asyncIterator]() {
        return this;
      },
      byPage: (settings?: PageSettings) => {
        if (settings?.maxPageSize) {
          throw new Error("maxPageSize is not supported by this operation.");
        }
        return this.listInstanceFunctionsSlotPagingPage(
          resourceGroupName,
          name,
          slot,
          options,
          settings
        );
      }
    };
  }

  private async *listInstanceFunctionsSlotPagingPage(
    resourceGroupName: string,
    name: string,
    slot: string,
    options?: WebAppsListInstanceFunctionsSlotOptionalParams,
    settings?: PageSettings
  ): AsyncIterableIterator<FunctionEnvelope[]> {
    let result: WebAppsListInstanceFunctionsSlotResponse;
    let continuationToken = settings?.continuationToken;
    if (!continuationToken) {
      result = await this._listInstanceFunctionsSlot(
        resourceGroupName,
        name,
        slot,
        options
      );
      let page = result.value || [];
      continuationToken = result.nextLink;
      setContinuationToken(page, continuationToken);
      yield page;
    }
    while (continuationToken) {
      result = await this._listInstanceFunctionsSlotNext(
        resourceGroupName,
        name,
        slot,
        continuationToken,
        options
      );
      continuationToken = result.nextLink;
      let page = result.value || [];
      setContinuationToken(page, continuationToken);
      yield page;
    }
  }

  private async *listInstanceFunctionsSlotPagingAll(
    resourceGroupName: string,
    name: string,
    slot: string,
    options?: WebAppsListInstanceFunctionsSlotOptionalParams
  ): AsyncIterableIterator<FunctionEnvelope> {
    for await (const page of this.listInstanceFunctionsSlotPagingPage(
      resourceGroupName,
      name,
      slot,
      options
    )) {
      yield* page;
    }
  }

  /**
   * Description for Get hostname bindings for an app or a deployment slot.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the app.
   * @param slot Name of the deployment slot. If a slot is not specified, the API gets hostname bindings
   *             for the production slot.
   * @param options The options parameters.
   */
  public listHostNameBindingsSlot(
    resourceGroupName: string,
    name: string,
    slot: string,
    options?: WebAppsListHostNameBindingsSlotOptionalParams
  ): PagedAsyncIterableIterator<HostNameBinding> {
    const iter = this.listHostNameBindingsSlotPagingAll(
      resourceGroupName,
      name,
      slot,
      options
    );
    return {
      next() {
        return iter.next();
      },
      [Symbol.asyncIterator]() {
        return this;
      },
      byPage: (settings?: PageSettings) => {
        if (settings?.maxPageSize) {
          throw new Error("maxPageSize is not supported by this operation.");
        }
        return this.listHostNameBindingsSlotPagingPage(
          resourceGroupName,
          name,
          slot,
          options,
          settings
        );
      }
    };
  }

  private async *listHostNameBindingsSlotPagingPage(
    resourceGroupName: string,
    name: string,
    slot: string,
    options?: WebAppsListHostNameBindingsSlotOptionalParams,
    settings?: PageSettings
  ): AsyncIterableIterator<HostNameBinding[]> {
    let result: WebAppsListHostNameBindingsSlotResponse;
    let continuationToken = settings?.continuationToken;
    if (!continuationToken) {
      result = await this._listHostNameBindingsSlot(
        resourceGroupName,
        name,
        slot,
        options
      );
      let page = result.value || [];
      continuationToken = result.nextLink;
      setContinuationToken(page, continuationToken);
      yield page;
    }
    while (continuationToken) {
      result = await this._listHostNameBindingsSlotNext(
        resourceGroupName,
        name,
        slot,
        continuationToken,
        options
      );
      continuationToken = result.nextLink;
      let page = result.value || [];
      setContinuationToken(page, continuationToken);
      yield page;
    }
  }

  private async *listHostNameBindingsSlotPagingAll(
    resourceGroupName: string,
    name: string,
    slot: string,
    options?: WebAppsListHostNameBindingsSlotOptionalParams
  ): AsyncIterableIterator<HostNameBinding> {
    for await (const page of this.listHostNameBindingsSlotPagingPage(
      resourceGroupName,
      name,
      slot,
      options
    )) {
      yield* page;
    }
  }

  /**
   * Description for Gets all scale-out instances of an app.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the app.
   * @param slot Name of the deployment slot. If a slot is not specified, the API gets the production
   *             slot instances.
   * @param options The options parameters.
   */
  public listInstanceIdentifiersSlot(
    resourceGroupName: string,
    name: string,
    slot: string,
    options?: WebAppsListInstanceIdentifiersSlotOptionalParams
  ): PagedAsyncIterableIterator<WebSiteInstanceStatus> {
    const iter = this.listInstanceIdentifiersSlotPagingAll(
      resourceGroupName,
      name,
      slot,
      options
    );
    return {
      next() {
        return iter.next();
      },
      [Symbol.asyncIterator]() {
        return this;
      },
      byPage: (settings?: PageSettings) => {
        if (settings?.maxPageSize) {
          throw new Error("maxPageSize is not supported by this operation.");
        }
        return this.listInstanceIdentifiersSlotPagingPage(
          resourceGroupName,
          name,
          slot,
          options,
          settings
        );
      }
    };
  }

  private async *listInstanceIdentifiersSlotPagingPage(
    resourceGroupName: string,
    name: string,
    slot: string,
    options?: WebAppsListInstanceIdentifiersSlotOptionalParams,
    settings?: PageSettings
  ): AsyncIterableIterator<WebSiteInstanceStatus[]> {
    let result: WebAppsListInstanceIdentifiersSlotResponse;
    let continuationToken = settings?.continuationToken;
    if (!continuationToken) {
      result = await this._listInstanceIdentifiersSlot(
        resourceGroupName,
        name,
        slot,
        options
      );
      let page = result.value || [];
      continuationToken = result.nextLink;
      setContinuationToken(page, continuationToken);
      yield page;
    }
    while (continuationToken) {
      result = await this._listInstanceIdentifiersSlotNext(
        resourceGroupName,
        name,
        slot,
        continuationToken,
        options
      );
      continuationToken = result.nextLink;
      let page = result.value || [];
      setContinuationToken(page, continuationToken);
      yield page;
    }
  }

  private async *listInstanceIdentifiersSlotPagingAll(
    resourceGroupName: string,
    name: string,
    slot: string,
    options?: WebAppsListInstanceIdentifiersSlotOptionalParams
  ): AsyncIterableIterator<WebSiteInstanceStatus> {
    for await (const page of this.listInstanceIdentifiersSlotPagingPage(
      resourceGroupName,
      name,
      slot,
      options
    )) {
      yield* page;
    }
  }

  /**
   * Description for Get list of processes for a web site, or a deployment slot, or for a specific
   * scaled-out instance in a web site.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Site name.
   * @param slot Name of the deployment slot. If a slot is not specified, the API returns deployments for
   *             the production slot.
   * @param instanceId ID of a specific scaled-out instance. This is the value of the name property in
   *                   the JSON response from "GET api/sites/{siteName}/instances".
   * @param options The options parameters.
   */
  public listInstanceProcessesSlot(
    resourceGroupName: string,
    name: string,
    slot: string,
    instanceId: string,
    options?: WebAppsListInstanceProcessesSlotOptionalParams
  ): PagedAsyncIterableIterator<ProcessInfo> {
    const iter = this.listInstanceProcessesSlotPagingAll(
      resourceGroupName,
      name,
      slot,
      instanceId,
      options
    );
    return {
      next() {
        return iter.next();
      },
      [Symbol.asyncIterator]() {
        return this;
      },
      byPage: (settings?: PageSettings) => {
        if (settings?.maxPageSize) {
          throw new Error("maxPageSize is not supported by this operation.");
        }
        return this.listInstanceProcessesSlotPagingPage(
          resourceGroupName,
          name,
          slot,
          instanceId,
          options,
          settings
        );
      }
    };
  }

  private async *listInstanceProcessesSlotPagingPage(
    resourceGroupName: string,
    name: string,
    slot: string,
    instanceId: string,
    options?: WebAppsListInstanceProcessesSlotOptionalParams,
    settings?: PageSettings
  ): AsyncIterableIterator<ProcessInfo[]> {
    let result: WebAppsListInstanceProcessesSlotResponse;
    let continuationToken = settings?.continuationToken;
    if (!continuationToken) {
      result = await this._listInstanceProcessesSlot(
        resourceGroupName,
        name,
        slot,
        instanceId,
        options
      );
      let page = result.value || [];
      continuationToken = result.nextLink;
      setContinuationToken(page, continuationToken);
      yield page;
    }
    while (continuationToken) {
      result = await this._listInstanceProcessesSlotNext(
        resourceGroupName,
        name,
        slot,
        instanceId,
        continuationToken,
        options
      );
      continuationToken = result.nextLink;
      let page = result.value || [];
      setContinuationToken(page, continuationToken);
      yield page;
    }
  }

  private async *listInstanceProcessesSlotPagingAll(
    resourceGroupName: string,
    name: string,
    slot: string,
    instanceId: string,
    options?: WebAppsListInstanceProcessesSlotOptionalParams
  ): AsyncIterableIterator<ProcessInfo> {
    for await (const page of this.listInstanceProcessesSlotPagingPage(
      resourceGroupName,
      name,
      slot,
      instanceId,
      options
    )) {
      yield* page;
    }
  }

  /**
   * Description for List module information for a process by its ID for a specific scaled-out instance
   * in a web site.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Site name.
   * @param processId PID.
   * @param slot Name of the deployment slot. If a slot is not specified, the API returns deployments for
   *             the production slot.
   * @param instanceId ID of a specific scaled-out instance. This is the value of the name property in
   *                   the JSON response from "GET api/sites/{siteName}/instances".
   * @param options The options parameters.
   */
  public listInstanceProcessModulesSlot(
    resourceGroupName: string,
    name: string,
    processId: string,
    slot: string,
    instanceId: string,
    options?: WebAppsListInstanceProcessModulesSlotOptionalParams
  ): PagedAsyncIterableIterator<ProcessModuleInfo> {
    const iter = this.listInstanceProcessModulesSlotPagingAll(
      resourceGroupName,
      name,
      processId,
      slot,
      instanceId,
      options
    );
    return {
      next() {
        return iter.next();
      },
      [Symbol.asyncIterator]() {
        return this;
      },
      byPage: (settings?: PageSettings) => {
        if (settings?.maxPageSize) {
          throw new Error("maxPageSize is not supported by this operation.");
        }
        return this.listInstanceProcessModulesSlotPagingPage(
          resourceGroupName,
          name,
          processId,
          slot,
          instanceId,
          options,
          settings
        );
      }
    };
  }

  private async *listInstanceProcessModulesSlotPagingPage(
    resourceGroupName: string,
    name: string,
    processId: string,
    slot: string,
    instanceId: string,
    options?: WebAppsListInstanceProcessModulesSlotOptionalParams,
    settings?: PageSettings
  ): AsyncIterableIterator<ProcessModuleInfo[]> {
    let result: WebAppsListInstanceProcessModulesSlotResponse;
    let continuationToken = settings?.continuationToken;
    if (!continuationToken) {
      result = await this._listInstanceProcessModulesSlot(
        resourceGroupName,
        name,
        processId,
        slot,
        instanceId,
        options
      );
      let page = result.value || [];
      continuationToken = result.nextLink;
      setContinuationToken(page, continuationToken);
      yield page;
    }
    while (continuationToken) {
      result = await this._listInstanceProcessModulesSlotNext(
        resourceGroupName,
        name,
        processId,
        slot,
        instanceId,
        continuationToken,
        options
      );
      continuationToken = result.nextLink;
      let page = result.value || [];
      setContinuationToken(page, continuationToken);
      yield page;
    }
  }

  private async *listInstanceProcessModulesSlotPagingAll(
    resourceGroupName: string,
    name: string,
    processId: string,
    slot: string,
    instanceId: string,
    options?: WebAppsListInstanceProcessModulesSlotOptionalParams
  ): AsyncIterableIterator<ProcessModuleInfo> {
    for await (const page of this.listInstanceProcessModulesSlotPagingPage(
      resourceGroupName,
      name,
      processId,
      slot,
      instanceId,
      options
    )) {
      yield* page;
    }
  }

  /**
   * Description for List the threads in a process by its ID for a specific scaled-out instance in a web
   * site.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Site name.
   * @param processId PID.
   * @param slot Name of the deployment slot. If a slot is not specified, the API returns deployments for
   *             the production slot.
   * @param instanceId ID of a specific scaled-out instance. This is the value of the name property in
   *                   the JSON response from "GET api/sites/{siteName}/instances".
   * @param options The options parameters.
   */
  public listInstanceProcessThreadsSlot(
    resourceGroupName: string,
    name: string,
    processId: string,
    slot: string,
    instanceId: string,
    options?: WebAppsListInstanceProcessThreadsSlotOptionalParams
  ): PagedAsyncIterableIterator<ProcessThreadInfo> {
    const iter = this.listInstanceProcessThreadsSlotPagingAll(
      resourceGroupName,
      name,
      processId,
      slot,
      instanceId,
      options
    );
    return {
      next() {
        return iter.next();
      },
      [Symbol.asyncIterator]() {
        return this;
      },
      byPage: (settings?: PageSettings) => {
        if (settings?.maxPageSize) {
          throw new Error("maxPageSize is not supported by this operation.");
        }
        return this.listInstanceProcessThreadsSlotPagingPage(
          resourceGroupName,
          name,
          processId,
          slot,
          instanceId,
          options,
          settings
        );
      }
    };
  }

  private async *listInstanceProcessThreadsSlotPagingPage(
    resourceGroupName: string,
    name: string,
    processId: string,
    slot: string,
    instanceId: string,
    options?: WebAppsListInstanceProcessThreadsSlotOptionalParams,
    settings?: PageSettings
  ): AsyncIterableIterator<ProcessThreadInfo[]> {
    let result: WebAppsListInstanceProcessThreadsSlotResponse;
    let continuationToken = settings?.continuationToken;
    if (!continuationToken) {
      result = await this._listInstanceProcessThreadsSlot(
        resourceGroupName,
        name,
        processId,
        slot,
        instanceId,
        options
      );
      let page = result.value || [];
      continuationToken = result.nextLink;
      setContinuationToken(page, continuationToken);
      yield page;
    }
    while (continuationToken) {
      result = await this._listInstanceProcessThreadsSlotNext(
        resourceGroupName,
        name,
        processId,
        slot,
        instanceId,
        continuationToken,
        options
      );
      continuationToken = result.nextLink;
      let page = result.value || [];
      setContinuationToken(page, continuationToken);
      yield page;
    }
  }

  private async *listInstanceProcessThreadsSlotPagingAll(
    resourceGroupName: string,
    name: string,
    processId: string,
    slot: string,
    instanceId: string,
    options?: WebAppsListInstanceProcessThreadsSlotOptionalParams
  ): AsyncIterableIterator<ProcessThreadInfo> {
    for await (const page of this.listInstanceProcessThreadsSlotPagingPage(
      resourceGroupName,
      name,
      processId,
      slot,
      instanceId,
      options
    )) {
      yield* page;
    }
  }

  /**
   * Description for Gets existing backups of an app.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the app.
   * @param slot Name of the deployment slot. If a slot is not specified, the API will get backups of the
   *             production slot.
   * @param options The options parameters.
   */
  public listSiteBackupsSlot(
    resourceGroupName: string,
    name: string,
    slot: string,
    options?: WebAppsListSiteBackupsSlotOptionalParams
  ): PagedAsyncIterableIterator<BackupItem> {
    const iter = this.listSiteBackupsSlotPagingAll(
      resourceGroupName,
      name,
      slot,
      options
    );
    return {
      next() {
        return iter.next();
      },
      [Symbol.asyncIterator]() {
        return this;
      },
      byPage: (settings?: PageSettings) => {
        if (settings?.maxPageSize) {
          throw new Error("maxPageSize is not supported by this operation.");
        }
        return this.listSiteBackupsSlotPagingPage(
          resourceGroupName,
          name,
          slot,
          options,
          settings
        );
      }
    };
  }

  private async *listSiteBackupsSlotPagingPage(
    resourceGroupName: string,
    name: string,
    slot: string,
    options?: WebAppsListSiteBackupsSlotOptionalParams,
    settings?: PageSettings
  ): AsyncIterableIterator<BackupItem[]> {
    let result: WebAppsListSiteBackupsSlotResponse;
    let continuationToken = settings?.continuationToken;
    if (!continuationToken) {
      result = await this._listSiteBackupsSlot(
        resourceGroupName,
        name,
        slot,
        options
      );
      let page = result.value || [];
      continuationToken = result.nextLink;
      setContinuationToken(page, continuationToken);
      yield page;
    }
    while (continuationToken) {
      result = await this._listSiteBackupsSlotNext(
        resourceGroupName,
        name,
        slot,
        continuationToken,
        options
      );
      continuationToken = result.nextLink;
      let page = result.value || [];
      setContinuationToken(page, continuationToken);
      yield page;
    }
  }

  private async *listSiteBackupsSlotPagingAll(
    resourceGroupName: string,
    name: string,
    slot: string,
    options?: WebAppsListSiteBackupsSlotOptionalParams
  ): AsyncIterableIterator<BackupItem> {
    for await (const page of this.listSiteBackupsSlotPagingPage(
      resourceGroupName,
      name,
      slot,
      options
    )) {
      yield* page;
    }
  }

  /**
   * Description for Gets perfmon counters for web app.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of web app.
   * @param slot Name of web app slot. If not specified then will default to production slot.
   * @param options The options parameters.
   */
  public listPerfMonCountersSlot(
    resourceGroupName: string,
    name: string,
    slot: string,
    options?: WebAppsListPerfMonCountersSlotOptionalParams
  ): PagedAsyncIterableIterator<PerfMonResponse> {
    const iter = this.listPerfMonCountersSlotPagingAll(
      resourceGroupName,
      name,
      slot,
      options
    );
    return {
      next() {
        return iter.next();
      },
      [Symbol.asyncIterator]() {
        return this;
      },
      byPage: (settings?: PageSettings) => {
        if (settings?.maxPageSize) {
          throw new Error("maxPageSize is not supported by this operation.");
        }
        return this.listPerfMonCountersSlotPagingPage(
          resourceGroupName,
          name,
          slot,
          options,
          settings
        );
      }
    };
  }

  private async *listPerfMonCountersSlotPagingPage(
    resourceGroupName: string,
    name: string,
    slot: string,
    options?: WebAppsListPerfMonCountersSlotOptionalParams,
    settings?: PageSettings
  ): AsyncIterableIterator<PerfMonResponse[]> {
    let result: WebAppsListPerfMonCountersSlotResponse;
    let continuationToken = settings?.continuationToken;
    if (!continuationToken) {
      result = await this._listPerfMonCountersSlot(
        resourceGroupName,
        name,
        slot,
        options
      );
      let page = result.value || [];
      continuationToken = result.nextLink;
      setContinuationToken(page, continuationToken);
      yield page;
    }
    while (continuationToken) {
      result = await this._listPerfMonCountersSlotNext(
        resourceGroupName,
        name,
        slot,
        continuationToken,
        options
      );
      continuationToken = result.nextLink;
      let page = result.value || [];
      setContinuationToken(page, continuationToken);
      yield page;
    }
  }

  private async *listPerfMonCountersSlotPagingAll(
    resourceGroupName: string,
    name: string,
    slot: string,
    options?: WebAppsListPerfMonCountersSlotOptionalParams
  ): AsyncIterableIterator<PerfMonResponse> {
    for await (const page of this.listPerfMonCountersSlotPagingPage(
      resourceGroupName,
      name,
      slot,
      options
    )) {
      yield* page;
    }
  }

  /**
   * Description for Gets the list of private endpoint connections associated with a site
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the site.
   * @param slot Name of the site deployment slot.
   * @param options The options parameters.
   */
  public listPrivateEndpointConnectionListSlot(
    resourceGroupName: string,
    name: string,
    slot: string,
    options?: WebAppsGetPrivateEndpointConnectionListSlotOptionalParams
  ): PagedAsyncIterableIterator<RemotePrivateEndpointConnectionARMResource> {
    const iter = this.getPrivateEndpointConnectionListSlotPagingAll(
      resourceGroupName,
      name,
      slot,
      options
    );
    return {
      next() {
        return iter.next();
      },
      [Symbol.asyncIterator]() {
        return this;
      },
      byPage: (settings?: PageSettings) => {
        if (settings?.maxPageSize) {
          throw new Error("maxPageSize is not supported by this operation.");
        }
        return this.getPrivateEndpointConnectionListSlotPagingPage(
          resourceGroupName,
          name,
          slot,
          options,
          settings
        );
      }
    };
  }

  private async *getPrivateEndpointConnectionListSlotPagingPage(
    resourceGroupName: string,
    name: string,
    slot: string,
    options?: WebAppsGetPrivateEndpointConnectionListSlotOptionalParams,
    settings?: PageSettings
  ): AsyncIterableIterator<RemotePrivateEndpointConnectionARMResource[]> {
    let result: WebAppsGetPrivateEndpointConnectionListSlotResponse;
    let continuationToken = settings?.continuationToken;
    if (!continuationToken) {
      result = await this._getPrivateEndpointConnectionListSlot(
        resourceGroupName,
        name,
        slot,
        options
      );
      let page = result.value || [];
      continuationToken = result.nextLink;
      setContinuationToken(page, continuationToken);
      yield page;
    }
    while (continuationToken) {
      result = await this._getPrivateEndpointConnectionListSlotNext(
        resourceGroupName,
        name,
        slot,
        continuationToken,
        options
      );
      continuationToken = result.nextLink;
      let page = result.value || [];
      setContinuationToken(page, continuationToken);
      yield page;
    }
  }

  private async *getPrivateEndpointConnectionListSlotPagingAll(
    resourceGroupName: string,
    name: string,
    slot: string,
    options?: WebAppsGetPrivateEndpointConnectionListSlotOptionalParams
  ): AsyncIterableIterator<RemotePrivateEndpointConnectionARMResource> {
    for await (const page of this.getPrivateEndpointConnectionListSlotPagingPage(
      resourceGroupName,
      name,
      slot,
      options
    )) {
      yield* page;
    }
  }

  /**
   * Description for Get list of processes for a web site, or a deployment slot, or for a specific
   * scaled-out instance in a web site.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Site name.
   * @param slot Name of the deployment slot. If a slot is not specified, the API returns deployments for
   *             the production slot.
   * @param options The options parameters.
   */
  public listProcessesSlot(
    resourceGroupName: string,
    name: string,
    slot: string,
    options?: WebAppsListProcessesSlotOptionalParams
  ): PagedAsyncIterableIterator<ProcessInfo> {
    const iter = this.listProcessesSlotPagingAll(
      resourceGroupName,
      name,
      slot,
      options
    );
    return {
      next() {
        return iter.next();
      },
      [Symbol.asyncIterator]() {
        return this;
      },
      byPage: (settings?: PageSettings) => {
        if (settings?.maxPageSize) {
          throw new Error("maxPageSize is not supported by this operation.");
        }
        return this.listProcessesSlotPagingPage(
          resourceGroupName,
          name,
          slot,
          options,
          settings
        );
      }
    };
  }

  private async *listProcessesSlotPagingPage(
    resourceGroupName: string,
    name: string,
    slot: string,
    options?: WebAppsListProcessesSlotOptionalParams,
    settings?: PageSettings
  ): AsyncIterableIterator<ProcessInfo[]> {
    let result: WebAppsListProcessesSlotResponse;
    let continuationToken = settings?.continuationToken;
    if (!continuationToken) {
      result = await this._listProcessesSlot(
        resourceGroupName,
        name,
        slot,
        options
      );
      let page = result.value || [];
      continuationToken = result.nextLink;
      setContinuationToken(page, continuationToken);
      yield page;
    }
    while (continuationToken) {
      result = await this._listProcessesSlotNext(
        resourceGroupName,
        name,
        slot,
        continuationToken,
        options
      );
      continuationToken = result.nextLink;
      let page = result.value || [];
      setContinuationToken(page, continuationToken);
      yield page;
    }
  }

  private async *listProcessesSlotPagingAll(
    resourceGroupName: string,
    name: string,
    slot: string,
    options?: WebAppsListProcessesSlotOptionalParams
  ): AsyncIterableIterator<ProcessInfo> {
    for await (const page of this.listProcessesSlotPagingPage(
      resourceGroupName,
      name,
      slot,
      options
    )) {
      yield* page;
    }
  }

  /**
   * Description for List module information for a process by its ID for a specific scaled-out instance
   * in a web site.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Site name.
   * @param processId PID.
   * @param slot Name of the deployment slot. If a slot is not specified, the API returns deployments for
   *             the production slot.
   * @param options The options parameters.
   */
  public listProcessModulesSlot(
    resourceGroupName: string,
    name: string,
    processId: string,
    slot: string,
    options?: WebAppsListProcessModulesSlotOptionalParams
  ): PagedAsyncIterableIterator<ProcessModuleInfo> {
    const iter = this.listProcessModulesSlotPagingAll(
      resourceGroupName,
      name,
      processId,
      slot,
      options
    );
    return {
      next() {
        return iter.next();
      },
      [Symbol.asyncIterator]() {
        return this;
      },
      byPage: (settings?: PageSettings) => {
        if (settings?.maxPageSize) {
          throw new Error("maxPageSize is not supported by this operation.");
        }
        return this.listProcessModulesSlotPagingPage(
          resourceGroupName,
          name,
          processId,
          slot,
          options,
          settings
        );
      }
    };
  }

  private async *listProcessModulesSlotPagingPage(
    resourceGroupName: string,
    name: string,
    processId: string,
    slot: string,
    options?: WebAppsListProcessModulesSlotOptionalParams,
    settings?: PageSettings
  ): AsyncIterableIterator<ProcessModuleInfo[]> {
    let result: WebAppsListProcessModulesSlotResponse;
    let continuationToken = settings?.continuationToken;
    if (!continuationToken) {
      result = await this._listProcessModulesSlot(
        resourceGroupName,
        name,
        processId,
        slot,
        options
      );
      let page = result.value || [];
      continuationToken = result.nextLink;
      setContinuationToken(page, continuationToken);
      yield page;
    }
    while (continuationToken) {
      result = await this._listProcessModulesSlotNext(
        resourceGroupName,
        name,
        processId,
        slot,
        continuationToken,
        options
      );
      continuationToken = result.nextLink;
      let page = result.value || [];
      setContinuationToken(page, continuationToken);
      yield page;
    }
  }

  private async *listProcessModulesSlotPagingAll(
    resourceGroupName: string,
    name: string,
    processId: string,
    slot: string,
    options?: WebAppsListProcessModulesSlotOptionalParams
  ): AsyncIterableIterator<ProcessModuleInfo> {
    for await (const page of this.listProcessModulesSlotPagingPage(
      resourceGroupName,
      name,
      processId,
      slot,
      options
    )) {
      yield* page;
    }
  }

  /**
   * Description for List the threads in a process by its ID for a specific scaled-out instance in a web
   * site.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Site name.
   * @param processId PID.
   * @param slot Name of the deployment slot. If a slot is not specified, the API returns deployments for
   *             the production slot.
   * @param options The options parameters.
   */
  public listProcessThreadsSlot(
    resourceGroupName: string,
    name: string,
    processId: string,
    slot: string,
    options?: WebAppsListProcessThreadsSlotOptionalParams
  ): PagedAsyncIterableIterator<ProcessThreadInfo> {
    const iter = this.listProcessThreadsSlotPagingAll(
      resourceGroupName,
      name,
      processId,
      slot,
      options
    );
    return {
      next() {
        return iter.next();
      },
      [Symbol.asyncIterator]() {
        return this;
      },
      byPage: (settings?: PageSettings) => {
        if (settings?.maxPageSize) {
          throw new Error("maxPageSize is not supported by this operation.");
        }
        return this.listProcessThreadsSlotPagingPage(
          resourceGroupName,
          name,
          processId,
          slot,
          options,
          settings
        );
      }
    };
  }

  private async *listProcessThreadsSlotPagingPage(
    resourceGroupName: string,
    name: string,
    processId: string,
    slot: string,
    options?: WebAppsListProcessThreadsSlotOptionalParams,
    settings?: PageSettings
  ): AsyncIterableIterator<ProcessThreadInfo[]> {
    let result: WebAppsListProcessThreadsSlotResponse;
    let continuationToken = settings?.continuationToken;
    if (!continuationToken) {
      result = await this._listProcessThreadsSlot(
        resourceGroupName,
        name,
        processId,
        slot,
        options
      );
      let page = result.value || [];
      continuationToken = result.nextLink;
      setContinuationToken(page, continuationToken);
      yield page;
    }
    while (continuationToken) {
      result = await this._listProcessThreadsSlotNext(
        resourceGroupName,
        name,
        processId,
        slot,
        continuationToken,
        options
      );
      continuationToken = result.nextLink;
      let page = result.value || [];
      setContinuationToken(page, continuationToken);
      yield page;
    }
  }

  private async *listProcessThreadsSlotPagingAll(
    resourceGroupName: string,
    name: string,
    processId: string,
    slot: string,
    options?: WebAppsListProcessThreadsSlotOptionalParams
  ): AsyncIterableIterator<ProcessThreadInfo> {
    for await (const page of this.listProcessThreadsSlotPagingPage(
      resourceGroupName,
      name,
      processId,
      slot,
      options
    )) {
      yield* page;
    }
  }

  /**
   * Description for Get public certificates for an app or a deployment slot.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the app.
   * @param slot Name of the deployment slot. If a slot is not specified, the API gets hostname bindings
   *             for the production slot.
   * @param options The options parameters.
   */
  public listPublicCertificatesSlot(
    resourceGroupName: string,
    name: string,
    slot: string,
    options?: WebAppsListPublicCertificatesSlotOptionalParams
  ): PagedAsyncIterableIterator<PublicCertificate> {
    const iter = this.listPublicCertificatesSlotPagingAll(
      resourceGroupName,
      name,
      slot,
      options
    );
    return {
      next() {
        return iter.next();
      },
      [Symbol.asyncIterator]() {
        return this;
      },
      byPage: (settings?: PageSettings) => {
        if (settings?.maxPageSize) {
          throw new Error("maxPageSize is not supported by this operation.");
        }
        return this.listPublicCertificatesSlotPagingPage(
          resourceGroupName,
          name,
          slot,
          options,
          settings
        );
      }
    };
  }

  private async *listPublicCertificatesSlotPagingPage(
    resourceGroupName: string,
    name: string,
    slot: string,
    options?: WebAppsListPublicCertificatesSlotOptionalParams,
    settings?: PageSettings
  ): AsyncIterableIterator<PublicCertificate[]> {
    let result: WebAppsListPublicCertificatesSlotResponse;
    let continuationToken = settings?.continuationToken;
    if (!continuationToken) {
      result = await this._listPublicCertificatesSlot(
        resourceGroupName,
        name,
        slot,
        options
      );
      let page = result.value || [];
      continuationToken = result.nextLink;
      setContinuationToken(page, continuationToken);
      yield page;
    }
    while (continuationToken) {
      result = await this._listPublicCertificatesSlotNext(
        resourceGroupName,
        name,
        slot,
        continuationToken,
        options
      );
      continuationToken = result.nextLink;
      let page = result.value || [];
      setContinuationToken(page, continuationToken);
      yield page;
    }
  }

  private async *listPublicCertificatesSlotPagingAll(
    resourceGroupName: string,
    name: string,
    slot: string,
    options?: WebAppsListPublicCertificatesSlotOptionalParams
  ): AsyncIterableIterator<PublicCertificate> {
    for await (const page of this.listPublicCertificatesSlotPagingPage(
      resourceGroupName,
      name,
      slot,
      options
    )) {
      yield* page;
    }
  }

  /**
   * Description for Get list of siteextensions for a web site, or a deployment slot.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Site name.
   * @param slot Name of the deployment slot. If a slot is not specified, the API uses the production
   *             slot.
   * @param options The options parameters.
   */
  public listSiteExtensionsSlot(
    resourceGroupName: string,
    name: string,
    slot: string,
    options?: WebAppsListSiteExtensionsSlotOptionalParams
  ): PagedAsyncIterableIterator<SiteExtensionInfo> {
    const iter = this.listSiteExtensionsSlotPagingAll(
      resourceGroupName,
      name,
      slot,
      options
    );
    return {
      next() {
        return iter.next();
      },
      [Symbol.asyncIterator]() {
        return this;
      },
      byPage: (settings?: PageSettings) => {
        if (settings?.maxPageSize) {
          throw new Error("maxPageSize is not supported by this operation.");
        }
        return this.listSiteExtensionsSlotPagingPage(
          resourceGroupName,
          name,
          slot,
          options,
          settings
        );
      }
    };
  }

  private async *listSiteExtensionsSlotPagingPage(
    resourceGroupName: string,
    name: string,
    slot: string,
    options?: WebAppsListSiteExtensionsSlotOptionalParams,
    settings?: PageSettings
  ): AsyncIterableIterator<SiteExtensionInfo[]> {
    let result: WebAppsListSiteExtensionsSlotResponse;
    let continuationToken = settings?.continuationToken;
    if (!continuationToken) {
      result = await this._listSiteExtensionsSlot(
        resourceGroupName,
        name,
        slot,
        options
      );
      let page = result.value || [];
      continuationToken = result.nextLink;
      setContinuationToken(page, continuationToken);
      yield page;
    }
    while (continuationToken) {
      result = await this._listSiteExtensionsSlotNext(
        resourceGroupName,
        name,
        slot,
        continuationToken,
        options
      );
      continuationToken = result.nextLink;
      let page = result.value || [];
      setContinuationToken(page, continuationToken);
      yield page;
    }
  }

  private async *listSiteExtensionsSlotPagingAll(
    resourceGroupName: string,
    name: string,
    slot: string,
    options?: WebAppsListSiteExtensionsSlotOptionalParams
  ): AsyncIterableIterator<SiteExtensionInfo> {
    for await (const page of this.listSiteExtensionsSlotPagingPage(
      resourceGroupName,
      name,
      slot,
      options
    )) {
      yield* page;
    }
  }

  /**
   * Description for Get the difference in configuration settings between two web app slots.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the app.
   * @param slot Name of the source slot. If a slot is not specified, the production slot is used as the
   *             source slot.
   * @param slotSwapEntity JSON object that contains the target slot name. See example.
   * @param options The options parameters.
   */
  public listSlotDifferencesSlot(
    resourceGroupName: string,
    name: string,
    slot: string,
    slotSwapEntity: CsmSlotEntity,
    options?: WebAppsListSlotDifferencesSlotOptionalParams
  ): PagedAsyncIterableIterator<SlotDifference> {
    const iter = this.listSlotDifferencesSlotPagingAll(
      resourceGroupName,
      name,
      slot,
      slotSwapEntity,
      options
    );
    return {
      next() {
        return iter.next();
      },
      [Symbol.asyncIterator]() {
        return this;
      },
      byPage: (settings?: PageSettings) => {
        if (settings?.maxPageSize) {
          throw new Error("maxPageSize is not supported by this operation.");
        }
        return this.listSlotDifferencesSlotPagingPage(
          resourceGroupName,
          name,
          slot,
          slotSwapEntity,
          options,
          settings
        );
      }
    };
  }

  private async *listSlotDifferencesSlotPagingPage(
    resourceGroupName: string,
    name: string,
    slot: string,
    slotSwapEntity: CsmSlotEntity,
    options?: WebAppsListSlotDifferencesSlotOptionalParams,
    settings?: PageSettings
  ): AsyncIterableIterator<SlotDifference[]> {
    let result: WebAppsListSlotDifferencesSlotResponse;
    let continuationToken = settings?.continuationToken;
    if (!continuationToken) {
      result = await this._listSlotDifferencesSlot(
        resourceGroupName,
        name,
        slot,
        slotSwapEntity,
        options
      );
      let page = result.value || [];
      continuationToken = result.nextLink;
      setContinuationToken(page, continuationToken);
      yield page;
    }
    while (continuationToken) {
      result = await this._listSlotDifferencesSlotNext(
        resourceGroupName,
        name,
        slot,
        slotSwapEntity,
        continuationToken,
        options
      );
      continuationToken = result.nextLink;
      let page = result.value || [];
      setContinuationToken(page, continuationToken);
      yield page;
    }
  }

  private async *listSlotDifferencesSlotPagingAll(
    resourceGroupName: string,
    name: string,
    slot: string,
    slotSwapEntity: CsmSlotEntity,
    options?: WebAppsListSlotDifferencesSlotOptionalParams
  ): AsyncIterableIterator<SlotDifference> {
    for await (const page of this.listSlotDifferencesSlotPagingPage(
      resourceGroupName,
      name,
      slot,
      slotSwapEntity,
      options
    )) {
      yield* page;
    }
  }

  /**
   * Description for Returns all Snapshots to the user.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Website Name.
   * @param slot Website Slot.
   * @param options The options parameters.
   */
  public listSnapshotsSlot(
    resourceGroupName: string,
    name: string,
    slot: string,
    options?: WebAppsListSnapshotsSlotOptionalParams
  ): PagedAsyncIterableIterator<Snapshot> {
    const iter = this.listSnapshotsSlotPagingAll(
      resourceGroupName,
      name,
      slot,
      options
    );
    return {
      next() {
        return iter.next();
      },
      [Symbol.asyncIterator]() {
        return this;
      },
      byPage: (settings?: PageSettings) => {
        if (settings?.maxPageSize) {
          throw new Error("maxPageSize is not supported by this operation.");
        }
        return this.listSnapshotsSlotPagingPage(
          resourceGroupName,
          name,
          slot,
          options,
          settings
        );
      }
    };
  }

  private async *listSnapshotsSlotPagingPage(
    resourceGroupName: string,
    name: string,
    slot: string,
    options?: WebAppsListSnapshotsSlotOptionalParams,
    settings?: PageSettings
  ): AsyncIterableIterator<Snapshot[]> {
    let result: WebAppsListSnapshotsSlotResponse;
    let continuationToken = settings?.continuationToken;
    if (!continuationToken) {
      result = await this._listSnapshotsSlot(
        resourceGroupName,
        name,
        slot,
        options
      );
      let page = result.value || [];
      continuationToken = result.nextLink;
      setContinuationToken(page, continuationToken);
      yield page;
    }
    while (continuationToken) {
      result = await this._listSnapshotsSlotNext(
        resourceGroupName,
        name,
        slot,
        continuationToken,
        options
      );
      continuationToken = result.nextLink;
      let page = result.value || [];
      setContinuationToken(page, continuationToken);
      yield page;
    }
  }

  private async *listSnapshotsSlotPagingAll(
    resourceGroupName: string,
    name: string,
    slot: string,
    options?: WebAppsListSnapshotsSlotOptionalParams
  ): AsyncIterableIterator<Snapshot> {
    for await (const page of this.listSnapshotsSlotPagingPage(
      resourceGroupName,
      name,
      slot,
      options
    )) {
      yield* page;
    }
  }

  /**
   * Description for Returns all Snapshots to the user from DRSecondary endpoint.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Website Name.
   * @param slot Website Slot.
   * @param options The options parameters.
   */
  public listSnapshotsFromDRSecondarySlot(
    resourceGroupName: string,
    name: string,
    slot: string,
    options?: WebAppsListSnapshotsFromDRSecondarySlotOptionalParams
  ): PagedAsyncIterableIterator<Snapshot> {
    const iter = this.listSnapshotsFromDRSecondarySlotPagingAll(
      resourceGroupName,
      name,
      slot,
      options
    );
    return {
      next() {
        return iter.next();
      },
      [Symbol.asyncIterator]() {
        return this;
      },
      byPage: (settings?: PageSettings) => {
        if (settings?.maxPageSize) {
          throw new Error("maxPageSize is not supported by this operation.");
        }
        return this.listSnapshotsFromDRSecondarySlotPagingPage(
          resourceGroupName,
          name,
          slot,
          options,
          settings
        );
      }
    };
  }

  private async *listSnapshotsFromDRSecondarySlotPagingPage(
    resourceGroupName: string,
    name: string,
    slot: string,
    options?: WebAppsListSnapshotsFromDRSecondarySlotOptionalParams,
    settings?: PageSettings
  ): AsyncIterableIterator<Snapshot[]> {
    let result: WebAppsListSnapshotsFromDRSecondarySlotResponse;
    let continuationToken = settings?.continuationToken;
    if (!continuationToken) {
      result = await this._listSnapshotsFromDRSecondarySlot(
        resourceGroupName,
        name,
        slot,
        options
      );
      let page = result.value || [];
      continuationToken = result.nextLink;
      setContinuationToken(page, continuationToken);
      yield page;
    }
    while (continuationToken) {
      result = await this._listSnapshotsFromDRSecondarySlotNext(
        resourceGroupName,
        name,
        slot,
        continuationToken,
        options
      );
      continuationToken = result.nextLink;
      let page = result.value || [];
      setContinuationToken(page, continuationToken);
      yield page;
    }
  }

  private async *listSnapshotsFromDRSecondarySlotPagingAll(
    resourceGroupName: string,
    name: string,
    slot: string,
    options?: WebAppsListSnapshotsFromDRSecondarySlotOptionalParams
  ): AsyncIterableIterator<Snapshot> {
    for await (const page of this.listSnapshotsFromDRSecondarySlotPagingPage(
      resourceGroupName,
      name,
      slot,
      options
    )) {
      yield* page;
    }
  }

  /**
   * Description for List triggered web jobs for an app, or a deployment slot.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Site name.
   * @param slot Name of the deployment slot. If a slot is not specified, the API deletes a deployment
   *             for the production slot.
   * @param options The options parameters.
   */
  public listTriggeredWebJobsSlot(
    resourceGroupName: string,
    name: string,
    slot: string,
    options?: WebAppsListTriggeredWebJobsSlotOptionalParams
  ): PagedAsyncIterableIterator<TriggeredWebJob> {
    const iter = this.listTriggeredWebJobsSlotPagingAll(
      resourceGroupName,
      name,
      slot,
      options
    );
    return {
      next() {
        return iter.next();
      },
      [Symbol.asyncIterator]() {
        return this;
      },
      byPage: (settings?: PageSettings) => {
        if (settings?.maxPageSize) {
          throw new Error("maxPageSize is not supported by this operation.");
        }
        return this.listTriggeredWebJobsSlotPagingPage(
          resourceGroupName,
          name,
          slot,
          options,
          settings
        );
      }
    };
  }

  private async *listTriggeredWebJobsSlotPagingPage(
    resourceGroupName: string,
    name: string,
    slot: string,
    options?: WebAppsListTriggeredWebJobsSlotOptionalParams,
    settings?: PageSettings
  ): AsyncIterableIterator<TriggeredWebJob[]> {
    let result: WebAppsListTriggeredWebJobsSlotResponse;
    let continuationToken = settings?.continuationToken;
    if (!continuationToken) {
      result = await this._listTriggeredWebJobsSlot(
        resourceGroupName,
        name,
        slot,
        options
      );
      let page = result.value || [];
      continuationToken = result.nextLink;
      setContinuationToken(page, continuationToken);
      yield page;
    }
    while (continuationToken) {
      result = await this._listTriggeredWebJobsSlotNext(
        resourceGroupName,
        name,
        slot,
        continuationToken,
        options
      );
      continuationToken = result.nextLink;
      let page = result.value || [];
      setContinuationToken(page, continuationToken);
      yield page;
    }
  }

  private async *listTriggeredWebJobsSlotPagingAll(
    resourceGroupName: string,
    name: string,
    slot: string,
    options?: WebAppsListTriggeredWebJobsSlotOptionalParams
  ): AsyncIterableIterator<TriggeredWebJob> {
    for await (const page of this.listTriggeredWebJobsSlotPagingPage(
      resourceGroupName,
      name,
      slot,
      options
    )) {
      yield* page;
    }
  }

  /**
   * Description for List a triggered web job's history for an app, or a deployment slot.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Site name.
   * @param webJobName Name of Web Job.
   * @param slot Name of the deployment slot. If a slot is not specified, the API uses the production
   *             slot.
   * @param options The options parameters.
   */
  public listTriggeredWebJobHistorySlot(
    resourceGroupName: string,
    name: string,
    webJobName: string,
    slot: string,
    options?: WebAppsListTriggeredWebJobHistorySlotOptionalParams
  ): PagedAsyncIterableIterator<TriggeredJobHistory> {
    const iter = this.listTriggeredWebJobHistorySlotPagingAll(
      resourceGroupName,
      name,
      webJobName,
      slot,
      options
    );
    return {
      next() {
        return iter.next();
      },
      [Symbol.asyncIterator]() {
        return this;
      },
      byPage: (settings?: PageSettings) => {
        if (settings?.maxPageSize) {
          throw new Error("maxPageSize is not supported by this operation.");
        }
        return this.listTriggeredWebJobHistorySlotPagingPage(
          resourceGroupName,
          name,
          webJobName,
          slot,
          options,
          settings
        );
      }
    };
  }

  private async *listTriggeredWebJobHistorySlotPagingPage(
    resourceGroupName: string,
    name: string,
    webJobName: string,
    slot: string,
    options?: WebAppsListTriggeredWebJobHistorySlotOptionalParams,
    settings?: PageSettings
  ): AsyncIterableIterator<TriggeredJobHistory[]> {
    let result: WebAppsListTriggeredWebJobHistorySlotResponse;
    let continuationToken = settings?.continuationToken;
    if (!continuationToken) {
      result = await this._listTriggeredWebJobHistorySlot(
        resourceGroupName,
        name,
        webJobName,
        slot,
        options
      );
      let page = result.value || [];
      continuationToken = result.nextLink;
      setContinuationToken(page, continuationToken);
      yield page;
    }
    while (continuationToken) {
      result = await this._listTriggeredWebJobHistorySlotNext(
        resourceGroupName,
        name,
        webJobName,
        slot,
        continuationToken,
        options
      );
      continuationToken = result.nextLink;
      let page = result.value || [];
      setContinuationToken(page, continuationToken);
      yield page;
    }
  }

  private async *listTriggeredWebJobHistorySlotPagingAll(
    resourceGroupName: string,
    name: string,
    webJobName: string,
    slot: string,
    options?: WebAppsListTriggeredWebJobHistorySlotOptionalParams
  ): AsyncIterableIterator<TriggeredJobHistory> {
    for await (const page of this.listTriggeredWebJobHistorySlotPagingPage(
      resourceGroupName,
      name,
      webJobName,
      slot,
      options
    )) {
      yield* page;
    }
  }

  /**
   * Description for Gets the quota usage information of an app (or deployment slot, if specified).
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the app.
   * @param slot Name of the deployment slot. If a slot is not specified, the API will get quota
   *             information of the production slot.
   * @param options The options parameters.
   */
  public listUsagesSlot(
    resourceGroupName: string,
    name: string,
    slot: string,
    options?: WebAppsListUsagesSlotOptionalParams
  ): PagedAsyncIterableIterator<CsmUsageQuota> {
    const iter = this.listUsagesSlotPagingAll(
      resourceGroupName,
      name,
      slot,
      options
    );
    return {
      next() {
        return iter.next();
      },
      [Symbol.asyncIterator]() {
        return this;
      },
      byPage: (settings?: PageSettings) => {
        if (settings?.maxPageSize) {
          throw new Error("maxPageSize is not supported by this operation.");
        }
        return this.listUsagesSlotPagingPage(
          resourceGroupName,
          name,
          slot,
          options,
          settings
        );
      }
    };
  }

  private async *listUsagesSlotPagingPage(
    resourceGroupName: string,
    name: string,
    slot: string,
    options?: WebAppsListUsagesSlotOptionalParams,
    settings?: PageSettings
  ): AsyncIterableIterator<CsmUsageQuota[]> {
    let result: WebAppsListUsagesSlotResponse;
    let continuationToken = settings?.continuationToken;
    if (!continuationToken) {
      result = await this._listUsagesSlot(
        resourceGroupName,
        name,
        slot,
        options
      );
      let page = result.value || [];
      continuationToken = result.nextLink;
      setContinuationToken(page, continuationToken);
      yield page;
    }
    while (continuationToken) {
      result = await this._listUsagesSlotNext(
        resourceGroupName,
        name,
        slot,
        continuationToken,
        options
      );
      continuationToken = result.nextLink;
      let page = result.value || [];
      setContinuationToken(page, continuationToken);
      yield page;
    }
  }

  private async *listUsagesSlotPagingAll(
    resourceGroupName: string,
    name: string,
    slot: string,
    options?: WebAppsListUsagesSlotOptionalParams
  ): AsyncIterableIterator<CsmUsageQuota> {
    for await (const page of this.listUsagesSlotPagingPage(
      resourceGroupName,
      name,
      slot,
      options
    )) {
      yield* page;
    }
  }

  /**
   * Description for List webjobs for an app, or a deployment slot.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Site name.
   * @param slot Name of the deployment slot. If a slot is not specified, the API returns deployments for
   *             the production slot.
   * @param options The options parameters.
   */
  public listWebJobsSlot(
    resourceGroupName: string,
    name: string,
    slot: string,
    options?: WebAppsListWebJobsSlotOptionalParams
  ): PagedAsyncIterableIterator<WebJob> {
    const iter = this.listWebJobsSlotPagingAll(
      resourceGroupName,
      name,
      slot,
      options
    );
    return {
      next() {
        return iter.next();
      },
      [Symbol.asyncIterator]() {
        return this;
      },
      byPage: (settings?: PageSettings) => {
        if (settings?.maxPageSize) {
          throw new Error("maxPageSize is not supported by this operation.");
        }
        return this.listWebJobsSlotPagingPage(
          resourceGroupName,
          name,
          slot,
          options,
          settings
        );
      }
    };
  }

  private async *listWebJobsSlotPagingPage(
    resourceGroupName: string,
    name: string,
    slot: string,
    options?: WebAppsListWebJobsSlotOptionalParams,
    settings?: PageSettings
  ): AsyncIterableIterator<WebJob[]> {
    let result: WebAppsListWebJobsSlotResponse;
    let continuationToken = settings?.continuationToken;
    if (!continuationToken) {
      result = await this._listWebJobsSlot(
        resourceGroupName,
        name,
        slot,
        options
      );
      let page = result.value || [];
      continuationToken = result.nextLink;
      setContinuationToken(page, continuationToken);
      yield page;
    }
    while (continuationToken) {
      result = await this._listWebJobsSlotNext(
        resourceGroupName,
        name,
        slot,
        continuationToken,
        options
      );
      continuationToken = result.nextLink;
      let page = result.value || [];
      setContinuationToken(page, continuationToken);
      yield page;
    }
  }

  private async *listWebJobsSlotPagingAll(
    resourceGroupName: string,
    name: string,
    slot: string,
    options?: WebAppsListWebJobsSlotOptionalParams
  ): AsyncIterableIterator<WebJob> {
    for await (const page of this.listWebJobsSlotPagingPage(
      resourceGroupName,
      name,
      slot,
      options
    )) {
      yield* page;
    }
  }

  /**
   * Description for Get the difference in configuration settings between two web app slots.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the app.
   * @param slotSwapEntity JSON object that contains the target slot name. See example.
   * @param options The options parameters.
   */
  public listSlotDifferencesFromProduction(
    resourceGroupName: string,
    name: string,
    slotSwapEntity: CsmSlotEntity,
    options?: WebAppsListSlotDifferencesFromProductionOptionalParams
  ): PagedAsyncIterableIterator<SlotDifference> {
    const iter = this.listSlotDifferencesFromProductionPagingAll(
      resourceGroupName,
      name,
      slotSwapEntity,
      options
    );
    return {
      next() {
        return iter.next();
      },
      [Symbol.asyncIterator]() {
        return this;
      },
      byPage: (settings?: PageSettings) => {
        if (settings?.maxPageSize) {
          throw new Error("maxPageSize is not supported by this operation.");
        }
        return this.listSlotDifferencesFromProductionPagingPage(
          resourceGroupName,
          name,
          slotSwapEntity,
          options,
          settings
        );
      }
    };
  }

  private async *listSlotDifferencesFromProductionPagingPage(
    resourceGroupName: string,
    name: string,
    slotSwapEntity: CsmSlotEntity,
    options?: WebAppsListSlotDifferencesFromProductionOptionalParams,
    settings?: PageSettings
  ): AsyncIterableIterator<SlotDifference[]> {
    let result: WebAppsListSlotDifferencesFromProductionResponse;
    let continuationToken = settings?.continuationToken;
    if (!continuationToken) {
      result = await this._listSlotDifferencesFromProduction(
        resourceGroupName,
        name,
        slotSwapEntity,
        options
      );
      let page = result.value || [];
      continuationToken = result.nextLink;
      setContinuationToken(page, continuationToken);
      yield page;
    }
    while (continuationToken) {
      result = await this._listSlotDifferencesFromProductionNext(
        resourceGroupName,
        name,
        slotSwapEntity,
        continuationToken,
        options
      );
      continuationToken = result.nextLink;
      let page = result.value || [];
      setContinuationToken(page, continuationToken);
      yield page;
    }
  }

  private async *listSlotDifferencesFromProductionPagingAll(
    resourceGroupName: string,
    name: string,
    slotSwapEntity: CsmSlotEntity,
    options?: WebAppsListSlotDifferencesFromProductionOptionalParams
  ): AsyncIterableIterator<SlotDifference> {
    for await (const page of this.listSlotDifferencesFromProductionPagingPage(
      resourceGroupName,
      name,
      slotSwapEntity,
      options
    )) {
      yield* page;
    }
  }

  /**
   * Description for Returns all Snapshots to the user.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Website Name.
   * @param options The options parameters.
   */
  public listSnapshots(
    resourceGroupName: string,
    name: string,
    options?: WebAppsListSnapshotsOptionalParams
  ): PagedAsyncIterableIterator<Snapshot> {
    const iter = this.listSnapshotsPagingAll(resourceGroupName, name, options);
    return {
      next() {
        return iter.next();
      },
      [Symbol.asyncIterator]() {
        return this;
      },
      byPage: (settings?: PageSettings) => {
        if (settings?.maxPageSize) {
          throw new Error("maxPageSize is not supported by this operation.");
        }
        return this.listSnapshotsPagingPage(
          resourceGroupName,
          name,
          options,
          settings
        );
      }
    };
  }

  private async *listSnapshotsPagingPage(
    resourceGroupName: string,
    name: string,
    options?: WebAppsListSnapshotsOptionalParams,
    settings?: PageSettings
  ): AsyncIterableIterator<Snapshot[]> {
    let result: WebAppsListSnapshotsResponse;
    let continuationToken = settings?.continuationToken;
    if (!continuationToken) {
      result = await this._listSnapshots(resourceGroupName, name, options);
      let page = result.value || [];
      continuationToken = result.nextLink;
      setContinuationToken(page, continuationToken);
      yield page;
    }
    while (continuationToken) {
      result = await this._listSnapshotsNext(
        resourceGroupName,
        name,
        continuationToken,
        options
      );
      continuationToken = result.nextLink;
      let page = result.value || [];
      setContinuationToken(page, continuationToken);
      yield page;
    }
  }

  private async *listSnapshotsPagingAll(
    resourceGroupName: string,
    name: string,
    options?: WebAppsListSnapshotsOptionalParams
  ): AsyncIterableIterator<Snapshot> {
    for await (const page of this.listSnapshotsPagingPage(
      resourceGroupName,
      name,
      options
    )) {
      yield* page;
    }
  }

  /**
   * Description for Returns all Snapshots to the user from DRSecondary endpoint.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Website Name.
   * @param options The options parameters.
   */
  public listSnapshotsFromDRSecondary(
    resourceGroupName: string,
    name: string,
    options?: WebAppsListSnapshotsFromDRSecondaryOptionalParams
  ): PagedAsyncIterableIterator<Snapshot> {
    const iter = this.listSnapshotsFromDRSecondaryPagingAll(
      resourceGroupName,
      name,
      options
    );
    return {
      next() {
        return iter.next();
      },
      [Symbol.asyncIterator]() {
        return this;
      },
      byPage: (settings?: PageSettings) => {
        if (settings?.maxPageSize) {
          throw new Error("maxPageSize is not supported by this operation.");
        }
        return this.listSnapshotsFromDRSecondaryPagingPage(
          resourceGroupName,
          name,
          options,
          settings
        );
      }
    };
  }

  private async *listSnapshotsFromDRSecondaryPagingPage(
    resourceGroupName: string,
    name: string,
    options?: WebAppsListSnapshotsFromDRSecondaryOptionalParams,
    settings?: PageSettings
  ): AsyncIterableIterator<Snapshot[]> {
    let result: WebAppsListSnapshotsFromDRSecondaryResponse;
    let continuationToken = settings?.continuationToken;
    if (!continuationToken) {
      result = await this._listSnapshotsFromDRSecondary(
        resourceGroupName,
        name,
        options
      );
      let page = result.value || [];
      continuationToken = result.nextLink;
      setContinuationToken(page, continuationToken);
      yield page;
    }
    while (continuationToken) {
      result = await this._listSnapshotsFromDRSecondaryNext(
        resourceGroupName,
        name,
        continuationToken,
        options
      );
      continuationToken = result.nextLink;
      let page = result.value || [];
      setContinuationToken(page, continuationToken);
      yield page;
    }
  }

  private async *listSnapshotsFromDRSecondaryPagingAll(
    resourceGroupName: string,
    name: string,
    options?: WebAppsListSnapshotsFromDRSecondaryOptionalParams
  ): AsyncIterableIterator<Snapshot> {
    for await (const page of this.listSnapshotsFromDRSecondaryPagingPage(
      resourceGroupName,
      name,
      options
    )) {
      yield* page;
    }
  }

  /**
   * Description for List triggered web jobs for an app, or a deployment slot.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Site name.
   * @param options The options parameters.
   */
  public listTriggeredWebJobs(
    resourceGroupName: string,
    name: string,
    options?: WebAppsListTriggeredWebJobsOptionalParams
  ): PagedAsyncIterableIterator<TriggeredWebJob> {
    const iter = this.listTriggeredWebJobsPagingAll(
      resourceGroupName,
      name,
      options
    );
    return {
      next() {
        return iter.next();
      },
      [Symbol.asyncIterator]() {
        return this;
      },
      byPage: (settings?: PageSettings) => {
        if (settings?.maxPageSize) {
          throw new Error("maxPageSize is not supported by this operation.");
        }
        return this.listTriggeredWebJobsPagingPage(
          resourceGroupName,
          name,
          options,
          settings
        );
      }
    };
  }

  private async *listTriggeredWebJobsPagingPage(
    resourceGroupName: string,
    name: string,
    options?: WebAppsListTriggeredWebJobsOptionalParams,
    settings?: PageSettings
  ): AsyncIterableIterator<TriggeredWebJob[]> {
    let result: WebAppsListTriggeredWebJobsResponse;
    let continuationToken = settings?.continuationToken;
    if (!continuationToken) {
      result = await this._listTriggeredWebJobs(
        resourceGroupName,
        name,
        options
      );
      let page = result.value || [];
      continuationToken = result.nextLink;
      setContinuationToken(page, continuationToken);
      yield page;
    }
    while (continuationToken) {
      result = await this._listTriggeredWebJobsNext(
        resourceGroupName,
        name,
        continuationToken,
        options
      );
      continuationToken = result.nextLink;
      let page = result.value || [];
      setContinuationToken(page, continuationToken);
      yield page;
    }
  }

  private async *listTriggeredWebJobsPagingAll(
    resourceGroupName: string,
    name: string,
    options?: WebAppsListTriggeredWebJobsOptionalParams
  ): AsyncIterableIterator<TriggeredWebJob> {
    for await (const page of this.listTriggeredWebJobsPagingPage(
      resourceGroupName,
      name,
      options
    )) {
      yield* page;
    }
  }

  /**
   * Description for List a triggered web job's history for an app, or a deployment slot.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Site name.
   * @param webJobName Name of Web Job.
   * @param options The options parameters.
   */
  public listTriggeredWebJobHistory(
    resourceGroupName: string,
    name: string,
    webJobName: string,
    options?: WebAppsListTriggeredWebJobHistoryOptionalParams
  ): PagedAsyncIterableIterator<TriggeredJobHistory> {
    const iter = this.listTriggeredWebJobHistoryPagingAll(
      resourceGroupName,
      name,
      webJobName,
      options
    );
    return {
      next() {
        return iter.next();
      },
      [Symbol.asyncIterator]() {
        return this;
      },
      byPage: (settings?: PageSettings) => {
        if (settings?.maxPageSize) {
          throw new Error("maxPageSize is not supported by this operation.");
        }
        return this.listTriggeredWebJobHistoryPagingPage(
          resourceGroupName,
          name,
          webJobName,
          options,
          settings
        );
      }
    };
  }

  private async *listTriggeredWebJobHistoryPagingPage(
    resourceGroupName: string,
    name: string,
    webJobName: string,
    options?: WebAppsListTriggeredWebJobHistoryOptionalParams,
    settings?: PageSettings
  ): AsyncIterableIterator<TriggeredJobHistory[]> {
    let result: WebAppsListTriggeredWebJobHistoryResponse;
    let continuationToken = settings?.continuationToken;
    if (!continuationToken) {
      result = await this._listTriggeredWebJobHistory(
        resourceGroupName,
        name,
        webJobName,
        options
      );
      let page = result.value || [];
      continuationToken = result.nextLink;
      setContinuationToken(page, continuationToken);
      yield page;
    }
    while (continuationToken) {
      result = await this._listTriggeredWebJobHistoryNext(
        resourceGroupName,
        name,
        webJobName,
        continuationToken,
        options
      );
      continuationToken = result.nextLink;
      let page = result.value || [];
      setContinuationToken(page, continuationToken);
      yield page;
    }
  }

  private async *listTriggeredWebJobHistoryPagingAll(
    resourceGroupName: string,
    name: string,
    webJobName: string,
    options?: WebAppsListTriggeredWebJobHistoryOptionalParams
  ): AsyncIterableIterator<TriggeredJobHistory> {
    for await (const page of this.listTriggeredWebJobHistoryPagingPage(
      resourceGroupName,
      name,
      webJobName,
      options
    )) {
      yield* page;
    }
  }

  /**
   * Description for Gets the quota usage information of an app (or deployment slot, if specified).
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the app.
   * @param options The options parameters.
   */
  public listUsages(
    resourceGroupName: string,
    name: string,
    options?: WebAppsListUsagesOptionalParams
  ): PagedAsyncIterableIterator<CsmUsageQuota> {
    const iter = this.listUsagesPagingAll(resourceGroupName, name, options);
    return {
      next() {
        return iter.next();
      },
      [Symbol.asyncIterator]() {
        return this;
      },
      byPage: (settings?: PageSettings) => {
        if (settings?.maxPageSize) {
          throw new Error("maxPageSize is not supported by this operation.");
        }
        return this.listUsagesPagingPage(
          resourceGroupName,
          name,
          options,
          settings
        );
      }
    };
  }

  private async *listUsagesPagingPage(
    resourceGroupName: string,
    name: string,
    options?: WebAppsListUsagesOptionalParams,
    settings?: PageSettings
  ): AsyncIterableIterator<CsmUsageQuota[]> {
    let result: WebAppsListUsagesResponse;
    let continuationToken = settings?.continuationToken;
    if (!continuationToken) {
      result = await this._listUsages(resourceGroupName, name, options);
      let page = result.value || [];
      continuationToken = result.nextLink;
      setContinuationToken(page, continuationToken);
      yield page;
    }
    while (continuationToken) {
      result = await this._listUsagesNext(
        resourceGroupName,
        name,
        continuationToken,
        options
      );
      continuationToken = result.nextLink;
      let page = result.value || [];
      setContinuationToken(page, continuationToken);
      yield page;
    }
  }

  private async *listUsagesPagingAll(
    resourceGroupName: string,
    name: string,
    options?: WebAppsListUsagesOptionalParams
  ): AsyncIterableIterator<CsmUsageQuota> {
    for await (const page of this.listUsagesPagingPage(
      resourceGroupName,
      name,
      options
    )) {
      yield* page;
    }
  }

  /**
   * Description for List webjobs for an app, or a deployment slot.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Site name.
   * @param options The options parameters.
   */
  public listWebJobs(
    resourceGroupName: string,
    name: string,
    options?: WebAppsListWebJobsOptionalParams
  ): PagedAsyncIterableIterator<WebJob> {
    const iter = this.listWebJobsPagingAll(resourceGroupName, name, options);
    return {
      next() {
        return iter.next();
      },
      [Symbol.asyncIterator]() {
        return this;
      },
      byPage: (settings?: PageSettings) => {
        if (settings?.maxPageSize) {
          throw new Error("maxPageSize is not supported by this operation.");
        }
        return this.listWebJobsPagingPage(
          resourceGroupName,
          name,
          options,
          settings
        );
      }
    };
  }

  private async *listWebJobsPagingPage(
    resourceGroupName: string,
    name: string,
    options?: WebAppsListWebJobsOptionalParams,
    settings?: PageSettings
  ): AsyncIterableIterator<WebJob[]> {
    let result: WebAppsListWebJobsResponse;
    let continuationToken = settings?.continuationToken;
    if (!continuationToken) {
      result = await this._listWebJobs(resourceGroupName, name, options);
      let page = result.value || [];
      continuationToken = result.nextLink;
      setContinuationToken(page, continuationToken);
      yield page;
    }
    while (continuationToken) {
      result = await this._listWebJobsNext(
        resourceGroupName,
        name,
        continuationToken,
        options
      );
      continuationToken = result.nextLink;
      let page = result.value || [];
      setContinuationToken(page, continuationToken);
      yield page;
    }
  }

  private async *listWebJobsPagingAll(
    resourceGroupName: string,
    name: string,
    options?: WebAppsListWebJobsOptionalParams
  ): AsyncIterableIterator<WebJob> {
    for await (const page of this.listWebJobsPagingPage(
      resourceGroupName,
      name,
      options
    )) {
      yield* page;
    }
  }

  /**
   * List the workflows for a web site, or a deployment slot.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Site name.
   * @param slot Name of the deployment slot.
   * @param options The options parameters.
   */
  public listInstanceWorkflowsSlot(
    resourceGroupName: string,
    name: string,
    slot: string,
    options?: WebAppsListInstanceWorkflowsSlotOptionalParams
  ): PagedAsyncIterableIterator<WorkflowEnvelope> {
    const iter = this.listInstanceWorkflowsSlotPagingAll(
      resourceGroupName,
      name,
      slot,
      options
    );
    return {
      next() {
        return iter.next();
      },
      [Symbol.asyncIterator]() {
        return this;
      },
      byPage: (settings?: PageSettings) => {
        if (settings?.maxPageSize) {
          throw new Error("maxPageSize is not supported by this operation.");
        }
        return this.listInstanceWorkflowsSlotPagingPage(
          resourceGroupName,
          name,
          slot,
          options,
          settings
        );
      }
    };
  }

  private async *listInstanceWorkflowsSlotPagingPage(
    resourceGroupName: string,
    name: string,
    slot: string,
    options?: WebAppsListInstanceWorkflowsSlotOptionalParams,
    settings?: PageSettings
  ): AsyncIterableIterator<WorkflowEnvelope[]> {
    let result: WebAppsListInstanceWorkflowsSlotResponse;
    let continuationToken = settings?.continuationToken;
    if (!continuationToken) {
      result = await this._listInstanceWorkflowsSlot(
        resourceGroupName,
        name,
        slot,
        options
      );
      let page = result.value || [];
      continuationToken = result.nextLink;
      setContinuationToken(page, continuationToken);
      yield page;
    }
    while (continuationToken) {
      result = await this._listInstanceWorkflowsSlotNext(
        resourceGroupName,
        name,
        slot,
        continuationToken,
        options
      );
      continuationToken = result.nextLink;
      let page = result.value || [];
      setContinuationToken(page, continuationToken);
      yield page;
    }
  }

  private async *listInstanceWorkflowsSlotPagingAll(
    resourceGroupName: string,
    name: string,
    slot: string,
    options?: WebAppsListInstanceWorkflowsSlotOptionalParams
  ): AsyncIterableIterator<WorkflowEnvelope> {
    for await (const page of this.listInstanceWorkflowsSlotPagingPage(
      resourceGroupName,
      name,
      slot,
      options
    )) {
      yield* page;
    }
  }

  /**
   * List the workflows for a web site, or a deployment slot.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Site name.
   * @param options The options parameters.
   */
  public listWorkflows(
    resourceGroupName: string,
    name: string,
    options?: WebAppsListWorkflowsOptionalParams
  ): PagedAsyncIterableIterator<WorkflowEnvelope> {
    const iter = this.listWorkflowsPagingAll(resourceGroupName, name, options);
    return {
      next() {
        return iter.next();
      },
      [Symbol.asyncIterator]() {
        return this;
      },
      byPage: (settings?: PageSettings) => {
        if (settings?.maxPageSize) {
          throw new Error("maxPageSize is not supported by this operation.");
        }
        return this.listWorkflowsPagingPage(
          resourceGroupName,
          name,
          options,
          settings
        );
      }
    };
  }

  private async *listWorkflowsPagingPage(
    resourceGroupName: string,
    name: string,
    options?: WebAppsListWorkflowsOptionalParams,
    settings?: PageSettings
  ): AsyncIterableIterator<WorkflowEnvelope[]> {
    let result: WebAppsListWorkflowsResponse;
    let continuationToken = settings?.continuationToken;
    if (!continuationToken) {
      result = await this._listWorkflows(resourceGroupName, name, options);
      let page = result.value || [];
      continuationToken = result.nextLink;
      setContinuationToken(page, continuationToken);
      yield page;
    }
    while (continuationToken) {
      result = await this._listWorkflowsNext(
        resourceGroupName,
        name,
        continuationToken,
        options
      );
      continuationToken = result.nextLink;
      let page = result.value || [];
      setContinuationToken(page, continuationToken);
      yield page;
    }
  }

  private async *listWorkflowsPagingAll(
    resourceGroupName: string,
    name: string,
    options?: WebAppsListWorkflowsOptionalParams
  ): AsyncIterableIterator<WorkflowEnvelope> {
    for await (const page of this.listWorkflowsPagingPage(
      resourceGroupName,
      name,
      options
    )) {
      yield* page;
    }
  }

  /**
   * Description for Get all apps for a subscription.
   * @param options The options parameters.
   */
  private _list(
    options?: WebAppsListOptionalParams
  ): Promise<WebAppsListResponse> {
    return this.client.sendOperationRequest({ options }, listOperationSpec);
  }

  /**
   * Description for Gets all web, mobile, and API apps in the specified resource group.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param options The options parameters.
   */
  private _listByResourceGroup(
    resourceGroupName: string,
    options?: WebAppsListByResourceGroupOptionalParams
  ): Promise<WebAppsListByResourceGroupResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, options },
      listByResourceGroupOperationSpec
    );
  }

  /**
   * Description for Gets the details of a web, mobile, or API app.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the app.
   * @param options The options parameters.
   */
  get(
    resourceGroupName: string,
    name: string,
    options?: WebAppsGetOptionalParams
  ): Promise<WebAppsGetResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, options },
      getOperationSpec
    );
  }

  /**
   * Description for Creates a new web, mobile, or API app in an existing resource group, or updates an
   * existing app.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Unique name of the app to create or update. To create or update a deployment slot, use
   *             the {slot} parameter.
   * @param siteEnvelope A JSON representation of the app properties. See example.
   * @param options The options parameters.
   */
  async beginCreateOrUpdate(
    resourceGroupName: string,
    name: string,
    siteEnvelope: Site,
    options?: WebAppsCreateOrUpdateOptionalParams
  ): Promise<
    SimplePollerLike<
      OperationState<WebAppsCreateOrUpdateResponse>,
      WebAppsCreateOrUpdateResponse
    >
  > {
    const directSendOperation = async (
      args: coreClient.OperationArguments,
      spec: coreClient.OperationSpec
    ): Promise<WebAppsCreateOrUpdateResponse> => {
      return this.client.sendOperationRequest(args, spec);
    };
    const sendOperationFn = async (
      args: coreClient.OperationArguments,
      spec: coreClient.OperationSpec
    ) => {
      let currentRawResponse:
        | coreClient.FullOperationResponse
        | undefined = undefined;
      const providedCallback = args.options?.onResponse;
      const callback: coreClient.RawResponseCallback = (
        rawResponse: coreClient.FullOperationResponse,
        flatResponse: unknown
      ) => {
        currentRawResponse = rawResponse;
        providedCallback?.(rawResponse, flatResponse);
      };
      const updatedArgs = {
        ...args,
        options: {
          ...args.options,
          onResponse: callback
        }
      };
      const flatResponse = await directSendOperation(updatedArgs, spec);
      return {
        flatResponse,
        rawResponse: {
          statusCode: currentRawResponse!.status,
          body: currentRawResponse!.parsedBody,
          headers: currentRawResponse!.headers.toJSON()
        }
      };
    };

    const lro = createLroSpec({
      sendOperationFn,
      args: { resourceGroupName, name, siteEnvelope, options },
      spec: createOrUpdateOperationSpec
    });
    const poller = await createHttpPoller<
      WebAppsCreateOrUpdateResponse,
      OperationState<WebAppsCreateOrUpdateResponse>
    >(lro, {
      restoreFrom: options?.resumeFrom,
      intervalInMs: options?.updateIntervalInMs
    });
    await poller.poll();
    return poller;
  }

  /**
   * Description for Creates a new web, mobile, or API app in an existing resource group, or updates an
   * existing app.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Unique name of the app to create or update. To create or update a deployment slot, use
   *             the {slot} parameter.
   * @param siteEnvelope A JSON representation of the app properties. See example.
   * @param options The options parameters.
   */
  async beginCreateOrUpdateAndWait(
    resourceGroupName: string,
    name: string,
    siteEnvelope: Site,
    options?: WebAppsCreateOrUpdateOptionalParams
  ): Promise<WebAppsCreateOrUpdateResponse> {
    const poller = await this.beginCreateOrUpdate(
      resourceGroupName,
      name,
      siteEnvelope,
      options
    );
    return poller.pollUntilDone();
  }

  /**
   * Description for Deletes a web, mobile, or API app, or one of the deployment slots.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the app to delete.
   * @param options The options parameters.
   */
  delete(
    resourceGroupName: string,
    name: string,
    options?: WebAppsDeleteOptionalParams
  ): Promise<void> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, options },
      deleteOperationSpec
    );
  }

  /**
   * Description for Creates a new web, mobile, or API app in an existing resource group, or updates an
   * existing app.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Unique name of the app to create or update. To create or update a deployment slot, use
   *             the {slot} parameter.
   * @param siteEnvelope A JSON representation of the app properties. See example.
   * @param options The options parameters.
   */
  update(
    resourceGroupName: string,
    name: string,
    siteEnvelope: SitePatchResource,
    options?: WebAppsUpdateOptionalParams
  ): Promise<WebAppsUpdateResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, siteEnvelope, options },
      updateOperationSpec
    );
  }

  /**
   * Description for Analyze a custom hostname.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of web app.
   * @param options The options parameters.
   */
  analyzeCustomHostname(
    resourceGroupName: string,
    name: string,
    options?: WebAppsAnalyzeCustomHostnameOptionalParams
  ): Promise<WebAppsAnalyzeCustomHostnameResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, options },
      analyzeCustomHostnameOperationSpec
    );
  }

  /**
   * Description for Applies the configuration settings from the target slot onto the current slot.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the app.
   * @param slotSwapEntity JSON object that contains the target slot name. See example.
   * @param options The options parameters.
   */
  applySlotConfigToProduction(
    resourceGroupName: string,
    name: string,
    slotSwapEntity: CsmSlotEntity,
    options?: WebAppsApplySlotConfigToProductionOptionalParams
  ): Promise<void> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, slotSwapEntity, options },
      applySlotConfigToProductionOperationSpec
    );
  }

  /**
   * Description for Creates a backup of an app.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the app.
   * @param request Backup configuration. You can use the JSON response from the POST action as input
   *                here.
   * @param options The options parameters.
   */
  backup(
    resourceGroupName: string,
    name: string,
    request: BackupRequest,
    options?: WebAppsBackupOptionalParams
  ): Promise<WebAppsBackupResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, request, options },
      backupOperationSpec
    );
  }

  /**
   * Description for Gets existing backups of an app.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the app.
   * @param options The options parameters.
   */
  private _listBackups(
    resourceGroupName: string,
    name: string,
    options?: WebAppsListBackupsOptionalParams
  ): Promise<WebAppsListBackupsResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, options },
      listBackupsOperationSpec
    );
  }

  /**
   * Description for Gets a backup of an app by its ID.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the app.
   * @param backupId ID of the backup.
   * @param options The options parameters.
   */
  getBackupStatus(
    resourceGroupName: string,
    name: string,
    backupId: string,
    options?: WebAppsGetBackupStatusOptionalParams
  ): Promise<WebAppsGetBackupStatusResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, backupId, options },
      getBackupStatusOperationSpec
    );
  }

  /**
   * Description for Deletes a backup of an app by its ID.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the app.
   * @param backupId ID of the backup.
   * @param options The options parameters.
   */
  deleteBackup(
    resourceGroupName: string,
    name: string,
    backupId: string,
    options?: WebAppsDeleteBackupOptionalParams
  ): Promise<void> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, backupId, options },
      deleteBackupOperationSpec
    );
  }

  /**
   * Description for Gets status of a web app backup that may be in progress, including secrets
   * associated with the backup, such as the Azure Storage SAS URL. Also can be used to update the SAS
   * URL for the backup if a new URL is passed in the request body.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of web app.
   * @param backupId ID of backup.
   * @param request Information on backup request.
   * @param options The options parameters.
   */
  listBackupStatusSecrets(
    resourceGroupName: string,
    name: string,
    backupId: string,
    request: BackupRequest,
    options?: WebAppsListBackupStatusSecretsOptionalParams
  ): Promise<WebAppsListBackupStatusSecretsResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, backupId, request, options },
      listBackupStatusSecretsOperationSpec
    );
  }

  /**
   * Description for Restores a specific backup to another app (or deployment slot, if specified).
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the app.
   * @param backupId ID of the backup.
   * @param request Information on restore request .
   * @param options The options parameters.
   */
  async beginRestore(
    resourceGroupName: string,
    name: string,
    backupId: string,
    request: RestoreRequest,
    options?: WebAppsRestoreOptionalParams
  ): Promise<SimplePollerLike<OperationState<void>, void>> {
    const directSendOperation = async (
      args: coreClient.OperationArguments,
      spec: coreClient.OperationSpec
    ): Promise<void> => {
      return this.client.sendOperationRequest(args, spec);
    };
    const sendOperationFn = async (
      args: coreClient.OperationArguments,
      spec: coreClient.OperationSpec
    ) => {
      let currentRawResponse:
        | coreClient.FullOperationResponse
        | undefined = undefined;
      const providedCallback = args.options?.onResponse;
      const callback: coreClient.RawResponseCallback = (
        rawResponse: coreClient.FullOperationResponse,
        flatResponse: unknown
      ) => {
        currentRawResponse = rawResponse;
        providedCallback?.(rawResponse, flatResponse);
      };
      const updatedArgs = {
        ...args,
        options: {
          ...args.options,
          onResponse: callback
        }
      };
      const flatResponse = await directSendOperation(updatedArgs, spec);
      return {
        flatResponse,
        rawResponse: {
          statusCode: currentRawResponse!.status,
          body: currentRawResponse!.parsedBody,
          headers: currentRawResponse!.headers.toJSON()
        }
      };
    };

    const lro = createLroSpec({
      sendOperationFn,
      args: { resourceGroupName, name, backupId, request, options },
      spec: restoreOperationSpec
    });
    const poller = await createHttpPoller<void, OperationState<void>>(lro, {
      restoreFrom: options?.resumeFrom,
      intervalInMs: options?.updateIntervalInMs
    });
    await poller.poll();
    return poller;
  }

  /**
   * Description for Restores a specific backup to another app (or deployment slot, if specified).
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the app.
   * @param backupId ID of the backup.
   * @param request Information on restore request .
   * @param options The options parameters.
   */
  async beginRestoreAndWait(
    resourceGroupName: string,
    name: string,
    backupId: string,
    request: RestoreRequest,
    options?: WebAppsRestoreOptionalParams
  ): Promise<void> {
    const poller = await this.beginRestore(
      resourceGroupName,
      name,
      backupId,
      request,
      options
    );
    return poller.pollUntilDone();
  }

  /**
   * Description for Returns whether Scm basic auth is allowed and whether Ftp is allowed for a given
   * site.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the app.
   * @param options The options parameters.
   */
  private _listBasicPublishingCredentialsPolicies(
    resourceGroupName: string,
    name: string,
    options?: WebAppsListBasicPublishingCredentialsPoliciesOptionalParams
  ): Promise<WebAppsListBasicPublishingCredentialsPoliciesResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, options },
      listBasicPublishingCredentialsPoliciesOperationSpec
    );
  }

  /**
   * Description for Returns whether FTP is allowed on the site or not.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the app.
   * @param options The options parameters.
   */
  getFtpAllowed(
    resourceGroupName: string,
    name: string,
    options?: WebAppsGetFtpAllowedOptionalParams
  ): Promise<WebAppsGetFtpAllowedResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, options },
      getFtpAllowedOperationSpec
    );
  }

  /**
   * Description for Updates whether FTP is allowed on the site or not.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the app.
   * @param csmPublishingAccessPoliciesEntity Publishing Credentials Policies parameters.
   * @param options The options parameters.
   */
  updateFtpAllowed(
    resourceGroupName: string,
    name: string,
    csmPublishingAccessPoliciesEntity: CsmPublishingCredentialsPoliciesEntity,
    options?: WebAppsUpdateFtpAllowedOptionalParams
  ): Promise<WebAppsUpdateFtpAllowedResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, csmPublishingAccessPoliciesEntity, options },
      updateFtpAllowedOperationSpec
    );
  }

  /**
   * Description for Returns whether Scm basic auth is allowed on the site or not.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the app.
   * @param options The options parameters.
   */
  getScmAllowed(
    resourceGroupName: string,
    name: string,
    options?: WebAppsGetScmAllowedOptionalParams
  ): Promise<WebAppsGetScmAllowedResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, options },
      getScmAllowedOperationSpec
    );
  }

  /**
   * Description for Updates whether user publishing credentials are allowed on the site or not.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the app.
   * @param csmPublishingAccessPoliciesEntity Publishing Credentials Policies parameters.
   * @param options The options parameters.
   */
  updateScmAllowed(
    resourceGroupName: string,
    name: string,
    csmPublishingAccessPoliciesEntity: CsmPublishingCredentialsPoliciesEntity,
    options?: WebAppsUpdateScmAllowedOptionalParams
  ): Promise<WebAppsUpdateScmAllowedResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, csmPublishingAccessPoliciesEntity, options },
      updateScmAllowedOperationSpec
    );
  }

  /**
   * Description for List the configurations of an app
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the app.
   * @param options The options parameters.
   */
  private _listConfigurations(
    resourceGroupName: string,
    name: string,
    options?: WebAppsListConfigurationsOptionalParams
  ): Promise<WebAppsListConfigurationsResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, options },
      listConfigurationsOperationSpec
    );
  }

  /**
   * Description for Replaces the application settings of an app.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the app.
   * @param appSettings Application settings of the app.
   * @param options The options parameters.
   */
  updateApplicationSettings(
    resourceGroupName: string,
    name: string,
    appSettings: StringDictionary,
    options?: WebAppsUpdateApplicationSettingsOptionalParams
  ): Promise<WebAppsUpdateApplicationSettingsResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, appSettings, options },
      updateApplicationSettingsOperationSpec
    );
  }

  /**
   * Description for Gets the application settings of an app.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the app.
   * @param options The options parameters.
   */
  listApplicationSettings(
    resourceGroupName: string,
    name: string,
    options?: WebAppsListApplicationSettingsOptionalParams
  ): Promise<WebAppsListApplicationSettingsResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, options },
      listApplicationSettingsOperationSpec
    );
  }

  /**
   * Description for Updates the Authentication / Authorization settings associated with web app.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of web app.
   * @param siteAuthSettings Auth settings associated with web app.
   * @param options The options parameters.
   */
  updateAuthSettings(
    resourceGroupName: string,
    name: string,
    siteAuthSettings: SiteAuthSettings,
    options?: WebAppsUpdateAuthSettingsOptionalParams
  ): Promise<WebAppsUpdateAuthSettingsResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, siteAuthSettings, options },
      updateAuthSettingsOperationSpec
    );
  }

  /**
   * Description for Gets the Authentication/Authorization settings of an app.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the app.
   * @param options The options parameters.
   */
  getAuthSettings(
    resourceGroupName: string,
    name: string,
    options?: WebAppsGetAuthSettingsOptionalParams
  ): Promise<WebAppsGetAuthSettingsResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, options },
      getAuthSettingsOperationSpec
    );
  }

  /**
   * Description for Gets site's Authentication / Authorization settings for apps via the V2 format
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the app.
   * @param options The options parameters.
   */
  getAuthSettingsV2WithoutSecrets(
    resourceGroupName: string,
    name: string,
    options?: WebAppsGetAuthSettingsV2WithoutSecretsOptionalParams
  ): Promise<WebAppsGetAuthSettingsV2WithoutSecretsResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, options },
      getAuthSettingsV2WithoutSecretsOperationSpec
    );
  }

  /**
   * Description for Updates site's Authentication / Authorization settings for apps via the V2 format
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of web app.
   * @param siteAuthSettingsV2 Auth settings associated with web app.
   * @param options The options parameters.
   */
  updateAuthSettingsV2(
    resourceGroupName: string,
    name: string,
    siteAuthSettingsV2: SiteAuthSettingsV2,
    options?: WebAppsUpdateAuthSettingsV2OptionalParams
  ): Promise<WebAppsUpdateAuthSettingsV2Response> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, siteAuthSettingsV2, options },
      updateAuthSettingsV2OperationSpec
    );
  }

  /**
   * Description for Gets site's Authentication / Authorization settings for apps via the V2 format
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the app.
   * @param options The options parameters.
   */
  getAuthSettingsV2(
    resourceGroupName: string,
    name: string,
    options?: WebAppsGetAuthSettingsV2OptionalParams
  ): Promise<WebAppsGetAuthSettingsV2Response> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, options },
      getAuthSettingsV2OperationSpec
    );
  }

  /**
   * Description for Updates the Azure storage account configurations of an app.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the app.
   * @param azureStorageAccounts Azure storage accounts of the app.
   * @param options The options parameters.
   */
  updateAzureStorageAccounts(
    resourceGroupName: string,
    name: string,
    azureStorageAccounts: AzureStoragePropertyDictionaryResource,
    options?: WebAppsUpdateAzureStorageAccountsOptionalParams
  ): Promise<WebAppsUpdateAzureStorageAccountsResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, azureStorageAccounts, options },
      updateAzureStorageAccountsOperationSpec
    );
  }

  /**
   * Description for Gets the Azure storage account configurations of an app.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the app.
   * @param options The options parameters.
   */
  listAzureStorageAccounts(
    resourceGroupName: string,
    name: string,
    options?: WebAppsListAzureStorageAccountsOptionalParams
  ): Promise<WebAppsListAzureStorageAccountsResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, options },
      listAzureStorageAccountsOperationSpec
    );
  }

  /**
   * Description for Updates the backup configuration of an app.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the app.
   * @param request Edited backup configuration.
   * @param options The options parameters.
   */
  updateBackupConfiguration(
    resourceGroupName: string,
    name: string,
    request: BackupRequest,
    options?: WebAppsUpdateBackupConfigurationOptionalParams
  ): Promise<WebAppsUpdateBackupConfigurationResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, request, options },
      updateBackupConfigurationOperationSpec
    );
  }

  /**
   * Description for Deletes the backup configuration of an app.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the app.
   * @param options The options parameters.
   */
  deleteBackupConfiguration(
    resourceGroupName: string,
    name: string,
    options?: WebAppsDeleteBackupConfigurationOptionalParams
  ): Promise<void> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, options },
      deleteBackupConfigurationOperationSpec
    );
  }

  /**
   * Description for Gets the backup configuration of an app.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the app.
   * @param options The options parameters.
   */
  getBackupConfiguration(
    resourceGroupName: string,
    name: string,
    options?: WebAppsGetBackupConfigurationOptionalParams
  ): Promise<WebAppsGetBackupConfigurationResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, options },
      getBackupConfigurationOperationSpec
    );
  }

  /**
   * Description for Gets the config reference app settings and status of an app
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the app.
   * @param options The options parameters.
   */
  private _getAppSettingsKeyVaultReferences(
    resourceGroupName: string,
    name: string,
    options?: WebAppsGetAppSettingsKeyVaultReferencesOptionalParams
  ): Promise<WebAppsGetAppSettingsKeyVaultReferencesResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, options },
      getAppSettingsKeyVaultReferencesOperationSpec
    );
  }

  /**
   * Description for Gets the config reference and status of an app
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the app.
   * @param appSettingKey App Setting key name.
   * @param options The options parameters.
   */
  getAppSettingKeyVaultReference(
    resourceGroupName: string,
    name: string,
    appSettingKey: string,
    options?: WebAppsGetAppSettingKeyVaultReferenceOptionalParams
  ): Promise<WebAppsGetAppSettingKeyVaultReferenceResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, appSettingKey, options },
      getAppSettingKeyVaultReferenceOperationSpec
    );
  }

  /**
   * Description for Gets the config reference app settings and status of an app
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the app.
   * @param options The options parameters.
   */
  private _getSiteConnectionStringKeyVaultReferences(
    resourceGroupName: string,
    name: string,
    options?: WebAppsGetSiteConnectionStringKeyVaultReferencesOptionalParams
  ): Promise<WebAppsGetSiteConnectionStringKeyVaultReferencesResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, options },
      getSiteConnectionStringKeyVaultReferencesOperationSpec
    );
  }

  /**
   * Description for Gets the config reference and status of an app
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the app.
   * @param connectionStringKey
   * @param options The options parameters.
   */
  getSiteConnectionStringKeyVaultReference(
    resourceGroupName: string,
    name: string,
    connectionStringKey: string,
    options?: WebAppsGetSiteConnectionStringKeyVaultReferenceOptionalParams
  ): Promise<WebAppsGetSiteConnectionStringKeyVaultReferenceResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, connectionStringKey, options },
      getSiteConnectionStringKeyVaultReferenceOperationSpec
    );
  }

  /**
   * Description for Replaces the connection strings of an app.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the app.
   * @param connectionStrings Connection strings of the app or deployment slot. See example.
   * @param options The options parameters.
   */
  updateConnectionStrings(
    resourceGroupName: string,
    name: string,
    connectionStrings: ConnectionStringDictionary,
    options?: WebAppsUpdateConnectionStringsOptionalParams
  ): Promise<WebAppsUpdateConnectionStringsResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, connectionStrings, options },
      updateConnectionStringsOperationSpec
    );
  }

  /**
   * Description for Gets the connection strings of an app.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the app.
   * @param options The options parameters.
   */
  listConnectionStrings(
    resourceGroupName: string,
    name: string,
    options?: WebAppsListConnectionStringsOptionalParams
  ): Promise<WebAppsListConnectionStringsResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, options },
      listConnectionStringsOperationSpec
    );
  }

  /**
   * Description for Gets the logging configuration of an app.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the app.
   * @param options The options parameters.
   */
  getDiagnosticLogsConfiguration(
    resourceGroupName: string,
    name: string,
    options?: WebAppsGetDiagnosticLogsConfigurationOptionalParams
  ): Promise<WebAppsGetDiagnosticLogsConfigurationResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, options },
      getDiagnosticLogsConfigurationOperationSpec
    );
  }

  /**
   * Description for Updates the logging configuration of an app.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the app.
   * @param siteLogsConfig A SiteLogsConfig JSON object that contains the logging configuration to change
   *                       in the "properties" property.
   * @param options The options parameters.
   */
  updateDiagnosticLogsConfig(
    resourceGroupName: string,
    name: string,
    siteLogsConfig: SiteLogsConfig,
    options?: WebAppsUpdateDiagnosticLogsConfigOptionalParams
  ): Promise<WebAppsUpdateDiagnosticLogsConfigResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, siteLogsConfig, options },
      updateDiagnosticLogsConfigOperationSpec
    );
  }

  /**
   * Description for Replaces the metadata of an app.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the app.
   * @param metadata Edited metadata of the app or deployment slot. See example.
   * @param options The options parameters.
   */
  updateMetadata(
    resourceGroupName: string,
    name: string,
    metadata: StringDictionary,
    options?: WebAppsUpdateMetadataOptionalParams
  ): Promise<WebAppsUpdateMetadataResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, metadata, options },
      updateMetadataOperationSpec
    );
  }

  /**
   * Description for Gets the metadata of an app.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the app.
   * @param options The options parameters.
   */
  listMetadata(
    resourceGroupName: string,
    name: string,
    options?: WebAppsListMetadataOptionalParams
  ): Promise<WebAppsListMetadataResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, options },
      listMetadataOperationSpec
    );
  }

  /**
   * Description for Gets the Git/FTP publishing credentials of an app.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the app.
   * @param options The options parameters.
   */
  async beginListPublishingCredentials(
    resourceGroupName: string,
    name: string,
    options?: WebAppsListPublishingCredentialsOptionalParams
  ): Promise<
    SimplePollerLike<
      OperationState<WebAppsListPublishingCredentialsResponse>,
      WebAppsListPublishingCredentialsResponse
    >
  > {
    const directSendOperation = async (
      args: coreClient.OperationArguments,
      spec: coreClient.OperationSpec
    ): Promise<WebAppsListPublishingCredentialsResponse> => {
      return this.client.sendOperationRequest(args, spec);
    };
    const sendOperationFn = async (
      args: coreClient.OperationArguments,
      spec: coreClient.OperationSpec
    ) => {
      let currentRawResponse:
        | coreClient.FullOperationResponse
        | undefined = undefined;
      const providedCallback = args.options?.onResponse;
      const callback: coreClient.RawResponseCallback = (
        rawResponse: coreClient.FullOperationResponse,
        flatResponse: unknown
      ) => {
        currentRawResponse = rawResponse;
        providedCallback?.(rawResponse, flatResponse);
      };
      const updatedArgs = {
        ...args,
        options: {
          ...args.options,
          onResponse: callback
        }
      };
      const flatResponse = await directSendOperation(updatedArgs, spec);
      return {
        flatResponse,
        rawResponse: {
          statusCode: currentRawResponse!.status,
          body: currentRawResponse!.parsedBody,
          headers: currentRawResponse!.headers.toJSON()
        }
      };
    };

    const lro = createLroSpec({
      sendOperationFn,
      args: { resourceGroupName, name, options },
      spec: listPublishingCredentialsOperationSpec
    });
    const poller = await createHttpPoller<
      WebAppsListPublishingCredentialsResponse,
      OperationState<WebAppsListPublishingCredentialsResponse>
    >(lro, {
      restoreFrom: options?.resumeFrom,
      intervalInMs: options?.updateIntervalInMs
    });
    await poller.poll();
    return poller;
  }

  /**
   * Description for Gets the Git/FTP publishing credentials of an app.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the app.
   * @param options The options parameters.
   */
  async beginListPublishingCredentialsAndWait(
    resourceGroupName: string,
    name: string,
    options?: WebAppsListPublishingCredentialsOptionalParams
  ): Promise<WebAppsListPublishingCredentialsResponse> {
    const poller = await this.beginListPublishingCredentials(
      resourceGroupName,
      name,
      options
    );
    return poller.pollUntilDone();
  }

  /**
   * Description for Updates the Push settings associated with web app.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of web app.
   * @param pushSettings Push settings associated with web app.
   * @param options The options parameters.
   */
  updateSitePushSettings(
    resourceGroupName: string,
    name: string,
    pushSettings: PushSettings,
    options?: WebAppsUpdateSitePushSettingsOptionalParams
  ): Promise<WebAppsUpdateSitePushSettingsResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, pushSettings, options },
      updateSitePushSettingsOperationSpec
    );
  }

  /**
   * Description for Gets the Push settings associated with web app.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of web app.
   * @param options The options parameters.
   */
  listSitePushSettings(
    resourceGroupName: string,
    name: string,
    options?: WebAppsListSitePushSettingsOptionalParams
  ): Promise<WebAppsListSitePushSettingsResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, options },
      listSitePushSettingsOperationSpec
    );
  }

  /**
   * Description for Gets the names of app settings and connection strings that stick to the slot (not
   * swapped).
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the app.
   * @param options The options parameters.
   */
  listSlotConfigurationNames(
    resourceGroupName: string,
    name: string,
    options?: WebAppsListSlotConfigurationNamesOptionalParams
  ): Promise<WebAppsListSlotConfigurationNamesResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, options },
      listSlotConfigurationNamesOperationSpec
    );
  }

  /**
   * Description for Updates the names of application settings and connection string that remain with the
   * slot during swap operation.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the app.
   * @param slotConfigNames Names of application settings and connection strings. See example.
   * @param options The options parameters.
   */
  updateSlotConfigurationNames(
    resourceGroupName: string,
    name: string,
    slotConfigNames: SlotConfigNamesResource,
    options?: WebAppsUpdateSlotConfigurationNamesOptionalParams
  ): Promise<WebAppsUpdateSlotConfigurationNamesResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, slotConfigNames, options },
      updateSlotConfigurationNamesOperationSpec
    );
  }

  /**
   * Description for Gets the configuration of an app, such as platform version and bitness, default
   * documents, virtual applications, Always On, etc.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the app.
   * @param options The options parameters.
   */
  getConfiguration(
    resourceGroupName: string,
    name: string,
    options?: WebAppsGetConfigurationOptionalParams
  ): Promise<WebAppsGetConfigurationResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, options },
      getConfigurationOperationSpec
    );
  }

  /**
   * Description for Updates the configuration of an app.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the app.
   * @param siteConfig JSON representation of a SiteConfig object. See example.
   * @param options The options parameters.
   */
  createOrUpdateConfiguration(
    resourceGroupName: string,
    name: string,
    siteConfig: SiteConfigResource,
    options?: WebAppsCreateOrUpdateConfigurationOptionalParams
  ): Promise<WebAppsCreateOrUpdateConfigurationResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, siteConfig, options },
      createOrUpdateConfigurationOperationSpec
    );
  }

  /**
   * Description for Updates the configuration of an app.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the app.
   * @param siteConfig JSON representation of a SiteConfig object. See example.
   * @param options The options parameters.
   */
  updateConfiguration(
    resourceGroupName: string,
    name: string,
    siteConfig: SiteConfigResource,
    options?: WebAppsUpdateConfigurationOptionalParams
  ): Promise<WebAppsUpdateConfigurationResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, siteConfig, options },
      updateConfigurationOperationSpec
    );
  }

  /**
   * Description for Gets a list of web app configuration snapshots identifiers. Each element of the list
   * contains a timestamp and the ID of the snapshot.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the app.
   * @param options The options parameters.
   */
  private _listConfigurationSnapshotInfo(
    resourceGroupName: string,
    name: string,
    options?: WebAppsListConfigurationSnapshotInfoOptionalParams
  ): Promise<WebAppsListConfigurationSnapshotInfoResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, options },
      listConfigurationSnapshotInfoOperationSpec
    );
  }

  /**
   * Description for Gets a snapshot of the configuration of an app at a previous point in time.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the app.
   * @param snapshotId The ID of the snapshot to read.
   * @param options The options parameters.
   */
  getConfigurationSnapshot(
    resourceGroupName: string,
    name: string,
    snapshotId: string,
    options?: WebAppsGetConfigurationSnapshotOptionalParams
  ): Promise<WebAppsGetConfigurationSnapshotResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, snapshotId, options },
      getConfigurationSnapshotOperationSpec
    );
  }

  /**
   * Description for Reverts the configuration of an app to a previous snapshot.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the app.
   * @param snapshotId The ID of the snapshot to read.
   * @param options The options parameters.
   */
  recoverSiteConfigurationSnapshot(
    resourceGroupName: string,
    name: string,
    snapshotId: string,
    options?: WebAppsRecoverSiteConfigurationSnapshotOptionalParams
  ): Promise<void> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, snapshotId, options },
      recoverSiteConfigurationSnapshotOperationSpec
    );
  }

  /**
   * Description for Gets the last lines of docker logs for the given site
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of web app.
   * @param options The options parameters.
   */
  getWebSiteContainerLogs(
    resourceGroupName: string,
    name: string,
    options?: WebAppsGetWebSiteContainerLogsOptionalParams
  ): Promise<WebAppsGetWebSiteContainerLogsResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, options },
      getWebSiteContainerLogsOperationSpec
    );
  }

  /**
   * Description for Gets the ZIP archived docker log files for the given site
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of web app.
   * @param options The options parameters.
   */
  getContainerLogsZip(
    resourceGroupName: string,
    name: string,
    options?: WebAppsGetContainerLogsZipOptionalParams
  ): Promise<WebAppsGetContainerLogsZipResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, options },
      getContainerLogsZipOperationSpec
    );
  }

  /**
   * Description for List continuous web jobs for an app, or a deployment slot.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Site name.
   * @param options The options parameters.
   */
  private _listContinuousWebJobs(
    resourceGroupName: string,
    name: string,
    options?: WebAppsListContinuousWebJobsOptionalParams
  ): Promise<WebAppsListContinuousWebJobsResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, options },
      listContinuousWebJobsOperationSpec
    );
  }

  /**
   * Description for Gets a continuous web job by its ID for an app, or a deployment slot.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Site name.
   * @param webJobName Name of Web Job.
   * @param options The options parameters.
   */
  getContinuousWebJob(
    resourceGroupName: string,
    name: string,
    webJobName: string,
    options?: WebAppsGetContinuousWebJobOptionalParams
  ): Promise<WebAppsGetContinuousWebJobResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, webJobName, options },
      getContinuousWebJobOperationSpec
    );
  }

  /**
   * Description for Delete a continuous web job by its ID for an app, or a deployment slot.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Site name.
   * @param webJobName Name of Web Job.
   * @param options The options parameters.
   */
  deleteContinuousWebJob(
    resourceGroupName: string,
    name: string,
    webJobName: string,
    options?: WebAppsDeleteContinuousWebJobOptionalParams
  ): Promise<void> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, webJobName, options },
      deleteContinuousWebJobOperationSpec
    );
  }

  /**
   * Description for Start a continuous web job for an app, or a deployment slot.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Site name.
   * @param webJobName Name of Web Job.
   * @param options The options parameters.
   */
  startContinuousWebJob(
    resourceGroupName: string,
    name: string,
    webJobName: string,
    options?: WebAppsStartContinuousWebJobOptionalParams
  ): Promise<void> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, webJobName, options },
      startContinuousWebJobOperationSpec
    );
  }

  /**
   * Description for Stop a continuous web job for an app, or a deployment slot.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Site name.
   * @param webJobName Name of Web Job.
   * @param options The options parameters.
   */
  stopContinuousWebJob(
    resourceGroupName: string,
    name: string,
    webJobName: string,
    options?: WebAppsStopContinuousWebJobOptionalParams
  ): Promise<void> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, webJobName, options },
      stopContinuousWebJobOperationSpec
    );
  }

  /**
   * List deployment statuses for an app (or deployment slot, if specified).
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the app.
   * @param options The options parameters.
   */
  private _listProductionSiteDeploymentStatuses(
    resourceGroupName: string,
    name: string,
    options?: WebAppsListProductionSiteDeploymentStatusesOptionalParams
  ): Promise<WebAppsListProductionSiteDeploymentStatusesResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, options },
      listProductionSiteDeploymentStatusesOperationSpec
    );
  }

  /**
   * Gets the deployment status for an app (or deployment slot, if specified).
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the app.
   * @param deploymentStatusId GUID of the deployment operation.
   * @param options The options parameters.
   */
  async beginGetProductionSiteDeploymentStatus(
    resourceGroupName: string,
    name: string,
    deploymentStatusId: string,
    options?: WebAppsGetProductionSiteDeploymentStatusOptionalParams
  ): Promise<
    SimplePollerLike<
      OperationState<WebAppsGetProductionSiteDeploymentStatusResponse>,
      WebAppsGetProductionSiteDeploymentStatusResponse
    >
  > {
    const directSendOperation = async (
      args: coreClient.OperationArguments,
      spec: coreClient.OperationSpec
    ): Promise<WebAppsGetProductionSiteDeploymentStatusResponse> => {
      return this.client.sendOperationRequest(args, spec);
    };
    const sendOperationFn = async (
      args: coreClient.OperationArguments,
      spec: coreClient.OperationSpec
    ) => {
      let currentRawResponse:
        | coreClient.FullOperationResponse
        | undefined = undefined;
      const providedCallback = args.options?.onResponse;
      const callback: coreClient.RawResponseCallback = (
        rawResponse: coreClient.FullOperationResponse,
        flatResponse: unknown
      ) => {
        currentRawResponse = rawResponse;
        providedCallback?.(rawResponse, flatResponse);
      };
      const updatedArgs = {
        ...args,
        options: {
          ...args.options,
          onResponse: callback
        }
      };
      const flatResponse = await directSendOperation(updatedArgs, spec);
      return {
        flatResponse,
        rawResponse: {
          statusCode: currentRawResponse!.status,
          body: currentRawResponse!.parsedBody,
          headers: currentRawResponse!.headers.toJSON()
        }
      };
    };

    const lro = createLroSpec({
      sendOperationFn,
      args: { resourceGroupName, name, deploymentStatusId, options },
      spec: getProductionSiteDeploymentStatusOperationSpec
    });
    const poller = await createHttpPoller<
      WebAppsGetProductionSiteDeploymentStatusResponse,
      OperationState<WebAppsGetProductionSiteDeploymentStatusResponse>
    >(lro, {
      restoreFrom: options?.resumeFrom,
      intervalInMs: options?.updateIntervalInMs
    });
    await poller.poll();
    return poller;
  }

  /**
   * Gets the deployment status for an app (or deployment slot, if specified).
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the app.
   * @param deploymentStatusId GUID of the deployment operation.
   * @param options The options parameters.
   */
  async beginGetProductionSiteDeploymentStatusAndWait(
    resourceGroupName: string,
    name: string,
    deploymentStatusId: string,
    options?: WebAppsGetProductionSiteDeploymentStatusOptionalParams
  ): Promise<WebAppsGetProductionSiteDeploymentStatusResponse> {
    const poller = await this.beginGetProductionSiteDeploymentStatus(
      resourceGroupName,
      name,
      deploymentStatusId,
      options
    );
    return poller.pollUntilDone();
  }

  /**
   * Description for List deployments for an app, or a deployment slot.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the app.
   * @param options The options parameters.
   */
  private _listDeployments(
    resourceGroupName: string,
    name: string,
    options?: WebAppsListDeploymentsOptionalParams
  ): Promise<WebAppsListDeploymentsResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, options },
      listDeploymentsOperationSpec
    );
  }

  /**
   * Description for Get a deployment by its ID for an app, or a deployment slot.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the app.
   * @param id Deployment ID.
   * @param options The options parameters.
   */
  getDeployment(
    resourceGroupName: string,
    name: string,
    id: string,
    options?: WebAppsGetDeploymentOptionalParams
  ): Promise<WebAppsGetDeploymentResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, id, options },
      getDeploymentOperationSpec
    );
  }

  /**
   * Description for Create a deployment for an app, or a deployment slot.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the app.
   * @param id ID of an existing deployment.
   * @param deployment Deployment details.
   * @param options The options parameters.
   */
  createDeployment(
    resourceGroupName: string,
    name: string,
    id: string,
    deployment: Deployment,
    options?: WebAppsCreateDeploymentOptionalParams
  ): Promise<WebAppsCreateDeploymentResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, id, deployment, options },
      createDeploymentOperationSpec
    );
  }

  /**
   * Description for Delete a deployment by its ID for an app, or a deployment slot.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the app.
   * @param id Deployment ID.
   * @param options The options parameters.
   */
  deleteDeployment(
    resourceGroupName: string,
    name: string,
    id: string,
    options?: WebAppsDeleteDeploymentOptionalParams
  ): Promise<void> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, id, options },
      deleteDeploymentOperationSpec
    );
  }

  /**
   * Description for List deployment log for specific deployment for an app, or a deployment slot.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the app.
   * @param id The ID of a specific deployment. This is the value of the name property in the JSON
   *           response from "GET /api/sites/{siteName}/deployments".
   * @param options The options parameters.
   */
  listDeploymentLog(
    resourceGroupName: string,
    name: string,
    id: string,
    options?: WebAppsListDeploymentLogOptionalParams
  ): Promise<WebAppsListDeploymentLogResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, id, options },
      listDeploymentLogOperationSpec
    );
  }

  /**
   * Description for Discovers an existing app backup that can be restored from a blob in Azure storage.
   * Use this to get information about the databases stored in a backup.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the app.
   * @param request A RestoreRequest object that includes Azure storage URL and blog name for discovery
   *                of backup.
   * @param options The options parameters.
   */
  discoverBackup(
    resourceGroupName: string,
    name: string,
    request: RestoreRequest,
    options?: WebAppsDiscoverBackupOptionalParams
  ): Promise<WebAppsDiscoverBackupResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, request, options },
      discoverBackupOperationSpec
    );
  }

  /**
   * Description for Lists ownership identifiers for domain associated with web app.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the app.
   * @param options The options parameters.
   */
  private _listDomainOwnershipIdentifiers(
    resourceGroupName: string,
    name: string,
    options?: WebAppsListDomainOwnershipIdentifiersOptionalParams
  ): Promise<WebAppsListDomainOwnershipIdentifiersResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, options },
      listDomainOwnershipIdentifiersOperationSpec
    );
  }

  /**
   * Description for Get domain ownership identifier for web app.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the app.
   * @param domainOwnershipIdentifierName Name of domain ownership identifier.
   * @param options The options parameters.
   */
  getDomainOwnershipIdentifier(
    resourceGroupName: string,
    name: string,
    domainOwnershipIdentifierName: string,
    options?: WebAppsGetDomainOwnershipIdentifierOptionalParams
  ): Promise<WebAppsGetDomainOwnershipIdentifierResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, domainOwnershipIdentifierName, options },
      getDomainOwnershipIdentifierOperationSpec
    );
  }

  /**
   * Description for Creates a domain ownership identifier for web app, or updates an existing ownership
   * identifier.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the app.
   * @param domainOwnershipIdentifierName Name of domain ownership identifier.
   * @param domainOwnershipIdentifier A JSON representation of the domain ownership properties.
   * @param options The options parameters.
   */
  createOrUpdateDomainOwnershipIdentifier(
    resourceGroupName: string,
    name: string,
    domainOwnershipIdentifierName: string,
    domainOwnershipIdentifier: Identifier,
    options?: WebAppsCreateOrUpdateDomainOwnershipIdentifierOptionalParams
  ): Promise<WebAppsCreateOrUpdateDomainOwnershipIdentifierResponse> {
    return this.client.sendOperationRequest(
      {
        resourceGroupName,
        name,
        domainOwnershipIdentifierName,
        domainOwnershipIdentifier,
        options
      },
      createOrUpdateDomainOwnershipIdentifierOperationSpec
    );
  }

  /**
   * Description for Deletes a domain ownership identifier for a web app.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the app.
   * @param domainOwnershipIdentifierName Name of domain ownership identifier.
   * @param options The options parameters.
   */
  deleteDomainOwnershipIdentifier(
    resourceGroupName: string,
    name: string,
    domainOwnershipIdentifierName: string,
    options?: WebAppsDeleteDomainOwnershipIdentifierOptionalParams
  ): Promise<void> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, domainOwnershipIdentifierName, options },
      deleteDomainOwnershipIdentifierOperationSpec
    );
  }

  /**
   * Description for Creates a domain ownership identifier for web app, or updates an existing ownership
   * identifier.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the app.
   * @param domainOwnershipIdentifierName Name of domain ownership identifier.
   * @param domainOwnershipIdentifier A JSON representation of the domain ownership properties.
   * @param options The options parameters.
   */
  updateDomainOwnershipIdentifier(
    resourceGroupName: string,
    name: string,
    domainOwnershipIdentifierName: string,
    domainOwnershipIdentifier: Identifier,
    options?: WebAppsUpdateDomainOwnershipIdentifierOptionalParams
  ): Promise<WebAppsUpdateDomainOwnershipIdentifierResponse> {
    return this.client.sendOperationRequest(
      {
        resourceGroupName,
        name,
        domainOwnershipIdentifierName,
        domainOwnershipIdentifier,
        options
      },
      updateDomainOwnershipIdentifierOperationSpec
    );
  }

  /**
   * Description for Get the status of the last MSDeploy operation.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of web app.
   * @param options The options parameters.
   */
  getMSDeployStatus(
    resourceGroupName: string,
    name: string,
    options?: WebAppsGetMSDeployStatusOptionalParams
  ): Promise<WebAppsGetMSDeployStatusResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, options },
      getMSDeployStatusOperationSpec
    );
  }

  /**
   * Description for Invoke the MSDeploy web app extension.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of web app.
   * @param mSDeploy Details of MSDeploy operation
   * @param options The options parameters.
   */
  async beginCreateMSDeployOperation(
    resourceGroupName: string,
    name: string,
    mSDeploy: MSDeploy,
    options?: WebAppsCreateMSDeployOperationOptionalParams
  ): Promise<
    SimplePollerLike<
      OperationState<WebAppsCreateMSDeployOperationResponse>,
      WebAppsCreateMSDeployOperationResponse
    >
  > {
    const directSendOperation = async (
      args: coreClient.OperationArguments,
      spec: coreClient.OperationSpec
    ): Promise<WebAppsCreateMSDeployOperationResponse> => {
      return this.client.sendOperationRequest(args, spec);
    };
    const sendOperationFn = async (
      args: coreClient.OperationArguments,
      spec: coreClient.OperationSpec
    ) => {
      let currentRawResponse:
        | coreClient.FullOperationResponse
        | undefined = undefined;
      const providedCallback = args.options?.onResponse;
      const callback: coreClient.RawResponseCallback = (
        rawResponse: coreClient.FullOperationResponse,
        flatResponse: unknown
      ) => {
        currentRawResponse = rawResponse;
        providedCallback?.(rawResponse, flatResponse);
      };
      const updatedArgs = {
        ...args,
        options: {
          ...args.options,
          onResponse: callback
        }
      };
      const flatResponse = await directSendOperation(updatedArgs, spec);
      return {
        flatResponse,
        rawResponse: {
          statusCode: currentRawResponse!.status,
          body: currentRawResponse!.parsedBody,
          headers: currentRawResponse!.headers.toJSON()
        }
      };
    };

    const lro = createLroSpec({
      sendOperationFn,
      args: { resourceGroupName, name, mSDeploy, options },
      spec: createMSDeployOperationOperationSpec
    });
    const poller = await createHttpPoller<
      WebAppsCreateMSDeployOperationResponse,
      OperationState<WebAppsCreateMSDeployOperationResponse>
    >(lro, {
      restoreFrom: options?.resumeFrom,
      intervalInMs: options?.updateIntervalInMs
    });
    await poller.poll();
    return poller;
  }

  /**
   * Description for Invoke the MSDeploy web app extension.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of web app.
   * @param mSDeploy Details of MSDeploy operation
   * @param options The options parameters.
   */
  async beginCreateMSDeployOperationAndWait(
    resourceGroupName: string,
    name: string,
    mSDeploy: MSDeploy,
    options?: WebAppsCreateMSDeployOperationOptionalParams
  ): Promise<WebAppsCreateMSDeployOperationResponse> {
    const poller = await this.beginCreateMSDeployOperation(
      resourceGroupName,
      name,
      mSDeploy,
      options
    );
    return poller.pollUntilDone();
  }

  /**
   * Description for Get the MSDeploy Log for the last MSDeploy operation.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of web app.
   * @param options The options parameters.
   */
  getMSDeployLog(
    resourceGroupName: string,
    name: string,
    options?: WebAppsGetMSDeployLogOptionalParams
  ): Promise<WebAppsGetMSDeployLogResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, options },
      getMSDeployLogOperationSpec
    );
  }

  /**
   * Description for Invoke onedeploy status API /api/deployments and gets the deployment status for the
   * site
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of web app.
   * @param options The options parameters.
   */
  getOneDeployStatus(
    resourceGroupName: string,
    name: string,
    options?: WebAppsGetOneDeployStatusOptionalParams
  ): Promise<WebAppsGetOneDeployStatusResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, options },
      getOneDeployStatusOperationSpec
    );
  }

  /**
   * Description for Invoke the OneDeploy publish web app extension.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of web app.
   * @param options The options parameters.
   */
  createOneDeployOperation(
    resourceGroupName: string,
    name: string,
    options?: WebAppsCreateOneDeployOperationOptionalParams
  ): Promise<WebAppsCreateOneDeployOperationResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, options },
      createOneDeployOperationOperationSpec
    );
  }

  /**
   * Description for List the functions for a web site, or a deployment slot.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Site name.
   * @param options The options parameters.
   */
  private _listFunctions(
    resourceGroupName: string,
    name: string,
    options?: WebAppsListFunctionsOptionalParams
  ): Promise<WebAppsListFunctionsResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, options },
      listFunctionsOperationSpec
    );
  }

  /**
   * Description for Fetch a short lived token that can be exchanged for a master key.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of web app.
   * @param options The options parameters.
   */
  getFunctionsAdminToken(
    resourceGroupName: string,
    name: string,
    options?: WebAppsGetFunctionsAdminTokenOptionalParams
  ): Promise<WebAppsGetFunctionsAdminTokenResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, options },
      getFunctionsAdminTokenOperationSpec
    );
  }

  /**
   * Description for Get function information by its ID for web site, or a deployment slot.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Site name.
   * @param functionName Function name.
   * @param options The options parameters.
   */
  getFunction(
    resourceGroupName: string,
    name: string,
    functionName: string,
    options?: WebAppsGetFunctionOptionalParams
  ): Promise<WebAppsGetFunctionResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, functionName, options },
      getFunctionOperationSpec
    );
  }

  /**
   * Description for Create function for web site, or a deployment slot.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Site name.
   * @param functionName Function name.
   * @param functionEnvelope Function details.
   * @param options The options parameters.
   */
  async beginCreateFunction(
    resourceGroupName: string,
    name: string,
    functionName: string,
    functionEnvelope: FunctionEnvelope,
    options?: WebAppsCreateFunctionOptionalParams
  ): Promise<
    SimplePollerLike<
      OperationState<WebAppsCreateFunctionResponse>,
      WebAppsCreateFunctionResponse
    >
  > {
    const directSendOperation = async (
      args: coreClient.OperationArguments,
      spec: coreClient.OperationSpec
    ): Promise<WebAppsCreateFunctionResponse> => {
      return this.client.sendOperationRequest(args, spec);
    };
    const sendOperationFn = async (
      args: coreClient.OperationArguments,
      spec: coreClient.OperationSpec
    ) => {
      let currentRawResponse:
        | coreClient.FullOperationResponse
        | undefined = undefined;
      const providedCallback = args.options?.onResponse;
      const callback: coreClient.RawResponseCallback = (
        rawResponse: coreClient.FullOperationResponse,
        flatResponse: unknown
      ) => {
        currentRawResponse = rawResponse;
        providedCallback?.(rawResponse, flatResponse);
      };
      const updatedArgs = {
        ...args,
        options: {
          ...args.options,
          onResponse: callback
        }
      };
      const flatResponse = await directSendOperation(updatedArgs, spec);
      return {
        flatResponse,
        rawResponse: {
          statusCode: currentRawResponse!.status,
          body: currentRawResponse!.parsedBody,
          headers: currentRawResponse!.headers.toJSON()
        }
      };
    };

    const lro = createLroSpec({
      sendOperationFn,
      args: {
        resourceGroupName,
        name,
        functionName,
        functionEnvelope,
        options
      },
      spec: createFunctionOperationSpec
    });
    const poller = await createHttpPoller<
      WebAppsCreateFunctionResponse,
      OperationState<WebAppsCreateFunctionResponse>
    >(lro, {
      restoreFrom: options?.resumeFrom,
      intervalInMs: options?.updateIntervalInMs
    });
    await poller.poll();
    return poller;
  }

  /**
   * Description for Create function for web site, or a deployment slot.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Site name.
   * @param functionName Function name.
   * @param functionEnvelope Function details.
   * @param options The options parameters.
   */
  async beginCreateFunctionAndWait(
    resourceGroupName: string,
    name: string,
    functionName: string,
    functionEnvelope: FunctionEnvelope,
    options?: WebAppsCreateFunctionOptionalParams
  ): Promise<WebAppsCreateFunctionResponse> {
    const poller = await this.beginCreateFunction(
      resourceGroupName,
      name,
      functionName,
      functionEnvelope,
      options
    );
    return poller.pollUntilDone();
  }

  /**
   * Description for Delete a function for web site, or a deployment slot.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Site name.
   * @param functionName Function name.
   * @param options The options parameters.
   */
  deleteFunction(
    resourceGroupName: string,
    name: string,
    functionName: string,
    options?: WebAppsDeleteFunctionOptionalParams
  ): Promise<void> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, functionName, options },
      deleteFunctionOperationSpec
    );
  }

  /**
   * Description for Add or update a function secret.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Site name.
   * @param functionName The name of the function.
   * @param keyName The name of the key.
   * @param key The key to create or update
   * @param options The options parameters.
   */
  createOrUpdateFunctionSecret(
    resourceGroupName: string,
    name: string,
    functionName: string,
    keyName: string,
    key: KeyInfo,
    options?: WebAppsCreateOrUpdateFunctionSecretOptionalParams
  ): Promise<WebAppsCreateOrUpdateFunctionSecretResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, functionName, keyName, key, options },
      createOrUpdateFunctionSecretOperationSpec
    );
  }

  /**
   * Description for Delete a function secret.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Site name.
   * @param functionName The name of the function.
   * @param keyName The name of the key.
   * @param options The options parameters.
   */
  deleteFunctionSecret(
    resourceGroupName: string,
    name: string,
    functionName: string,
    keyName: string,
    options?: WebAppsDeleteFunctionSecretOptionalParams
  ): Promise<void> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, functionName, keyName, options },
      deleteFunctionSecretOperationSpec
    );
  }

  /**
   * Description for Get function keys for a function in a web site, or a deployment slot.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Site name.
   * @param functionName Function name.
   * @param options The options parameters.
   */
  listFunctionKeys(
    resourceGroupName: string,
    name: string,
    functionName: string,
    options?: WebAppsListFunctionKeysOptionalParams
  ): Promise<WebAppsListFunctionKeysResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, functionName, options },
      listFunctionKeysOperationSpec
    );
  }

  /**
   * Description for Get function secrets for a function in a web site, or a deployment slot.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Site name.
   * @param functionName Function name.
   * @param options The options parameters.
   */
  listFunctionSecrets(
    resourceGroupName: string,
    name: string,
    functionName: string,
    options?: WebAppsListFunctionSecretsOptionalParams
  ): Promise<WebAppsListFunctionSecretsResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, functionName, options },
      listFunctionSecretsOperationSpec
    );
  }

  /**
   * Description for Get host secrets for a function app.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Site name.
   * @param options The options parameters.
   */
  listHostKeys(
    resourceGroupName: string,
    name: string,
    options?: WebAppsListHostKeysOptionalParams
  ): Promise<WebAppsListHostKeysResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, options },
      listHostKeysOperationSpec
    );
  }

  /**
   * Description for This is to allow calling via powershell and ARM template.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the app.
   * @param options The options parameters.
   */
  listSyncStatus(
    resourceGroupName: string,
    name: string,
    options?: WebAppsListSyncStatusOptionalParams
  ): Promise<void> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, options },
      listSyncStatusOperationSpec
    );
  }

  /**
   * Description for Syncs function trigger metadata to the management database
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the app.
   * @param options The options parameters.
   */
  syncFunctions(
    resourceGroupName: string,
    name: string,
    options?: WebAppsSyncFunctionsOptionalParams
  ): Promise<void> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, options },
      syncFunctionsOperationSpec
    );
  }

  /**
   * Description for Add or update a host level secret.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Site name.
   * @param keyType The type of host key.
   * @param keyName The name of the key.
   * @param key The key to create or update
   * @param options The options parameters.
   */
  createOrUpdateHostSecret(
    resourceGroupName: string,
    name: string,
    keyType: string,
    keyName: string,
    key: KeyInfo,
    options?: WebAppsCreateOrUpdateHostSecretOptionalParams
  ): Promise<WebAppsCreateOrUpdateHostSecretResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, keyType, keyName, key, options },
      createOrUpdateHostSecretOperationSpec
    );
  }

  /**
   * Description for Delete a host level secret.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Site name.
   * @param keyType The type of host key.
   * @param keyName The name of the key.
   * @param options The options parameters.
   */
  deleteHostSecret(
    resourceGroupName: string,
    name: string,
    keyType: string,
    keyName: string,
    options?: WebAppsDeleteHostSecretOptionalParams
  ): Promise<void> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, keyType, keyName, options },
      deleteHostSecretOperationSpec
    );
  }

  /**
   * Description for Get hostname bindings for an app or a deployment slot.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the app.
   * @param options The options parameters.
   */
  private _listHostNameBindings(
    resourceGroupName: string,
    name: string,
    options?: WebAppsListHostNameBindingsOptionalParams
  ): Promise<WebAppsListHostNameBindingsResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, options },
      listHostNameBindingsOperationSpec
    );
  }

  /**
   * Description for Get the named hostname binding for an app (or deployment slot, if specified).
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the app.
   * @param hostName Hostname in the hostname binding.
   * @param options The options parameters.
   */
  getHostNameBinding(
    resourceGroupName: string,
    name: string,
    hostName: string,
    options?: WebAppsGetHostNameBindingOptionalParams
  ): Promise<WebAppsGetHostNameBindingResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, hostName, options },
      getHostNameBindingOperationSpec
    );
  }

  /**
   * Description for Creates a hostname binding for an app.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the app.
   * @param hostName Hostname in the hostname binding.
   * @param hostNameBinding Binding details. This is the JSON representation of a HostNameBinding object.
   * @param options The options parameters.
   */
  createOrUpdateHostNameBinding(
    resourceGroupName: string,
    name: string,
    hostName: string,
    hostNameBinding: HostNameBinding,
    options?: WebAppsCreateOrUpdateHostNameBindingOptionalParams
  ): Promise<WebAppsCreateOrUpdateHostNameBindingResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, hostName, hostNameBinding, options },
      createOrUpdateHostNameBindingOperationSpec
    );
  }

  /**
   * Description for Deletes a hostname binding for an app.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the app.
   * @param hostName Hostname in the hostname binding.
   * @param options The options parameters.
   */
  deleteHostNameBinding(
    resourceGroupName: string,
    name: string,
    hostName: string,
    options?: WebAppsDeleteHostNameBindingOptionalParams
  ): Promise<void> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, hostName, options },
      deleteHostNameBindingOperationSpec
    );
  }

  /**
   * Description for Retrieves a specific Service Bus Hybrid Connection used by this Web App.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name The name of the web app.
   * @param namespaceName The namespace for this hybrid connection.
   * @param relayName The relay name for this hybrid connection.
   * @param options The options parameters.
   */
  getHybridConnection(
    resourceGroupName: string,
    name: string,
    namespaceName: string,
    relayName: string,
    options?: WebAppsGetHybridConnectionOptionalParams
  ): Promise<WebAppsGetHybridConnectionResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, namespaceName, relayName, options },
      getHybridConnectionOperationSpec
    );
  }

  /**
   * Description for Creates a new Hybrid Connection using a Service Bus relay.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name The name of the web app.
   * @param namespaceName The namespace for this hybrid connection.
   * @param relayName The relay name for this hybrid connection.
   * @param connectionEnvelope The details of the hybrid connection.
   * @param options The options parameters.
   */
  createOrUpdateHybridConnection(
    resourceGroupName: string,
    name: string,
    namespaceName: string,
    relayName: string,
    connectionEnvelope: HybridConnection,
    options?: WebAppsCreateOrUpdateHybridConnectionOptionalParams
  ): Promise<WebAppsCreateOrUpdateHybridConnectionResponse> {
    return this.client.sendOperationRequest(
      {
        resourceGroupName,
        name,
        namespaceName,
        relayName,
        connectionEnvelope,
        options
      },
      createOrUpdateHybridConnectionOperationSpec
    );
  }

  /**
   * Description for Removes a Hybrid Connection from this site.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name The name of the web app.
   * @param namespaceName The namespace for this hybrid connection.
   * @param relayName The relay name for this hybrid connection.
   * @param options The options parameters.
   */
  deleteHybridConnection(
    resourceGroupName: string,
    name: string,
    namespaceName: string,
    relayName: string,
    options?: WebAppsDeleteHybridConnectionOptionalParams
  ): Promise<void> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, namespaceName, relayName, options },
      deleteHybridConnectionOperationSpec
    );
  }

  /**
   * Description for Creates a new Hybrid Connection using a Service Bus relay.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name The name of the web app.
   * @param namespaceName The namespace for this hybrid connection.
   * @param relayName The relay name for this hybrid connection.
   * @param connectionEnvelope The details of the hybrid connection.
   * @param options The options parameters.
   */
  updateHybridConnection(
    resourceGroupName: string,
    name: string,
    namespaceName: string,
    relayName: string,
    connectionEnvelope: HybridConnection,
    options?: WebAppsUpdateHybridConnectionOptionalParams
  ): Promise<WebAppsUpdateHybridConnectionResponse> {
    return this.client.sendOperationRequest(
      {
        resourceGroupName,
        name,
        namespaceName,
        relayName,
        connectionEnvelope,
        options
      },
      updateHybridConnectionOperationSpec
    );
  }

  /**
   * Description for Retrieves all Service Bus Hybrid Connections used by this Web App.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name The name of the web app.
   * @param options The options parameters.
   */
  listHybridConnections(
    resourceGroupName: string,
    name: string,
    options?: WebAppsListHybridConnectionsOptionalParams
  ): Promise<WebAppsListHybridConnectionsResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, options },
      listHybridConnectionsOperationSpec
    );
  }

  /**
   * Description for Gets hybrid connections configured for an app (or deployment slot, if specified).
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the app.
   * @param options The options parameters.
   */
  listRelayServiceConnections(
    resourceGroupName: string,
    name: string,
    options?: WebAppsListRelayServiceConnectionsOptionalParams
  ): Promise<WebAppsListRelayServiceConnectionsResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, options },
      listRelayServiceConnectionsOperationSpec
    );
  }

  /**
   * Description for Gets a hybrid connection configuration by its name.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the app.
   * @param entityName Name of the hybrid connection.
   * @param options The options parameters.
   */
  getRelayServiceConnection(
    resourceGroupName: string,
    name: string,
    entityName: string,
    options?: WebAppsGetRelayServiceConnectionOptionalParams
  ): Promise<WebAppsGetRelayServiceConnectionResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, entityName, options },
      getRelayServiceConnectionOperationSpec
    );
  }

  /**
   * Description for Creates a new hybrid connection configuration (PUT), or updates an existing one
   * (PATCH).
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the app.
   * @param entityName Name of the hybrid connection configuration.
   * @param connectionEnvelope Details of the hybrid connection configuration.
   * @param options The options parameters.
   */
  createOrUpdateRelayServiceConnection(
    resourceGroupName: string,
    name: string,
    entityName: string,
    connectionEnvelope: RelayServiceConnectionEntity,
    options?: WebAppsCreateOrUpdateRelayServiceConnectionOptionalParams
  ): Promise<WebAppsCreateOrUpdateRelayServiceConnectionResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, entityName, connectionEnvelope, options },
      createOrUpdateRelayServiceConnectionOperationSpec
    );
  }

  /**
   * Description for Deletes a relay service connection by its name.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the app.
   * @param entityName Name of the hybrid connection configuration.
   * @param options The options parameters.
   */
  deleteRelayServiceConnection(
    resourceGroupName: string,
    name: string,
    entityName: string,
    options?: WebAppsDeleteRelayServiceConnectionOptionalParams
  ): Promise<void> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, entityName, options },
      deleteRelayServiceConnectionOperationSpec
    );
  }

  /**
   * Description for Creates a new hybrid connection configuration (PUT), or updates an existing one
   * (PATCH).
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the app.
   * @param entityName Name of the hybrid connection configuration.
   * @param connectionEnvelope Details of the hybrid connection configuration.
   * @param options The options parameters.
   */
  updateRelayServiceConnection(
    resourceGroupName: string,
    name: string,
    entityName: string,
    connectionEnvelope: RelayServiceConnectionEntity,
    options?: WebAppsUpdateRelayServiceConnectionOptionalParams
  ): Promise<WebAppsUpdateRelayServiceConnectionResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, entityName, connectionEnvelope, options },
      updateRelayServiceConnectionOperationSpec
    );
  }

  /**
   * Description for Gets all scale-out instances of an app.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the app.
   * @param options The options parameters.
   */
  private _listInstanceIdentifiers(
    resourceGroupName: string,
    name: string,
    options?: WebAppsListInstanceIdentifiersOptionalParams
  ): Promise<WebAppsListInstanceIdentifiersResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, options },
      listInstanceIdentifiersOperationSpec
    );
  }

  /**
   * Description for Gets all scale-out instances of an app.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the app.
   * @param instanceId
   * @param options The options parameters.
   */
  getInstanceInfo(
    resourceGroupName: string,
    name: string,
    instanceId: string,
    options?: WebAppsGetInstanceInfoOptionalParams
  ): Promise<WebAppsGetInstanceInfoResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, instanceId, options },
      getInstanceInfoOperationSpec
    );
  }

  /**
   * Description for Get the status of the last MSDeploy operation.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of web app.
   * @param instanceId ID of web app instance.
   * @param options The options parameters.
   */
  getInstanceMsDeployStatus(
    resourceGroupName: string,
    name: string,
    instanceId: string,
    options?: WebAppsGetInstanceMsDeployStatusOptionalParams
  ): Promise<WebAppsGetInstanceMsDeployStatusResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, instanceId, options },
      getInstanceMsDeployStatusOperationSpec
    );
  }

  /**
   * Description for Invoke the MSDeploy web app extension.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of web app.
   * @param instanceId ID of web app instance.
   * @param mSDeploy Details of MSDeploy operation
   * @param options The options parameters.
   */
  async beginCreateInstanceMSDeployOperation(
    resourceGroupName: string,
    name: string,
    instanceId: string,
    mSDeploy: MSDeploy,
    options?: WebAppsCreateInstanceMSDeployOperationOptionalParams
  ): Promise<
    SimplePollerLike<
      OperationState<WebAppsCreateInstanceMSDeployOperationResponse>,
      WebAppsCreateInstanceMSDeployOperationResponse
    >
  > {
    const directSendOperation = async (
      args: coreClient.OperationArguments,
      spec: coreClient.OperationSpec
    ): Promise<WebAppsCreateInstanceMSDeployOperationResponse> => {
      return this.client.sendOperationRequest(args, spec);
    };
    const sendOperationFn = async (
      args: coreClient.OperationArguments,
      spec: coreClient.OperationSpec
    ) => {
      let currentRawResponse:
        | coreClient.FullOperationResponse
        | undefined = undefined;
      const providedCallback = args.options?.onResponse;
      const callback: coreClient.RawResponseCallback = (
        rawResponse: coreClient.FullOperationResponse,
        flatResponse: unknown
      ) => {
        currentRawResponse = rawResponse;
        providedCallback?.(rawResponse, flatResponse);
      };
      const updatedArgs = {
        ...args,
        options: {
          ...args.options,
          onResponse: callback
        }
      };
      const flatResponse = await directSendOperation(updatedArgs, spec);
      return {
        flatResponse,
        rawResponse: {
          statusCode: currentRawResponse!.status,
          body: currentRawResponse!.parsedBody,
          headers: currentRawResponse!.headers.toJSON()
        }
      };
    };

    const lro = createLroSpec({
      sendOperationFn,
      args: { resourceGroupName, name, instanceId, mSDeploy, options },
      spec: createInstanceMSDeployOperationOperationSpec
    });
    const poller = await createHttpPoller<
      WebAppsCreateInstanceMSDeployOperationResponse,
      OperationState<WebAppsCreateInstanceMSDeployOperationResponse>
    >(lro, {
      restoreFrom: options?.resumeFrom,
      intervalInMs: options?.updateIntervalInMs
    });
    await poller.poll();
    return poller;
  }

  /**
   * Description for Invoke the MSDeploy web app extension.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of web app.
   * @param instanceId ID of web app instance.
   * @param mSDeploy Details of MSDeploy operation
   * @param options The options parameters.
   */
  async beginCreateInstanceMSDeployOperationAndWait(
    resourceGroupName: string,
    name: string,
    instanceId: string,
    mSDeploy: MSDeploy,
    options?: WebAppsCreateInstanceMSDeployOperationOptionalParams
  ): Promise<WebAppsCreateInstanceMSDeployOperationResponse> {
    const poller = await this.beginCreateInstanceMSDeployOperation(
      resourceGroupName,
      name,
      instanceId,
      mSDeploy,
      options
    );
    return poller.pollUntilDone();
  }

  /**
   * Description for Get the MSDeploy Log for the last MSDeploy operation.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of web app.
   * @param instanceId ID of web app instance.
   * @param options The options parameters.
   */
  getInstanceMSDeployLog(
    resourceGroupName: string,
    name: string,
    instanceId: string,
    options?: WebAppsGetInstanceMSDeployLogOptionalParams
  ): Promise<WebAppsGetInstanceMSDeployLogResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, instanceId, options },
      getInstanceMSDeployLogOperationSpec
    );
  }

  /**
   * Description for Get list of processes for a web site, or a deployment slot, or for a specific
   * scaled-out instance in a web site.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Site name.
   * @param instanceId ID of a specific scaled-out instance. This is the value of the name property in
   *                   the JSON response from "GET api/sites/{siteName}/instances".
   * @param options The options parameters.
   */
  private _listInstanceProcesses(
    resourceGroupName: string,
    name: string,
    instanceId: string,
    options?: WebAppsListInstanceProcessesOptionalParams
  ): Promise<WebAppsListInstanceProcessesResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, instanceId, options },
      listInstanceProcessesOperationSpec
    );
  }

  /**
   * Description for Get process information by its ID for a specific scaled-out instance in a web site.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Site name.
   * @param processId PID.
   * @param instanceId ID of a specific scaled-out instance. This is the value of the name property in
   *                   the JSON response from "GET api/sites/{siteName}/instances".
   * @param options The options parameters.
   */
  getInstanceProcess(
    resourceGroupName: string,
    name: string,
    processId: string,
    instanceId: string,
    options?: WebAppsGetInstanceProcessOptionalParams
  ): Promise<WebAppsGetInstanceProcessResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, processId, instanceId, options },
      getInstanceProcessOperationSpec
    );
  }

  /**
   * Description for Terminate a process by its ID for a web site, or a deployment slot, or specific
   * scaled-out instance in a web site.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Site name.
   * @param processId PID.
   * @param instanceId ID of a specific scaled-out instance. This is the value of the name property in
   *                   the JSON response from "GET api/sites/{siteName}/instances".
   * @param options The options parameters.
   */
  deleteInstanceProcess(
    resourceGroupName: string,
    name: string,
    processId: string,
    instanceId: string,
    options?: WebAppsDeleteInstanceProcessOptionalParams
  ): Promise<void> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, processId, instanceId, options },
      deleteInstanceProcessOperationSpec
    );
  }

  /**
   * Description for Get a memory dump of a process by its ID for a specific scaled-out instance in a web
   * site.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Site name.
   * @param processId PID.
   * @param instanceId ID of a specific scaled-out instance. This is the value of the name property in
   *                   the JSON response from "GET api/sites/{siteName}/instances".
   * @param options The options parameters.
   */
  getInstanceProcessDump(
    resourceGroupName: string,
    name: string,
    processId: string,
    instanceId: string,
    options?: WebAppsGetInstanceProcessDumpOptionalParams
  ): Promise<WebAppsGetInstanceProcessDumpResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, processId, instanceId, options },
      getInstanceProcessDumpOperationSpec
    );
  }

  /**
   * Description for List module information for a process by its ID for a specific scaled-out instance
   * in a web site.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Site name.
   * @param processId PID.
   * @param instanceId ID of a specific scaled-out instance. This is the value of the name property in
   *                   the JSON response from "GET api/sites/{siteName}/instances".
   * @param options The options parameters.
   */
  private _listInstanceProcessModules(
    resourceGroupName: string,
    name: string,
    processId: string,
    instanceId: string,
    options?: WebAppsListInstanceProcessModulesOptionalParams
  ): Promise<WebAppsListInstanceProcessModulesResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, processId, instanceId, options },
      listInstanceProcessModulesOperationSpec
    );
  }

  /**
   * Description for Get process information by its ID for a specific scaled-out instance in a web site.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Site name.
   * @param processId PID.
   * @param baseAddress Module base address.
   * @param instanceId ID of a specific scaled-out instance. This is the value of the name property in
   *                   the JSON response from "GET api/sites/{siteName}/instances".
   * @param options The options parameters.
   */
  getInstanceProcessModule(
    resourceGroupName: string,
    name: string,
    processId: string,
    baseAddress: string,
    instanceId: string,
    options?: WebAppsGetInstanceProcessModuleOptionalParams
  ): Promise<WebAppsGetInstanceProcessModuleResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, processId, baseAddress, instanceId, options },
      getInstanceProcessModuleOperationSpec
    );
  }

  /**
   * Description for List the threads in a process by its ID for a specific scaled-out instance in a web
   * site.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Site name.
   * @param processId PID.
   * @param instanceId ID of a specific scaled-out instance. This is the value of the name property in
   *                   the JSON response from "GET api/sites/{siteName}/instances".
   * @param options The options parameters.
   */
  private _listInstanceProcessThreads(
    resourceGroupName: string,
    name: string,
    processId: string,
    instanceId: string,
    options?: WebAppsListInstanceProcessThreadsOptionalParams
  ): Promise<WebAppsListInstanceProcessThreadsResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, processId, instanceId, options },
      listInstanceProcessThreadsOperationSpec
    );
  }

  /**
   * Description for Shows whether an app can be cloned to another resource group or subscription.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the app.
   * @param options The options parameters.
   */
  isCloneable(
    resourceGroupName: string,
    name: string,
    options?: WebAppsIsCloneableOptionalParams
  ): Promise<WebAppsIsCloneableResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, options },
      isCloneableOperationSpec
    );
  }

  /**
   * Description for Gets existing backups of an app.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the app.
   * @param options The options parameters.
   */
  private _listSiteBackups(
    resourceGroupName: string,
    name: string,
    options?: WebAppsListSiteBackupsOptionalParams
  ): Promise<WebAppsListSiteBackupsResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, options },
      listSiteBackupsOperationSpec
    );
  }

  /**
   * Description for This is to allow calling via powershell and ARM template.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the app.
   * @param options The options parameters.
   */
  listSyncFunctionTriggers(
    resourceGroupName: string,
    name: string,
    options?: WebAppsListSyncFunctionTriggersOptionalParams
  ): Promise<WebAppsListSyncFunctionTriggersResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, options },
      listSyncFunctionTriggersOperationSpec
    );
  }

  /**
   * Description for Restores a web app.
   * @param subscriptionName Azure subscription.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of web app.
   * @param migrationOptions Migration migrationOptions.
   * @param options The options parameters.
   */
  async beginMigrateStorage(
    subscriptionName: string,
    resourceGroupName: string,
    name: string,
    migrationOptions: StorageMigrationOptions,
    options?: WebAppsMigrateStorageOptionalParams
  ): Promise<
    SimplePollerLike<
      OperationState<WebAppsMigrateStorageResponse>,
      WebAppsMigrateStorageResponse
    >
  > {
    const directSendOperation = async (
      args: coreClient.OperationArguments,
      spec: coreClient.OperationSpec
    ): Promise<WebAppsMigrateStorageResponse> => {
      return this.client.sendOperationRequest(args, spec);
    };
    const sendOperationFn = async (
      args: coreClient.OperationArguments,
      spec: coreClient.OperationSpec
    ) => {
      let currentRawResponse:
        | coreClient.FullOperationResponse
        | undefined = undefined;
      const providedCallback = args.options?.onResponse;
      const callback: coreClient.RawResponseCallback = (
        rawResponse: coreClient.FullOperationResponse,
        flatResponse: unknown
      ) => {
        currentRawResponse = rawResponse;
        providedCallback?.(rawResponse, flatResponse);
      };
      const updatedArgs = {
        ...args,
        options: {
          ...args.options,
          onResponse: callback
        }
      };
      const flatResponse = await directSendOperation(updatedArgs, spec);
      return {
        flatResponse,
        rawResponse: {
          statusCode: currentRawResponse!.status,
          body: currentRawResponse!.parsedBody,
          headers: currentRawResponse!.headers.toJSON()
        }
      };
    };

    const lro = createLroSpec({
      sendOperationFn,
      args: {
        subscriptionName,
        resourceGroupName,
        name,
        migrationOptions,
        options
      },
      spec: migrateStorageOperationSpec
    });
    const poller = await createHttpPoller<
      WebAppsMigrateStorageResponse,
      OperationState<WebAppsMigrateStorageResponse>
    >(lro, {
      restoreFrom: options?.resumeFrom,
      intervalInMs: options?.updateIntervalInMs
    });
    await poller.poll();
    return poller;
  }

  /**
   * Description for Restores a web app.
   * @param subscriptionName Azure subscription.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of web app.
   * @param migrationOptions Migration migrationOptions.
   * @param options The options parameters.
   */
  async beginMigrateStorageAndWait(
    subscriptionName: string,
    resourceGroupName: string,
    name: string,
    migrationOptions: StorageMigrationOptions,
    options?: WebAppsMigrateStorageOptionalParams
  ): Promise<WebAppsMigrateStorageResponse> {
    const poller = await this.beginMigrateStorage(
      subscriptionName,
      resourceGroupName,
      name,
      migrationOptions,
      options
    );
    return poller.pollUntilDone();
  }

  /**
   * Description for Migrates a local (in-app) MySql database to a remote MySql database.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of web app.
   * @param migrationRequestEnvelope MySql migration options.
   * @param options The options parameters.
   */
  async beginMigrateMySql(
    resourceGroupName: string,
    name: string,
    migrationRequestEnvelope: MigrateMySqlRequest,
    options?: WebAppsMigrateMySqlOptionalParams
  ): Promise<
    SimplePollerLike<
      OperationState<WebAppsMigrateMySqlResponse>,
      WebAppsMigrateMySqlResponse
    >
  > {
    const directSendOperation = async (
      args: coreClient.OperationArguments,
      spec: coreClient.OperationSpec
    ): Promise<WebAppsMigrateMySqlResponse> => {
      return this.client.sendOperationRequest(args, spec);
    };
    const sendOperationFn = async (
      args: coreClient.OperationArguments,
      spec: coreClient.OperationSpec
    ) => {
      let currentRawResponse:
        | coreClient.FullOperationResponse
        | undefined = undefined;
      const providedCallback = args.options?.onResponse;
      const callback: coreClient.RawResponseCallback = (
        rawResponse: coreClient.FullOperationResponse,
        flatResponse: unknown
      ) => {
        currentRawResponse = rawResponse;
        providedCallback?.(rawResponse, flatResponse);
      };
      const updatedArgs = {
        ...args,
        options: {
          ...args.options,
          onResponse: callback
        }
      };
      const flatResponse = await directSendOperation(updatedArgs, spec);
      return {
        flatResponse,
        rawResponse: {
          statusCode: currentRawResponse!.status,
          body: currentRawResponse!.parsedBody,
          headers: currentRawResponse!.headers.toJSON()
        }
      };
    };

    const lro = createLroSpec({
      sendOperationFn,
      args: { resourceGroupName, name, migrationRequestEnvelope, options },
      spec: migrateMySqlOperationSpec
    });
    const poller = await createHttpPoller<
      WebAppsMigrateMySqlResponse,
      OperationState<WebAppsMigrateMySqlResponse>
    >(lro, {
      restoreFrom: options?.resumeFrom,
      intervalInMs: options?.updateIntervalInMs
    });
    await poller.poll();
    return poller;
  }

  /**
   * Description for Migrates a local (in-app) MySql database to a remote MySql database.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of web app.
   * @param migrationRequestEnvelope MySql migration options.
   * @param options The options parameters.
   */
  async beginMigrateMySqlAndWait(
    resourceGroupName: string,
    name: string,
    migrationRequestEnvelope: MigrateMySqlRequest,
    options?: WebAppsMigrateMySqlOptionalParams
  ): Promise<WebAppsMigrateMySqlResponse> {
    const poller = await this.beginMigrateMySql(
      resourceGroupName,
      name,
      migrationRequestEnvelope,
      options
    );
    return poller.pollUntilDone();
  }

  /**
   * Description for Returns the status of MySql in app migration, if one is active, and whether or not
   * MySql in app is enabled
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of web app.
   * @param options The options parameters.
   */
  getMigrateMySqlStatus(
    resourceGroupName: string,
    name: string,
    options?: WebAppsGetMigrateMySqlStatusOptionalParams
  ): Promise<WebAppsGetMigrateMySqlStatusResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, options },
      getMigrateMySqlStatusOperationSpec
    );
  }

  /**
   * Description for Gets a Swift Virtual Network connection.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the app.
   * @param options The options parameters.
   */
  getSwiftVirtualNetworkConnection(
    resourceGroupName: string,
    name: string,
    options?: WebAppsGetSwiftVirtualNetworkConnectionOptionalParams
  ): Promise<WebAppsGetSwiftVirtualNetworkConnectionResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, options },
      getSwiftVirtualNetworkConnectionOperationSpec
    );
  }

  /**
   * Description for Integrates this Web App with a Virtual Network. This requires that 1)
   * "swiftSupported" is true when doing a GET against this resource, and 2) that the target Subnet has
   * already been delegated, and is not
   * in use by another App Service Plan other than the one this App is in.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the app.
   * @param connectionEnvelope Properties of the Virtual Network connection. See example.
   * @param options The options parameters.
   */
  createOrUpdateSwiftVirtualNetworkConnectionWithCheck(
    resourceGroupName: string,
    name: string,
    connectionEnvelope: SwiftVirtualNetwork,
    options?: WebAppsCreateOrUpdateSwiftVirtualNetworkConnectionWithCheckOptionalParams
  ): Promise<
    WebAppsCreateOrUpdateSwiftVirtualNetworkConnectionWithCheckResponse
  > {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, connectionEnvelope, options },
      createOrUpdateSwiftVirtualNetworkConnectionWithCheckOperationSpec
    );
  }

  /**
   * Description for Deletes a Swift Virtual Network connection from an app (or deployment slot).
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the app.
   * @param options The options parameters.
   */
  deleteSwiftVirtualNetwork(
    resourceGroupName: string,
    name: string,
    options?: WebAppsDeleteSwiftVirtualNetworkOptionalParams
  ): Promise<void> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, options },
      deleteSwiftVirtualNetworkOperationSpec
    );
  }

  /**
   * Description for Integrates this Web App with a Virtual Network. This requires that 1)
   * "swiftSupported" is true when doing a GET against this resource, and 2) that the target Subnet has
   * already been delegated, and is not
   * in use by another App Service Plan other than the one this App is in.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the app.
   * @param connectionEnvelope Properties of the Virtual Network connection. See example.
   * @param options The options parameters.
   */
  updateSwiftVirtualNetworkConnectionWithCheck(
    resourceGroupName: string,
    name: string,
    connectionEnvelope: SwiftVirtualNetwork,
    options?: WebAppsUpdateSwiftVirtualNetworkConnectionWithCheckOptionalParams
  ): Promise<WebAppsUpdateSwiftVirtualNetworkConnectionWithCheckResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, connectionEnvelope, options },
      updateSwiftVirtualNetworkConnectionWithCheckOperationSpec
    );
  }

  /**
   * Description for Gets all network features used by the app (or deployment slot, if specified).
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the app.
   * @param view The type of view. Only "summary" is supported at this time.
   * @param options The options parameters.
   */
  listNetworkFeatures(
    resourceGroupName: string,
    name: string,
    view: string,
    options?: WebAppsListNetworkFeaturesOptionalParams
  ): Promise<WebAppsListNetworkFeaturesResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, view, options },
      listNetworkFeaturesOperationSpec
    );
  }

  /**
   * Description for Gets a named operation for a network trace capturing (or deployment slot, if
   * specified).
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the app.
   * @param operationId GUID of the operation.
   * @param options The options parameters.
   */
  getNetworkTraceOperation(
    resourceGroupName: string,
    name: string,
    operationId: string,
    options?: WebAppsGetNetworkTraceOperationOptionalParams
  ): Promise<WebAppsGetNetworkTraceOperationResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, operationId, options },
      getNetworkTraceOperationOperationSpec
    );
  }

  /**
   * Description for Start capturing network packets for the site (To be deprecated).
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name The name of the web app.
   * @param options The options parameters.
   */
  startWebSiteNetworkTrace(
    resourceGroupName: string,
    name: string,
    options?: WebAppsStartWebSiteNetworkTraceOptionalParams
  ): Promise<WebAppsStartWebSiteNetworkTraceResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, options },
      startWebSiteNetworkTraceOperationSpec
    );
  }

  /**
   * Description for Start capturing network packets for the site.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name The name of the web app.
   * @param options The options parameters.
   */
  async beginStartWebSiteNetworkTraceOperation(
    resourceGroupName: string,
    name: string,
    options?: WebAppsStartWebSiteNetworkTraceOperationOptionalParams
  ): Promise<
    SimplePollerLike<
      OperationState<WebAppsStartWebSiteNetworkTraceOperationResponse>,
      WebAppsStartWebSiteNetworkTraceOperationResponse
    >
  > {
    const directSendOperation = async (
      args: coreClient.OperationArguments,
      spec: coreClient.OperationSpec
    ): Promise<WebAppsStartWebSiteNetworkTraceOperationResponse> => {
      return this.client.sendOperationRequest(args, spec);
    };
    const sendOperationFn = async (
      args: coreClient.OperationArguments,
      spec: coreClient.OperationSpec
    ) => {
      let currentRawResponse:
        | coreClient.FullOperationResponse
        | undefined = undefined;
      const providedCallback = args.options?.onResponse;
      const callback: coreClient.RawResponseCallback = (
        rawResponse: coreClient.FullOperationResponse,
        flatResponse: unknown
      ) => {
        currentRawResponse = rawResponse;
        providedCallback?.(rawResponse, flatResponse);
      };
      const updatedArgs = {
        ...args,
        options: {
          ...args.options,
          onResponse: callback
        }
      };
      const flatResponse = await directSendOperation(updatedArgs, spec);
      return {
        flatResponse,
        rawResponse: {
          statusCode: currentRawResponse!.status,
          body: currentRawResponse!.parsedBody,
          headers: currentRawResponse!.headers.toJSON()
        }
      };
    };

    const lro = createLroSpec({
      sendOperationFn,
      args: { resourceGroupName, name, options },
      spec: startWebSiteNetworkTraceOperationOperationSpec
    });
    const poller = await createHttpPoller<
      WebAppsStartWebSiteNetworkTraceOperationResponse,
      OperationState<WebAppsStartWebSiteNetworkTraceOperationResponse>
    >(lro, {
      restoreFrom: options?.resumeFrom,
      intervalInMs: options?.updateIntervalInMs
    });
    await poller.poll();
    return poller;
  }

  /**
   * Description for Start capturing network packets for the site.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name The name of the web app.
   * @param options The options parameters.
   */
  async beginStartWebSiteNetworkTraceOperationAndWait(
    resourceGroupName: string,
    name: string,
    options?: WebAppsStartWebSiteNetworkTraceOperationOptionalParams
  ): Promise<WebAppsStartWebSiteNetworkTraceOperationResponse> {
    const poller = await this.beginStartWebSiteNetworkTraceOperation(
      resourceGroupName,
      name,
      options
    );
    return poller.pollUntilDone();
  }

  /**
   * Description for Stop ongoing capturing network packets for the site.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name The name of the web app.
   * @param options The options parameters.
   */
  stopWebSiteNetworkTrace(
    resourceGroupName: string,
    name: string,
    options?: WebAppsStopWebSiteNetworkTraceOptionalParams
  ): Promise<void> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, options },
      stopWebSiteNetworkTraceOperationSpec
    );
  }

  /**
   * Description for Gets a named operation for a network trace capturing (or deployment slot, if
   * specified).
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the app.
   * @param operationId GUID of the operation.
   * @param options The options parameters.
   */
  getNetworkTraces(
    resourceGroupName: string,
    name: string,
    operationId: string,
    options?: WebAppsGetNetworkTracesOptionalParams
  ): Promise<WebAppsGetNetworkTracesResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, operationId, options },
      getNetworkTracesOperationSpec
    );
  }

  /**
   * Description for Gets a named operation for a network trace capturing (or deployment slot, if
   * specified).
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the app.
   * @param operationId GUID of the operation.
   * @param options The options parameters.
   */
  getNetworkTraceOperationV2(
    resourceGroupName: string,
    name: string,
    operationId: string,
    options?: WebAppsGetNetworkTraceOperationV2OptionalParams
  ): Promise<WebAppsGetNetworkTraceOperationV2Response> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, operationId, options },
      getNetworkTraceOperationV2OperationSpec
    );
  }

  /**
   * Description for Gets a named operation for a network trace capturing (or deployment slot, if
   * specified).
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the app.
   * @param operationId GUID of the operation.
   * @param options The options parameters.
   */
  getNetworkTracesV2(
    resourceGroupName: string,
    name: string,
    operationId: string,
    options?: WebAppsGetNetworkTracesV2OptionalParams
  ): Promise<WebAppsGetNetworkTracesV2Response> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, operationId, options },
      getNetworkTracesV2OperationSpec
    );
  }

  /**
   * Description for Generates a new publishing password for an app (or deployment slot, if specified).
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the app.
   * @param options The options parameters.
   */
  generateNewSitePublishingPassword(
    resourceGroupName: string,
    name: string,
    options?: WebAppsGenerateNewSitePublishingPasswordOptionalParams
  ): Promise<void> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, options },
      generateNewSitePublishingPasswordOperationSpec
    );
  }

  /**
   * Description for Gets perfmon counters for web app.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of web app.
   * @param options The options parameters.
   */
  private _listPerfMonCounters(
    resourceGroupName: string,
    name: string,
    options?: WebAppsListPerfMonCountersOptionalParams
  ): Promise<WebAppsListPerfMonCountersResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, options },
      listPerfMonCountersOperationSpec
    );
  }

  /**
   * Description for Gets web app's event logs.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of web app.
   * @param options The options parameters.
   */
  getSitePhpErrorLogFlag(
    resourceGroupName: string,
    name: string,
    options?: WebAppsGetSitePhpErrorLogFlagOptionalParams
  ): Promise<WebAppsGetSitePhpErrorLogFlagResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, options },
      getSitePhpErrorLogFlagOperationSpec
    );
  }

  /**
   * Description for Gets the premier add-ons of an app.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the app.
   * @param options The options parameters.
   */
  listPremierAddOns(
    resourceGroupName: string,
    name: string,
    options?: WebAppsListPremierAddOnsOptionalParams
  ): Promise<WebAppsListPremierAddOnsResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, options },
      listPremierAddOnsOperationSpec
    );
  }

  /**
   * Description for Gets a named add-on of an app.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the app.
   * @param premierAddOnName Add-on name.
   * @param options The options parameters.
   */
  getPremierAddOn(
    resourceGroupName: string,
    name: string,
    premierAddOnName: string,
    options?: WebAppsGetPremierAddOnOptionalParams
  ): Promise<WebAppsGetPremierAddOnResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, premierAddOnName, options },
      getPremierAddOnOperationSpec
    );
  }

  /**
   * Description for Updates a named add-on of an app.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the app.
   * @param premierAddOnName Add-on name.
   * @param premierAddOn A JSON representation of the edited premier add-on.
   * @param options The options parameters.
   */
  addPremierAddOn(
    resourceGroupName: string,
    name: string,
    premierAddOnName: string,
    premierAddOn: PremierAddOn,
    options?: WebAppsAddPremierAddOnOptionalParams
  ): Promise<WebAppsAddPremierAddOnResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, premierAddOnName, premierAddOn, options },
      addPremierAddOnOperationSpec
    );
  }

  /**
   * Description for Delete a premier add-on from an app.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the app.
   * @param premierAddOnName Add-on name.
   * @param options The options parameters.
   */
  deletePremierAddOn(
    resourceGroupName: string,
    name: string,
    premierAddOnName: string,
    options?: WebAppsDeletePremierAddOnOptionalParams
  ): Promise<void> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, premierAddOnName, options },
      deletePremierAddOnOperationSpec
    );
  }

  /**
   * Description for Updates a named add-on of an app.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the app.
   * @param premierAddOnName Add-on name.
   * @param premierAddOn A JSON representation of the edited premier add-on.
   * @param options The options parameters.
   */
  updatePremierAddOn(
    resourceGroupName: string,
    name: string,
    premierAddOnName: string,
    premierAddOn: PremierAddOnPatchResource,
    options?: WebAppsUpdatePremierAddOnOptionalParams
  ): Promise<WebAppsUpdatePremierAddOnResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, premierAddOnName, premierAddOn, options },
      updatePremierAddOnOperationSpec
    );
  }

  /**
   * Description for Gets data around private site access enablement and authorized Virtual Networks that
   * can access the site.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name The name of the web app.
   * @param options The options parameters.
   */
  getPrivateAccess(
    resourceGroupName: string,
    name: string,
    options?: WebAppsGetPrivateAccessOptionalParams
  ): Promise<WebAppsGetPrivateAccessResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, options },
      getPrivateAccessOperationSpec
    );
  }

  /**
   * Description for Sets data around private site access enablement and authorized Virtual Networks that
   * can access the site.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name The name of the web app.
   * @param access The information for the private access
   * @param options The options parameters.
   */
  putPrivateAccessVnet(
    resourceGroupName: string,
    name: string,
    access: PrivateAccess,
    options?: WebAppsPutPrivateAccessVnetOptionalParams
  ): Promise<WebAppsPutPrivateAccessVnetResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, access, options },
      putPrivateAccessVnetOperationSpec
    );
  }

  /**
   * Description for Gets the list of private endpoint connections associated with a site
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the site.
   * @param options The options parameters.
   */
  private _getPrivateEndpointConnectionList(
    resourceGroupName: string,
    name: string,
    options?: WebAppsGetPrivateEndpointConnectionListOptionalParams
  ): Promise<WebAppsGetPrivateEndpointConnectionListResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, options },
      getPrivateEndpointConnectionListOperationSpec
    );
  }

  /**
   * Description for Gets a private endpoint connection
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the site.
   * @param privateEndpointConnectionName Name of the private endpoint connection.
   * @param options The options parameters.
   */
  getPrivateEndpointConnection(
    resourceGroupName: string,
    name: string,
    privateEndpointConnectionName: string,
    options?: WebAppsGetPrivateEndpointConnectionOptionalParams
  ): Promise<WebAppsGetPrivateEndpointConnectionResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, privateEndpointConnectionName, options },
      getPrivateEndpointConnectionOperationSpec
    );
  }

  /**
   * Description for Approves or rejects a private endpoint connection
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the site.
   * @param privateEndpointConnectionName
   * @param privateEndpointWrapper Private Endpoint Connection Approval ARM resource.
   * @param options The options parameters.
   */
  async beginApproveOrRejectPrivateEndpointConnection(
    resourceGroupName: string,
    name: string,
    privateEndpointConnectionName: string,
    privateEndpointWrapper: PrivateLinkConnectionApprovalRequestResource,
    options?: WebAppsApproveOrRejectPrivateEndpointConnectionOptionalParams
  ): Promise<
    SimplePollerLike<
      OperationState<WebAppsApproveOrRejectPrivateEndpointConnectionResponse>,
      WebAppsApproveOrRejectPrivateEndpointConnectionResponse
    >
  > {
    const directSendOperation = async (
      args: coreClient.OperationArguments,
      spec: coreClient.OperationSpec
    ): Promise<WebAppsApproveOrRejectPrivateEndpointConnectionResponse> => {
      return this.client.sendOperationRequest(args, spec);
    };
    const sendOperationFn = async (
      args: coreClient.OperationArguments,
      spec: coreClient.OperationSpec
    ) => {
      let currentRawResponse:
        | coreClient.FullOperationResponse
        | undefined = undefined;
      const providedCallback = args.options?.onResponse;
      const callback: coreClient.RawResponseCallback = (
        rawResponse: coreClient.FullOperationResponse,
        flatResponse: unknown
      ) => {
        currentRawResponse = rawResponse;
        providedCallback?.(rawResponse, flatResponse);
      };
      const updatedArgs = {
        ...args,
        options: {
          ...args.options,
          onResponse: callback
        }
      };
      const flatResponse = await directSendOperation(updatedArgs, spec);
      return {
        flatResponse,
        rawResponse: {
          statusCode: currentRawResponse!.status,
          body: currentRawResponse!.parsedBody,
          headers: currentRawResponse!.headers.toJSON()
        }
      };
    };

    const lro = createLroSpec({
      sendOperationFn,
      args: {
        resourceGroupName,
        name,
        privateEndpointConnectionName,
        privateEndpointWrapper,
        options
      },
      spec: approveOrRejectPrivateEndpointConnectionOperationSpec
    });
    const poller = await createHttpPoller<
      WebAppsApproveOrRejectPrivateEndpointConnectionResponse,
      OperationState<WebAppsApproveOrRejectPrivateEndpointConnectionResponse>
    >(lro, {
      restoreFrom: options?.resumeFrom,
      intervalInMs: options?.updateIntervalInMs
    });
    await poller.poll();
    return poller;
  }

  /**
   * Description for Approves or rejects a private endpoint connection
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the site.
   * @param privateEndpointConnectionName
   * @param privateEndpointWrapper Private Endpoint Connection Approval ARM resource.
   * @param options The options parameters.
   */
  async beginApproveOrRejectPrivateEndpointConnectionAndWait(
    resourceGroupName: string,
    name: string,
    privateEndpointConnectionName: string,
    privateEndpointWrapper: PrivateLinkConnectionApprovalRequestResource,
    options?: WebAppsApproveOrRejectPrivateEndpointConnectionOptionalParams
  ): Promise<WebAppsApproveOrRejectPrivateEndpointConnectionResponse> {
    const poller = await this.beginApproveOrRejectPrivateEndpointConnection(
      resourceGroupName,
      name,
      privateEndpointConnectionName,
      privateEndpointWrapper,
      options
    );
    return poller.pollUntilDone();
  }

  /**
   * Description for Deletes a private endpoint connection
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the site.
   * @param privateEndpointConnectionName
   * @param options The options parameters.
   */
  async beginDeletePrivateEndpointConnection(
    resourceGroupName: string,
    name: string,
    privateEndpointConnectionName: string,
    options?: WebAppsDeletePrivateEndpointConnectionOptionalParams
  ): Promise<
    SimplePollerLike<
      OperationState<WebAppsDeletePrivateEndpointConnectionResponse>,
      WebAppsDeletePrivateEndpointConnectionResponse
    >
  > {
    const directSendOperation = async (
      args: coreClient.OperationArguments,
      spec: coreClient.OperationSpec
    ): Promise<WebAppsDeletePrivateEndpointConnectionResponse> => {
      return this.client.sendOperationRequest(args, spec);
    };
    const sendOperationFn = async (
      args: coreClient.OperationArguments,
      spec: coreClient.OperationSpec
    ) => {
      let currentRawResponse:
        | coreClient.FullOperationResponse
        | undefined = undefined;
      const providedCallback = args.options?.onResponse;
      const callback: coreClient.RawResponseCallback = (
        rawResponse: coreClient.FullOperationResponse,
        flatResponse: unknown
      ) => {
        currentRawResponse = rawResponse;
        providedCallback?.(rawResponse, flatResponse);
      };
      const updatedArgs = {
        ...args,
        options: {
          ...args.options,
          onResponse: callback
        }
      };
      const flatResponse = await directSendOperation(updatedArgs, spec);
      return {
        flatResponse,
        rawResponse: {
          statusCode: currentRawResponse!.status,
          body: currentRawResponse!.parsedBody,
          headers: currentRawResponse!.headers.toJSON()
        }
      };
    };

    const lro = createLroSpec({
      sendOperationFn,
      args: { resourceGroupName, name, privateEndpointConnectionName, options },
      spec: deletePrivateEndpointConnectionOperationSpec
    });
    const poller = await createHttpPoller<
      WebAppsDeletePrivateEndpointConnectionResponse,
      OperationState<WebAppsDeletePrivateEndpointConnectionResponse>
    >(lro, {
      restoreFrom: options?.resumeFrom,
      intervalInMs: options?.updateIntervalInMs
    });
    await poller.poll();
    return poller;
  }

  /**
   * Description for Deletes a private endpoint connection
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the site.
   * @param privateEndpointConnectionName
   * @param options The options parameters.
   */
  async beginDeletePrivateEndpointConnectionAndWait(
    resourceGroupName: string,
    name: string,
    privateEndpointConnectionName: string,
    options?: WebAppsDeletePrivateEndpointConnectionOptionalParams
  ): Promise<WebAppsDeletePrivateEndpointConnectionResponse> {
    const poller = await this.beginDeletePrivateEndpointConnection(
      resourceGroupName,
      name,
      privateEndpointConnectionName,
      options
    );
    return poller.pollUntilDone();
  }

  /**
   * Description for Gets the private link resources
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the site.
   * @param options The options parameters.
   */
  getPrivateLinkResources(
    resourceGroupName: string,
    name: string,
    options?: WebAppsGetPrivateLinkResourcesOptionalParams
  ): Promise<WebAppsGetPrivateLinkResourcesResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, options },
      getPrivateLinkResourcesOperationSpec
    );
  }

  /**
   * Description for Get list of processes for a web site, or a deployment slot, or for a specific
   * scaled-out instance in a web site.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Site name.
   * @param options The options parameters.
   */
  private _listProcesses(
    resourceGroupName: string,
    name: string,
    options?: WebAppsListProcessesOptionalParams
  ): Promise<WebAppsListProcessesResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, options },
      listProcessesOperationSpec
    );
  }

  /**
   * Description for Get process information by its ID for a specific scaled-out instance in a web site.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Site name.
   * @param processId PID.
   * @param options The options parameters.
   */
  getProcess(
    resourceGroupName: string,
    name: string,
    processId: string,
    options?: WebAppsGetProcessOptionalParams
  ): Promise<WebAppsGetProcessResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, processId, options },
      getProcessOperationSpec
    );
  }

  /**
   * Description for Terminate a process by its ID for a web site, or a deployment slot, or specific
   * scaled-out instance in a web site.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Site name.
   * @param processId PID.
   * @param options The options parameters.
   */
  deleteProcess(
    resourceGroupName: string,
    name: string,
    processId: string,
    options?: WebAppsDeleteProcessOptionalParams
  ): Promise<void> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, processId, options },
      deleteProcessOperationSpec
    );
  }

  /**
   * Description for Get a memory dump of a process by its ID for a specific scaled-out instance in a web
   * site.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Site name.
   * @param processId PID.
   * @param options The options parameters.
   */
  getProcessDump(
    resourceGroupName: string,
    name: string,
    processId: string,
    options?: WebAppsGetProcessDumpOptionalParams
  ): Promise<WebAppsGetProcessDumpResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, processId, options },
      getProcessDumpOperationSpec
    );
  }

  /**
   * Description for List module information for a process by its ID for a specific scaled-out instance
   * in a web site.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Site name.
   * @param processId PID.
   * @param options The options parameters.
   */
  private _listProcessModules(
    resourceGroupName: string,
    name: string,
    processId: string,
    options?: WebAppsListProcessModulesOptionalParams
  ): Promise<WebAppsListProcessModulesResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, processId, options },
      listProcessModulesOperationSpec
    );
  }

  /**
   * Description for Get process information by its ID for a specific scaled-out instance in a web site.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Site name.
   * @param processId PID.
   * @param baseAddress Module base address.
   * @param options The options parameters.
   */
  getProcessModule(
    resourceGroupName: string,
    name: string,
    processId: string,
    baseAddress: string,
    options?: WebAppsGetProcessModuleOptionalParams
  ): Promise<WebAppsGetProcessModuleResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, processId, baseAddress, options },
      getProcessModuleOperationSpec
    );
  }

  /**
   * Description for List the threads in a process by its ID for a specific scaled-out instance in a web
   * site.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Site name.
   * @param processId PID.
   * @param options The options parameters.
   */
  private _listProcessThreads(
    resourceGroupName: string,
    name: string,
    processId: string,
    options?: WebAppsListProcessThreadsOptionalParams
  ): Promise<WebAppsListProcessThreadsResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, processId, options },
      listProcessThreadsOperationSpec
    );
  }

  /**
   * Description for Get public certificates for an app or a deployment slot.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the app.
   * @param options The options parameters.
   */
  private _listPublicCertificates(
    resourceGroupName: string,
    name: string,
    options?: WebAppsListPublicCertificatesOptionalParams
  ): Promise<WebAppsListPublicCertificatesResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, options },
      listPublicCertificatesOperationSpec
    );
  }

  /**
   * Description for Get the named public certificate for an app (or deployment slot, if specified).
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the app.
   * @param publicCertificateName Public certificate name.
   * @param options The options parameters.
   */
  getPublicCertificate(
    resourceGroupName: string,
    name: string,
    publicCertificateName: string,
    options?: WebAppsGetPublicCertificateOptionalParams
  ): Promise<WebAppsGetPublicCertificateResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, publicCertificateName, options },
      getPublicCertificateOperationSpec
    );
  }

  /**
   * Description for Creates a hostname binding for an app.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the app.
   * @param publicCertificateName Public certificate name.
   * @param publicCertificate Public certificate details. This is the JSON representation of a
   *                          PublicCertificate object.
   * @param options The options parameters.
   */
  createOrUpdatePublicCertificate(
    resourceGroupName: string,
    name: string,
    publicCertificateName: string,
    publicCertificate: PublicCertificate,
    options?: WebAppsCreateOrUpdatePublicCertificateOptionalParams
  ): Promise<WebAppsCreateOrUpdatePublicCertificateResponse> {
    return this.client.sendOperationRequest(
      {
        resourceGroupName,
        name,
        publicCertificateName,
        publicCertificate,
        options
      },
      createOrUpdatePublicCertificateOperationSpec
    );
  }

  /**
   * Description for Deletes a hostname binding for an app.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the app.
   * @param publicCertificateName Public certificate name.
   * @param options The options parameters.
   */
  deletePublicCertificate(
    resourceGroupName: string,
    name: string,
    publicCertificateName: string,
    options?: WebAppsDeletePublicCertificateOptionalParams
  ): Promise<void> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, publicCertificateName, options },
      deletePublicCertificateOperationSpec
    );
  }

  /**
   * Description for Gets the publishing profile for an app (or deployment slot, if specified).
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the app.
   * @param publishingProfileOptions Specifies publishingProfileOptions for publishing profile. For
   *                                 example, use {"format": "FileZilla3"} to get a FileZilla publishing profile.
   * @param options The options parameters.
   */
  listPublishingProfileXmlWithSecrets(
    resourceGroupName: string,
    name: string,
    publishingProfileOptions: CsmPublishingProfileOptions,
    options?: WebAppsListPublishingProfileXmlWithSecretsOptionalParams
  ): Promise<WebAppsListPublishingProfileXmlWithSecretsResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, publishingProfileOptions, options },
      listPublishingProfileXmlWithSecretsOperationSpec
    );
  }

  /**
   * Description for Resets the configuration settings of the current slot if they were previously
   * modified by calling the API with POST.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the app.
   * @param options The options parameters.
   */
  resetProductionSlotConfig(
    resourceGroupName: string,
    name: string,
    options?: WebAppsResetProductionSlotConfigOptionalParams
  ): Promise<void> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, options },
      resetProductionSlotConfigOperationSpec
    );
  }

  /**
   * Description for Restarts an app (or deployment slot, if specified).
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the app.
   * @param options The options parameters.
   */
  restart(
    resourceGroupName: string,
    name: string,
    options?: WebAppsRestartOptionalParams
  ): Promise<void> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, options },
      restartOperationSpec
    );
  }

  /**
   * Description for Restores an app from a backup blob in Azure Storage.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the app.
   * @param request Information on restore request .
   * @param options The options parameters.
   */
  async beginRestoreFromBackupBlob(
    resourceGroupName: string,
    name: string,
    request: RestoreRequest,
    options?: WebAppsRestoreFromBackupBlobOptionalParams
  ): Promise<SimplePollerLike<OperationState<void>, void>> {
    const directSendOperation = async (
      args: coreClient.OperationArguments,
      spec: coreClient.OperationSpec
    ): Promise<void> => {
      return this.client.sendOperationRequest(args, spec);
    };
    const sendOperationFn = async (
      args: coreClient.OperationArguments,
      spec: coreClient.OperationSpec
    ) => {
      let currentRawResponse:
        | coreClient.FullOperationResponse
        | undefined = undefined;
      const providedCallback = args.options?.onResponse;
      const callback: coreClient.RawResponseCallback = (
        rawResponse: coreClient.FullOperationResponse,
        flatResponse: unknown
      ) => {
        currentRawResponse = rawResponse;
        providedCallback?.(rawResponse, flatResponse);
      };
      const updatedArgs = {
        ...args,
        options: {
          ...args.options,
          onResponse: callback
        }
      };
      const flatResponse = await directSendOperation(updatedArgs, spec);
      return {
        flatResponse,
        rawResponse: {
          statusCode: currentRawResponse!.status,
          body: currentRawResponse!.parsedBody,
          headers: currentRawResponse!.headers.toJSON()
        }
      };
    };

    const lro = createLroSpec({
      sendOperationFn,
      args: { resourceGroupName, name, request, options },
      spec: restoreFromBackupBlobOperationSpec
    });
    const poller = await createHttpPoller<void, OperationState<void>>(lro, {
      restoreFrom: options?.resumeFrom,
      intervalInMs: options?.updateIntervalInMs
    });
    await poller.poll();
    return poller;
  }

  /**
   * Description for Restores an app from a backup blob in Azure Storage.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the app.
   * @param request Information on restore request .
   * @param options The options parameters.
   */
  async beginRestoreFromBackupBlobAndWait(
    resourceGroupName: string,
    name: string,
    request: RestoreRequest,
    options?: WebAppsRestoreFromBackupBlobOptionalParams
  ): Promise<void> {
    const poller = await this.beginRestoreFromBackupBlob(
      resourceGroupName,
      name,
      request,
      options
    );
    return poller.pollUntilDone();
  }

  /**
   * Description for Restores a deleted web app to this web app.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of web app.
   * @param restoreRequest Deleted web app restore information.
   * @param options The options parameters.
   */
  async beginRestoreFromDeletedApp(
    resourceGroupName: string,
    name: string,
    restoreRequest: DeletedAppRestoreRequest,
    options?: WebAppsRestoreFromDeletedAppOptionalParams
  ): Promise<SimplePollerLike<OperationState<void>, void>> {
    const directSendOperation = async (
      args: coreClient.OperationArguments,
      spec: coreClient.OperationSpec
    ): Promise<void> => {
      return this.client.sendOperationRequest(args, spec);
    };
    const sendOperationFn = async (
      args: coreClient.OperationArguments,
      spec: coreClient.OperationSpec
    ) => {
      let currentRawResponse:
        | coreClient.FullOperationResponse
        | undefined = undefined;
      const providedCallback = args.options?.onResponse;
      const callback: coreClient.RawResponseCallback = (
        rawResponse: coreClient.FullOperationResponse,
        flatResponse: unknown
      ) => {
        currentRawResponse = rawResponse;
        providedCallback?.(rawResponse, flatResponse);
      };
      const updatedArgs = {
        ...args,
        options: {
          ...args.options,
          onResponse: callback
        }
      };
      const flatResponse = await directSendOperation(updatedArgs, spec);
      return {
        flatResponse,
        rawResponse: {
          statusCode: currentRawResponse!.status,
          body: currentRawResponse!.parsedBody,
          headers: currentRawResponse!.headers.toJSON()
        }
      };
    };

    const lro = createLroSpec({
      sendOperationFn,
      args: { resourceGroupName, name, restoreRequest, options },
      spec: restoreFromDeletedAppOperationSpec
    });
    const poller = await createHttpPoller<void, OperationState<void>>(lro, {
      restoreFrom: options?.resumeFrom,
      intervalInMs: options?.updateIntervalInMs
    });
    await poller.poll();
    return poller;
  }

  /**
   * Description for Restores a deleted web app to this web app.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of web app.
   * @param restoreRequest Deleted web app restore information.
   * @param options The options parameters.
   */
  async beginRestoreFromDeletedAppAndWait(
    resourceGroupName: string,
    name: string,
    restoreRequest: DeletedAppRestoreRequest,
    options?: WebAppsRestoreFromDeletedAppOptionalParams
  ): Promise<void> {
    const poller = await this.beginRestoreFromDeletedApp(
      resourceGroupName,
      name,
      restoreRequest,
      options
    );
    return poller.pollUntilDone();
  }

  /**
   * Description for Restores a web app from a snapshot.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of web app.
   * @param restoreRequest Snapshot restore settings. Snapshot information can be obtained by calling
   *                       GetDeletedSites or GetSiteSnapshots API.
   * @param options The options parameters.
   */
  async beginRestoreSnapshot(
    resourceGroupName: string,
    name: string,
    restoreRequest: SnapshotRestoreRequest,
    options?: WebAppsRestoreSnapshotOptionalParams
  ): Promise<SimplePollerLike<OperationState<void>, void>> {
    const directSendOperation = async (
      args: coreClient.OperationArguments,
      spec: coreClient.OperationSpec
    ): Promise<void> => {
      return this.client.sendOperationRequest(args, spec);
    };
    const sendOperationFn = async (
      args: coreClient.OperationArguments,
      spec: coreClient.OperationSpec
    ) => {
      let currentRawResponse:
        | coreClient.FullOperationResponse
        | undefined = undefined;
      const providedCallback = args.options?.onResponse;
      const callback: coreClient.RawResponseCallback = (
        rawResponse: coreClient.FullOperationResponse,
        flatResponse: unknown
      ) => {
        currentRawResponse = rawResponse;
        providedCallback?.(rawResponse, flatResponse);
      };
      const updatedArgs = {
        ...args,
        options: {
          ...args.options,
          onResponse: callback
        }
      };
      const flatResponse = await directSendOperation(updatedArgs, spec);
      return {
        flatResponse,
        rawResponse: {
          statusCode: currentRawResponse!.status,
          body: currentRawResponse!.parsedBody,
          headers: currentRawResponse!.headers.toJSON()
        }
      };
    };

    const lro = createLroSpec({
      sendOperationFn,
      args: { resourceGroupName, name, restoreRequest, options },
      spec: restoreSnapshotOperationSpec
    });
    const poller = await createHttpPoller<void, OperationState<void>>(lro, {
      restoreFrom: options?.resumeFrom,
      intervalInMs: options?.updateIntervalInMs
    });
    await poller.poll();
    return poller;
  }

  /**
   * Description for Restores a web app from a snapshot.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of web app.
   * @param restoreRequest Snapshot restore settings. Snapshot information can be obtained by calling
   *                       GetDeletedSites or GetSiteSnapshots API.
   * @param options The options parameters.
   */
  async beginRestoreSnapshotAndWait(
    resourceGroupName: string,
    name: string,
    restoreRequest: SnapshotRestoreRequest,
    options?: WebAppsRestoreSnapshotOptionalParams
  ): Promise<void> {
    const poller = await this.beginRestoreSnapshot(
      resourceGroupName,
      name,
      restoreRequest,
      options
    );
    return poller.pollUntilDone();
  }

  /**
   * Description for Get list of siteextensions for a web site, or a deployment slot.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Site name.
   * @param options The options parameters.
   */
  private _listSiteExtensions(
    resourceGroupName: string,
    name: string,
    options?: WebAppsListSiteExtensionsOptionalParams
  ): Promise<WebAppsListSiteExtensionsResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, options },
      listSiteExtensionsOperationSpec
    );
  }

  /**
   * Description for Get site extension information by its ID for a web site, or a deployment slot.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Site name.
   * @param siteExtensionId Site extension name.
   * @param options The options parameters.
   */
  getSiteExtension(
    resourceGroupName: string,
    name: string,
    siteExtensionId: string,
    options?: WebAppsGetSiteExtensionOptionalParams
  ): Promise<WebAppsGetSiteExtensionResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, siteExtensionId, options },
      getSiteExtensionOperationSpec
    );
  }

  /**
   * Description for Install site extension on a web site, or a deployment slot.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Site name.
   * @param siteExtensionId Site extension name.
   * @param options The options parameters.
   */
  async beginInstallSiteExtension(
    resourceGroupName: string,
    name: string,
    siteExtensionId: string,
    options?: WebAppsInstallSiteExtensionOptionalParams
  ): Promise<
    SimplePollerLike<
      OperationState<WebAppsInstallSiteExtensionResponse>,
      WebAppsInstallSiteExtensionResponse
    >
  > {
    const directSendOperation = async (
      args: coreClient.OperationArguments,
      spec: coreClient.OperationSpec
    ): Promise<WebAppsInstallSiteExtensionResponse> => {
      return this.client.sendOperationRequest(args, spec);
    };
    const sendOperationFn = async (
      args: coreClient.OperationArguments,
      spec: coreClient.OperationSpec
    ) => {
      let currentRawResponse:
        | coreClient.FullOperationResponse
        | undefined = undefined;
      const providedCallback = args.options?.onResponse;
      const callback: coreClient.RawResponseCallback = (
        rawResponse: coreClient.FullOperationResponse,
        flatResponse: unknown
      ) => {
        currentRawResponse = rawResponse;
        providedCallback?.(rawResponse, flatResponse);
      };
      const updatedArgs = {
        ...args,
        options: {
          ...args.options,
          onResponse: callback
        }
      };
      const flatResponse = await directSendOperation(updatedArgs, spec);
      return {
        flatResponse,
        rawResponse: {
          statusCode: currentRawResponse!.status,
          body: currentRawResponse!.parsedBody,
          headers: currentRawResponse!.headers.toJSON()
        }
      };
    };

    const lro = createLroSpec({
      sendOperationFn,
      args: { resourceGroupName, name, siteExtensionId, options },
      spec: installSiteExtensionOperationSpec
    });
    const poller = await createHttpPoller<
      WebAppsInstallSiteExtensionResponse,
      OperationState<WebAppsInstallSiteExtensionResponse>
    >(lro, {
      restoreFrom: options?.resumeFrom,
      intervalInMs: options?.updateIntervalInMs
    });
    await poller.poll();
    return poller;
  }

  /**
   * Description for Install site extension on a web site, or a deployment slot.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Site name.
   * @param siteExtensionId Site extension name.
   * @param options The options parameters.
   */
  async beginInstallSiteExtensionAndWait(
    resourceGroupName: string,
    name: string,
    siteExtensionId: string,
    options?: WebAppsInstallSiteExtensionOptionalParams
  ): Promise<WebAppsInstallSiteExtensionResponse> {
    const poller = await this.beginInstallSiteExtension(
      resourceGroupName,
      name,
      siteExtensionId,
      options
    );
    return poller.pollUntilDone();
  }

  /**
   * Description for Remove a site extension from a web site, or a deployment slot.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Site name.
   * @param siteExtensionId Site extension name.
   * @param options The options parameters.
   */
  deleteSiteExtension(
    resourceGroupName: string,
    name: string,
    siteExtensionId: string,
    options?: WebAppsDeleteSiteExtensionOptionalParams
  ): Promise<void> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, siteExtensionId, options },
      deleteSiteExtensionOperationSpec
    );
  }

  /**
   * Description for Gets an app's deployment slots.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the app.
   * @param options The options parameters.
   */
  private _listSlots(
    resourceGroupName: string,
    name: string,
    options?: WebAppsListSlotsOptionalParams
  ): Promise<WebAppsListSlotsResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, options },
      listSlotsOperationSpec
    );
  }

  /**
   * Description for Gets the details of a web, mobile, or API app.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the app.
   * @param slot Name of the deployment slot. By default, this API returns the production slot.
   * @param options The options parameters.
   */
  getSlot(
    resourceGroupName: string,
    name: string,
    slot: string,
    options?: WebAppsGetSlotOptionalParams
  ): Promise<WebAppsGetSlotResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, slot, options },
      getSlotOperationSpec
    );
  }

  /**
   * Description for Creates a new web, mobile, or API app in an existing resource group, or updates an
   * existing app.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Unique name of the app to create or update. To create or update a deployment slot, use
   *             the {slot} parameter.
   * @param slot Name of the deployment slot to create or update. By default, this API attempts to create
   *             or modify the production slot.
   * @param siteEnvelope A JSON representation of the app properties. See example.
   * @param options The options parameters.
   */
  async beginCreateOrUpdateSlot(
    resourceGroupName: string,
    name: string,
    slot: string,
    siteEnvelope: Site,
    options?: WebAppsCreateOrUpdateSlotOptionalParams
  ): Promise<
    SimplePollerLike<
      OperationState<WebAppsCreateOrUpdateSlotResponse>,
      WebAppsCreateOrUpdateSlotResponse
    >
  > {
    const directSendOperation = async (
      args: coreClient.OperationArguments,
      spec: coreClient.OperationSpec
    ): Promise<WebAppsCreateOrUpdateSlotResponse> => {
      return this.client.sendOperationRequest(args, spec);
    };
    const sendOperationFn = async (
      args: coreClient.OperationArguments,
      spec: coreClient.OperationSpec
    ) => {
      let currentRawResponse:
        | coreClient.FullOperationResponse
        | undefined = undefined;
      const providedCallback = args.options?.onResponse;
      const callback: coreClient.RawResponseCallback = (
        rawResponse: coreClient.FullOperationResponse,
        flatResponse: unknown
      ) => {
        currentRawResponse = rawResponse;
        providedCallback?.(rawResponse, flatResponse);
      };
      const updatedArgs = {
        ...args,
        options: {
          ...args.options,
          onResponse: callback
        }
      };
      const flatResponse = await directSendOperation(updatedArgs, spec);
      return {
        flatResponse,
        rawResponse: {
          statusCode: currentRawResponse!.status,
          body: currentRawResponse!.parsedBody,
          headers: currentRawResponse!.headers.toJSON()
        }
      };
    };

    const lro = createLroSpec({
      sendOperationFn,
      args: { resourceGroupName, name, slot, siteEnvelope, options },
      spec: createOrUpdateSlotOperationSpec
    });
    const poller = await createHttpPoller<
      WebAppsCreateOrUpdateSlotResponse,
      OperationState<WebAppsCreateOrUpdateSlotResponse>
    >(lro, {
      restoreFrom: options?.resumeFrom,
      intervalInMs: options?.updateIntervalInMs
    });
    await poller.poll();
    return poller;
  }

  /**
   * Description for Creates a new web, mobile, or API app in an existing resource group, or updates an
   * existing app.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Unique name of the app to create or update. To create or update a deployment slot, use
   *             the {slot} parameter.
   * @param slot Name of the deployment slot to create or update. By default, this API attempts to create
   *             or modify the production slot.
   * @param siteEnvelope A JSON representation of the app properties. See example.
   * @param options The options parameters.
   */
  async beginCreateOrUpdateSlotAndWait(
    resourceGroupName: string,
    name: string,
    slot: string,
    siteEnvelope: Site,
    options?: WebAppsCreateOrUpdateSlotOptionalParams
  ): Promise<WebAppsCreateOrUpdateSlotResponse> {
    const poller = await this.beginCreateOrUpdateSlot(
      resourceGroupName,
      name,
      slot,
      siteEnvelope,
      options
    );
    return poller.pollUntilDone();
  }

  /**
   * Description for Deletes a web, mobile, or API app, or one of the deployment slots.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the app to delete.
   * @param slot Name of the deployment slot to delete. By default, the API deletes the production slot.
   * @param options The options parameters.
   */
  deleteSlot(
    resourceGroupName: string,
    name: string,
    slot: string,
    options?: WebAppsDeleteSlotOptionalParams
  ): Promise<void> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, slot, options },
      deleteSlotOperationSpec
    );
  }

  /**
   * Description for Creates a new web, mobile, or API app in an existing resource group, or updates an
   * existing app.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Unique name of the app to create or update. To create or update a deployment slot, use
   *             the {slot} parameter.
   * @param slot Name of the deployment slot to create or update. By default, this API attempts to create
   *             or modify the production slot.
   * @param siteEnvelope A JSON representation of the app properties. See example.
   * @param options The options parameters.
   */
  updateSlot(
    resourceGroupName: string,
    name: string,
    slot: string,
    siteEnvelope: SitePatchResource,
    options?: WebAppsUpdateSlotOptionalParams
  ): Promise<WebAppsUpdateSlotResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, slot, siteEnvelope, options },
      updateSlotOperationSpec
    );
  }

  /**
   * Description for Analyze a custom hostname.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of web app.
   * @param slot Name of web app slot. If not specified then will default to production slot.
   * @param options The options parameters.
   */
  analyzeCustomHostnameSlot(
    resourceGroupName: string,
    name: string,
    slot: string,
    options?: WebAppsAnalyzeCustomHostnameSlotOptionalParams
  ): Promise<WebAppsAnalyzeCustomHostnameSlotResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, slot, options },
      analyzeCustomHostnameSlotOperationSpec
    );
  }

  /**
   * Description for Applies the configuration settings from the target slot onto the current slot.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the app.
   * @param slot Name of the source slot. If a slot is not specified, the production slot is used as the
   *             source slot.
   * @param slotSwapEntity JSON object that contains the target slot name. See example.
   * @param options The options parameters.
   */
  applySlotConfigurationSlot(
    resourceGroupName: string,
    name: string,
    slot: string,
    slotSwapEntity: CsmSlotEntity,
    options?: WebAppsApplySlotConfigurationSlotOptionalParams
  ): Promise<void> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, slot, slotSwapEntity, options },
      applySlotConfigurationSlotOperationSpec
    );
  }

  /**
   * Description for Creates a backup of an app.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the app.
   * @param slot Name of the deployment slot. If a slot is not specified, the API will create a backup
   *             for the production slot.
   * @param request Backup configuration. You can use the JSON response from the POST action as input
   *                here.
   * @param options The options parameters.
   */
  backupSlot(
    resourceGroupName: string,
    name: string,
    slot: string,
    request: BackupRequest,
    options?: WebAppsBackupSlotOptionalParams
  ): Promise<WebAppsBackupSlotResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, slot, request, options },
      backupSlotOperationSpec
    );
  }

  /**
   * Description for Gets existing backups of an app.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the app.
   * @param slot Name of the deployment slot. If a slot is not specified, the API will get backups of the
   *             production slot.
   * @param options The options parameters.
   */
  private _listBackupsSlot(
    resourceGroupName: string,
    name: string,
    slot: string,
    options?: WebAppsListBackupsSlotOptionalParams
  ): Promise<WebAppsListBackupsSlotResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, slot, options },
      listBackupsSlotOperationSpec
    );
  }

  /**
   * Description for Gets a backup of an app by its ID.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the app.
   * @param backupId ID of the backup.
   * @param slot Name of the deployment slot. If a slot is not specified, the API will get a backup of
   *             the production slot.
   * @param options The options parameters.
   */
  getBackupStatusSlot(
    resourceGroupName: string,
    name: string,
    backupId: string,
    slot: string,
    options?: WebAppsGetBackupStatusSlotOptionalParams
  ): Promise<WebAppsGetBackupStatusSlotResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, backupId, slot, options },
      getBackupStatusSlotOperationSpec
    );
  }

  /**
   * Description for Deletes a backup of an app by its ID.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the app.
   * @param backupId ID of the backup.
   * @param slot Name of the deployment slot. If a slot is not specified, the API will delete a backup of
   *             the production slot.
   * @param options The options parameters.
   */
  deleteBackupSlot(
    resourceGroupName: string,
    name: string,
    backupId: string,
    slot: string,
    options?: WebAppsDeleteBackupSlotOptionalParams
  ): Promise<void> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, backupId, slot, options },
      deleteBackupSlotOperationSpec
    );
  }

  /**
   * Description for Gets status of a web app backup that may be in progress, including secrets
   * associated with the backup, such as the Azure Storage SAS URL. Also can be used to update the SAS
   * URL for the backup if a new URL is passed in the request body.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of web app.
   * @param backupId ID of backup.
   * @param slot Name of web app slot. If not specified then will default to production slot.
   * @param request Information on backup request.
   * @param options The options parameters.
   */
  listBackupStatusSecretsSlot(
    resourceGroupName: string,
    name: string,
    backupId: string,
    slot: string,
    request: BackupRequest,
    options?: WebAppsListBackupStatusSecretsSlotOptionalParams
  ): Promise<WebAppsListBackupStatusSecretsSlotResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, backupId, slot, request, options },
      listBackupStatusSecretsSlotOperationSpec
    );
  }

  /**
   * Description for Restores a specific backup to another app (or deployment slot, if specified).
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the app.
   * @param backupId ID of the backup.
   * @param slot Name of the deployment slot. If a slot is not specified, the API will restore a backup
   *             of the production slot.
   * @param request Information on restore request .
   * @param options The options parameters.
   */
  async beginRestoreSlot(
    resourceGroupName: string,
    name: string,
    backupId: string,
    slot: string,
    request: RestoreRequest,
    options?: WebAppsRestoreSlotOptionalParams
  ): Promise<SimplePollerLike<OperationState<void>, void>> {
    const directSendOperation = async (
      args: coreClient.OperationArguments,
      spec: coreClient.OperationSpec
    ): Promise<void> => {
      return this.client.sendOperationRequest(args, spec);
    };
    const sendOperationFn = async (
      args: coreClient.OperationArguments,
      spec: coreClient.OperationSpec
    ) => {
      let currentRawResponse:
        | coreClient.FullOperationResponse
        | undefined = undefined;
      const providedCallback = args.options?.onResponse;
      const callback: coreClient.RawResponseCallback = (
        rawResponse: coreClient.FullOperationResponse,
        flatResponse: unknown
      ) => {
        currentRawResponse = rawResponse;
        providedCallback?.(rawResponse, flatResponse);
      };
      const updatedArgs = {
        ...args,
        options: {
          ...args.options,
          onResponse: callback
        }
      };
      const flatResponse = await directSendOperation(updatedArgs, spec);
      return {
        flatResponse,
        rawResponse: {
          statusCode: currentRawResponse!.status,
          body: currentRawResponse!.parsedBody,
          headers: currentRawResponse!.headers.toJSON()
        }
      };
    };

    const lro = createLroSpec({
      sendOperationFn,
      args: { resourceGroupName, name, backupId, slot, request, options },
      spec: restoreSlotOperationSpec
    });
    const poller = await createHttpPoller<void, OperationState<void>>(lro, {
      restoreFrom: options?.resumeFrom,
      intervalInMs: options?.updateIntervalInMs
    });
    await poller.poll();
    return poller;
  }

  /**
   * Description for Restores a specific backup to another app (or deployment slot, if specified).
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the app.
   * @param backupId ID of the backup.
   * @param slot Name of the deployment slot. If a slot is not specified, the API will restore a backup
   *             of the production slot.
   * @param request Information on restore request .
   * @param options The options parameters.
   */
  async beginRestoreSlotAndWait(
    resourceGroupName: string,
    name: string,
    backupId: string,
    slot: string,
    request: RestoreRequest,
    options?: WebAppsRestoreSlotOptionalParams
  ): Promise<void> {
    const poller = await this.beginRestoreSlot(
      resourceGroupName,
      name,
      backupId,
      slot,
      request,
      options
    );
    return poller.pollUntilDone();
  }

  /**
   * Description for Returns whether Scm basic auth is allowed and whether Ftp is allowed for a given
   * site.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the app.
   * @param slot
   * @param options The options parameters.
   */
  private _listBasicPublishingCredentialsPoliciesSlot(
    resourceGroupName: string,
    name: string,
    slot: string,
    options?: WebAppsListBasicPublishingCredentialsPoliciesSlotOptionalParams
  ): Promise<WebAppsListBasicPublishingCredentialsPoliciesSlotResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, slot, options },
      listBasicPublishingCredentialsPoliciesSlotOperationSpec
    );
  }

  /**
   * Description for Returns whether FTP is allowed on the site or not.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the app.
   * @param slot
   * @param options The options parameters.
   */
  getFtpAllowedSlot(
    resourceGroupName: string,
    name: string,
    slot: string,
    options?: WebAppsGetFtpAllowedSlotOptionalParams
  ): Promise<WebAppsGetFtpAllowedSlotResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, slot, options },
      getFtpAllowedSlotOperationSpec
    );
  }

  /**
   * Description for Updates whether FTP is allowed on the site or not.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the app.
   * @param slot
   * @param csmPublishingAccessPoliciesEntity Publishing Credentials Policies parameters.
   * @param options The options parameters.
   */
  updateFtpAllowedSlot(
    resourceGroupName: string,
    name: string,
    slot: string,
    csmPublishingAccessPoliciesEntity: CsmPublishingCredentialsPoliciesEntity,
    options?: WebAppsUpdateFtpAllowedSlotOptionalParams
  ): Promise<WebAppsUpdateFtpAllowedSlotResponse> {
    return this.client.sendOperationRequest(
      {
        resourceGroupName,
        name,
        slot,
        csmPublishingAccessPoliciesEntity,
        options
      },
      updateFtpAllowedSlotOperationSpec
    );
  }

  /**
   * Description for Returns whether Scm basic auth is allowed on the site or not.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the app.
   * @param slot
   * @param options The options parameters.
   */
  getScmAllowedSlot(
    resourceGroupName: string,
    name: string,
    slot: string,
    options?: WebAppsGetScmAllowedSlotOptionalParams
  ): Promise<WebAppsGetScmAllowedSlotResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, slot, options },
      getScmAllowedSlotOperationSpec
    );
  }

  /**
   * Description for Updates whether user publishing credentials are allowed on the site or not.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the app.
   * @param slot
   * @param csmPublishingAccessPoliciesEntity Publishing Credentials Policies parameters.
   * @param options The options parameters.
   */
  updateScmAllowedSlot(
    resourceGroupName: string,
    name: string,
    slot: string,
    csmPublishingAccessPoliciesEntity: CsmPublishingCredentialsPoliciesEntity,
    options?: WebAppsUpdateScmAllowedSlotOptionalParams
  ): Promise<WebAppsUpdateScmAllowedSlotResponse> {
    return this.client.sendOperationRequest(
      {
        resourceGroupName,
        name,
        slot,
        csmPublishingAccessPoliciesEntity,
        options
      },
      updateScmAllowedSlotOperationSpec
    );
  }

  /**
   * Description for List the configurations of an app
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the app.
   * @param slot Name of the deployment slot. If a slot is not specified, the API will return
   *             configuration for the production slot.
   * @param options The options parameters.
   */
  private _listConfigurationsSlot(
    resourceGroupName: string,
    name: string,
    slot: string,
    options?: WebAppsListConfigurationsSlotOptionalParams
  ): Promise<WebAppsListConfigurationsSlotResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, slot, options },
      listConfigurationsSlotOperationSpec
    );
  }

  /**
   * Description for Replaces the application settings of an app.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the app.
   * @param slot Name of the deployment slot. If a slot is not specified, the API will update the
   *             application settings for the production slot.
   * @param appSettings Application settings of the app.
   * @param options The options parameters.
   */
  updateApplicationSettingsSlot(
    resourceGroupName: string,
    name: string,
    slot: string,
    appSettings: StringDictionary,
    options?: WebAppsUpdateApplicationSettingsSlotOptionalParams
  ): Promise<WebAppsUpdateApplicationSettingsSlotResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, slot, appSettings, options },
      updateApplicationSettingsSlotOperationSpec
    );
  }

  /**
   * Description for Gets the application settings of an app.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the app.
   * @param slot Name of the deployment slot. If a slot is not specified, the API will get the
   *             application settings for the production slot.
   * @param options The options parameters.
   */
  listApplicationSettingsSlot(
    resourceGroupName: string,
    name: string,
    slot: string,
    options?: WebAppsListApplicationSettingsSlotOptionalParams
  ): Promise<WebAppsListApplicationSettingsSlotResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, slot, options },
      listApplicationSettingsSlotOperationSpec
    );
  }

  /**
   * Description for Updates the Authentication / Authorization settings associated with web app.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of web app.
   * @param slot Name of web app slot. If not specified then will default to production slot.
   * @param siteAuthSettings Auth settings associated with web app.
   * @param options The options parameters.
   */
  updateAuthSettingsSlot(
    resourceGroupName: string,
    name: string,
    slot: string,
    siteAuthSettings: SiteAuthSettings,
    options?: WebAppsUpdateAuthSettingsSlotOptionalParams
  ): Promise<WebAppsUpdateAuthSettingsSlotResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, slot, siteAuthSettings, options },
      updateAuthSettingsSlotOperationSpec
    );
  }

  /**
   * Description for Gets the Authentication/Authorization settings of an app.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the app.
   * @param slot Name of the deployment slot. If a slot is not specified, the API will get the settings
   *             for the production slot.
   * @param options The options parameters.
   */
  getAuthSettingsSlot(
    resourceGroupName: string,
    name: string,
    slot: string,
    options?: WebAppsGetAuthSettingsSlotOptionalParams
  ): Promise<WebAppsGetAuthSettingsSlotResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, slot, options },
      getAuthSettingsSlotOperationSpec
    );
  }

  /**
   * Gets site's Authentication / Authorization settings for apps via the V2 format
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the app.
   * @param slot Name of the deployment slot. If a slot is not specified, the API will get the settings
   *             for the production slot.
   * @param options The options parameters.
   */
  getAuthSettingsV2WithoutSecretsSlot(
    resourceGroupName: string,
    name: string,
    slot: string,
    options?: WebAppsGetAuthSettingsV2WithoutSecretsSlotOptionalParams
  ): Promise<WebAppsGetAuthSettingsV2WithoutSecretsSlotResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, slot, options },
      getAuthSettingsV2WithoutSecretsSlotOperationSpec
    );
  }

  /**
   * Description for Updates site's Authentication / Authorization settings for apps via the V2 format
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of web app.
   * @param slot Name of web app slot. If not specified then will default to production slot.
   * @param siteAuthSettingsV2 Auth settings associated with web app.
   * @param options The options parameters.
   */
  updateAuthSettingsV2Slot(
    resourceGroupName: string,
    name: string,
    slot: string,
    siteAuthSettingsV2: SiteAuthSettingsV2,
    options?: WebAppsUpdateAuthSettingsV2SlotOptionalParams
  ): Promise<WebAppsUpdateAuthSettingsV2SlotResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, slot, siteAuthSettingsV2, options },
      updateAuthSettingsV2SlotOperationSpec
    );
  }

  /**
   * Description for Gets site's Authentication / Authorization settings for apps via the V2 format
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the app.
   * @param slot Name of the deployment slot. If a slot is not specified, the API will get the settings
   *             for the production slot.
   * @param options The options parameters.
   */
  getAuthSettingsV2Slot(
    resourceGroupName: string,
    name: string,
    slot: string,
    options?: WebAppsGetAuthSettingsV2SlotOptionalParams
  ): Promise<WebAppsGetAuthSettingsV2SlotResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, slot, options },
      getAuthSettingsV2SlotOperationSpec
    );
  }

  /**
   * Description for Updates the Azure storage account configurations of an app.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the app.
   * @param slot Name of the deployment slot. If a slot is not specified, the API will update the Azure
   *             storage account configurations for the production slot.
   * @param azureStorageAccounts Azure storage accounts of the app.
   * @param options The options parameters.
   */
  updateAzureStorageAccountsSlot(
    resourceGroupName: string,
    name: string,
    slot: string,
    azureStorageAccounts: AzureStoragePropertyDictionaryResource,
    options?: WebAppsUpdateAzureStorageAccountsSlotOptionalParams
  ): Promise<WebAppsUpdateAzureStorageAccountsSlotResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, slot, azureStorageAccounts, options },
      updateAzureStorageAccountsSlotOperationSpec
    );
  }

  /**
   * Description for Gets the Azure storage account configurations of an app.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the app.
   * @param slot Name of the deployment slot. If a slot is not specified, the API will update the Azure
   *             storage account configurations for the production slot.
   * @param options The options parameters.
   */
  listAzureStorageAccountsSlot(
    resourceGroupName: string,
    name: string,
    slot: string,
    options?: WebAppsListAzureStorageAccountsSlotOptionalParams
  ): Promise<WebAppsListAzureStorageAccountsSlotResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, slot, options },
      listAzureStorageAccountsSlotOperationSpec
    );
  }

  /**
   * Description for Updates the backup configuration of an app.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the app.
   * @param slot Name of the deployment slot. If a slot is not specified, the API will update the backup
   *             configuration for the production slot.
   * @param request Edited backup configuration.
   * @param options The options parameters.
   */
  updateBackupConfigurationSlot(
    resourceGroupName: string,
    name: string,
    slot: string,
    request: BackupRequest,
    options?: WebAppsUpdateBackupConfigurationSlotOptionalParams
  ): Promise<WebAppsUpdateBackupConfigurationSlotResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, slot, request, options },
      updateBackupConfigurationSlotOperationSpec
    );
  }

  /**
   * Description for Deletes the backup configuration of an app.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the app.
   * @param slot Name of the deployment slot. If a slot is not specified, the API will delete the backup
   *             configuration for the production slot.
   * @param options The options parameters.
   */
  deleteBackupConfigurationSlot(
    resourceGroupName: string,
    name: string,
    slot: string,
    options?: WebAppsDeleteBackupConfigurationSlotOptionalParams
  ): Promise<void> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, slot, options },
      deleteBackupConfigurationSlotOperationSpec
    );
  }

  /**
   * Description for Gets the backup configuration of an app.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the app.
   * @param slot Name of the deployment slot. If a slot is not specified, the API will get the backup
   *             configuration for the production slot.
   * @param options The options parameters.
   */
  getBackupConfigurationSlot(
    resourceGroupName: string,
    name: string,
    slot: string,
    options?: WebAppsGetBackupConfigurationSlotOptionalParams
  ): Promise<WebAppsGetBackupConfigurationSlotResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, slot, options },
      getBackupConfigurationSlotOperationSpec
    );
  }

  /**
   * Description for Gets the config reference app settings and status of an app
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the app.
   * @param slot
   * @param options The options parameters.
   */
  private _getAppSettingsKeyVaultReferencesSlot(
    resourceGroupName: string,
    name: string,
    slot: string,
    options?: WebAppsGetAppSettingsKeyVaultReferencesSlotOptionalParams
  ): Promise<WebAppsGetAppSettingsKeyVaultReferencesSlotResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, slot, options },
      getAppSettingsKeyVaultReferencesSlotOperationSpec
    );
  }

  /**
   * Description for Gets the config reference and status of an app
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the app.
   * @param appSettingKey App Setting key name.
   * @param slot
   * @param options The options parameters.
   */
  getAppSettingKeyVaultReferenceSlot(
    resourceGroupName: string,
    name: string,
    appSettingKey: string,
    slot: string,
    options?: WebAppsGetAppSettingKeyVaultReferenceSlotOptionalParams
  ): Promise<WebAppsGetAppSettingKeyVaultReferenceSlotResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, appSettingKey, slot, options },
      getAppSettingKeyVaultReferenceSlotOperationSpec
    );
  }

  /**
   * Description for Gets the config reference app settings and status of an app
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the app.
   * @param slot
   * @param options The options parameters.
   */
  private _getSiteConnectionStringKeyVaultReferencesSlot(
    resourceGroupName: string,
    name: string,
    slot: string,
    options?: WebAppsGetSiteConnectionStringKeyVaultReferencesSlotOptionalParams
  ): Promise<WebAppsGetSiteConnectionStringKeyVaultReferencesSlotResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, slot, options },
      getSiteConnectionStringKeyVaultReferencesSlotOperationSpec
    );
  }

  /**
   * Description for Gets the config reference and status of an app
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the app.
   * @param connectionStringKey
   * @param slot
   * @param options The options parameters.
   */
  getSiteConnectionStringKeyVaultReferenceSlot(
    resourceGroupName: string,
    name: string,
    connectionStringKey: string,
    slot: string,
    options?: WebAppsGetSiteConnectionStringKeyVaultReferenceSlotOptionalParams
  ): Promise<WebAppsGetSiteConnectionStringKeyVaultReferenceSlotResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, connectionStringKey, slot, options },
      getSiteConnectionStringKeyVaultReferenceSlotOperationSpec
    );
  }

  /**
   * Description for Replaces the connection strings of an app.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the app.
   * @param slot Name of the deployment slot. If a slot is not specified, the API will update the
   *             connection settings for the production slot.
   * @param connectionStrings Connection strings of the app or deployment slot. See example.
   * @param options The options parameters.
   */
  updateConnectionStringsSlot(
    resourceGroupName: string,
    name: string,
    slot: string,
    connectionStrings: ConnectionStringDictionary,
    options?: WebAppsUpdateConnectionStringsSlotOptionalParams
  ): Promise<WebAppsUpdateConnectionStringsSlotResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, slot, connectionStrings, options },
      updateConnectionStringsSlotOperationSpec
    );
  }

  /**
   * Description for Gets the connection strings of an app.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the app.
   * @param slot Name of the deployment slot. If a slot is not specified, the API will get the connection
   *             settings for the production slot.
   * @param options The options parameters.
   */
  listConnectionStringsSlot(
    resourceGroupName: string,
    name: string,
    slot: string,
    options?: WebAppsListConnectionStringsSlotOptionalParams
  ): Promise<WebAppsListConnectionStringsSlotResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, slot, options },
      listConnectionStringsSlotOperationSpec
    );
  }

  /**
   * Description for Gets the logging configuration of an app.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the app.
   * @param slot Name of the deployment slot. If a slot is not specified, the API will get the logging
   *             configuration for the production slot.
   * @param options The options parameters.
   */
  getDiagnosticLogsConfigurationSlot(
    resourceGroupName: string,
    name: string,
    slot: string,
    options?: WebAppsGetDiagnosticLogsConfigurationSlotOptionalParams
  ): Promise<WebAppsGetDiagnosticLogsConfigurationSlotResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, slot, options },
      getDiagnosticLogsConfigurationSlotOperationSpec
    );
  }

  /**
   * Description for Updates the logging configuration of an app.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the app.
   * @param slot Name of the deployment slot. If a slot is not specified, the API will update the logging
   *             configuration for the production slot.
   * @param siteLogsConfig A SiteLogsConfig JSON object that contains the logging configuration to change
   *                       in the "properties" property.
   * @param options The options parameters.
   */
  updateDiagnosticLogsConfigSlot(
    resourceGroupName: string,
    name: string,
    slot: string,
    siteLogsConfig: SiteLogsConfig,
    options?: WebAppsUpdateDiagnosticLogsConfigSlotOptionalParams
  ): Promise<WebAppsUpdateDiagnosticLogsConfigSlotResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, slot, siteLogsConfig, options },
      updateDiagnosticLogsConfigSlotOperationSpec
    );
  }

  /**
   * Description for Replaces the metadata of an app.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the app.
   * @param slot Name of the deployment slot. If a slot is not specified, the API will update the
   *             metadata for the production slot.
   * @param metadata Edited metadata of the app or deployment slot. See example.
   * @param options The options parameters.
   */
  updateMetadataSlot(
    resourceGroupName: string,
    name: string,
    slot: string,
    metadata: StringDictionary,
    options?: WebAppsUpdateMetadataSlotOptionalParams
  ): Promise<WebAppsUpdateMetadataSlotResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, slot, metadata, options },
      updateMetadataSlotOperationSpec
    );
  }

  /**
   * Description for Gets the metadata of an app.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the app.
   * @param slot Name of the deployment slot. If a slot is not specified, the API will get the metadata
   *             for the production slot.
   * @param options The options parameters.
   */
  listMetadataSlot(
    resourceGroupName: string,
    name: string,
    slot: string,
    options?: WebAppsListMetadataSlotOptionalParams
  ): Promise<WebAppsListMetadataSlotResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, slot, options },
      listMetadataSlotOperationSpec
    );
  }

  /**
   * Description for Gets the Git/FTP publishing credentials of an app.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the app.
   * @param slot Name of the deployment slot. If a slot is not specified, the API will get the publishing
   *             credentials for the production slot.
   * @param options The options parameters.
   */
  async beginListPublishingCredentialsSlot(
    resourceGroupName: string,
    name: string,
    slot: string,
    options?: WebAppsListPublishingCredentialsSlotOptionalParams
  ): Promise<
    SimplePollerLike<
      OperationState<WebAppsListPublishingCredentialsSlotResponse>,
      WebAppsListPublishingCredentialsSlotResponse
    >
  > {
    const directSendOperation = async (
      args: coreClient.OperationArguments,
      spec: coreClient.OperationSpec
    ): Promise<WebAppsListPublishingCredentialsSlotResponse> => {
      return this.client.sendOperationRequest(args, spec);
    };
    const sendOperationFn = async (
      args: coreClient.OperationArguments,
      spec: coreClient.OperationSpec
    ) => {
      let currentRawResponse:
        | coreClient.FullOperationResponse
        | undefined = undefined;
      const providedCallback = args.options?.onResponse;
      const callback: coreClient.RawResponseCallback = (
        rawResponse: coreClient.FullOperationResponse,
        flatResponse: unknown
      ) => {
        currentRawResponse = rawResponse;
        providedCallback?.(rawResponse, flatResponse);
      };
      const updatedArgs = {
        ...args,
        options: {
          ...args.options,
          onResponse: callback
        }
      };
      const flatResponse = await directSendOperation(updatedArgs, spec);
      return {
        flatResponse,
        rawResponse: {
          statusCode: currentRawResponse!.status,
          body: currentRawResponse!.parsedBody,
          headers: currentRawResponse!.headers.toJSON()
        }
      };
    };

    const lro = createLroSpec({
      sendOperationFn,
      args: { resourceGroupName, name, slot, options },
      spec: listPublishingCredentialsSlotOperationSpec
    });
    const poller = await createHttpPoller<
      WebAppsListPublishingCredentialsSlotResponse,
      OperationState<WebAppsListPublishingCredentialsSlotResponse>
    >(lro, {
      restoreFrom: options?.resumeFrom,
      intervalInMs: options?.updateIntervalInMs
    });
    await poller.poll();
    return poller;
  }

  /**
   * Description for Gets the Git/FTP publishing credentials of an app.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the app.
   * @param slot Name of the deployment slot. If a slot is not specified, the API will get the publishing
   *             credentials for the production slot.
   * @param options The options parameters.
   */
  async beginListPublishingCredentialsSlotAndWait(
    resourceGroupName: string,
    name: string,
    slot: string,
    options?: WebAppsListPublishingCredentialsSlotOptionalParams
  ): Promise<WebAppsListPublishingCredentialsSlotResponse> {
    const poller = await this.beginListPublishingCredentialsSlot(
      resourceGroupName,
      name,
      slot,
      options
    );
    return poller.pollUntilDone();
  }

  /**
   * Description for Updates the Push settings associated with web app.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of web app.
   * @param slot Name of web app slot. If not specified then will default to production slot.
   * @param pushSettings Push settings associated with web app.
   * @param options The options parameters.
   */
  updateSitePushSettingsSlot(
    resourceGroupName: string,
    name: string,
    slot: string,
    pushSettings: PushSettings,
    options?: WebAppsUpdateSitePushSettingsSlotOptionalParams
  ): Promise<WebAppsUpdateSitePushSettingsSlotResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, slot, pushSettings, options },
      updateSitePushSettingsSlotOperationSpec
    );
  }

  /**
   * Description for Gets the Push settings associated with web app.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of web app.
   * @param slot Name of web app slot. If not specified then will default to production slot.
   * @param options The options parameters.
   */
  listSitePushSettingsSlot(
    resourceGroupName: string,
    name: string,
    slot: string,
    options?: WebAppsListSitePushSettingsSlotOptionalParams
  ): Promise<WebAppsListSitePushSettingsSlotResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, slot, options },
      listSitePushSettingsSlotOperationSpec
    );
  }

  /**
   * Description for Gets the configuration of an app, such as platform version and bitness, default
   * documents, virtual applications, Always On, etc.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the app.
   * @param slot Name of the deployment slot. If a slot is not specified, the API will return
   *             configuration for the production slot.
   * @param options The options parameters.
   */
  getConfigurationSlot(
    resourceGroupName: string,
    name: string,
    slot: string,
    options?: WebAppsGetConfigurationSlotOptionalParams
  ): Promise<WebAppsGetConfigurationSlotResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, slot, options },
      getConfigurationSlotOperationSpec
    );
  }

  /**
   * Description for Updates the configuration of an app.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the app.
   * @param slot Name of the deployment slot. If a slot is not specified, the API will update
   *             configuration for the production slot.
   * @param siteConfig JSON representation of a SiteConfig object. See example.
   * @param options The options parameters.
   */
  createOrUpdateConfigurationSlot(
    resourceGroupName: string,
    name: string,
    slot: string,
    siteConfig: SiteConfigResource,
    options?: WebAppsCreateOrUpdateConfigurationSlotOptionalParams
  ): Promise<WebAppsCreateOrUpdateConfigurationSlotResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, slot, siteConfig, options },
      createOrUpdateConfigurationSlotOperationSpec
    );
  }

  /**
   * Description for Updates the configuration of an app.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the app.
   * @param slot Name of the deployment slot. If a slot is not specified, the API will update
   *             configuration for the production slot.
   * @param siteConfig JSON representation of a SiteConfig object. See example.
   * @param options The options parameters.
   */
  updateConfigurationSlot(
    resourceGroupName: string,
    name: string,
    slot: string,
    siteConfig: SiteConfigResource,
    options?: WebAppsUpdateConfigurationSlotOptionalParams
  ): Promise<WebAppsUpdateConfigurationSlotResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, slot, siteConfig, options },
      updateConfigurationSlotOperationSpec
    );
  }

  /**
   * Description for Gets a list of web app configuration snapshots identifiers. Each element of the list
   * contains a timestamp and the ID of the snapshot.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the app.
   * @param slot Name of the deployment slot. If a slot is not specified, the API will return
   *             configuration for the production slot.
   * @param options The options parameters.
   */
  private _listConfigurationSnapshotInfoSlot(
    resourceGroupName: string,
    name: string,
    slot: string,
    options?: WebAppsListConfigurationSnapshotInfoSlotOptionalParams
  ): Promise<WebAppsListConfigurationSnapshotInfoSlotResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, slot, options },
      listConfigurationSnapshotInfoSlotOperationSpec
    );
  }

  /**
   * Description for Gets a snapshot of the configuration of an app at a previous point in time.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the app.
   * @param snapshotId The ID of the snapshot to read.
   * @param slot Name of the deployment slot. If a slot is not specified, the API will return
   *             configuration for the production slot.
   * @param options The options parameters.
   */
  getConfigurationSnapshotSlot(
    resourceGroupName: string,
    name: string,
    snapshotId: string,
    slot: string,
    options?: WebAppsGetConfigurationSnapshotSlotOptionalParams
  ): Promise<WebAppsGetConfigurationSnapshotSlotResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, snapshotId, slot, options },
      getConfigurationSnapshotSlotOperationSpec
    );
  }

  /**
   * Description for Reverts the configuration of an app to a previous snapshot.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the app.
   * @param snapshotId The ID of the snapshot to read.
   * @param slot Name of the deployment slot. If a slot is not specified, the API will return
   *             configuration for the production slot.
   * @param options The options parameters.
   */
  recoverSiteConfigurationSnapshotSlot(
    resourceGroupName: string,
    name: string,
    snapshotId: string,
    slot: string,
    options?: WebAppsRecoverSiteConfigurationSnapshotSlotOptionalParams
  ): Promise<void> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, snapshotId, slot, options },
      recoverSiteConfigurationSnapshotSlotOperationSpec
    );
  }

  /**
   * Description for Gets the last lines of docker logs for the given site
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of web app.
   * @param slot Name of web app slot. If not specified then will default to production slot.
   * @param options The options parameters.
   */
  getWebSiteContainerLogsSlot(
    resourceGroupName: string,
    name: string,
    slot: string,
    options?: WebAppsGetWebSiteContainerLogsSlotOptionalParams
  ): Promise<WebAppsGetWebSiteContainerLogsSlotResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, slot, options },
      getWebSiteContainerLogsSlotOperationSpec
    );
  }

  /**
   * Description for Gets the ZIP archived docker log files for the given site
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of web app.
   * @param slot Name of web app slot. If not specified then will default to production slot.
   * @param options The options parameters.
   */
  getContainerLogsZipSlot(
    resourceGroupName: string,
    name: string,
    slot: string,
    options?: WebAppsGetContainerLogsZipSlotOptionalParams
  ): Promise<WebAppsGetContainerLogsZipSlotResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, slot, options },
      getContainerLogsZipSlotOperationSpec
    );
  }

  /**
   * Description for List continuous web jobs for an app, or a deployment slot.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Site name.
   * @param slot Name of the deployment slot. If a slot is not specified, the API deletes a deployment
   *             for the production slot.
   * @param options The options parameters.
   */
  private _listContinuousWebJobsSlot(
    resourceGroupName: string,
    name: string,
    slot: string,
    options?: WebAppsListContinuousWebJobsSlotOptionalParams
  ): Promise<WebAppsListContinuousWebJobsSlotResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, slot, options },
      listContinuousWebJobsSlotOperationSpec
    );
  }

  /**
   * Description for Gets a continuous web job by its ID for an app, or a deployment slot.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Site name.
   * @param webJobName Name of Web Job.
   * @param slot Name of the deployment slot. If a slot is not specified, the API deletes a deployment
   *             for the production slot.
   * @param options The options parameters.
   */
  getContinuousWebJobSlot(
    resourceGroupName: string,
    name: string,
    webJobName: string,
    slot: string,
    options?: WebAppsGetContinuousWebJobSlotOptionalParams
  ): Promise<WebAppsGetContinuousWebJobSlotResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, webJobName, slot, options },
      getContinuousWebJobSlotOperationSpec
    );
  }

  /**
   * Description for Delete a continuous web job by its ID for an app, or a deployment slot.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Site name.
   * @param webJobName Name of Web Job.
   * @param slot Name of the deployment slot. If a slot is not specified, the API deletes a deployment
   *             for the production slot.
   * @param options The options parameters.
   */
  deleteContinuousWebJobSlot(
    resourceGroupName: string,
    name: string,
    webJobName: string,
    slot: string,
    options?: WebAppsDeleteContinuousWebJobSlotOptionalParams
  ): Promise<void> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, webJobName, slot, options },
      deleteContinuousWebJobSlotOperationSpec
    );
  }

  /**
   * Description for Start a continuous web job for an app, or a deployment slot.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Site name.
   * @param webJobName Name of Web Job.
   * @param slot Name of the deployment slot. If a slot is not specified, the API deletes a deployment
   *             for the production slot.
   * @param options The options parameters.
   */
  startContinuousWebJobSlot(
    resourceGroupName: string,
    name: string,
    webJobName: string,
    slot: string,
    options?: WebAppsStartContinuousWebJobSlotOptionalParams
  ): Promise<void> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, webJobName, slot, options },
      startContinuousWebJobSlotOperationSpec
    );
  }

  /**
   * Description for Stop a continuous web job for an app, or a deployment slot.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Site name.
   * @param webJobName Name of Web Job.
   * @param slot Name of the deployment slot. If a slot is not specified, the API deletes a deployment
   *             for the production slot.
   * @param options The options parameters.
   */
  stopContinuousWebJobSlot(
    resourceGroupName: string,
    name: string,
    webJobName: string,
    slot: string,
    options?: WebAppsStopContinuousWebJobSlotOptionalParams
  ): Promise<void> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, webJobName, slot, options },
      stopContinuousWebJobSlotOperationSpec
    );
  }

  /**
   * List deployment statuses for an app (or deployment slot, if specified).
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the app.
   * @param slot Name of the deployment slot. If a slot is not specified, the API will get the deployment
   *             status for the production slot.
   * @param options The options parameters.
   */
  private _listSlotSiteDeploymentStatusesSlot(
    resourceGroupName: string,
    name: string,
    slot: string,
    options?: WebAppsListSlotSiteDeploymentStatusesSlotOptionalParams
  ): Promise<WebAppsListSlotSiteDeploymentStatusesSlotResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, slot, options },
      listSlotSiteDeploymentStatusesSlotOperationSpec
    );
  }

  /**
   * Gets the deployment status for an app (or deployment slot, if specified).
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the app.
   * @param slot Name of the deployment slot. If a slot is not specified, the API will get the deployment
   *             status for the production slot.
   * @param deploymentStatusId GUID of the deployment operation.
   * @param options The options parameters.
   */
  async beginGetSlotSiteDeploymentStatusSlot(
    resourceGroupName: string,
    name: string,
    slot: string,
    deploymentStatusId: string,
    options?: WebAppsGetSlotSiteDeploymentStatusSlotOptionalParams
  ): Promise<
    SimplePollerLike<
      OperationState<WebAppsGetSlotSiteDeploymentStatusSlotResponse>,
      WebAppsGetSlotSiteDeploymentStatusSlotResponse
    >
  > {
    const directSendOperation = async (
      args: coreClient.OperationArguments,
      spec: coreClient.OperationSpec
    ): Promise<WebAppsGetSlotSiteDeploymentStatusSlotResponse> => {
      return this.client.sendOperationRequest(args, spec);
    };
    const sendOperationFn = async (
      args: coreClient.OperationArguments,
      spec: coreClient.OperationSpec
    ) => {
      let currentRawResponse:
        | coreClient.FullOperationResponse
        | undefined = undefined;
      const providedCallback = args.options?.onResponse;
      const callback: coreClient.RawResponseCallback = (
        rawResponse: coreClient.FullOperationResponse,
        flatResponse: unknown
      ) => {
        currentRawResponse = rawResponse;
        providedCallback?.(rawResponse, flatResponse);
      };
      const updatedArgs = {
        ...args,
        options: {
          ...args.options,
          onResponse: callback
        }
      };
      const flatResponse = await directSendOperation(updatedArgs, spec);
      return {
        flatResponse,
        rawResponse: {
          statusCode: currentRawResponse!.status,
          body: currentRawResponse!.parsedBody,
          headers: currentRawResponse!.headers.toJSON()
        }
      };
    };

    const lro = createLroSpec({
      sendOperationFn,
      args: { resourceGroupName, name, slot, deploymentStatusId, options },
      spec: getSlotSiteDeploymentStatusSlotOperationSpec
    });
    const poller = await createHttpPoller<
      WebAppsGetSlotSiteDeploymentStatusSlotResponse,
      OperationState<WebAppsGetSlotSiteDeploymentStatusSlotResponse>
    >(lro, {
      restoreFrom: options?.resumeFrom,
      intervalInMs: options?.updateIntervalInMs
    });
    await poller.poll();
    return poller;
  }

  /**
   * Gets the deployment status for an app (or deployment slot, if specified).
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the app.
   * @param slot Name of the deployment slot. If a slot is not specified, the API will get the deployment
   *             status for the production slot.
   * @param deploymentStatusId GUID of the deployment operation.
   * @param options The options parameters.
   */
  async beginGetSlotSiteDeploymentStatusSlotAndWait(
    resourceGroupName: string,
    name: string,
    slot: string,
    deploymentStatusId: string,
    options?: WebAppsGetSlotSiteDeploymentStatusSlotOptionalParams
  ): Promise<WebAppsGetSlotSiteDeploymentStatusSlotResponse> {
    const poller = await this.beginGetSlotSiteDeploymentStatusSlot(
      resourceGroupName,
      name,
      slot,
      deploymentStatusId,
      options
    );
    return poller.pollUntilDone();
  }

  /**
   * Description for List deployments for an app, or a deployment slot.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the app.
   * @param slot Name of the deployment slot. If a slot is not specified, the API returns deployments for
   *             the production slot.
   * @param options The options parameters.
   */
  private _listDeploymentsSlot(
    resourceGroupName: string,
    name: string,
    slot: string,
    options?: WebAppsListDeploymentsSlotOptionalParams
  ): Promise<WebAppsListDeploymentsSlotResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, slot, options },
      listDeploymentsSlotOperationSpec
    );
  }

  /**
   * Description for Get a deployment by its ID for an app, or a deployment slot.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the app.
   * @param id Deployment ID.
   * @param slot Name of the deployment slot. If a slot is not specified, the API gets a deployment for
   *             the production slot.
   * @param options The options parameters.
   */
  getDeploymentSlot(
    resourceGroupName: string,
    name: string,
    id: string,
    slot: string,
    options?: WebAppsGetDeploymentSlotOptionalParams
  ): Promise<WebAppsGetDeploymentSlotResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, id, slot, options },
      getDeploymentSlotOperationSpec
    );
  }

  /**
   * Description for Create a deployment for an app, or a deployment slot.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the app.
   * @param id ID of an existing deployment.
   * @param slot Name of the deployment slot. If a slot is not specified, the API creates a deployment
   *             for the production slot.
   * @param deployment Deployment details.
   * @param options The options parameters.
   */
  createDeploymentSlot(
    resourceGroupName: string,
    name: string,
    id: string,
    slot: string,
    deployment: Deployment,
    options?: WebAppsCreateDeploymentSlotOptionalParams
  ): Promise<WebAppsCreateDeploymentSlotResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, id, slot, deployment, options },
      createDeploymentSlotOperationSpec
    );
  }

  /**
   * Description for Delete a deployment by its ID for an app, or a deployment slot.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the app.
   * @param id Deployment ID.
   * @param slot Name of the deployment slot. If a slot is not specified, the API deletes a deployment
   *             for the production slot.
   * @param options The options parameters.
   */
  deleteDeploymentSlot(
    resourceGroupName: string,
    name: string,
    id: string,
    slot: string,
    options?: WebAppsDeleteDeploymentSlotOptionalParams
  ): Promise<void> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, id, slot, options },
      deleteDeploymentSlotOperationSpec
    );
  }

  /**
   * Description for List deployment log for specific deployment for an app, or a deployment slot.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the app.
   * @param id The ID of a specific deployment. This is the value of the name property in the JSON
   *           response from "GET /api/sites/{siteName}/deployments".
   * @param slot Name of the deployment slot. If a slot is not specified, the API returns deployments for
   *             the production slot.
   * @param options The options parameters.
   */
  listDeploymentLogSlot(
    resourceGroupName: string,
    name: string,
    id: string,
    slot: string,
    options?: WebAppsListDeploymentLogSlotOptionalParams
  ): Promise<WebAppsListDeploymentLogSlotResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, id, slot, options },
      listDeploymentLogSlotOperationSpec
    );
  }

  /**
   * Description for Discovers an existing app backup that can be restored from a blob in Azure storage.
   * Use this to get information about the databases stored in a backup.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the app.
   * @param slot Name of the deployment slot. If a slot is not specified, the API will perform discovery
   *             for the production slot.
   * @param request A RestoreRequest object that includes Azure storage URL and blog name for discovery
   *                of backup.
   * @param options The options parameters.
   */
  discoverBackupSlot(
    resourceGroupName: string,
    name: string,
    slot: string,
    request: RestoreRequest,
    options?: WebAppsDiscoverBackupSlotOptionalParams
  ): Promise<WebAppsDiscoverBackupSlotResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, slot, request, options },
      discoverBackupSlotOperationSpec
    );
  }

  /**
   * Description for Lists ownership identifiers for domain associated with web app.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the app.
   * @param slot Name of the deployment slot. If a slot is not specified, the API will delete the binding
   *             for the production slot.
   * @param options The options parameters.
   */
  private _listDomainOwnershipIdentifiersSlot(
    resourceGroupName: string,
    name: string,
    slot: string,
    options?: WebAppsListDomainOwnershipIdentifiersSlotOptionalParams
  ): Promise<WebAppsListDomainOwnershipIdentifiersSlotResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, slot, options },
      listDomainOwnershipIdentifiersSlotOperationSpec
    );
  }

  /**
   * Description for Get domain ownership identifier for web app.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the app.
   * @param domainOwnershipIdentifierName Name of domain ownership identifier.
   * @param slot Name of the deployment slot. If a slot is not specified, the API will delete the binding
   *             for the production slot.
   * @param options The options parameters.
   */
  getDomainOwnershipIdentifierSlot(
    resourceGroupName: string,
    name: string,
    domainOwnershipIdentifierName: string,
    slot: string,
    options?: WebAppsGetDomainOwnershipIdentifierSlotOptionalParams
  ): Promise<WebAppsGetDomainOwnershipIdentifierSlotResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, domainOwnershipIdentifierName, slot, options },
      getDomainOwnershipIdentifierSlotOperationSpec
    );
  }

  /**
   * Description for Creates a domain ownership identifier for web app, or updates an existing ownership
   * identifier.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the app.
   * @param domainOwnershipIdentifierName Name of domain ownership identifier.
   * @param slot Name of the deployment slot. If a slot is not specified, the API will delete the binding
   *             for the production slot.
   * @param domainOwnershipIdentifier A JSON representation of the domain ownership properties.
   * @param options The options parameters.
   */
  createOrUpdateDomainOwnershipIdentifierSlot(
    resourceGroupName: string,
    name: string,
    domainOwnershipIdentifierName: string,
    slot: string,
    domainOwnershipIdentifier: Identifier,
    options?: WebAppsCreateOrUpdateDomainOwnershipIdentifierSlotOptionalParams
  ): Promise<WebAppsCreateOrUpdateDomainOwnershipIdentifierSlotResponse> {
    return this.client.sendOperationRequest(
      {
        resourceGroupName,
        name,
        domainOwnershipIdentifierName,
        slot,
        domainOwnershipIdentifier,
        options
      },
      createOrUpdateDomainOwnershipIdentifierSlotOperationSpec
    );
  }

  /**
   * Description for Deletes a domain ownership identifier for a web app.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the app.
   * @param domainOwnershipIdentifierName Name of domain ownership identifier.
   * @param slot Name of the deployment slot. If a slot is not specified, the API will delete the binding
   *             for the production slot.
   * @param options The options parameters.
   */
  deleteDomainOwnershipIdentifierSlot(
    resourceGroupName: string,
    name: string,
    domainOwnershipIdentifierName: string,
    slot: string,
    options?: WebAppsDeleteDomainOwnershipIdentifierSlotOptionalParams
  ): Promise<void> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, domainOwnershipIdentifierName, slot, options },
      deleteDomainOwnershipIdentifierSlotOperationSpec
    );
  }

  /**
   * Description for Creates a domain ownership identifier for web app, or updates an existing ownership
   * identifier.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the app.
   * @param domainOwnershipIdentifierName Name of domain ownership identifier.
   * @param slot Name of the deployment slot. If a slot is not specified, the API will delete the binding
   *             for the production slot.
   * @param domainOwnershipIdentifier A JSON representation of the domain ownership properties.
   * @param options The options parameters.
   */
  updateDomainOwnershipIdentifierSlot(
    resourceGroupName: string,
    name: string,
    domainOwnershipIdentifierName: string,
    slot: string,
    domainOwnershipIdentifier: Identifier,
    options?: WebAppsUpdateDomainOwnershipIdentifierSlotOptionalParams
  ): Promise<WebAppsUpdateDomainOwnershipIdentifierSlotResponse> {
    return this.client.sendOperationRequest(
      {
        resourceGroupName,
        name,
        domainOwnershipIdentifierName,
        slot,
        domainOwnershipIdentifier,
        options
      },
      updateDomainOwnershipIdentifierSlotOperationSpec
    );
  }

  /**
   * Description for Get the status of the last MSDeploy operation.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of web app.
   * @param slot Name of web app slot. If not specified then will default to production slot.
   * @param options The options parameters.
   */
  getMSDeployStatusSlot(
    resourceGroupName: string,
    name: string,
    slot: string,
    options?: WebAppsGetMSDeployStatusSlotOptionalParams
  ): Promise<WebAppsGetMSDeployStatusSlotResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, slot, options },
      getMSDeployStatusSlotOperationSpec
    );
  }

  /**
   * Description for Invoke the MSDeploy web app extension.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of web app.
   * @param slot Name of web app slot. If not specified then will default to production slot.
   * @param mSDeploy Details of MSDeploy operation
   * @param options The options parameters.
   */
  async beginCreateMSDeployOperationSlot(
    resourceGroupName: string,
    name: string,
    slot: string,
    mSDeploy: MSDeploy,
    options?: WebAppsCreateMSDeployOperationSlotOptionalParams
  ): Promise<
    SimplePollerLike<
      OperationState<WebAppsCreateMSDeployOperationSlotResponse>,
      WebAppsCreateMSDeployOperationSlotResponse
    >
  > {
    const directSendOperation = async (
      args: coreClient.OperationArguments,
      spec: coreClient.OperationSpec
    ): Promise<WebAppsCreateMSDeployOperationSlotResponse> => {
      return this.client.sendOperationRequest(args, spec);
    };
    const sendOperationFn = async (
      args: coreClient.OperationArguments,
      spec: coreClient.OperationSpec
    ) => {
      let currentRawResponse:
        | coreClient.FullOperationResponse
        | undefined = undefined;
      const providedCallback = args.options?.onResponse;
      const callback: coreClient.RawResponseCallback = (
        rawResponse: coreClient.FullOperationResponse,
        flatResponse: unknown
      ) => {
        currentRawResponse = rawResponse;
        providedCallback?.(rawResponse, flatResponse);
      };
      const updatedArgs = {
        ...args,
        options: {
          ...args.options,
          onResponse: callback
        }
      };
      const flatResponse = await directSendOperation(updatedArgs, spec);
      return {
        flatResponse,
        rawResponse: {
          statusCode: currentRawResponse!.status,
          body: currentRawResponse!.parsedBody,
          headers: currentRawResponse!.headers.toJSON()
        }
      };
    };

    const lro = createLroSpec({
      sendOperationFn,
      args: { resourceGroupName, name, slot, mSDeploy, options },
      spec: createMSDeployOperationSlotOperationSpec
    });
    const poller = await createHttpPoller<
      WebAppsCreateMSDeployOperationSlotResponse,
      OperationState<WebAppsCreateMSDeployOperationSlotResponse>
    >(lro, {
      restoreFrom: options?.resumeFrom,
      intervalInMs: options?.updateIntervalInMs
    });
    await poller.poll();
    return poller;
  }

  /**
   * Description for Invoke the MSDeploy web app extension.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of web app.
   * @param slot Name of web app slot. If not specified then will default to production slot.
   * @param mSDeploy Details of MSDeploy operation
   * @param options The options parameters.
   */
  async beginCreateMSDeployOperationSlotAndWait(
    resourceGroupName: string,
    name: string,
    slot: string,
    mSDeploy: MSDeploy,
    options?: WebAppsCreateMSDeployOperationSlotOptionalParams
  ): Promise<WebAppsCreateMSDeployOperationSlotResponse> {
    const poller = await this.beginCreateMSDeployOperationSlot(
      resourceGroupName,
      name,
      slot,
      mSDeploy,
      options
    );
    return poller.pollUntilDone();
  }

  /**
   * Description for Get the MSDeploy Log for the last MSDeploy operation.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of web app.
   * @param slot Name of web app slot. If not specified then will default to production slot.
   * @param options The options parameters.
   */
  getMSDeployLogSlot(
    resourceGroupName: string,
    name: string,
    slot: string,
    options?: WebAppsGetMSDeployLogSlotOptionalParams
  ): Promise<WebAppsGetMSDeployLogSlotResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, slot, options },
      getMSDeployLogSlotOperationSpec
    );
  }

  /**
   * Description for List the functions for a web site, or a deployment slot.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Site name.
   * @param slot Name of the deployment slot.
   * @param options The options parameters.
   */
  private _listInstanceFunctionsSlot(
    resourceGroupName: string,
    name: string,
    slot: string,
    options?: WebAppsListInstanceFunctionsSlotOptionalParams
  ): Promise<WebAppsListInstanceFunctionsSlotResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, slot, options },
      listInstanceFunctionsSlotOperationSpec
    );
  }

  /**
   * Description for Fetch a short lived token that can be exchanged for a master key.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of web app.
   * @param slot Name of web app slot. If not specified then will default to production slot.
   * @param options The options parameters.
   */
  getFunctionsAdminTokenSlot(
    resourceGroupName: string,
    name: string,
    slot: string,
    options?: WebAppsGetFunctionsAdminTokenSlotOptionalParams
  ): Promise<WebAppsGetFunctionsAdminTokenSlotResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, slot, options },
      getFunctionsAdminTokenSlotOperationSpec
    );
  }

  /**
   * Description for Get function information by its ID for web site, or a deployment slot.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Site name.
   * @param functionName Function name.
   * @param slot Name of the deployment slot.
   * @param options The options parameters.
   */
  getInstanceFunctionSlot(
    resourceGroupName: string,
    name: string,
    functionName: string,
    slot: string,
    options?: WebAppsGetInstanceFunctionSlotOptionalParams
  ): Promise<WebAppsGetInstanceFunctionSlotResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, functionName, slot, options },
      getInstanceFunctionSlotOperationSpec
    );
  }

  /**
   * Description for Create function for web site, or a deployment slot.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Site name.
   * @param functionName Function name.
   * @param slot Name of the deployment slot.
   * @param functionEnvelope Function details.
   * @param options The options parameters.
   */
  async beginCreateInstanceFunctionSlot(
    resourceGroupName: string,
    name: string,
    functionName: string,
    slot: string,
    functionEnvelope: FunctionEnvelope,
    options?: WebAppsCreateInstanceFunctionSlotOptionalParams
  ): Promise<
    SimplePollerLike<
      OperationState<WebAppsCreateInstanceFunctionSlotResponse>,
      WebAppsCreateInstanceFunctionSlotResponse
    >
  > {
    const directSendOperation = async (
      args: coreClient.OperationArguments,
      spec: coreClient.OperationSpec
    ): Promise<WebAppsCreateInstanceFunctionSlotResponse> => {
      return this.client.sendOperationRequest(args, spec);
    };
    const sendOperationFn = async (
      args: coreClient.OperationArguments,
      spec: coreClient.OperationSpec
    ) => {
      let currentRawResponse:
        | coreClient.FullOperationResponse
        | undefined = undefined;
      const providedCallback = args.options?.onResponse;
      const callback: coreClient.RawResponseCallback = (
        rawResponse: coreClient.FullOperationResponse,
        flatResponse: unknown
      ) => {
        currentRawResponse = rawResponse;
        providedCallback?.(rawResponse, flatResponse);
      };
      const updatedArgs = {
        ...args,
        options: {
          ...args.options,
          onResponse: callback
        }
      };
      const flatResponse = await directSendOperation(updatedArgs, spec);
      return {
        flatResponse,
        rawResponse: {
          statusCode: currentRawResponse!.status,
          body: currentRawResponse!.parsedBody,
          headers: currentRawResponse!.headers.toJSON()
        }
      };
    };

    const lro = createLroSpec({
      sendOperationFn,
      args: {
        resourceGroupName,
        name,
        functionName,
        slot,
        functionEnvelope,
        options
      },
      spec: createInstanceFunctionSlotOperationSpec
    });
    const poller = await createHttpPoller<
      WebAppsCreateInstanceFunctionSlotResponse,
      OperationState<WebAppsCreateInstanceFunctionSlotResponse>
    >(lro, {
      restoreFrom: options?.resumeFrom,
      intervalInMs: options?.updateIntervalInMs
    });
    await poller.poll();
    return poller;
  }

  /**
   * Description for Create function for web site, or a deployment slot.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Site name.
   * @param functionName Function name.
   * @param slot Name of the deployment slot.
   * @param functionEnvelope Function details.
   * @param options The options parameters.
   */
  async beginCreateInstanceFunctionSlotAndWait(
    resourceGroupName: string,
    name: string,
    functionName: string,
    slot: string,
    functionEnvelope: FunctionEnvelope,
    options?: WebAppsCreateInstanceFunctionSlotOptionalParams
  ): Promise<WebAppsCreateInstanceFunctionSlotResponse> {
    const poller = await this.beginCreateInstanceFunctionSlot(
      resourceGroupName,
      name,
      functionName,
      slot,
      functionEnvelope,
      options
    );
    return poller.pollUntilDone();
  }

  /**
   * Description for Delete a function for web site, or a deployment slot.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Site name.
   * @param functionName Function name.
   * @param slot Name of the deployment slot.
   * @param options The options parameters.
   */
  deleteInstanceFunctionSlot(
    resourceGroupName: string,
    name: string,
    functionName: string,
    slot: string,
    options?: WebAppsDeleteInstanceFunctionSlotOptionalParams
  ): Promise<void> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, functionName, slot, options },
      deleteInstanceFunctionSlotOperationSpec
    );
  }

  /**
   * Description for Add or update a function secret.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Site name.
   * @param functionName The name of the function.
   * @param keyName The name of the key.
   * @param slot Name of the deployment slot.
   * @param key The key to create or update
   * @param options The options parameters.
   */
  createOrUpdateFunctionSecretSlot(
    resourceGroupName: string,
    name: string,
    functionName: string,
    keyName: string,
    slot: string,
    key: KeyInfo,
    options?: WebAppsCreateOrUpdateFunctionSecretSlotOptionalParams
  ): Promise<WebAppsCreateOrUpdateFunctionSecretSlotResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, functionName, keyName, slot, key, options },
      createOrUpdateFunctionSecretSlotOperationSpec
    );
  }

  /**
   * Description for Delete a function secret.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Site name.
   * @param functionName The name of the function.
   * @param keyName The name of the key.
   * @param slot Name of the deployment slot.
   * @param options The options parameters.
   */
  deleteFunctionSecretSlot(
    resourceGroupName: string,
    name: string,
    functionName: string,
    keyName: string,
    slot: string,
    options?: WebAppsDeleteFunctionSecretSlotOptionalParams
  ): Promise<void> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, functionName, keyName, slot, options },
      deleteFunctionSecretSlotOperationSpec
    );
  }

  /**
   * Description for Get function keys for a function in a web site, or a deployment slot.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Site name.
   * @param functionName Function name.
   * @param slot Name of the deployment slot.
   * @param options The options parameters.
   */
  listFunctionKeysSlot(
    resourceGroupName: string,
    name: string,
    functionName: string,
    slot: string,
    options?: WebAppsListFunctionKeysSlotOptionalParams
  ): Promise<WebAppsListFunctionKeysSlotResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, functionName, slot, options },
      listFunctionKeysSlotOperationSpec
    );
  }

  /**
   * Description for Get function secrets for a function in a web site, or a deployment slot.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Site name.
   * @param functionName Function name.
   * @param slot Name of the deployment slot.
   * @param options The options parameters.
   */
  listFunctionSecretsSlot(
    resourceGroupName: string,
    name: string,
    functionName: string,
    slot: string,
    options?: WebAppsListFunctionSecretsSlotOptionalParams
  ): Promise<WebAppsListFunctionSecretsSlotResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, functionName, slot, options },
      listFunctionSecretsSlotOperationSpec
    );
  }

  /**
   * Description for Get host secrets for a function app.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Site name.
   * @param slot Name of the deployment slot.
   * @param options The options parameters.
   */
  listHostKeysSlot(
    resourceGroupName: string,
    name: string,
    slot: string,
    options?: WebAppsListHostKeysSlotOptionalParams
  ): Promise<WebAppsListHostKeysSlotResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, slot, options },
      listHostKeysSlotOperationSpec
    );
  }

  /**
   * Description for This is to allow calling via powershell and ARM template.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the app.
   * @param slot Name of the deployment slot.
   * @param options The options parameters.
   */
  listSyncStatusSlot(
    resourceGroupName: string,
    name: string,
    slot: string,
    options?: WebAppsListSyncStatusSlotOptionalParams
  ): Promise<void> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, slot, options },
      listSyncStatusSlotOperationSpec
    );
  }

  /**
   * Description for Syncs function trigger metadata to the management database
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the app.
   * @param slot Name of the deployment slot.
   * @param options The options parameters.
   */
  syncFunctionsSlot(
    resourceGroupName: string,
    name: string,
    slot: string,
    options?: WebAppsSyncFunctionsSlotOptionalParams
  ): Promise<void> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, slot, options },
      syncFunctionsSlotOperationSpec
    );
  }

  /**
   * Description for Add or update a host level secret.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Site name.
   * @param keyType The type of host key.
   * @param keyName The name of the key.
   * @param slot Name of the deployment slot.
   * @param key The key to create or update
   * @param options The options parameters.
   */
  createOrUpdateHostSecretSlot(
    resourceGroupName: string,
    name: string,
    keyType: string,
    keyName: string,
    slot: string,
    key: KeyInfo,
    options?: WebAppsCreateOrUpdateHostSecretSlotOptionalParams
  ): Promise<WebAppsCreateOrUpdateHostSecretSlotResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, keyType, keyName, slot, key, options },
      createOrUpdateHostSecretSlotOperationSpec
    );
  }

  /**
   * Description for Delete a host level secret.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Site name.
   * @param keyType The type of host key.
   * @param keyName The name of the key.
   * @param slot Name of the deployment slot.
   * @param options The options parameters.
   */
  deleteHostSecretSlot(
    resourceGroupName: string,
    name: string,
    keyType: string,
    keyName: string,
    slot: string,
    options?: WebAppsDeleteHostSecretSlotOptionalParams
  ): Promise<void> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, keyType, keyName, slot, options },
      deleteHostSecretSlotOperationSpec
    );
  }

  /**
   * Description for Get hostname bindings for an app or a deployment slot.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the app.
   * @param slot Name of the deployment slot. If a slot is not specified, the API gets hostname bindings
   *             for the production slot.
   * @param options The options parameters.
   */
  private _listHostNameBindingsSlot(
    resourceGroupName: string,
    name: string,
    slot: string,
    options?: WebAppsListHostNameBindingsSlotOptionalParams
  ): Promise<WebAppsListHostNameBindingsSlotResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, slot, options },
      listHostNameBindingsSlotOperationSpec
    );
  }

  /**
   * Description for Get the named hostname binding for an app (or deployment slot, if specified).
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the app.
   * @param slot Name of the deployment slot. If a slot is not specified, the API the named binding for
   *             the production slot.
   * @param hostName Hostname in the hostname binding.
   * @param options The options parameters.
   */
  getHostNameBindingSlot(
    resourceGroupName: string,
    name: string,
    slot: string,
    hostName: string,
    options?: WebAppsGetHostNameBindingSlotOptionalParams
  ): Promise<WebAppsGetHostNameBindingSlotResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, slot, hostName, options },
      getHostNameBindingSlotOperationSpec
    );
  }

  /**
   * Description for Creates a hostname binding for an app.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the app.
   * @param hostName Hostname in the hostname binding.
   * @param slot Name of the deployment slot. If a slot is not specified, the API will create a binding
   *             for the production slot.
   * @param hostNameBinding Binding details. This is the JSON representation of a HostNameBinding object.
   * @param options The options parameters.
   */
  createOrUpdateHostNameBindingSlot(
    resourceGroupName: string,
    name: string,
    hostName: string,
    slot: string,
    hostNameBinding: HostNameBinding,
    options?: WebAppsCreateOrUpdateHostNameBindingSlotOptionalParams
  ): Promise<WebAppsCreateOrUpdateHostNameBindingSlotResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, hostName, slot, hostNameBinding, options },
      createOrUpdateHostNameBindingSlotOperationSpec
    );
  }

  /**
   * Description for Deletes a hostname binding for an app.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the app.
   * @param slot Name of the deployment slot. If a slot is not specified, the API will delete the binding
   *             for the production slot.
   * @param hostName Hostname in the hostname binding.
   * @param options The options parameters.
   */
  deleteHostNameBindingSlot(
    resourceGroupName: string,
    name: string,
    slot: string,
    hostName: string,
    options?: WebAppsDeleteHostNameBindingSlotOptionalParams
  ): Promise<void> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, slot, hostName, options },
      deleteHostNameBindingSlotOperationSpec
    );
  }

  /**
   * Description for Retrieves a specific Service Bus Hybrid Connection used by this Web App.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name The name of the web app.
   * @param namespaceName The namespace for this hybrid connection.
   * @param relayName The relay name for this hybrid connection.
   * @param slot The name of the slot for the web app.
   * @param options The options parameters.
   */
  getHybridConnectionSlot(
    resourceGroupName: string,
    name: string,
    namespaceName: string,
    relayName: string,
    slot: string,
    options?: WebAppsGetHybridConnectionSlotOptionalParams
  ): Promise<WebAppsGetHybridConnectionSlotResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, namespaceName, relayName, slot, options },
      getHybridConnectionSlotOperationSpec
    );
  }

  /**
   * Description for Creates a new Hybrid Connection using a Service Bus relay.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name The name of the web app.
   * @param namespaceName The namespace for this hybrid connection.
   * @param relayName The relay name for this hybrid connection.
   * @param slot The name of the slot for the web app.
   * @param connectionEnvelope The details of the hybrid connection.
   * @param options The options parameters.
   */
  createOrUpdateHybridConnectionSlot(
    resourceGroupName: string,
    name: string,
    namespaceName: string,
    relayName: string,
    slot: string,
    connectionEnvelope: HybridConnection,
    options?: WebAppsCreateOrUpdateHybridConnectionSlotOptionalParams
  ): Promise<WebAppsCreateOrUpdateHybridConnectionSlotResponse> {
    return this.client.sendOperationRequest(
      {
        resourceGroupName,
        name,
        namespaceName,
        relayName,
        slot,
        connectionEnvelope,
        options
      },
      createOrUpdateHybridConnectionSlotOperationSpec
    );
  }

  /**
   * Description for Removes a Hybrid Connection from this site.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name The name of the web app.
   * @param namespaceName The namespace for this hybrid connection.
   * @param relayName The relay name for this hybrid connection.
   * @param slot The name of the slot for the web app.
   * @param options The options parameters.
   */
  deleteHybridConnectionSlot(
    resourceGroupName: string,
    name: string,
    namespaceName: string,
    relayName: string,
    slot: string,
    options?: WebAppsDeleteHybridConnectionSlotOptionalParams
  ): Promise<void> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, namespaceName, relayName, slot, options },
      deleteHybridConnectionSlotOperationSpec
    );
  }

  /**
   * Description for Creates a new Hybrid Connection using a Service Bus relay.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name The name of the web app.
   * @param namespaceName The namespace for this hybrid connection.
   * @param relayName The relay name for this hybrid connection.
   * @param slot The name of the slot for the web app.
   * @param connectionEnvelope The details of the hybrid connection.
   * @param options The options parameters.
   */
  updateHybridConnectionSlot(
    resourceGroupName: string,
    name: string,
    namespaceName: string,
    relayName: string,
    slot: string,
    connectionEnvelope: HybridConnection,
    options?: WebAppsUpdateHybridConnectionSlotOptionalParams
  ): Promise<WebAppsUpdateHybridConnectionSlotResponse> {
    return this.client.sendOperationRequest(
      {
        resourceGroupName,
        name,
        namespaceName,
        relayName,
        slot,
        connectionEnvelope,
        options
      },
      updateHybridConnectionSlotOperationSpec
    );
  }

  /**
   * Description for Retrieves all Service Bus Hybrid Connections used by this Web App.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name The name of the web app.
   * @param slot The name of the slot for the web app.
   * @param options The options parameters.
   */
  listHybridConnectionsSlot(
    resourceGroupName: string,
    name: string,
    slot: string,
    options?: WebAppsListHybridConnectionsSlotOptionalParams
  ): Promise<WebAppsListHybridConnectionsSlotResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, slot, options },
      listHybridConnectionsSlotOperationSpec
    );
  }

  /**
   * Description for Gets hybrid connections configured for an app (or deployment slot, if specified).
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the app.
   * @param slot Name of the deployment slot. If a slot is not specified, the API will get hybrid
   *             connections for the production slot.
   * @param options The options parameters.
   */
  listRelayServiceConnectionsSlot(
    resourceGroupName: string,
    name: string,
    slot: string,
    options?: WebAppsListRelayServiceConnectionsSlotOptionalParams
  ): Promise<WebAppsListRelayServiceConnectionsSlotResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, slot, options },
      listRelayServiceConnectionsSlotOperationSpec
    );
  }

  /**
   * Description for Gets a hybrid connection configuration by its name.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the app.
   * @param entityName Name of the hybrid connection.
   * @param slot Name of the deployment slot. If a slot is not specified, the API will get a hybrid
   *             connection for the production slot.
   * @param options The options parameters.
   */
  getRelayServiceConnectionSlot(
    resourceGroupName: string,
    name: string,
    entityName: string,
    slot: string,
    options?: WebAppsGetRelayServiceConnectionSlotOptionalParams
  ): Promise<WebAppsGetRelayServiceConnectionSlotResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, entityName, slot, options },
      getRelayServiceConnectionSlotOperationSpec
    );
  }

  /**
   * Description for Creates a new hybrid connection configuration (PUT), or updates an existing one
   * (PATCH).
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the app.
   * @param entityName Name of the hybrid connection configuration.
   * @param slot Name of the deployment slot. If a slot is not specified, the API will create or update a
   *             hybrid connection for the production slot.
   * @param connectionEnvelope Details of the hybrid connection configuration.
   * @param options The options parameters.
   */
  createOrUpdateRelayServiceConnectionSlot(
    resourceGroupName: string,
    name: string,
    entityName: string,
    slot: string,
    connectionEnvelope: RelayServiceConnectionEntity,
    options?: WebAppsCreateOrUpdateRelayServiceConnectionSlotOptionalParams
  ): Promise<WebAppsCreateOrUpdateRelayServiceConnectionSlotResponse> {
    return this.client.sendOperationRequest(
      {
        resourceGroupName,
        name,
        entityName,
        slot,
        connectionEnvelope,
        options
      },
      createOrUpdateRelayServiceConnectionSlotOperationSpec
    );
  }

  /**
   * Description for Deletes a relay service connection by its name.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the app.
   * @param entityName Name of the hybrid connection configuration.
   * @param slot Name of the deployment slot. If a slot is not specified, the API will delete a hybrid
   *             connection for the production slot.
   * @param options The options parameters.
   */
  deleteRelayServiceConnectionSlot(
    resourceGroupName: string,
    name: string,
    entityName: string,
    slot: string,
    options?: WebAppsDeleteRelayServiceConnectionSlotOptionalParams
  ): Promise<void> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, entityName, slot, options },
      deleteRelayServiceConnectionSlotOperationSpec
    );
  }

  /**
   * Description for Creates a new hybrid connection configuration (PUT), or updates an existing one
   * (PATCH).
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the app.
   * @param entityName Name of the hybrid connection configuration.
   * @param slot Name of the deployment slot. If a slot is not specified, the API will create or update a
   *             hybrid connection for the production slot.
   * @param connectionEnvelope Details of the hybrid connection configuration.
   * @param options The options parameters.
   */
  updateRelayServiceConnectionSlot(
    resourceGroupName: string,
    name: string,
    entityName: string,
    slot: string,
    connectionEnvelope: RelayServiceConnectionEntity,
    options?: WebAppsUpdateRelayServiceConnectionSlotOptionalParams
  ): Promise<WebAppsUpdateRelayServiceConnectionSlotResponse> {
    return this.client.sendOperationRequest(
      {
        resourceGroupName,
        name,
        entityName,
        slot,
        connectionEnvelope,
        options
      },
      updateRelayServiceConnectionSlotOperationSpec
    );
  }

  /**
   * Description for Gets all scale-out instances of an app.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the app.
   * @param slot Name of the deployment slot. If a slot is not specified, the API gets the production
   *             slot instances.
   * @param options The options parameters.
   */
  private _listInstanceIdentifiersSlot(
    resourceGroupName: string,
    name: string,
    slot: string,
    options?: WebAppsListInstanceIdentifiersSlotOptionalParams
  ): Promise<WebAppsListInstanceIdentifiersSlotResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, slot, options },
      listInstanceIdentifiersSlotOperationSpec
    );
  }

  /**
   * Description for Gets all scale-out instances of an app.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the app.
   * @param instanceId
   * @param slot Name of the deployment slot. If a slot is not specified, the API gets the production
   *             slot instances.
   * @param options The options parameters.
   */
  getInstanceInfoSlot(
    resourceGroupName: string,
    name: string,
    instanceId: string,
    slot: string,
    options?: WebAppsGetInstanceInfoSlotOptionalParams
  ): Promise<WebAppsGetInstanceInfoSlotResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, instanceId, slot, options },
      getInstanceInfoSlotOperationSpec
    );
  }

  /**
   * Description for Get the status of the last MSDeploy operation.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of web app.
   * @param slot Name of web app slot. If not specified then will default to production slot.
   * @param instanceId ID of web app instance.
   * @param options The options parameters.
   */
  getInstanceMsDeployStatusSlot(
    resourceGroupName: string,
    name: string,
    slot: string,
    instanceId: string,
    options?: WebAppsGetInstanceMsDeployStatusSlotOptionalParams
  ): Promise<WebAppsGetInstanceMsDeployStatusSlotResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, slot, instanceId, options },
      getInstanceMsDeployStatusSlotOperationSpec
    );
  }

  /**
   * Description for Invoke the MSDeploy web app extension.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of web app.
   * @param slot Name of web app slot. If not specified then will default to production slot.
   * @param instanceId ID of web app instance.
   * @param mSDeploy Details of MSDeploy operation
   * @param options The options parameters.
   */
  async beginCreateInstanceMSDeployOperationSlot(
    resourceGroupName: string,
    name: string,
    slot: string,
    instanceId: string,
    mSDeploy: MSDeploy,
    options?: WebAppsCreateInstanceMSDeployOperationSlotOptionalParams
  ): Promise<
    SimplePollerLike<
      OperationState<WebAppsCreateInstanceMSDeployOperationSlotResponse>,
      WebAppsCreateInstanceMSDeployOperationSlotResponse
    >
  > {
    const directSendOperation = async (
      args: coreClient.OperationArguments,
      spec: coreClient.OperationSpec
    ): Promise<WebAppsCreateInstanceMSDeployOperationSlotResponse> => {
      return this.client.sendOperationRequest(args, spec);
    };
    const sendOperationFn = async (
      args: coreClient.OperationArguments,
      spec: coreClient.OperationSpec
    ) => {
      let currentRawResponse:
        | coreClient.FullOperationResponse
        | undefined = undefined;
      const providedCallback = args.options?.onResponse;
      const callback: coreClient.RawResponseCallback = (
        rawResponse: coreClient.FullOperationResponse,
        flatResponse: unknown
      ) => {
        currentRawResponse = rawResponse;
        providedCallback?.(rawResponse, flatResponse);
      };
      const updatedArgs = {
        ...args,
        options: {
          ...args.options,
          onResponse: callback
        }
      };
      const flatResponse = await directSendOperation(updatedArgs, spec);
      return {
        flatResponse,
        rawResponse: {
          statusCode: currentRawResponse!.status,
          body: currentRawResponse!.parsedBody,
          headers: currentRawResponse!.headers.toJSON()
        }
      };
    };

    const lro = createLroSpec({
      sendOperationFn,
      args: { resourceGroupName, name, slot, instanceId, mSDeploy, options },
      spec: createInstanceMSDeployOperationSlotOperationSpec
    });
    const poller = await createHttpPoller<
      WebAppsCreateInstanceMSDeployOperationSlotResponse,
      OperationState<WebAppsCreateInstanceMSDeployOperationSlotResponse>
    >(lro, {
      restoreFrom: options?.resumeFrom,
      intervalInMs: options?.updateIntervalInMs
    });
    await poller.poll();
    return poller;
  }

  /**
   * Description for Invoke the MSDeploy web app extension.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of web app.
   * @param slot Name of web app slot. If not specified then will default to production slot.
   * @param instanceId ID of web app instance.
   * @param mSDeploy Details of MSDeploy operation
   * @param options The options parameters.
   */
  async beginCreateInstanceMSDeployOperationSlotAndWait(
    resourceGroupName: string,
    name: string,
    slot: string,
    instanceId: string,
    mSDeploy: MSDeploy,
    options?: WebAppsCreateInstanceMSDeployOperationSlotOptionalParams
  ): Promise<WebAppsCreateInstanceMSDeployOperationSlotResponse> {
    const poller = await this.beginCreateInstanceMSDeployOperationSlot(
      resourceGroupName,
      name,
      slot,
      instanceId,
      mSDeploy,
      options
    );
    return poller.pollUntilDone();
  }

  /**
   * Description for Get the MSDeploy Log for the last MSDeploy operation.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of web app.
   * @param slot Name of web app slot. If not specified then will default to production slot.
   * @param instanceId ID of web app instance.
   * @param options The options parameters.
   */
  getInstanceMSDeployLogSlot(
    resourceGroupName: string,
    name: string,
    slot: string,
    instanceId: string,
    options?: WebAppsGetInstanceMSDeployLogSlotOptionalParams
  ): Promise<WebAppsGetInstanceMSDeployLogSlotResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, slot, instanceId, options },
      getInstanceMSDeployLogSlotOperationSpec
    );
  }

  /**
   * Description for Get list of processes for a web site, or a deployment slot, or for a specific
   * scaled-out instance in a web site.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Site name.
   * @param slot Name of the deployment slot. If a slot is not specified, the API returns deployments for
   *             the production slot.
   * @param instanceId ID of a specific scaled-out instance. This is the value of the name property in
   *                   the JSON response from "GET api/sites/{siteName}/instances".
   * @param options The options parameters.
   */
  private _listInstanceProcessesSlot(
    resourceGroupName: string,
    name: string,
    slot: string,
    instanceId: string,
    options?: WebAppsListInstanceProcessesSlotOptionalParams
  ): Promise<WebAppsListInstanceProcessesSlotResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, slot, instanceId, options },
      listInstanceProcessesSlotOperationSpec
    );
  }

  /**
   * Description for Get process information by its ID for a specific scaled-out instance in a web site.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Site name.
   * @param processId PID.
   * @param slot Name of the deployment slot. If a slot is not specified, the API returns deployments for
   *             the production slot.
   * @param instanceId ID of a specific scaled-out instance. This is the value of the name property in
   *                   the JSON response from "GET api/sites/{siteName}/instances".
   * @param options The options parameters.
   */
  getInstanceProcessSlot(
    resourceGroupName: string,
    name: string,
    processId: string,
    slot: string,
    instanceId: string,
    options?: WebAppsGetInstanceProcessSlotOptionalParams
  ): Promise<WebAppsGetInstanceProcessSlotResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, processId, slot, instanceId, options },
      getInstanceProcessSlotOperationSpec
    );
  }

  /**
   * Description for Terminate a process by its ID for a web site, or a deployment slot, or specific
   * scaled-out instance in a web site.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Site name.
   * @param processId PID.
   * @param slot Name of the deployment slot. If a slot is not specified, the API returns deployments for
   *             the production slot.
   * @param instanceId ID of a specific scaled-out instance. This is the value of the name property in
   *                   the JSON response from "GET api/sites/{siteName}/instances".
   * @param options The options parameters.
   */
  deleteInstanceProcessSlot(
    resourceGroupName: string,
    name: string,
    processId: string,
    slot: string,
    instanceId: string,
    options?: WebAppsDeleteInstanceProcessSlotOptionalParams
  ): Promise<void> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, processId, slot, instanceId, options },
      deleteInstanceProcessSlotOperationSpec
    );
  }

  /**
   * Description for Get a memory dump of a process by its ID for a specific scaled-out instance in a web
   * site.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Site name.
   * @param processId PID.
   * @param slot Name of the deployment slot. If a slot is not specified, the API returns deployments for
   *             the production slot.
   * @param instanceId ID of a specific scaled-out instance. This is the value of the name property in
   *                   the JSON response from "GET api/sites/{siteName}/instances".
   * @param options The options parameters.
   */
  getInstanceProcessDumpSlot(
    resourceGroupName: string,
    name: string,
    processId: string,
    slot: string,
    instanceId: string,
    options?: WebAppsGetInstanceProcessDumpSlotOptionalParams
  ): Promise<WebAppsGetInstanceProcessDumpSlotResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, processId, slot, instanceId, options },
      getInstanceProcessDumpSlotOperationSpec
    );
  }

  /**
   * Description for List module information for a process by its ID for a specific scaled-out instance
   * in a web site.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Site name.
   * @param processId PID.
   * @param slot Name of the deployment slot. If a slot is not specified, the API returns deployments for
   *             the production slot.
   * @param instanceId ID of a specific scaled-out instance. This is the value of the name property in
   *                   the JSON response from "GET api/sites/{siteName}/instances".
   * @param options The options parameters.
   */
  private _listInstanceProcessModulesSlot(
    resourceGroupName: string,
    name: string,
    processId: string,
    slot: string,
    instanceId: string,
    options?: WebAppsListInstanceProcessModulesSlotOptionalParams
  ): Promise<WebAppsListInstanceProcessModulesSlotResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, processId, slot, instanceId, options },
      listInstanceProcessModulesSlotOperationSpec
    );
  }

  /**
   * Description for Get process information by its ID for a specific scaled-out instance in a web site.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Site name.
   * @param processId PID.
   * @param baseAddress Module base address.
   * @param slot Name of the deployment slot. If a slot is not specified, the API returns deployments for
   *             the production slot.
   * @param instanceId ID of a specific scaled-out instance. This is the value of the name property in
   *                   the JSON response from "GET api/sites/{siteName}/instances".
   * @param options The options parameters.
   */
  getInstanceProcessModuleSlot(
    resourceGroupName: string,
    name: string,
    processId: string,
    baseAddress: string,
    slot: string,
    instanceId: string,
    options?: WebAppsGetInstanceProcessModuleSlotOptionalParams
  ): Promise<WebAppsGetInstanceProcessModuleSlotResponse> {
    return this.client.sendOperationRequest(
      {
        resourceGroupName,
        name,
        processId,
        baseAddress,
        slot,
        instanceId,
        options
      },
      getInstanceProcessModuleSlotOperationSpec
    );
  }

  /**
   * Description for List the threads in a process by its ID for a specific scaled-out instance in a web
   * site.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Site name.
   * @param processId PID.
   * @param slot Name of the deployment slot. If a slot is not specified, the API returns deployments for
   *             the production slot.
   * @param instanceId ID of a specific scaled-out instance. This is the value of the name property in
   *                   the JSON response from "GET api/sites/{siteName}/instances".
   * @param options The options parameters.
   */
  private _listInstanceProcessThreadsSlot(
    resourceGroupName: string,
    name: string,
    processId: string,
    slot: string,
    instanceId: string,
    options?: WebAppsListInstanceProcessThreadsSlotOptionalParams
  ): Promise<WebAppsListInstanceProcessThreadsSlotResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, processId, slot, instanceId, options },
      listInstanceProcessThreadsSlotOperationSpec
    );
  }

  /**
   * Description for Shows whether an app can be cloned to another resource group or subscription.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the app.
   * @param slot Name of the deployment slot. By default, this API returns information on the production
   *             slot.
   * @param options The options parameters.
   */
  isCloneableSlot(
    resourceGroupName: string,
    name: string,
    slot: string,
    options?: WebAppsIsCloneableSlotOptionalParams
  ): Promise<WebAppsIsCloneableSlotResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, slot, options },
      isCloneableSlotOperationSpec
    );
  }

  /**
   * Description for Gets existing backups of an app.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the app.
   * @param slot Name of the deployment slot. If a slot is not specified, the API will get backups of the
   *             production slot.
   * @param options The options parameters.
   */
  private _listSiteBackupsSlot(
    resourceGroupName: string,
    name: string,
    slot: string,
    options?: WebAppsListSiteBackupsSlotOptionalParams
  ): Promise<WebAppsListSiteBackupsSlotResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, slot, options },
      listSiteBackupsSlotOperationSpec
    );
  }

  /**
   * Description for This is to allow calling via powershell and ARM template.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the app.
   * @param slot Name of the deployment slot.
   * @param options The options parameters.
   */
  listSyncFunctionTriggersSlot(
    resourceGroupName: string,
    name: string,
    slot: string,
    options?: WebAppsListSyncFunctionTriggersSlotOptionalParams
  ): Promise<WebAppsListSyncFunctionTriggersSlotResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, slot, options },
      listSyncFunctionTriggersSlotOperationSpec
    );
  }

  /**
   * Description for Returns the status of MySql in app migration, if one is active, and whether or not
   * MySql in app is enabled
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of web app.
   * @param slot Name of the deployment slot.
   * @param options The options parameters.
   */
  getMigrateMySqlStatusSlot(
    resourceGroupName: string,
    name: string,
    slot: string,
    options?: WebAppsGetMigrateMySqlStatusSlotOptionalParams
  ): Promise<WebAppsGetMigrateMySqlStatusSlotResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, slot, options },
      getMigrateMySqlStatusSlotOperationSpec
    );
  }

  /**
   * Description for Gets a Swift Virtual Network connection.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the app.
   * @param slot Name of the deployment slot. If a slot is not specified, the API will get a gateway for
   *             the production slot's Virtual Network.
   * @param options The options parameters.
   */
  getSwiftVirtualNetworkConnectionSlot(
    resourceGroupName: string,
    name: string,
    slot: string,
    options?: WebAppsGetSwiftVirtualNetworkConnectionSlotOptionalParams
  ): Promise<WebAppsGetSwiftVirtualNetworkConnectionSlotResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, slot, options },
      getSwiftVirtualNetworkConnectionSlotOperationSpec
    );
  }

  /**
   * Description for Integrates this Web App with a Virtual Network. This requires that 1)
   * "swiftSupported" is true when doing a GET against this resource, and 2) that the target Subnet has
   * already been delegated, and is not
   * in use by another App Service Plan other than the one this App is in.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the app.
   * @param slot Name of the deployment slot. If a slot is not specified, the API will add or update
   *             connections for the production slot.
   * @param connectionEnvelope Properties of the Virtual Network connection. See example.
   * @param options The options parameters.
   */
  createOrUpdateSwiftVirtualNetworkConnectionWithCheckSlot(
    resourceGroupName: string,
    name: string,
    slot: string,
    connectionEnvelope: SwiftVirtualNetwork,
    options?: WebAppsCreateOrUpdateSwiftVirtualNetworkConnectionWithCheckSlotOptionalParams
  ): Promise<
    WebAppsCreateOrUpdateSwiftVirtualNetworkConnectionWithCheckSlotResponse
  > {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, slot, connectionEnvelope, options },
      createOrUpdateSwiftVirtualNetworkConnectionWithCheckSlotOperationSpec
    );
  }

  /**
   * Description for Deletes a Swift Virtual Network connection from an app (or deployment slot).
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the app.
   * @param slot Name of the deployment slot. If a slot is not specified, the API will delete the
   *             connection for the production slot.
   * @param options The options parameters.
   */
  deleteSwiftVirtualNetworkSlot(
    resourceGroupName: string,
    name: string,
    slot: string,
    options?: WebAppsDeleteSwiftVirtualNetworkSlotOptionalParams
  ): Promise<void> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, slot, options },
      deleteSwiftVirtualNetworkSlotOperationSpec
    );
  }

  /**
   * Description for Integrates this Web App with a Virtual Network. This requires that 1)
   * "swiftSupported" is true when doing a GET against this resource, and 2) that the target Subnet has
   * already been delegated, and is not
   * in use by another App Service Plan other than the one this App is in.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the app.
   * @param slot Name of the deployment slot. If a slot is not specified, the API will add or update
   *             connections for the production slot.
   * @param connectionEnvelope Properties of the Virtual Network connection. See example.
   * @param options The options parameters.
   */
  updateSwiftVirtualNetworkConnectionWithCheckSlot(
    resourceGroupName: string,
    name: string,
    slot: string,
    connectionEnvelope: SwiftVirtualNetwork,
    options?: WebAppsUpdateSwiftVirtualNetworkConnectionWithCheckSlotOptionalParams
  ): Promise<WebAppsUpdateSwiftVirtualNetworkConnectionWithCheckSlotResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, slot, connectionEnvelope, options },
      updateSwiftVirtualNetworkConnectionWithCheckSlotOperationSpec
    );
  }

  /**
   * Description for Gets all network features used by the app (or deployment slot, if specified).
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the app.
   * @param view The type of view. Only "summary" is supported at this time.
   * @param slot Name of the deployment slot. If a slot is not specified, the API will get network
   *             features for the production slot.
   * @param options The options parameters.
   */
  listNetworkFeaturesSlot(
    resourceGroupName: string,
    name: string,
    view: string,
    slot: string,
    options?: WebAppsListNetworkFeaturesSlotOptionalParams
  ): Promise<WebAppsListNetworkFeaturesSlotResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, view, slot, options },
      listNetworkFeaturesSlotOperationSpec
    );
  }

  /**
   * Description for Gets a named operation for a network trace capturing (or deployment slot, if
   * specified).
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the app.
   * @param operationId GUID of the operation.
   * @param slot Name of the deployment slot. If a slot is not specified, the API will get an operation
   *             for the production slot.
   * @param options The options parameters.
   */
  getNetworkTraceOperationSlot(
    resourceGroupName: string,
    name: string,
    operationId: string,
    slot: string,
    options?: WebAppsGetNetworkTraceOperationSlotOptionalParams
  ): Promise<WebAppsGetNetworkTraceOperationSlotResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, operationId, slot, options },
      getNetworkTraceOperationSlotOperationSpec
    );
  }

  /**
   * Description for Start capturing network packets for the site (To be deprecated).
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name The name of the web app.
   * @param slot The name of the slot for this web app.
   * @param options The options parameters.
   */
  startWebSiteNetworkTraceSlot(
    resourceGroupName: string,
    name: string,
    slot: string,
    options?: WebAppsStartWebSiteNetworkTraceSlotOptionalParams
  ): Promise<WebAppsStartWebSiteNetworkTraceSlotResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, slot, options },
      startWebSiteNetworkTraceSlotOperationSpec
    );
  }

  /**
   * Description for Start capturing network packets for the site.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name The name of the web app.
   * @param slot The name of the slot for this web app.
   * @param options The options parameters.
   */
  async beginStartWebSiteNetworkTraceOperationSlot(
    resourceGroupName: string,
    name: string,
    slot: string,
    options?: WebAppsStartWebSiteNetworkTraceOperationSlotOptionalParams
  ): Promise<
    SimplePollerLike<
      OperationState<WebAppsStartWebSiteNetworkTraceOperationSlotResponse>,
      WebAppsStartWebSiteNetworkTraceOperationSlotResponse
    >
  > {
    const directSendOperation = async (
      args: coreClient.OperationArguments,
      spec: coreClient.OperationSpec
    ): Promise<WebAppsStartWebSiteNetworkTraceOperationSlotResponse> => {
      return this.client.sendOperationRequest(args, spec);
    };
    const sendOperationFn = async (
      args: coreClient.OperationArguments,
      spec: coreClient.OperationSpec
    ) => {
      let currentRawResponse:
        | coreClient.FullOperationResponse
        | undefined = undefined;
      const providedCallback = args.options?.onResponse;
      const callback: coreClient.RawResponseCallback = (
        rawResponse: coreClient.FullOperationResponse,
        flatResponse: unknown
      ) => {
        currentRawResponse = rawResponse;
        providedCallback?.(rawResponse, flatResponse);
      };
      const updatedArgs = {
        ...args,
        options: {
          ...args.options,
          onResponse: callback
        }
      };
      const flatResponse = await directSendOperation(updatedArgs, spec);
      return {
        flatResponse,
        rawResponse: {
          statusCode: currentRawResponse!.status,
          body: currentRawResponse!.parsedBody,
          headers: currentRawResponse!.headers.toJSON()
        }
      };
    };

    const lro = createLroSpec({
      sendOperationFn,
      args: { resourceGroupName, name, slot, options },
      spec: startWebSiteNetworkTraceOperationSlotOperationSpec
    });
    const poller = await createHttpPoller<
      WebAppsStartWebSiteNetworkTraceOperationSlotResponse,
      OperationState<WebAppsStartWebSiteNetworkTraceOperationSlotResponse>
    >(lro, {
      restoreFrom: options?.resumeFrom,
      intervalInMs: options?.updateIntervalInMs
    });
    await poller.poll();
    return poller;
  }

  /**
   * Description for Start capturing network packets for the site.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name The name of the web app.
   * @param slot The name of the slot for this web app.
   * @param options The options parameters.
   */
  async beginStartWebSiteNetworkTraceOperationSlotAndWait(
    resourceGroupName: string,
    name: string,
    slot: string,
    options?: WebAppsStartWebSiteNetworkTraceOperationSlotOptionalParams
  ): Promise<WebAppsStartWebSiteNetworkTraceOperationSlotResponse> {
    const poller = await this.beginStartWebSiteNetworkTraceOperationSlot(
      resourceGroupName,
      name,
      slot,
      options
    );
    return poller.pollUntilDone();
  }

  /**
   * Description for Stop ongoing capturing network packets for the site.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name The name of the web app.
   * @param slot The name of the slot for this web app.
   * @param options The options parameters.
   */
  stopWebSiteNetworkTraceSlot(
    resourceGroupName: string,
    name: string,
    slot: string,
    options?: WebAppsStopWebSiteNetworkTraceSlotOptionalParams
  ): Promise<void> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, slot, options },
      stopWebSiteNetworkTraceSlotOperationSpec
    );
  }

  /**
   * Description for Gets a named operation for a network trace capturing (or deployment slot, if
   * specified).
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the app.
   * @param operationId GUID of the operation.
   * @param slot Name of the deployment slot. If a slot is not specified, the API will get an operation
   *             for the production slot.
   * @param options The options parameters.
   */
  getNetworkTracesSlot(
    resourceGroupName: string,
    name: string,
    operationId: string,
    slot: string,
    options?: WebAppsGetNetworkTracesSlotOptionalParams
  ): Promise<WebAppsGetNetworkTracesSlotResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, operationId, slot, options },
      getNetworkTracesSlotOperationSpec
    );
  }

  /**
   * Description for Gets a named operation for a network trace capturing (or deployment slot, if
   * specified).
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the app.
   * @param operationId GUID of the operation.
   * @param slot Name of the deployment slot. If a slot is not specified, the API will get an operation
   *             for the production slot.
   * @param options The options parameters.
   */
  getNetworkTraceOperationSlotV2(
    resourceGroupName: string,
    name: string,
    operationId: string,
    slot: string,
    options?: WebAppsGetNetworkTraceOperationSlotV2OptionalParams
  ): Promise<WebAppsGetNetworkTraceOperationSlotV2Response> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, operationId, slot, options },
      getNetworkTraceOperationSlotV2OperationSpec
    );
  }

  /**
   * Description for Gets a named operation for a network trace capturing (or deployment slot, if
   * specified).
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the app.
   * @param operationId GUID of the operation.
   * @param slot Name of the deployment slot. If a slot is not specified, the API will get an operation
   *             for the production slot.
   * @param options The options parameters.
   */
  getNetworkTracesSlotV2(
    resourceGroupName: string,
    name: string,
    operationId: string,
    slot: string,
    options?: WebAppsGetNetworkTracesSlotV2OptionalParams
  ): Promise<WebAppsGetNetworkTracesSlotV2Response> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, operationId, slot, options },
      getNetworkTracesSlotV2OperationSpec
    );
  }

  /**
   * Description for Generates a new publishing password for an app (or deployment slot, if specified).
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the app.
   * @param slot Name of the deployment slot. If a slot is not specified, the API generate a new
   *             publishing password for the production slot.
   * @param options The options parameters.
   */
  generateNewSitePublishingPasswordSlot(
    resourceGroupName: string,
    name: string,
    slot: string,
    options?: WebAppsGenerateNewSitePublishingPasswordSlotOptionalParams
  ): Promise<void> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, slot, options },
      generateNewSitePublishingPasswordSlotOperationSpec
    );
  }

  /**
   * Description for Gets perfmon counters for web app.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of web app.
   * @param slot Name of web app slot. If not specified then will default to production slot.
   * @param options The options parameters.
   */
  private _listPerfMonCountersSlot(
    resourceGroupName: string,
    name: string,
    slot: string,
    options?: WebAppsListPerfMonCountersSlotOptionalParams
  ): Promise<WebAppsListPerfMonCountersSlotResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, slot, options },
      listPerfMonCountersSlotOperationSpec
    );
  }

  /**
   * Description for Gets web app's event logs.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of web app.
   * @param slot Name of web app slot. If not specified then will default to production slot.
   * @param options The options parameters.
   */
  getSitePhpErrorLogFlagSlot(
    resourceGroupName: string,
    name: string,
    slot: string,
    options?: WebAppsGetSitePhpErrorLogFlagSlotOptionalParams
  ): Promise<WebAppsGetSitePhpErrorLogFlagSlotResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, slot, options },
      getSitePhpErrorLogFlagSlotOperationSpec
    );
  }

  /**
   * Description for Gets the premier add-ons of an app.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the app.
   * @param slot Name of the deployment slot. If a slot is not specified, the API will get the premier
   *             add-ons for the production slot.
   * @param options The options parameters.
   */
  listPremierAddOnsSlot(
    resourceGroupName: string,
    name: string,
    slot: string,
    options?: WebAppsListPremierAddOnsSlotOptionalParams
  ): Promise<WebAppsListPremierAddOnsSlotResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, slot, options },
      listPremierAddOnsSlotOperationSpec
    );
  }

  /**
   * Description for Gets a named add-on of an app.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the app.
   * @param premierAddOnName Add-on name.
   * @param slot Name of the deployment slot. If a slot is not specified, the API will get the named
   *             add-on for the production slot.
   * @param options The options parameters.
   */
  getPremierAddOnSlot(
    resourceGroupName: string,
    name: string,
    premierAddOnName: string,
    slot: string,
    options?: WebAppsGetPremierAddOnSlotOptionalParams
  ): Promise<WebAppsGetPremierAddOnSlotResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, premierAddOnName, slot, options },
      getPremierAddOnSlotOperationSpec
    );
  }

  /**
   * Description for Updates a named add-on of an app.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the app.
   * @param premierAddOnName Add-on name.
   * @param slot Name of the deployment slot. If a slot is not specified, the API will update the named
   *             add-on for the production slot.
   * @param premierAddOn A JSON representation of the edited premier add-on.
   * @param options The options parameters.
   */
  addPremierAddOnSlot(
    resourceGroupName: string,
    name: string,
    premierAddOnName: string,
    slot: string,
    premierAddOn: PremierAddOn,
    options?: WebAppsAddPremierAddOnSlotOptionalParams
  ): Promise<WebAppsAddPremierAddOnSlotResponse> {
    return this.client.sendOperationRequest(
      {
        resourceGroupName,
        name,
        premierAddOnName,
        slot,
        premierAddOn,
        options
      },
      addPremierAddOnSlotOperationSpec
    );
  }

  /**
   * Description for Delete a premier add-on from an app.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the app.
   * @param premierAddOnName Add-on name.
   * @param slot Name of the deployment slot. If a slot is not specified, the API will delete the named
   *             add-on for the production slot.
   * @param options The options parameters.
   */
  deletePremierAddOnSlot(
    resourceGroupName: string,
    name: string,
    premierAddOnName: string,
    slot: string,
    options?: WebAppsDeletePremierAddOnSlotOptionalParams
  ): Promise<void> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, premierAddOnName, slot, options },
      deletePremierAddOnSlotOperationSpec
    );
  }

  /**
   * Description for Updates a named add-on of an app.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the app.
   * @param premierAddOnName Add-on name.
   * @param slot Name of the deployment slot. If a slot is not specified, the API will update the named
   *             add-on for the production slot.
   * @param premierAddOn A JSON representation of the edited premier add-on.
   * @param options The options parameters.
   */
  updatePremierAddOnSlot(
    resourceGroupName: string,
    name: string,
    premierAddOnName: string,
    slot: string,
    premierAddOn: PremierAddOnPatchResource,
    options?: WebAppsUpdatePremierAddOnSlotOptionalParams
  ): Promise<WebAppsUpdatePremierAddOnSlotResponse> {
    return this.client.sendOperationRequest(
      {
        resourceGroupName,
        name,
        premierAddOnName,
        slot,
        premierAddOn,
        options
      },
      updatePremierAddOnSlotOperationSpec
    );
  }

  /**
   * Description for Gets data around private site access enablement and authorized Virtual Networks that
   * can access the site.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name The name of the web app.
   * @param slot The name of the slot for the web app.
   * @param options The options parameters.
   */
  getPrivateAccessSlot(
    resourceGroupName: string,
    name: string,
    slot: string,
    options?: WebAppsGetPrivateAccessSlotOptionalParams
  ): Promise<WebAppsGetPrivateAccessSlotResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, slot, options },
      getPrivateAccessSlotOperationSpec
    );
  }

  /**
   * Description for Sets data around private site access enablement and authorized Virtual Networks that
   * can access the site.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name The name of the web app.
   * @param slot The name of the slot for the web app.
   * @param access The information for the private access
   * @param options The options parameters.
   */
  putPrivateAccessVnetSlot(
    resourceGroupName: string,
    name: string,
    slot: string,
    access: PrivateAccess,
    options?: WebAppsPutPrivateAccessVnetSlotOptionalParams
  ): Promise<WebAppsPutPrivateAccessVnetSlotResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, slot, access, options },
      putPrivateAccessVnetSlotOperationSpec
    );
  }

  /**
   * Description for Gets the list of private endpoint connections associated with a site
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the site.
   * @param slot Name of the site deployment slot.
   * @param options The options parameters.
   */
  private _getPrivateEndpointConnectionListSlot(
    resourceGroupName: string,
    name: string,
    slot: string,
    options?: WebAppsGetPrivateEndpointConnectionListSlotOptionalParams
  ): Promise<WebAppsGetPrivateEndpointConnectionListSlotResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, slot, options },
      getPrivateEndpointConnectionListSlotOperationSpec
    );
  }

  /**
   * Description for Gets a private endpoint connection
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the site.
   * @param privateEndpointConnectionName Name of the private endpoint connection.
   * @param slot Name of the site deployment slot.
   * @param options The options parameters.
   */
  getPrivateEndpointConnectionSlot(
    resourceGroupName: string,
    name: string,
    privateEndpointConnectionName: string,
    slot: string,
    options?: WebAppsGetPrivateEndpointConnectionSlotOptionalParams
  ): Promise<WebAppsGetPrivateEndpointConnectionSlotResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, privateEndpointConnectionName, slot, options },
      getPrivateEndpointConnectionSlotOperationSpec
    );
  }

  /**
   * Description for Approves or rejects a private endpoint connection
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the site.
   * @param privateEndpointConnectionName
   * @param slot
   * @param privateEndpointWrapper Private Endpoint Connection Approval ARM resource.
   * @param options The options parameters.
   */
  async beginApproveOrRejectPrivateEndpointConnectionSlot(
    resourceGroupName: string,
    name: string,
    privateEndpointConnectionName: string,
    slot: string,
    privateEndpointWrapper: PrivateLinkConnectionApprovalRequestResource,
    options?: WebAppsApproveOrRejectPrivateEndpointConnectionSlotOptionalParams
  ): Promise<
    SimplePollerLike<
      OperationState<
        WebAppsApproveOrRejectPrivateEndpointConnectionSlotResponse
      >,
      WebAppsApproveOrRejectPrivateEndpointConnectionSlotResponse
    >
  > {
    const directSendOperation = async (
      args: coreClient.OperationArguments,
      spec: coreClient.OperationSpec
    ): Promise<WebAppsApproveOrRejectPrivateEndpointConnectionSlotResponse> => {
      return this.client.sendOperationRequest(args, spec);
    };
    const sendOperationFn = async (
      args: coreClient.OperationArguments,
      spec: coreClient.OperationSpec
    ) => {
      let currentRawResponse:
        | coreClient.FullOperationResponse
        | undefined = undefined;
      const providedCallback = args.options?.onResponse;
      const callback: coreClient.RawResponseCallback = (
        rawResponse: coreClient.FullOperationResponse,
        flatResponse: unknown
      ) => {
        currentRawResponse = rawResponse;
        providedCallback?.(rawResponse, flatResponse);
      };
      const updatedArgs = {
        ...args,
        options: {
          ...args.options,
          onResponse: callback
        }
      };
      const flatResponse = await directSendOperation(updatedArgs, spec);
      return {
        flatResponse,
        rawResponse: {
          statusCode: currentRawResponse!.status,
          body: currentRawResponse!.parsedBody,
          headers: currentRawResponse!.headers.toJSON()
        }
      };
    };

    const lro = createLroSpec({
      sendOperationFn,
      args: {
        resourceGroupName,
        name,
        privateEndpointConnectionName,
        slot,
        privateEndpointWrapper,
        options
      },
      spec: approveOrRejectPrivateEndpointConnectionSlotOperationSpec
    });
    const poller = await createHttpPoller<
      WebAppsApproveOrRejectPrivateEndpointConnectionSlotResponse,
      OperationState<
        WebAppsApproveOrRejectPrivateEndpointConnectionSlotResponse
      >
    >(lro, {
      restoreFrom: options?.resumeFrom,
      intervalInMs: options?.updateIntervalInMs
    });
    await poller.poll();
    return poller;
  }

  /**
   * Description for Approves or rejects a private endpoint connection
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the site.
   * @param privateEndpointConnectionName
   * @param slot
   * @param privateEndpointWrapper Private Endpoint Connection Approval ARM resource.
   * @param options The options parameters.
   */
  async beginApproveOrRejectPrivateEndpointConnectionSlotAndWait(
    resourceGroupName: string,
    name: string,
    privateEndpointConnectionName: string,
    slot: string,
    privateEndpointWrapper: PrivateLinkConnectionApprovalRequestResource,
    options?: WebAppsApproveOrRejectPrivateEndpointConnectionSlotOptionalParams
  ): Promise<WebAppsApproveOrRejectPrivateEndpointConnectionSlotResponse> {
    const poller = await this.beginApproveOrRejectPrivateEndpointConnectionSlot(
      resourceGroupName,
      name,
      privateEndpointConnectionName,
      slot,
      privateEndpointWrapper,
      options
    );
    return poller.pollUntilDone();
  }

  /**
   * Description for Deletes a private endpoint connection
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the site.
   * @param privateEndpointConnectionName
   * @param slot
   * @param options The options parameters.
   */
  async beginDeletePrivateEndpointConnectionSlot(
    resourceGroupName: string,
    name: string,
    privateEndpointConnectionName: string,
    slot: string,
    options?: WebAppsDeletePrivateEndpointConnectionSlotOptionalParams
  ): Promise<
    SimplePollerLike<
      OperationState<WebAppsDeletePrivateEndpointConnectionSlotResponse>,
      WebAppsDeletePrivateEndpointConnectionSlotResponse
    >
  > {
    const directSendOperation = async (
      args: coreClient.OperationArguments,
      spec: coreClient.OperationSpec
    ): Promise<WebAppsDeletePrivateEndpointConnectionSlotResponse> => {
      return this.client.sendOperationRequest(args, spec);
    };
    const sendOperationFn = async (
      args: coreClient.OperationArguments,
      spec: coreClient.OperationSpec
    ) => {
      let currentRawResponse:
        | coreClient.FullOperationResponse
        | undefined = undefined;
      const providedCallback = args.options?.onResponse;
      const callback: coreClient.RawResponseCallback = (
        rawResponse: coreClient.FullOperationResponse,
        flatResponse: unknown
      ) => {
        currentRawResponse = rawResponse;
        providedCallback?.(rawResponse, flatResponse);
      };
      const updatedArgs = {
        ...args,
        options: {
          ...args.options,
          onResponse: callback
        }
      };
      const flatResponse = await directSendOperation(updatedArgs, spec);
      return {
        flatResponse,
        rawResponse: {
          statusCode: currentRawResponse!.status,
          body: currentRawResponse!.parsedBody,
          headers: currentRawResponse!.headers.toJSON()
        }
      };
    };

    const lro = createLroSpec({
      sendOperationFn,
      args: {
        resourceGroupName,
        name,
        privateEndpointConnectionName,
        slot,
        options
      },
      spec: deletePrivateEndpointConnectionSlotOperationSpec
    });
    const poller = await createHttpPoller<
      WebAppsDeletePrivateEndpointConnectionSlotResponse,
      OperationState<WebAppsDeletePrivateEndpointConnectionSlotResponse>
    >(lro, {
      restoreFrom: options?.resumeFrom,
      intervalInMs: options?.updateIntervalInMs
    });
    await poller.poll();
    return poller;
  }

  /**
   * Description for Deletes a private endpoint connection
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the site.
   * @param privateEndpointConnectionName
   * @param slot
   * @param options The options parameters.
   */
  async beginDeletePrivateEndpointConnectionSlotAndWait(
    resourceGroupName: string,
    name: string,
    privateEndpointConnectionName: string,
    slot: string,
    options?: WebAppsDeletePrivateEndpointConnectionSlotOptionalParams
  ): Promise<WebAppsDeletePrivateEndpointConnectionSlotResponse> {
    const poller = await this.beginDeletePrivateEndpointConnectionSlot(
      resourceGroupName,
      name,
      privateEndpointConnectionName,
      slot,
      options
    );
    return poller.pollUntilDone();
  }

  /**
   * Description for Gets the private link resources
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the site.
   * @param slot
   * @param options The options parameters.
   */
  getPrivateLinkResourcesSlot(
    resourceGroupName: string,
    name: string,
    slot: string,
    options?: WebAppsGetPrivateLinkResourcesSlotOptionalParams
  ): Promise<WebAppsGetPrivateLinkResourcesSlotResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, slot, options },
      getPrivateLinkResourcesSlotOperationSpec
    );
  }

  /**
   * Description for Get list of processes for a web site, or a deployment slot, or for a specific
   * scaled-out instance in a web site.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Site name.
   * @param slot Name of the deployment slot. If a slot is not specified, the API returns deployments for
   *             the production slot.
   * @param options The options parameters.
   */
  private _listProcessesSlot(
    resourceGroupName: string,
    name: string,
    slot: string,
    options?: WebAppsListProcessesSlotOptionalParams
  ): Promise<WebAppsListProcessesSlotResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, slot, options },
      listProcessesSlotOperationSpec
    );
  }

  /**
   * Description for Get process information by its ID for a specific scaled-out instance in a web site.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Site name.
   * @param processId PID.
   * @param slot Name of the deployment slot. If a slot is not specified, the API returns deployments for
   *             the production slot.
   * @param options The options parameters.
   */
  getProcessSlot(
    resourceGroupName: string,
    name: string,
    processId: string,
    slot: string,
    options?: WebAppsGetProcessSlotOptionalParams
  ): Promise<WebAppsGetProcessSlotResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, processId, slot, options },
      getProcessSlotOperationSpec
    );
  }

  /**
   * Description for Terminate a process by its ID for a web site, or a deployment slot, or specific
   * scaled-out instance in a web site.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Site name.
   * @param processId PID.
   * @param slot Name of the deployment slot. If a slot is not specified, the API returns deployments for
   *             the production slot.
   * @param options The options parameters.
   */
  deleteProcessSlot(
    resourceGroupName: string,
    name: string,
    processId: string,
    slot: string,
    options?: WebAppsDeleteProcessSlotOptionalParams
  ): Promise<void> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, processId, slot, options },
      deleteProcessSlotOperationSpec
    );
  }

  /**
   * Description for Get a memory dump of a process by its ID for a specific scaled-out instance in a web
   * site.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Site name.
   * @param processId PID.
   * @param slot Name of the deployment slot. If a slot is not specified, the API returns deployments for
   *             the production slot.
   * @param options The options parameters.
   */
  getProcessDumpSlot(
    resourceGroupName: string,
    name: string,
    processId: string,
    slot: string,
    options?: WebAppsGetProcessDumpSlotOptionalParams
  ): Promise<WebAppsGetProcessDumpSlotResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, processId, slot, options },
      getProcessDumpSlotOperationSpec
    );
  }

  /**
   * Description for List module information for a process by its ID for a specific scaled-out instance
   * in a web site.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Site name.
   * @param processId PID.
   * @param slot Name of the deployment slot. If a slot is not specified, the API returns deployments for
   *             the production slot.
   * @param options The options parameters.
   */
  private _listProcessModulesSlot(
    resourceGroupName: string,
    name: string,
    processId: string,
    slot: string,
    options?: WebAppsListProcessModulesSlotOptionalParams
  ): Promise<WebAppsListProcessModulesSlotResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, processId, slot, options },
      listProcessModulesSlotOperationSpec
    );
  }

  /**
   * Description for Get process information by its ID for a specific scaled-out instance in a web site.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Site name.
   * @param processId PID.
   * @param baseAddress Module base address.
   * @param slot Name of the deployment slot. If a slot is not specified, the API returns deployments for
   *             the production slot.
   * @param options The options parameters.
   */
  getProcessModuleSlot(
    resourceGroupName: string,
    name: string,
    processId: string,
    baseAddress: string,
    slot: string,
    options?: WebAppsGetProcessModuleSlotOptionalParams
  ): Promise<WebAppsGetProcessModuleSlotResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, processId, baseAddress, slot, options },
      getProcessModuleSlotOperationSpec
    );
  }

  /**
   * Description for List the threads in a process by its ID for a specific scaled-out instance in a web
   * site.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Site name.
   * @param processId PID.
   * @param slot Name of the deployment slot. If a slot is not specified, the API returns deployments for
   *             the production slot.
   * @param options The options parameters.
   */
  private _listProcessThreadsSlot(
    resourceGroupName: string,
    name: string,
    processId: string,
    slot: string,
    options?: WebAppsListProcessThreadsSlotOptionalParams
  ): Promise<WebAppsListProcessThreadsSlotResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, processId, slot, options },
      listProcessThreadsSlotOperationSpec
    );
  }

  /**
   * Description for Get public certificates for an app or a deployment slot.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the app.
   * @param slot Name of the deployment slot. If a slot is not specified, the API gets hostname bindings
   *             for the production slot.
   * @param options The options parameters.
   */
  private _listPublicCertificatesSlot(
    resourceGroupName: string,
    name: string,
    slot: string,
    options?: WebAppsListPublicCertificatesSlotOptionalParams
  ): Promise<WebAppsListPublicCertificatesSlotResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, slot, options },
      listPublicCertificatesSlotOperationSpec
    );
  }

  /**
   * Description for Get the named public certificate for an app (or deployment slot, if specified).
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the app.
   * @param slot Name of the deployment slot. If a slot is not specified, the API the named binding for
   *             the production slot.
   * @param publicCertificateName Public certificate name.
   * @param options The options parameters.
   */
  getPublicCertificateSlot(
    resourceGroupName: string,
    name: string,
    slot: string,
    publicCertificateName: string,
    options?: WebAppsGetPublicCertificateSlotOptionalParams
  ): Promise<WebAppsGetPublicCertificateSlotResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, slot, publicCertificateName, options },
      getPublicCertificateSlotOperationSpec
    );
  }

  /**
   * Description for Creates a hostname binding for an app.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the app.
   * @param publicCertificateName Public certificate name.
   * @param slot Name of the deployment slot. If a slot is not specified, the API will create a binding
   *             for the production slot.
   * @param publicCertificate Public certificate details. This is the JSON representation of a
   *                          PublicCertificate object.
   * @param options The options parameters.
   */
  createOrUpdatePublicCertificateSlot(
    resourceGroupName: string,
    name: string,
    publicCertificateName: string,
    slot: string,
    publicCertificate: PublicCertificate,
    options?: WebAppsCreateOrUpdatePublicCertificateSlotOptionalParams
  ): Promise<WebAppsCreateOrUpdatePublicCertificateSlotResponse> {
    return this.client.sendOperationRequest(
      {
        resourceGroupName,
        name,
        publicCertificateName,
        slot,
        publicCertificate,
        options
      },
      createOrUpdatePublicCertificateSlotOperationSpec
    );
  }

  /**
   * Description for Deletes a hostname binding for an app.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the app.
   * @param slot Name of the deployment slot. If a slot is not specified, the API will delete the binding
   *             for the production slot.
   * @param publicCertificateName Public certificate name.
   * @param options The options parameters.
   */
  deletePublicCertificateSlot(
    resourceGroupName: string,
    name: string,
    slot: string,
    publicCertificateName: string,
    options?: WebAppsDeletePublicCertificateSlotOptionalParams
  ): Promise<void> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, slot, publicCertificateName, options },
      deletePublicCertificateSlotOperationSpec
    );
  }

  /**
   * Description for Gets the publishing profile for an app (or deployment slot, if specified).
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the app.
   * @param slot Name of the deployment slot. If a slot is not specified, the API will get the publishing
   *             profile for the production slot.
   * @param publishingProfileOptions Specifies publishingProfileOptions for publishing profile. For
   *                                 example, use {"format": "FileZilla3"} to get a FileZilla publishing profile.
   * @param options The options parameters.
   */
  listPublishingProfileXmlWithSecretsSlot(
    resourceGroupName: string,
    name: string,
    slot: string,
    publishingProfileOptions: CsmPublishingProfileOptions,
    options?: WebAppsListPublishingProfileXmlWithSecretsSlotOptionalParams
  ): Promise<WebAppsListPublishingProfileXmlWithSecretsSlotResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, slot, publishingProfileOptions, options },
      listPublishingProfileXmlWithSecretsSlotOperationSpec
    );
  }

  /**
   * Description for Resets the configuration settings of the current slot if they were previously
   * modified by calling the API with POST.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the app.
   * @param slot Name of the deployment slot. If a slot is not specified, the API resets configuration
   *             settings for the production slot.
   * @param options The options parameters.
   */
  resetSlotConfigurationSlot(
    resourceGroupName: string,
    name: string,
    slot: string,
    options?: WebAppsResetSlotConfigurationSlotOptionalParams
  ): Promise<void> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, slot, options },
      resetSlotConfigurationSlotOperationSpec
    );
  }

  /**
   * Description for Restarts an app (or deployment slot, if specified).
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the app.
   * @param slot Name of the deployment slot. If a slot is not specified, the API will restart the
   *             production slot.
   * @param options The options parameters.
   */
  restartSlot(
    resourceGroupName: string,
    name: string,
    slot: string,
    options?: WebAppsRestartSlotOptionalParams
  ): Promise<void> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, slot, options },
      restartSlotOperationSpec
    );
  }

  /**
   * Description for Restores an app from a backup blob in Azure Storage.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the app.
   * @param slot Name of the deployment slot. If a slot is not specified, the API will restore a backup
   *             of the production slot.
   * @param request Information on restore request .
   * @param options The options parameters.
   */
  async beginRestoreFromBackupBlobSlot(
    resourceGroupName: string,
    name: string,
    slot: string,
    request: RestoreRequest,
    options?: WebAppsRestoreFromBackupBlobSlotOptionalParams
  ): Promise<SimplePollerLike<OperationState<void>, void>> {
    const directSendOperation = async (
      args: coreClient.OperationArguments,
      spec: coreClient.OperationSpec
    ): Promise<void> => {
      return this.client.sendOperationRequest(args, spec);
    };
    const sendOperationFn = async (
      args: coreClient.OperationArguments,
      spec: coreClient.OperationSpec
    ) => {
      let currentRawResponse:
        | coreClient.FullOperationResponse
        | undefined = undefined;
      const providedCallback = args.options?.onResponse;
      const callback: coreClient.RawResponseCallback = (
        rawResponse: coreClient.FullOperationResponse,
        flatResponse: unknown
      ) => {
        currentRawResponse = rawResponse;
        providedCallback?.(rawResponse, flatResponse);
      };
      const updatedArgs = {
        ...args,
        options: {
          ...args.options,
          onResponse: callback
        }
      };
      const flatResponse = await directSendOperation(updatedArgs, spec);
      return {
        flatResponse,
        rawResponse: {
          statusCode: currentRawResponse!.status,
          body: currentRawResponse!.parsedBody,
          headers: currentRawResponse!.headers.toJSON()
        }
      };
    };

    const lro = createLroSpec({
      sendOperationFn,
      args: { resourceGroupName, name, slot, request, options },
      spec: restoreFromBackupBlobSlotOperationSpec
    });
    const poller = await createHttpPoller<void, OperationState<void>>(lro, {
      restoreFrom: options?.resumeFrom,
      intervalInMs: options?.updateIntervalInMs
    });
    await poller.poll();
    return poller;
  }

  /**
   * Description for Restores an app from a backup blob in Azure Storage.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the app.
   * @param slot Name of the deployment slot. If a slot is not specified, the API will restore a backup
   *             of the production slot.
   * @param request Information on restore request .
   * @param options The options parameters.
   */
  async beginRestoreFromBackupBlobSlotAndWait(
    resourceGroupName: string,
    name: string,
    slot: string,
    request: RestoreRequest,
    options?: WebAppsRestoreFromBackupBlobSlotOptionalParams
  ): Promise<void> {
    const poller = await this.beginRestoreFromBackupBlobSlot(
      resourceGroupName,
      name,
      slot,
      request,
      options
    );
    return poller.pollUntilDone();
  }

  /**
   * Description for Restores a deleted web app to this web app.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of web app.
   * @param slot Name of web app slot. If not specified then will default to production slot.
   * @param restoreRequest Deleted web app restore information.
   * @param options The options parameters.
   */
  async beginRestoreFromDeletedAppSlot(
    resourceGroupName: string,
    name: string,
    slot: string,
    restoreRequest: DeletedAppRestoreRequest,
    options?: WebAppsRestoreFromDeletedAppSlotOptionalParams
  ): Promise<SimplePollerLike<OperationState<void>, void>> {
    const directSendOperation = async (
      args: coreClient.OperationArguments,
      spec: coreClient.OperationSpec
    ): Promise<void> => {
      return this.client.sendOperationRequest(args, spec);
    };
    const sendOperationFn = async (
      args: coreClient.OperationArguments,
      spec: coreClient.OperationSpec
    ) => {
      let currentRawResponse:
        | coreClient.FullOperationResponse
        | undefined = undefined;
      const providedCallback = args.options?.onResponse;
      const callback: coreClient.RawResponseCallback = (
        rawResponse: coreClient.FullOperationResponse,
        flatResponse: unknown
      ) => {
        currentRawResponse = rawResponse;
        providedCallback?.(rawResponse, flatResponse);
      };
      const updatedArgs = {
        ...args,
        options: {
          ...args.options,
          onResponse: callback
        }
      };
      const flatResponse = await directSendOperation(updatedArgs, spec);
      return {
        flatResponse,
        rawResponse: {
          statusCode: currentRawResponse!.status,
          body: currentRawResponse!.parsedBody,
          headers: currentRawResponse!.headers.toJSON()
        }
      };
    };

    const lro = createLroSpec({
      sendOperationFn,
      args: { resourceGroupName, name, slot, restoreRequest, options },
      spec: restoreFromDeletedAppSlotOperationSpec
    });
    const poller = await createHttpPoller<void, OperationState<void>>(lro, {
      restoreFrom: options?.resumeFrom,
      intervalInMs: options?.updateIntervalInMs
    });
    await poller.poll();
    return poller;
  }

  /**
   * Description for Restores a deleted web app to this web app.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of web app.
   * @param slot Name of web app slot. If not specified then will default to production slot.
   * @param restoreRequest Deleted web app restore information.
   * @param options The options parameters.
   */
  async beginRestoreFromDeletedAppSlotAndWait(
    resourceGroupName: string,
    name: string,
    slot: string,
    restoreRequest: DeletedAppRestoreRequest,
    options?: WebAppsRestoreFromDeletedAppSlotOptionalParams
  ): Promise<void> {
    const poller = await this.beginRestoreFromDeletedAppSlot(
      resourceGroupName,
      name,
      slot,
      restoreRequest,
      options
    );
    return poller.pollUntilDone();
  }

  /**
   * Description for Restores a web app from a snapshot.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of web app.
   * @param slot Name of web app slot. If not specified then will default to production slot.
   * @param restoreRequest Snapshot restore settings. Snapshot information can be obtained by calling
   *                       GetDeletedSites or GetSiteSnapshots API.
   * @param options The options parameters.
   */
  async beginRestoreSnapshotSlot(
    resourceGroupName: string,
    name: string,
    slot: string,
    restoreRequest: SnapshotRestoreRequest,
    options?: WebAppsRestoreSnapshotSlotOptionalParams
  ): Promise<SimplePollerLike<OperationState<void>, void>> {
    const directSendOperation = async (
      args: coreClient.OperationArguments,
      spec: coreClient.OperationSpec
    ): Promise<void> => {
      return this.client.sendOperationRequest(args, spec);
    };
    const sendOperationFn = async (
      args: coreClient.OperationArguments,
      spec: coreClient.OperationSpec
    ) => {
      let currentRawResponse:
        | coreClient.FullOperationResponse
        | undefined = undefined;
      const providedCallback = args.options?.onResponse;
      const callback: coreClient.RawResponseCallback = (
        rawResponse: coreClient.FullOperationResponse,
        flatResponse: unknown
      ) => {
        currentRawResponse = rawResponse;
        providedCallback?.(rawResponse, flatResponse);
      };
      const updatedArgs = {
        ...args,
        options: {
          ...args.options,
          onResponse: callback
        }
      };
      const flatResponse = await directSendOperation(updatedArgs, spec);
      return {
        flatResponse,
        rawResponse: {
          statusCode: currentRawResponse!.status,
          body: currentRawResponse!.parsedBody,
          headers: currentRawResponse!.headers.toJSON()
        }
      };
    };

    const lro = createLroSpec({
      sendOperationFn,
      args: { resourceGroupName, name, slot, restoreRequest, options },
      spec: restoreSnapshotSlotOperationSpec
    });
    const poller = await createHttpPoller<void, OperationState<void>>(lro, {
      restoreFrom: options?.resumeFrom,
      intervalInMs: options?.updateIntervalInMs
    });
    await poller.poll();
    return poller;
  }

  /**
   * Description for Restores a web app from a snapshot.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of web app.
   * @param slot Name of web app slot. If not specified then will default to production slot.
   * @param restoreRequest Snapshot restore settings. Snapshot information can be obtained by calling
   *                       GetDeletedSites or GetSiteSnapshots API.
   * @param options The options parameters.
   */
  async beginRestoreSnapshotSlotAndWait(
    resourceGroupName: string,
    name: string,
    slot: string,
    restoreRequest: SnapshotRestoreRequest,
    options?: WebAppsRestoreSnapshotSlotOptionalParams
  ): Promise<void> {
    const poller = await this.beginRestoreSnapshotSlot(
      resourceGroupName,
      name,
      slot,
      restoreRequest,
      options
    );
    return poller.pollUntilDone();
  }

  /**
   * Description for Get list of siteextensions for a web site, or a deployment slot.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Site name.
   * @param slot Name of the deployment slot. If a slot is not specified, the API uses the production
   *             slot.
   * @param options The options parameters.
   */
  private _listSiteExtensionsSlot(
    resourceGroupName: string,
    name: string,
    slot: string,
    options?: WebAppsListSiteExtensionsSlotOptionalParams
  ): Promise<WebAppsListSiteExtensionsSlotResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, slot, options },
      listSiteExtensionsSlotOperationSpec
    );
  }

  /**
   * Description for Get site extension information by its ID for a web site, or a deployment slot.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Site name.
   * @param siteExtensionId Site extension name.
   * @param slot Name of the deployment slot. If a slot is not specified, the API uses the production
   *             slot.
   * @param options The options parameters.
   */
  getSiteExtensionSlot(
    resourceGroupName: string,
    name: string,
    siteExtensionId: string,
    slot: string,
    options?: WebAppsGetSiteExtensionSlotOptionalParams
  ): Promise<WebAppsGetSiteExtensionSlotResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, siteExtensionId, slot, options },
      getSiteExtensionSlotOperationSpec
    );
  }

  /**
   * Description for Install site extension on a web site, or a deployment slot.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Site name.
   * @param siteExtensionId Site extension name.
   * @param slot Name of the deployment slot. If a slot is not specified, the API uses the production
   *             slot.
   * @param options The options parameters.
   */
  async beginInstallSiteExtensionSlot(
    resourceGroupName: string,
    name: string,
    siteExtensionId: string,
    slot: string,
    options?: WebAppsInstallSiteExtensionSlotOptionalParams
  ): Promise<
    SimplePollerLike<
      OperationState<WebAppsInstallSiteExtensionSlotResponse>,
      WebAppsInstallSiteExtensionSlotResponse
    >
  > {
    const directSendOperation = async (
      args: coreClient.OperationArguments,
      spec: coreClient.OperationSpec
    ): Promise<WebAppsInstallSiteExtensionSlotResponse> => {
      return this.client.sendOperationRequest(args, spec);
    };
    const sendOperationFn = async (
      args: coreClient.OperationArguments,
      spec: coreClient.OperationSpec
    ) => {
      let currentRawResponse:
        | coreClient.FullOperationResponse
        | undefined = undefined;
      const providedCallback = args.options?.onResponse;
      const callback: coreClient.RawResponseCallback = (
        rawResponse: coreClient.FullOperationResponse,
        flatResponse: unknown
      ) => {
        currentRawResponse = rawResponse;
        providedCallback?.(rawResponse, flatResponse);
      };
      const updatedArgs = {
        ...args,
        options: {
          ...args.options,
          onResponse: callback
        }
      };
      const flatResponse = await directSendOperation(updatedArgs, spec);
      return {
        flatResponse,
        rawResponse: {
          statusCode: currentRawResponse!.status,
          body: currentRawResponse!.parsedBody,
          headers: currentRawResponse!.headers.toJSON()
        }
      };
    };

    const lro = createLroSpec({
      sendOperationFn,
      args: { resourceGroupName, name, siteExtensionId, slot, options },
      spec: installSiteExtensionSlotOperationSpec
    });
    const poller = await createHttpPoller<
      WebAppsInstallSiteExtensionSlotResponse,
      OperationState<WebAppsInstallSiteExtensionSlotResponse>
    >(lro, {
      restoreFrom: options?.resumeFrom,
      intervalInMs: options?.updateIntervalInMs
    });
    await poller.poll();
    return poller;
  }

  /**
   * Description for Install site extension on a web site, or a deployment slot.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Site name.
   * @param siteExtensionId Site extension name.
   * @param slot Name of the deployment slot. If a slot is not specified, the API uses the production
   *             slot.
   * @param options The options parameters.
   */
  async beginInstallSiteExtensionSlotAndWait(
    resourceGroupName: string,
    name: string,
    siteExtensionId: string,
    slot: string,
    options?: WebAppsInstallSiteExtensionSlotOptionalParams
  ): Promise<WebAppsInstallSiteExtensionSlotResponse> {
    const poller = await this.beginInstallSiteExtensionSlot(
      resourceGroupName,
      name,
      siteExtensionId,
      slot,
      options
    );
    return poller.pollUntilDone();
  }

  /**
   * Description for Remove a site extension from a web site, or a deployment slot.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Site name.
   * @param siteExtensionId Site extension name.
   * @param slot Name of the deployment slot. If a slot is not specified, the API deletes a deployment
   *             for the production slot.
   * @param options The options parameters.
   */
  deleteSiteExtensionSlot(
    resourceGroupName: string,
    name: string,
    siteExtensionId: string,
    slot: string,
    options?: WebAppsDeleteSiteExtensionSlotOptionalParams
  ): Promise<void> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, siteExtensionId, slot, options },
      deleteSiteExtensionSlotOperationSpec
    );
  }

  /**
   * Description for Get the difference in configuration settings between two web app slots.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the app.
   * @param slot Name of the source slot. If a slot is not specified, the production slot is used as the
   *             source slot.
   * @param slotSwapEntity JSON object that contains the target slot name. See example.
   * @param options The options parameters.
   */
  private _listSlotDifferencesSlot(
    resourceGroupName: string,
    name: string,
    slot: string,
    slotSwapEntity: CsmSlotEntity,
    options?: WebAppsListSlotDifferencesSlotOptionalParams
  ): Promise<WebAppsListSlotDifferencesSlotResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, slot, slotSwapEntity, options },
      listSlotDifferencesSlotOperationSpec
    );
  }

  /**
   * Description for Swaps two deployment slots of an app.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the app.
   * @param slot Name of the source slot. If a slot is not specified, the production slot is used as the
   *             source slot.
   * @param slotSwapEntity JSON object that contains the target slot name. See example.
   * @param options The options parameters.
   */
  async beginSwapSlot(
    resourceGroupName: string,
    name: string,
    slot: string,
    slotSwapEntity: CsmSlotEntity,
    options?: WebAppsSwapSlotOptionalParams
  ): Promise<SimplePollerLike<OperationState<void>, void>> {
    const directSendOperation = async (
      args: coreClient.OperationArguments,
      spec: coreClient.OperationSpec
    ): Promise<void> => {
      return this.client.sendOperationRequest(args, spec);
    };
    const sendOperationFn = async (
      args: coreClient.OperationArguments,
      spec: coreClient.OperationSpec
    ) => {
      let currentRawResponse:
        | coreClient.FullOperationResponse
        | undefined = undefined;
      const providedCallback = args.options?.onResponse;
      const callback: coreClient.RawResponseCallback = (
        rawResponse: coreClient.FullOperationResponse,
        flatResponse: unknown
      ) => {
        currentRawResponse = rawResponse;
        providedCallback?.(rawResponse, flatResponse);
      };
      const updatedArgs = {
        ...args,
        options: {
          ...args.options,
          onResponse: callback
        }
      };
      const flatResponse = await directSendOperation(updatedArgs, spec);
      return {
        flatResponse,
        rawResponse: {
          statusCode: currentRawResponse!.status,
          body: currentRawResponse!.parsedBody,
          headers: currentRawResponse!.headers.toJSON()
        }
      };
    };

    const lro = createLroSpec({
      sendOperationFn,
      args: { resourceGroupName, name, slot, slotSwapEntity, options },
      spec: swapSlotOperationSpec
    });
    const poller = await createHttpPoller<void, OperationState<void>>(lro, {
      restoreFrom: options?.resumeFrom,
      intervalInMs: options?.updateIntervalInMs
    });
    await poller.poll();
    return poller;
  }

  /**
   * Description for Swaps two deployment slots of an app.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the app.
   * @param slot Name of the source slot. If a slot is not specified, the production slot is used as the
   *             source slot.
   * @param slotSwapEntity JSON object that contains the target slot name. See example.
   * @param options The options parameters.
   */
  async beginSwapSlotAndWait(
    resourceGroupName: string,
    name: string,
    slot: string,
    slotSwapEntity: CsmSlotEntity,
    options?: WebAppsSwapSlotOptionalParams
  ): Promise<void> {
    const poller = await this.beginSwapSlot(
      resourceGroupName,
      name,
      slot,
      slotSwapEntity,
      options
    );
    return poller.pollUntilDone();
  }

  /**
   * Description for Returns all Snapshots to the user.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Website Name.
   * @param slot Website Slot.
   * @param options The options parameters.
   */
  private _listSnapshotsSlot(
    resourceGroupName: string,
    name: string,
    slot: string,
    options?: WebAppsListSnapshotsSlotOptionalParams
  ): Promise<WebAppsListSnapshotsSlotResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, slot, options },
      listSnapshotsSlotOperationSpec
    );
  }

  /**
   * Description for Returns all Snapshots to the user from DRSecondary endpoint.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Website Name.
   * @param slot Website Slot.
   * @param options The options parameters.
   */
  private _listSnapshotsFromDRSecondarySlot(
    resourceGroupName: string,
    name: string,
    slot: string,
    options?: WebAppsListSnapshotsFromDRSecondarySlotOptionalParams
  ): Promise<WebAppsListSnapshotsFromDRSecondarySlotResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, slot, options },
      listSnapshotsFromDRSecondarySlotOperationSpec
    );
  }

  /**
   * Description for Gets the source control configuration of an app.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the app.
   * @param slot Name of the deployment slot. If a slot is not specified, the API will get the source
   *             control configuration for the production slot.
   * @param options The options parameters.
   */
  getSourceControlSlot(
    resourceGroupName: string,
    name: string,
    slot: string,
    options?: WebAppsGetSourceControlSlotOptionalParams
  ): Promise<WebAppsGetSourceControlSlotResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, slot, options },
      getSourceControlSlotOperationSpec
    );
  }

  /**
   * Description for Updates the source control configuration of an app.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the app.
   * @param slot Name of the deployment slot. If a slot is not specified, the API will update the source
   *             control configuration for the production slot.
   * @param siteSourceControl JSON representation of a SiteSourceControl object. See example.
   * @param options The options parameters.
   */
  async beginCreateOrUpdateSourceControlSlot(
    resourceGroupName: string,
    name: string,
    slot: string,
    siteSourceControl: SiteSourceControl,
    options?: WebAppsCreateOrUpdateSourceControlSlotOptionalParams
  ): Promise<
    SimplePollerLike<
      OperationState<WebAppsCreateOrUpdateSourceControlSlotResponse>,
      WebAppsCreateOrUpdateSourceControlSlotResponse
    >
  > {
    const directSendOperation = async (
      args: coreClient.OperationArguments,
      spec: coreClient.OperationSpec
    ): Promise<WebAppsCreateOrUpdateSourceControlSlotResponse> => {
      return this.client.sendOperationRequest(args, spec);
    };
    const sendOperationFn = async (
      args: coreClient.OperationArguments,
      spec: coreClient.OperationSpec
    ) => {
      let currentRawResponse:
        | coreClient.FullOperationResponse
        | undefined = undefined;
      const providedCallback = args.options?.onResponse;
      const callback: coreClient.RawResponseCallback = (
        rawResponse: coreClient.FullOperationResponse,
        flatResponse: unknown
      ) => {
        currentRawResponse = rawResponse;
        providedCallback?.(rawResponse, flatResponse);
      };
      const updatedArgs = {
        ...args,
        options: {
          ...args.options,
          onResponse: callback
        }
      };
      const flatResponse = await directSendOperation(updatedArgs, spec);
      return {
        flatResponse,
        rawResponse: {
          statusCode: currentRawResponse!.status,
          body: currentRawResponse!.parsedBody,
          headers: currentRawResponse!.headers.toJSON()
        }
      };
    };

    const lro = createLroSpec({
      sendOperationFn,
      args: { resourceGroupName, name, slot, siteSourceControl, options },
      spec: createOrUpdateSourceControlSlotOperationSpec
    });
    const poller = await createHttpPoller<
      WebAppsCreateOrUpdateSourceControlSlotResponse,
      OperationState<WebAppsCreateOrUpdateSourceControlSlotResponse>
    >(lro, {
      restoreFrom: options?.resumeFrom,
      intervalInMs: options?.updateIntervalInMs
    });
    await poller.poll();
    return poller;
  }

  /**
   * Description for Updates the source control configuration of an app.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the app.
   * @param slot Name of the deployment slot. If a slot is not specified, the API will update the source
   *             control configuration for the production slot.
   * @param siteSourceControl JSON representation of a SiteSourceControl object. See example.
   * @param options The options parameters.
   */
  async beginCreateOrUpdateSourceControlSlotAndWait(
    resourceGroupName: string,
    name: string,
    slot: string,
    siteSourceControl: SiteSourceControl,
    options?: WebAppsCreateOrUpdateSourceControlSlotOptionalParams
  ): Promise<WebAppsCreateOrUpdateSourceControlSlotResponse> {
    const poller = await this.beginCreateOrUpdateSourceControlSlot(
      resourceGroupName,
      name,
      slot,
      siteSourceControl,
      options
    );
    return poller.pollUntilDone();
  }

  /**
   * Description for Deletes the source control configuration of an app.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the app.
   * @param slot Name of the deployment slot. If a slot is not specified, the API will delete the source
   *             control configuration for the production slot.
   * @param options The options parameters.
   */
  deleteSourceControlSlot(
    resourceGroupName: string,
    name: string,
    slot: string,
    options?: WebAppsDeleteSourceControlSlotOptionalParams
  ): Promise<void> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, slot, options },
      deleteSourceControlSlotOperationSpec
    );
  }

  /**
   * Description for Updates the source control configuration of an app.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the app.
   * @param slot Name of the deployment slot. If a slot is not specified, the API will update the source
   *             control configuration for the production slot.
   * @param siteSourceControl JSON representation of a SiteSourceControl object. See example.
   * @param options The options parameters.
   */
  updateSourceControlSlot(
    resourceGroupName: string,
    name: string,
    slot: string,
    siteSourceControl: SiteSourceControl,
    options?: WebAppsUpdateSourceControlSlotOptionalParams
  ): Promise<WebAppsUpdateSourceControlSlotResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, slot, siteSourceControl, options },
      updateSourceControlSlotOperationSpec
    );
  }

  /**
   * Description for Starts an app (or deployment slot, if specified).
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the app.
   * @param slot Name of the deployment slot. If a slot is not specified, the API will start the
   *             production slot.
   * @param options The options parameters.
   */
  startSlot(
    resourceGroupName: string,
    name: string,
    slot: string,
    options?: WebAppsStartSlotOptionalParams
  ): Promise<void> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, slot, options },
      startSlotOperationSpec
    );
  }

  /**
   * Description for Start capturing network packets for the site.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name The name of the web app.
   * @param slot The name of the slot for this web app.
   * @param options The options parameters.
   */
  async beginStartNetworkTraceSlot(
    resourceGroupName: string,
    name: string,
    slot: string,
    options?: WebAppsStartNetworkTraceSlotOptionalParams
  ): Promise<
    SimplePollerLike<
      OperationState<WebAppsStartNetworkTraceSlotResponse>,
      WebAppsStartNetworkTraceSlotResponse
    >
  > {
    const directSendOperation = async (
      args: coreClient.OperationArguments,
      spec: coreClient.OperationSpec
    ): Promise<WebAppsStartNetworkTraceSlotResponse> => {
      return this.client.sendOperationRequest(args, spec);
    };
    const sendOperationFn = async (
      args: coreClient.OperationArguments,
      spec: coreClient.OperationSpec
    ) => {
      let currentRawResponse:
        | coreClient.FullOperationResponse
        | undefined = undefined;
      const providedCallback = args.options?.onResponse;
      const callback: coreClient.RawResponseCallback = (
        rawResponse: coreClient.FullOperationResponse,
        flatResponse: unknown
      ) => {
        currentRawResponse = rawResponse;
        providedCallback?.(rawResponse, flatResponse);
      };
      const updatedArgs = {
        ...args,
        options: {
          ...args.options,
          onResponse: callback
        }
      };
      const flatResponse = await directSendOperation(updatedArgs, spec);
      return {
        flatResponse,
        rawResponse: {
          statusCode: currentRawResponse!.status,
          body: currentRawResponse!.parsedBody,
          headers: currentRawResponse!.headers.toJSON()
        }
      };
    };

    const lro = createLroSpec({
      sendOperationFn,
      args: { resourceGroupName, name, slot, options },
      spec: startNetworkTraceSlotOperationSpec
    });
    const poller = await createHttpPoller<
      WebAppsStartNetworkTraceSlotResponse,
      OperationState<WebAppsStartNetworkTraceSlotResponse>
    >(lro, {
      restoreFrom: options?.resumeFrom,
      intervalInMs: options?.updateIntervalInMs
    });
    await poller.poll();
    return poller;
  }

  /**
   * Description for Start capturing network packets for the site.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name The name of the web app.
   * @param slot The name of the slot for this web app.
   * @param options The options parameters.
   */
  async beginStartNetworkTraceSlotAndWait(
    resourceGroupName: string,
    name: string,
    slot: string,
    options?: WebAppsStartNetworkTraceSlotOptionalParams
  ): Promise<WebAppsStartNetworkTraceSlotResponse> {
    const poller = await this.beginStartNetworkTraceSlot(
      resourceGroupName,
      name,
      slot,
      options
    );
    return poller.pollUntilDone();
  }

  /**
   * Description for Stops an app (or deployment slot, if specified).
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the app.
   * @param slot Name of the deployment slot. If a slot is not specified, the API will stop the
   *             production slot.
   * @param options The options parameters.
   */
  stopSlot(
    resourceGroupName: string,
    name: string,
    slot: string,
    options?: WebAppsStopSlotOptionalParams
  ): Promise<void> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, slot, options },
      stopSlotOperationSpec
    );
  }

  /**
   * Description for Stop ongoing capturing network packets for the site.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name The name of the web app.
   * @param slot The name of the slot for this web app.
   * @param options The options parameters.
   */
  stopNetworkTraceSlot(
    resourceGroupName: string,
    name: string,
    slot: string,
    options?: WebAppsStopNetworkTraceSlotOptionalParams
  ): Promise<void> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, slot, options },
      stopNetworkTraceSlotOperationSpec
    );
  }

  /**
   * Description for Sync web app repository.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of web app.
   * @param slot Name of web app slot. If not specified then will default to production slot.
   * @param options The options parameters.
   */
  syncRepositorySlot(
    resourceGroupName: string,
    name: string,
    slot: string,
    options?: WebAppsSyncRepositorySlotOptionalParams
  ): Promise<void> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, slot, options },
      syncRepositorySlotOperationSpec
    );
  }

  /**
   * Description for Syncs function trigger metadata to the management database
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the app.
   * @param slot Name of the deployment slot.
   * @param options The options parameters.
   */
  syncFunctionTriggersSlot(
    resourceGroupName: string,
    name: string,
    slot: string,
    options?: WebAppsSyncFunctionTriggersSlotOptionalParams
  ): Promise<void> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, slot, options },
      syncFunctionTriggersSlotOperationSpec
    );
  }

  /**
   * Description for List triggered web jobs for an app, or a deployment slot.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Site name.
   * @param slot Name of the deployment slot. If a slot is not specified, the API deletes a deployment
   *             for the production slot.
   * @param options The options parameters.
   */
  private _listTriggeredWebJobsSlot(
    resourceGroupName: string,
    name: string,
    slot: string,
    options?: WebAppsListTriggeredWebJobsSlotOptionalParams
  ): Promise<WebAppsListTriggeredWebJobsSlotResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, slot, options },
      listTriggeredWebJobsSlotOperationSpec
    );
  }

  /**
   * Description for Gets a triggered web job by its ID for an app, or a deployment slot.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Site name.
   * @param webJobName Name of Web Job.
   * @param slot Name of the deployment slot. If a slot is not specified, the API uses the production
   *             slot.
   * @param options The options parameters.
   */
  getTriggeredWebJobSlot(
    resourceGroupName: string,
    name: string,
    webJobName: string,
    slot: string,
    options?: WebAppsGetTriggeredWebJobSlotOptionalParams
  ): Promise<WebAppsGetTriggeredWebJobSlotResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, webJobName, slot, options },
      getTriggeredWebJobSlotOperationSpec
    );
  }

  /**
   * Description for Delete a triggered web job by its ID for an app, or a deployment slot.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Site name.
   * @param webJobName Name of Web Job.
   * @param slot Name of the deployment slot. If a slot is not specified, the API deletes web job for the
   *             production slot.
   * @param options The options parameters.
   */
  deleteTriggeredWebJobSlot(
    resourceGroupName: string,
    name: string,
    webJobName: string,
    slot: string,
    options?: WebAppsDeleteTriggeredWebJobSlotOptionalParams
  ): Promise<void> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, webJobName, slot, options },
      deleteTriggeredWebJobSlotOperationSpec
    );
  }

  /**
   * Description for List a triggered web job's history for an app, or a deployment slot.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Site name.
   * @param webJobName Name of Web Job.
   * @param slot Name of the deployment slot. If a slot is not specified, the API uses the production
   *             slot.
   * @param options The options parameters.
   */
  private _listTriggeredWebJobHistorySlot(
    resourceGroupName: string,
    name: string,
    webJobName: string,
    slot: string,
    options?: WebAppsListTriggeredWebJobHistorySlotOptionalParams
  ): Promise<WebAppsListTriggeredWebJobHistorySlotResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, webJobName, slot, options },
      listTriggeredWebJobHistorySlotOperationSpec
    );
  }

  /**
   * Description for Gets a triggered web job's history by its ID for an app, , or a deployment slot.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Site name.
   * @param webJobName Name of Web Job.
   * @param id History ID.
   * @param slot Name of the deployment slot. If a slot is not specified, the API uses the production
   *             slot.
   * @param options The options parameters.
   */
  getTriggeredWebJobHistorySlot(
    resourceGroupName: string,
    name: string,
    webJobName: string,
    id: string,
    slot: string,
    options?: WebAppsGetTriggeredWebJobHistorySlotOptionalParams
  ): Promise<WebAppsGetTriggeredWebJobHistorySlotResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, webJobName, id, slot, options },
      getTriggeredWebJobHistorySlotOperationSpec
    );
  }

  /**
   * Description for Run a triggered web job for an app, or a deployment slot.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Site name.
   * @param webJobName Name of Web Job.
   * @param slot Name of the deployment slot. If a slot is not specified, the API uses the production
   *             slot.
   * @param options The options parameters.
   */
  runTriggeredWebJobSlot(
    resourceGroupName: string,
    name: string,
    webJobName: string,
    slot: string,
    options?: WebAppsRunTriggeredWebJobSlotOptionalParams
  ): Promise<void> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, webJobName, slot, options },
      runTriggeredWebJobSlotOperationSpec
    );
  }

  /**
   * Description for Gets the quota usage information of an app (or deployment slot, if specified).
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the app.
   * @param slot Name of the deployment slot. If a slot is not specified, the API will get quota
   *             information of the production slot.
   * @param options The options parameters.
   */
  private _listUsagesSlot(
    resourceGroupName: string,
    name: string,
    slot: string,
    options?: WebAppsListUsagesSlotOptionalParams
  ): Promise<WebAppsListUsagesSlotResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, slot, options },
      listUsagesSlotOperationSpec
    );
  }

  /**
   * Description for Gets the virtual networks the app (or deployment slot) is connected to.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the app.
   * @param slot Name of the deployment slot. If a slot is not specified, the API will get virtual
   *             network connections for the production slot.
   * @param options The options parameters.
   */
  listVnetConnectionsSlot(
    resourceGroupName: string,
    name: string,
    slot: string,
    options?: WebAppsListVnetConnectionsSlotOptionalParams
  ): Promise<WebAppsListVnetConnectionsSlotResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, slot, options },
      listVnetConnectionsSlotOperationSpec
    );
  }

  /**
   * Description for Gets a virtual network the app (or deployment slot) is connected to by name.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the app.
   * @param vnetName Name of the virtual network.
   * @param slot Name of the deployment slot. If a slot is not specified, the API will get the named
   *             virtual network for the production slot.
   * @param options The options parameters.
   */
  getVnetConnectionSlot(
    resourceGroupName: string,
    name: string,
    vnetName: string,
    slot: string,
    options?: WebAppsGetVnetConnectionSlotOptionalParams
  ): Promise<WebAppsGetVnetConnectionSlotResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, vnetName, slot, options },
      getVnetConnectionSlotOperationSpec
    );
  }

  /**
   * Description for Adds a Virtual Network connection to an app or slot (PUT) or updates the connection
   * properties (PATCH).
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the app.
   * @param vnetName Name of an existing Virtual Network.
   * @param slot Name of the deployment slot. If a slot is not specified, the API will add or update
   *             connections for the production slot.
   * @param connectionEnvelope Properties of the Virtual Network connection. See example.
   * @param options The options parameters.
   */
  createOrUpdateVnetConnectionSlot(
    resourceGroupName: string,
    name: string,
    vnetName: string,
    slot: string,
    connectionEnvelope: VnetInfoResource,
    options?: WebAppsCreateOrUpdateVnetConnectionSlotOptionalParams
  ): Promise<WebAppsCreateOrUpdateVnetConnectionSlotResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, vnetName, slot, connectionEnvelope, options },
      createOrUpdateVnetConnectionSlotOperationSpec
    );
  }

  /**
   * Description for Deletes a connection from an app (or deployment slot to a named virtual network.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the app.
   * @param vnetName Name of the virtual network.
   * @param slot Name of the deployment slot. If a slot is not specified, the API will delete the
   *             connection for the production slot.
   * @param options The options parameters.
   */
  deleteVnetConnectionSlot(
    resourceGroupName: string,
    name: string,
    vnetName: string,
    slot: string,
    options?: WebAppsDeleteVnetConnectionSlotOptionalParams
  ): Promise<void> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, vnetName, slot, options },
      deleteVnetConnectionSlotOperationSpec
    );
  }

  /**
   * Description for Adds a Virtual Network connection to an app or slot (PUT) or updates the connection
   * properties (PATCH).
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the app.
   * @param vnetName Name of an existing Virtual Network.
   * @param slot Name of the deployment slot. If a slot is not specified, the API will add or update
   *             connections for the production slot.
   * @param connectionEnvelope Properties of the Virtual Network connection. See example.
   * @param options The options parameters.
   */
  updateVnetConnectionSlot(
    resourceGroupName: string,
    name: string,
    vnetName: string,
    slot: string,
    connectionEnvelope: VnetInfoResource,
    options?: WebAppsUpdateVnetConnectionSlotOptionalParams
  ): Promise<WebAppsUpdateVnetConnectionSlotResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, vnetName, slot, connectionEnvelope, options },
      updateVnetConnectionSlotOperationSpec
    );
  }

  /**
   * Description for Gets an app's Virtual Network gateway.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the app.
   * @param vnetName Name of the Virtual Network.
   * @param gatewayName Name of the gateway. Currently, the only supported string is "primary".
   * @param slot Name of the deployment slot. If a slot is not specified, the API will get a gateway for
   *             the production slot's Virtual Network.
   * @param options The options parameters.
   */
  getVnetConnectionGatewaySlot(
    resourceGroupName: string,
    name: string,
    vnetName: string,
    gatewayName: string,
    slot: string,
    options?: WebAppsGetVnetConnectionGatewaySlotOptionalParams
  ): Promise<WebAppsGetVnetConnectionGatewaySlotResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, vnetName, gatewayName, slot, options },
      getVnetConnectionGatewaySlotOperationSpec
    );
  }

  /**
   * Description for Adds a gateway to a connected Virtual Network (PUT) or updates it (PATCH).
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the app.
   * @param vnetName Name of the Virtual Network.
   * @param gatewayName Name of the gateway. Currently, the only supported string is "primary".
   * @param slot Name of the deployment slot. If a slot is not specified, the API will add or update a
   *             gateway for the production slot's Virtual Network.
   * @param connectionEnvelope The properties to update this gateway with.
   * @param options The options parameters.
   */
  createOrUpdateVnetConnectionGatewaySlot(
    resourceGroupName: string,
    name: string,
    vnetName: string,
    gatewayName: string,
    slot: string,
    connectionEnvelope: VnetGateway,
    options?: WebAppsCreateOrUpdateVnetConnectionGatewaySlotOptionalParams
  ): Promise<WebAppsCreateOrUpdateVnetConnectionGatewaySlotResponse> {
    return this.client.sendOperationRequest(
      {
        resourceGroupName,
        name,
        vnetName,
        gatewayName,
        slot,
        connectionEnvelope,
        options
      },
      createOrUpdateVnetConnectionGatewaySlotOperationSpec
    );
  }

  /**
   * Description for Adds a gateway to a connected Virtual Network (PUT) or updates it (PATCH).
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the app.
   * @param vnetName Name of the Virtual Network.
   * @param gatewayName Name of the gateway. Currently, the only supported string is "primary".
   * @param slot Name of the deployment slot. If a slot is not specified, the API will add or update a
   *             gateway for the production slot's Virtual Network.
   * @param connectionEnvelope The properties to update this gateway with.
   * @param options The options parameters.
   */
  updateVnetConnectionGatewaySlot(
    resourceGroupName: string,
    name: string,
    vnetName: string,
    gatewayName: string,
    slot: string,
    connectionEnvelope: VnetGateway,
    options?: WebAppsUpdateVnetConnectionGatewaySlotOptionalParams
  ): Promise<WebAppsUpdateVnetConnectionGatewaySlotResponse> {
    return this.client.sendOperationRequest(
      {
        resourceGroupName,
        name,
        vnetName,
        gatewayName,
        slot,
        connectionEnvelope,
        options
      },
      updateVnetConnectionGatewaySlotOperationSpec
    );
  }

  /**
   * Description for List webjobs for an app, or a deployment slot.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Site name.
   * @param slot Name of the deployment slot. If a slot is not specified, the API returns deployments for
   *             the production slot.
   * @param options The options parameters.
   */
  private _listWebJobsSlot(
    resourceGroupName: string,
    name: string,
    slot: string,
    options?: WebAppsListWebJobsSlotOptionalParams
  ): Promise<WebAppsListWebJobsSlotResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, slot, options },
      listWebJobsSlotOperationSpec
    );
  }

  /**
   * Description for Get webjob information for an app, or a deployment slot.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Site name.
   * @param webJobName Name of the web job.
   * @param slot Name of the deployment slot. If a slot is not specified, the API returns deployments for
   *             the production slot.
   * @param options The options parameters.
   */
  getWebJobSlot(
    resourceGroupName: string,
    name: string,
    webJobName: string,
    slot: string,
    options?: WebAppsGetWebJobSlotOptionalParams
  ): Promise<WebAppsGetWebJobSlotResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, webJobName, slot, options },
      getWebJobSlotOperationSpec
    );
  }

  /**
   * Description for Get the difference in configuration settings between two web app slots.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the app.
   * @param slotSwapEntity JSON object that contains the target slot name. See example.
   * @param options The options parameters.
   */
  private _listSlotDifferencesFromProduction(
    resourceGroupName: string,
    name: string,
    slotSwapEntity: CsmSlotEntity,
    options?: WebAppsListSlotDifferencesFromProductionOptionalParams
  ): Promise<WebAppsListSlotDifferencesFromProductionResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, slotSwapEntity, options },
      listSlotDifferencesFromProductionOperationSpec
    );
  }

  /**
   * Description for Swaps two deployment slots of an app.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the app.
   * @param slotSwapEntity JSON object that contains the target slot name. See example.
   * @param options The options parameters.
   */
  async beginSwapSlotWithProduction(
    resourceGroupName: string,
    name: string,
    slotSwapEntity: CsmSlotEntity,
    options?: WebAppsSwapSlotWithProductionOptionalParams
  ): Promise<SimplePollerLike<OperationState<void>, void>> {
    const directSendOperation = async (
      args: coreClient.OperationArguments,
      spec: coreClient.OperationSpec
    ): Promise<void> => {
      return this.client.sendOperationRequest(args, spec);
    };
    const sendOperationFn = async (
      args: coreClient.OperationArguments,
      spec: coreClient.OperationSpec
    ) => {
      let currentRawResponse:
        | coreClient.FullOperationResponse
        | undefined = undefined;
      const providedCallback = args.options?.onResponse;
      const callback: coreClient.RawResponseCallback = (
        rawResponse: coreClient.FullOperationResponse,
        flatResponse: unknown
      ) => {
        currentRawResponse = rawResponse;
        providedCallback?.(rawResponse, flatResponse);
      };
      const updatedArgs = {
        ...args,
        options: {
          ...args.options,
          onResponse: callback
        }
      };
      const flatResponse = await directSendOperation(updatedArgs, spec);
      return {
        flatResponse,
        rawResponse: {
          statusCode: currentRawResponse!.status,
          body: currentRawResponse!.parsedBody,
          headers: currentRawResponse!.headers.toJSON()
        }
      };
    };

    const lro = createLroSpec({
      sendOperationFn,
      args: { resourceGroupName, name, slotSwapEntity, options },
      spec: swapSlotWithProductionOperationSpec
    });
    const poller = await createHttpPoller<void, OperationState<void>>(lro, {
      restoreFrom: options?.resumeFrom,
      intervalInMs: options?.updateIntervalInMs
    });
    await poller.poll();
    return poller;
  }

  /**
   * Description for Swaps two deployment slots of an app.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the app.
   * @param slotSwapEntity JSON object that contains the target slot name. See example.
   * @param options The options parameters.
   */
  async beginSwapSlotWithProductionAndWait(
    resourceGroupName: string,
    name: string,
    slotSwapEntity: CsmSlotEntity,
    options?: WebAppsSwapSlotWithProductionOptionalParams
  ): Promise<void> {
    const poller = await this.beginSwapSlotWithProduction(
      resourceGroupName,
      name,
      slotSwapEntity,
      options
    );
    return poller.pollUntilDone();
  }

  /**
   * Description for Returns all Snapshots to the user.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Website Name.
   * @param options The options parameters.
   */
  private _listSnapshots(
    resourceGroupName: string,
    name: string,
    options?: WebAppsListSnapshotsOptionalParams
  ): Promise<WebAppsListSnapshotsResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, options },
      listSnapshotsOperationSpec
    );
  }

  /**
   * Description for Returns all Snapshots to the user from DRSecondary endpoint.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Website Name.
   * @param options The options parameters.
   */
  private _listSnapshotsFromDRSecondary(
    resourceGroupName: string,
    name: string,
    options?: WebAppsListSnapshotsFromDRSecondaryOptionalParams
  ): Promise<WebAppsListSnapshotsFromDRSecondaryResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, options },
      listSnapshotsFromDRSecondaryOperationSpec
    );
  }

  /**
   * Description for Gets the source control configuration of an app.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the app.
   * @param options The options parameters.
   */
  getSourceControl(
    resourceGroupName: string,
    name: string,
    options?: WebAppsGetSourceControlOptionalParams
  ): Promise<WebAppsGetSourceControlResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, options },
      getSourceControlOperationSpec
    );
  }

  /**
   * Description for Updates the source control configuration of an app.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the app.
   * @param siteSourceControl JSON representation of a SiteSourceControl object. See example.
   * @param options The options parameters.
   */
  async beginCreateOrUpdateSourceControl(
    resourceGroupName: string,
    name: string,
    siteSourceControl: SiteSourceControl,
    options?: WebAppsCreateOrUpdateSourceControlOptionalParams
  ): Promise<
    SimplePollerLike<
      OperationState<WebAppsCreateOrUpdateSourceControlResponse>,
      WebAppsCreateOrUpdateSourceControlResponse
    >
  > {
    const directSendOperation = async (
      args: coreClient.OperationArguments,
      spec: coreClient.OperationSpec
    ): Promise<WebAppsCreateOrUpdateSourceControlResponse> => {
      return this.client.sendOperationRequest(args, spec);
    };
    const sendOperationFn = async (
      args: coreClient.OperationArguments,
      spec: coreClient.OperationSpec
    ) => {
      let currentRawResponse:
        | coreClient.FullOperationResponse
        | undefined = undefined;
      const providedCallback = args.options?.onResponse;
      const callback: coreClient.RawResponseCallback = (
        rawResponse: coreClient.FullOperationResponse,
        flatResponse: unknown
      ) => {
        currentRawResponse = rawResponse;
        providedCallback?.(rawResponse, flatResponse);
      };
      const updatedArgs = {
        ...args,
        options: {
          ...args.options,
          onResponse: callback
        }
      };
      const flatResponse = await directSendOperation(updatedArgs, spec);
      return {
        flatResponse,
        rawResponse: {
          statusCode: currentRawResponse!.status,
          body: currentRawResponse!.parsedBody,
          headers: currentRawResponse!.headers.toJSON()
        }
      };
    };

    const lro = createLroSpec({
      sendOperationFn,
      args: { resourceGroupName, name, siteSourceControl, options },
      spec: createOrUpdateSourceControlOperationSpec
    });
    const poller = await createHttpPoller<
      WebAppsCreateOrUpdateSourceControlResponse,
      OperationState<WebAppsCreateOrUpdateSourceControlResponse>
    >(lro, {
      restoreFrom: options?.resumeFrom,
      intervalInMs: options?.updateIntervalInMs
    });
    await poller.poll();
    return poller;
  }

  /**
   * Description for Updates the source control configuration of an app.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the app.
   * @param siteSourceControl JSON representation of a SiteSourceControl object. See example.
   * @param options The options parameters.
   */
  async beginCreateOrUpdateSourceControlAndWait(
    resourceGroupName: string,
    name: string,
    siteSourceControl: SiteSourceControl,
    options?: WebAppsCreateOrUpdateSourceControlOptionalParams
  ): Promise<WebAppsCreateOrUpdateSourceControlResponse> {
    const poller = await this.beginCreateOrUpdateSourceControl(
      resourceGroupName,
      name,
      siteSourceControl,
      options
    );
    return poller.pollUntilDone();
  }

  /**
   * Description for Deletes the source control configuration of an app.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the app.
   * @param options The options parameters.
   */
  deleteSourceControl(
    resourceGroupName: string,
    name: string,
    options?: WebAppsDeleteSourceControlOptionalParams
  ): Promise<void> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, options },
      deleteSourceControlOperationSpec
    );
  }

  /**
   * Description for Updates the source control configuration of an app.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the app.
   * @param siteSourceControl JSON representation of a SiteSourceControl object. See example.
   * @param options The options parameters.
   */
  updateSourceControl(
    resourceGroupName: string,
    name: string,
    siteSourceControl: SiteSourceControl,
    options?: WebAppsUpdateSourceControlOptionalParams
  ): Promise<WebAppsUpdateSourceControlResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, siteSourceControl, options },
      updateSourceControlOperationSpec
    );
  }

  /**
   * Description for Starts an app (or deployment slot, if specified).
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the app.
   * @param options The options parameters.
   */
  start(
    resourceGroupName: string,
    name: string,
    options?: WebAppsStartOptionalParams
  ): Promise<void> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, options },
      startOperationSpec
    );
  }

  /**
   * Description for Start capturing network packets for the site.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name The name of the web app.
   * @param options The options parameters.
   */
  async beginStartNetworkTrace(
    resourceGroupName: string,
    name: string,
    options?: WebAppsStartNetworkTraceOptionalParams
  ): Promise<
    SimplePollerLike<
      OperationState<WebAppsStartNetworkTraceResponse>,
      WebAppsStartNetworkTraceResponse
    >
  > {
    const directSendOperation = async (
      args: coreClient.OperationArguments,
      spec: coreClient.OperationSpec
    ): Promise<WebAppsStartNetworkTraceResponse> => {
      return this.client.sendOperationRequest(args, spec);
    };
    const sendOperationFn = async (
      args: coreClient.OperationArguments,
      spec: coreClient.OperationSpec
    ) => {
      let currentRawResponse:
        | coreClient.FullOperationResponse
        | undefined = undefined;
      const providedCallback = args.options?.onResponse;
      const callback: coreClient.RawResponseCallback = (
        rawResponse: coreClient.FullOperationResponse,
        flatResponse: unknown
      ) => {
        currentRawResponse = rawResponse;
        providedCallback?.(rawResponse, flatResponse);
      };
      const updatedArgs = {
        ...args,
        options: {
          ...args.options,
          onResponse: callback
        }
      };
      const flatResponse = await directSendOperation(updatedArgs, spec);
      return {
        flatResponse,
        rawResponse: {
          statusCode: currentRawResponse!.status,
          body: currentRawResponse!.parsedBody,
          headers: currentRawResponse!.headers.toJSON()
        }
      };
    };

    const lro = createLroSpec({
      sendOperationFn,
      args: { resourceGroupName, name, options },
      spec: startNetworkTraceOperationSpec
    });
    const poller = await createHttpPoller<
      WebAppsStartNetworkTraceResponse,
      OperationState<WebAppsStartNetworkTraceResponse>
    >(lro, {
      restoreFrom: options?.resumeFrom,
      intervalInMs: options?.updateIntervalInMs
    });
    await poller.poll();
    return poller;
  }

  /**
   * Description for Start capturing network packets for the site.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name The name of the web app.
   * @param options The options parameters.
   */
  async beginStartNetworkTraceAndWait(
    resourceGroupName: string,
    name: string,
    options?: WebAppsStartNetworkTraceOptionalParams
  ): Promise<WebAppsStartNetworkTraceResponse> {
    const poller = await this.beginStartNetworkTrace(
      resourceGroupName,
      name,
      options
    );
    return poller.pollUntilDone();
  }

  /**
   * Description for Stops an app (or deployment slot, if specified).
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the app.
   * @param options The options parameters.
   */
  stop(
    resourceGroupName: string,
    name: string,
    options?: WebAppsStopOptionalParams
  ): Promise<void> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, options },
      stopOperationSpec
    );
  }

  /**
   * Description for Stop ongoing capturing network packets for the site.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name The name of the web app.
   * @param options The options parameters.
   */
  stopNetworkTrace(
    resourceGroupName: string,
    name: string,
    options?: WebAppsStopNetworkTraceOptionalParams
  ): Promise<void> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, options },
      stopNetworkTraceOperationSpec
    );
  }

  /**
   * Description for Sync web app repository.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of web app.
   * @param options The options parameters.
   */
  syncRepository(
    resourceGroupName: string,
    name: string,
    options?: WebAppsSyncRepositoryOptionalParams
  ): Promise<void> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, options },
      syncRepositoryOperationSpec
    );
  }

  /**
   * Description for Syncs function trigger metadata to the management database
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the app.
   * @param options The options parameters.
   */
  syncFunctionTriggers(
    resourceGroupName: string,
    name: string,
    options?: WebAppsSyncFunctionTriggersOptionalParams
  ): Promise<void> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, options },
      syncFunctionTriggersOperationSpec
    );
  }

  /**
   * Description for List triggered web jobs for an app, or a deployment slot.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Site name.
   * @param options The options parameters.
   */
  private _listTriggeredWebJobs(
    resourceGroupName: string,
    name: string,
    options?: WebAppsListTriggeredWebJobsOptionalParams
  ): Promise<WebAppsListTriggeredWebJobsResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, options },
      listTriggeredWebJobsOperationSpec
    );
  }

  /**
   * Description for Gets a triggered web job by its ID for an app, or a deployment slot.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Site name.
   * @param webJobName Name of Web Job.
   * @param options The options parameters.
   */
  getTriggeredWebJob(
    resourceGroupName: string,
    name: string,
    webJobName: string,
    options?: WebAppsGetTriggeredWebJobOptionalParams
  ): Promise<WebAppsGetTriggeredWebJobResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, webJobName, options },
      getTriggeredWebJobOperationSpec
    );
  }

  /**
   * Description for Delete a triggered web job by its ID for an app, or a deployment slot.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Site name.
   * @param webJobName Name of Web Job.
   * @param options The options parameters.
   */
  deleteTriggeredWebJob(
    resourceGroupName: string,
    name: string,
    webJobName: string,
    options?: WebAppsDeleteTriggeredWebJobOptionalParams
  ): Promise<void> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, webJobName, options },
      deleteTriggeredWebJobOperationSpec
    );
  }

  /**
   * Description for List a triggered web job's history for an app, or a deployment slot.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Site name.
   * @param webJobName Name of Web Job.
   * @param options The options parameters.
   */
  private _listTriggeredWebJobHistory(
    resourceGroupName: string,
    name: string,
    webJobName: string,
    options?: WebAppsListTriggeredWebJobHistoryOptionalParams
  ): Promise<WebAppsListTriggeredWebJobHistoryResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, webJobName, options },
      listTriggeredWebJobHistoryOperationSpec
    );
  }

  /**
   * Description for Gets a triggered web job's history by its ID for an app, , or a deployment slot.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Site name.
   * @param webJobName Name of Web Job.
   * @param id History ID.
   * @param options The options parameters.
   */
  getTriggeredWebJobHistory(
    resourceGroupName: string,
    name: string,
    webJobName: string,
    id: string,
    options?: WebAppsGetTriggeredWebJobHistoryOptionalParams
  ): Promise<WebAppsGetTriggeredWebJobHistoryResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, webJobName, id, options },
      getTriggeredWebJobHistoryOperationSpec
    );
  }

  /**
   * Description for Run a triggered web job for an app, or a deployment slot.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Site name.
   * @param webJobName Name of Web Job.
   * @param options The options parameters.
   */
  runTriggeredWebJob(
    resourceGroupName: string,
    name: string,
    webJobName: string,
    options?: WebAppsRunTriggeredWebJobOptionalParams
  ): Promise<void> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, webJobName, options },
      runTriggeredWebJobOperationSpec
    );
  }

  /**
   * Description for Gets the quota usage information of an app (or deployment slot, if specified).
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the app.
   * @param options The options parameters.
   */
  private _listUsages(
    resourceGroupName: string,
    name: string,
    options?: WebAppsListUsagesOptionalParams
  ): Promise<WebAppsListUsagesResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, options },
      listUsagesOperationSpec
    );
  }

  /**
   * Description for Gets the virtual networks the app (or deployment slot) is connected to.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the app.
   * @param options The options parameters.
   */
  listVnetConnections(
    resourceGroupName: string,
    name: string,
    options?: WebAppsListVnetConnectionsOptionalParams
  ): Promise<WebAppsListVnetConnectionsResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, options },
      listVnetConnectionsOperationSpec
    );
  }

  /**
   * Description for Gets a virtual network the app (or deployment slot) is connected to by name.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the app.
   * @param vnetName Name of the virtual network.
   * @param options The options parameters.
   */
  getVnetConnection(
    resourceGroupName: string,
    name: string,
    vnetName: string,
    options?: WebAppsGetVnetConnectionOptionalParams
  ): Promise<WebAppsGetVnetConnectionResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, vnetName, options },
      getVnetConnectionOperationSpec
    );
  }

  /**
   * Description for Adds a Virtual Network connection to an app or slot (PUT) or updates the connection
   * properties (PATCH).
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the app.
   * @param vnetName Name of an existing Virtual Network.
   * @param connectionEnvelope Properties of the Virtual Network connection. See example.
   * @param options The options parameters.
   */
  createOrUpdateVnetConnection(
    resourceGroupName: string,
    name: string,
    vnetName: string,
    connectionEnvelope: VnetInfoResource,
    options?: WebAppsCreateOrUpdateVnetConnectionOptionalParams
  ): Promise<WebAppsCreateOrUpdateVnetConnectionResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, vnetName, connectionEnvelope, options },
      createOrUpdateVnetConnectionOperationSpec
    );
  }

  /**
   * Description for Deletes a connection from an app (or deployment slot to a named virtual network.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the app.
   * @param vnetName Name of the virtual network.
   * @param options The options parameters.
   */
  deleteVnetConnection(
    resourceGroupName: string,
    name: string,
    vnetName: string,
    options?: WebAppsDeleteVnetConnectionOptionalParams
  ): Promise<void> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, vnetName, options },
      deleteVnetConnectionOperationSpec
    );
  }

  /**
   * Description for Adds a Virtual Network connection to an app or slot (PUT) or updates the connection
   * properties (PATCH).
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the app.
   * @param vnetName Name of an existing Virtual Network.
   * @param connectionEnvelope Properties of the Virtual Network connection. See example.
   * @param options The options parameters.
   */
  updateVnetConnection(
    resourceGroupName: string,
    name: string,
    vnetName: string,
    connectionEnvelope: VnetInfoResource,
    options?: WebAppsUpdateVnetConnectionOptionalParams
  ): Promise<WebAppsUpdateVnetConnectionResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, vnetName, connectionEnvelope, options },
      updateVnetConnectionOperationSpec
    );
  }

  /**
   * Description for Gets an app's Virtual Network gateway.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the app.
   * @param vnetName Name of the Virtual Network.
   * @param gatewayName Name of the gateway. Currently, the only supported string is "primary".
   * @param options The options parameters.
   */
  getVnetConnectionGateway(
    resourceGroupName: string,
    name: string,
    vnetName: string,
    gatewayName: string,
    options?: WebAppsGetVnetConnectionGatewayOptionalParams
  ): Promise<WebAppsGetVnetConnectionGatewayResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, vnetName, gatewayName, options },
      getVnetConnectionGatewayOperationSpec
    );
  }

  /**
   * Description for Adds a gateway to a connected Virtual Network (PUT) or updates it (PATCH).
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the app.
   * @param vnetName Name of the Virtual Network.
   * @param gatewayName Name of the gateway. Currently, the only supported string is "primary".
   * @param connectionEnvelope The properties to update this gateway with.
   * @param options The options parameters.
   */
  createOrUpdateVnetConnectionGateway(
    resourceGroupName: string,
    name: string,
    vnetName: string,
    gatewayName: string,
    connectionEnvelope: VnetGateway,
    options?: WebAppsCreateOrUpdateVnetConnectionGatewayOptionalParams
  ): Promise<WebAppsCreateOrUpdateVnetConnectionGatewayResponse> {
    return this.client.sendOperationRequest(
      {
        resourceGroupName,
        name,
        vnetName,
        gatewayName,
        connectionEnvelope,
        options
      },
      createOrUpdateVnetConnectionGatewayOperationSpec
    );
  }

  /**
   * Description for Adds a gateway to a connected Virtual Network (PUT) or updates it (PATCH).
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the app.
   * @param vnetName Name of the Virtual Network.
   * @param gatewayName Name of the gateway. Currently, the only supported string is "primary".
   * @param connectionEnvelope The properties to update this gateway with.
   * @param options The options parameters.
   */
  updateVnetConnectionGateway(
    resourceGroupName: string,
    name: string,
    vnetName: string,
    gatewayName: string,
    connectionEnvelope: VnetGateway,
    options?: WebAppsUpdateVnetConnectionGatewayOptionalParams
  ): Promise<WebAppsUpdateVnetConnectionGatewayResponse> {
    return this.client.sendOperationRequest(
      {
        resourceGroupName,
        name,
        vnetName,
        gatewayName,
        connectionEnvelope,
        options
      },
      updateVnetConnectionGatewayOperationSpec
    );
  }

  /**
   * Description for List webjobs for an app, or a deployment slot.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Site name.
   * @param options The options parameters.
   */
  private _listWebJobs(
    resourceGroupName: string,
    name: string,
    options?: WebAppsListWebJobsOptionalParams
  ): Promise<WebAppsListWebJobsResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, options },
      listWebJobsOperationSpec
    );
  }

  /**
   * Description for Get webjob information for an app, or a deployment slot.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Site name.
   * @param webJobName Name of the web job.
   * @param options The options parameters.
   */
  getWebJob(
    resourceGroupName: string,
    name: string,
    webJobName: string,
    options?: WebAppsGetWebJobOptionalParams
  ): Promise<WebAppsGetWebJobResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, webJobName, options },
      getWebJobOperationSpec
    );
  }

  /**
   * Description for Creates the artifacts for web site, or a deployment slot.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Site name.
   * @param options The options parameters.
   */
  deployWorkflowArtifacts(
    resourceGroupName: string,
    name: string,
    options?: WebAppsDeployWorkflowArtifactsOptionalParams
  ): Promise<void> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, options },
      deployWorkflowArtifactsOperationSpec
    );
  }

  /**
   * Description for Creates the artifacts for web site, or a deployment slot.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Site name.
   * @param slot Name of the deployment slot.
   * @param options The options parameters.
   */
  deployWorkflowArtifactsSlot(
    resourceGroupName: string,
    name: string,
    slot: string,
    options?: WebAppsDeployWorkflowArtifactsSlotOptionalParams
  ): Promise<void> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, slot, options },
      deployWorkflowArtifactsSlotOperationSpec
    );
  }

  /**
   * List the workflows for a web site, or a deployment slot.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Site name.
   * @param slot Name of the deployment slot.
   * @param options The options parameters.
   */
  private _listInstanceWorkflowsSlot(
    resourceGroupName: string,
    name: string,
    slot: string,
    options?: WebAppsListInstanceWorkflowsSlotOptionalParams
  ): Promise<WebAppsListInstanceWorkflowsSlotResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, slot, options },
      listInstanceWorkflowsSlotOperationSpec
    );
  }

  /**
   * Get workflow information by its ID for web site, or a deployment slot.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Site name.
   * @param slot Name of the deployment slot.
   * @param workflowName Workflow name.
   * @param options The options parameters.
   */
  getInstanceWorkflowSlot(
    resourceGroupName: string,
    name: string,
    slot: string,
    workflowName: string,
    options?: WebAppsGetInstanceWorkflowSlotOptionalParams
  ): Promise<WebAppsGetInstanceWorkflowSlotResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, slot, workflowName, options },
      getInstanceWorkflowSlotOperationSpec
    );
  }

  /**
   * Lists logic app's connections for web site, or a deployment slot.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Site name.
   * @param slot Name of the deployment slot.
   * @param options The options parameters.
   */
  listWorkflowsConnectionsSlot(
    resourceGroupName: string,
    name: string,
    slot: string,
    options?: WebAppsListWorkflowsConnectionsSlotOptionalParams
  ): Promise<WebAppsListWorkflowsConnectionsSlotResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, slot, options },
      listWorkflowsConnectionsSlotOperationSpec
    );
  }

  /**
   * List the workflows for a web site, or a deployment slot.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Site name.
   * @param options The options parameters.
   */
  private _listWorkflows(
    resourceGroupName: string,
    name: string,
    options?: WebAppsListWorkflowsOptionalParams
  ): Promise<WebAppsListWorkflowsResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, options },
      listWorkflowsOperationSpec
    );
  }

  /**
   * Get workflow information by its ID for web site, or a deployment slot.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Site name.
   * @param workflowName Workflow name.
   * @param options The options parameters.
   */
  getWorkflow(
    resourceGroupName: string,
    name: string,
    workflowName: string,
    options?: WebAppsGetWorkflowOptionalParams
  ): Promise<WebAppsGetWorkflowResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, workflowName, options },
      getWorkflowOperationSpec
    );
  }

  /**
   * Lists logic app's connections for web site, or a deployment slot.
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Site name.
   * @param options The options parameters.
   */
  listWorkflowsConnections(
    resourceGroupName: string,
    name: string,
    options?: WebAppsListWorkflowsConnectionsOptionalParams
  ): Promise<WebAppsListWorkflowsConnectionsResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, options },
      listWorkflowsConnectionsOperationSpec
    );
  }

  /**
   * ListNext
   * @param nextLink The nextLink from the previous successful call to the List method.
   * @param options The options parameters.
   */
  private _listNext(
    nextLink: string,
    options?: WebAppsListNextOptionalParams
  ): Promise<WebAppsListNextResponse> {
    return this.client.sendOperationRequest(
      { nextLink, options },
      listNextOperationSpec
    );
  }

  /**
   * ListByResourceGroupNext
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param nextLink The nextLink from the previous successful call to the ListByResourceGroup method.
   * @param options The options parameters.
   */
  private _listByResourceGroupNext(
    resourceGroupName: string,
    nextLink: string,
    options?: WebAppsListByResourceGroupNextOptionalParams
  ): Promise<WebAppsListByResourceGroupNextResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, nextLink, options },
      listByResourceGroupNextOperationSpec
    );
  }

  /**
   * ListBackupsNext
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the app.
   * @param nextLink The nextLink from the previous successful call to the ListBackups method.
   * @param options The options parameters.
   */
  private _listBackupsNext(
    resourceGroupName: string,
    name: string,
    nextLink: string,
    options?: WebAppsListBackupsNextOptionalParams
  ): Promise<WebAppsListBackupsNextResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, nextLink, options },
      listBackupsNextOperationSpec
    );
  }

  /**
   * ListBasicPublishingCredentialsPoliciesNext
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the app.
   * @param nextLink The nextLink from the previous successful call to the
   *                 ListBasicPublishingCredentialsPolicies method.
   * @param options The options parameters.
   */
  private _listBasicPublishingCredentialsPoliciesNext(
    resourceGroupName: string,
    name: string,
    nextLink: string,
    options?: WebAppsListBasicPublishingCredentialsPoliciesNextOptionalParams
  ): Promise<WebAppsListBasicPublishingCredentialsPoliciesNextResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, nextLink, options },
      listBasicPublishingCredentialsPoliciesNextOperationSpec
    );
  }

  /**
   * ListConfigurationsNext
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the app.
   * @param nextLink The nextLink from the previous successful call to the ListConfigurations method.
   * @param options The options parameters.
   */
  private _listConfigurationsNext(
    resourceGroupName: string,
    name: string,
    nextLink: string,
    options?: WebAppsListConfigurationsNextOptionalParams
  ): Promise<WebAppsListConfigurationsNextResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, nextLink, options },
      listConfigurationsNextOperationSpec
    );
  }

  /**
   * GetAppSettingsKeyVaultReferencesNext
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the app.
   * @param nextLink The nextLink from the previous successful call to the
   *                 GetAppSettingsKeyVaultReferences method.
   * @param options The options parameters.
   */
  private _getAppSettingsKeyVaultReferencesNext(
    resourceGroupName: string,
    name: string,
    nextLink: string,
    options?: WebAppsGetAppSettingsKeyVaultReferencesNextOptionalParams
  ): Promise<WebAppsGetAppSettingsKeyVaultReferencesNextResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, nextLink, options },
      getAppSettingsKeyVaultReferencesNextOperationSpec
    );
  }

  /**
   * GetSiteConnectionStringKeyVaultReferencesNext
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the app.
   * @param nextLink The nextLink from the previous successful call to the
   *                 GetSiteConnectionStringKeyVaultReferences method.
   * @param options The options parameters.
   */
  private _getSiteConnectionStringKeyVaultReferencesNext(
    resourceGroupName: string,
    name: string,
    nextLink: string,
    options?: WebAppsGetSiteConnectionStringKeyVaultReferencesNextOptionalParams
  ): Promise<WebAppsGetSiteConnectionStringKeyVaultReferencesNextResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, nextLink, options },
      getSiteConnectionStringKeyVaultReferencesNextOperationSpec
    );
  }

  /**
   * ListConfigurationSnapshotInfoNext
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the app.
   * @param nextLink The nextLink from the previous successful call to the ListConfigurationSnapshotInfo
   *                 method.
   * @param options The options parameters.
   */
  private _listConfigurationSnapshotInfoNext(
    resourceGroupName: string,
    name: string,
    nextLink: string,
    options?: WebAppsListConfigurationSnapshotInfoNextOptionalParams
  ): Promise<WebAppsListConfigurationSnapshotInfoNextResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, nextLink, options },
      listConfigurationSnapshotInfoNextOperationSpec
    );
  }

  /**
   * ListContinuousWebJobsNext
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Site name.
   * @param nextLink The nextLink from the previous successful call to the ListContinuousWebJobs method.
   * @param options The options parameters.
   */
  private _listContinuousWebJobsNext(
    resourceGroupName: string,
    name: string,
    nextLink: string,
    options?: WebAppsListContinuousWebJobsNextOptionalParams
  ): Promise<WebAppsListContinuousWebJobsNextResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, nextLink, options },
      listContinuousWebJobsNextOperationSpec
    );
  }

  /**
   * ListProductionSiteDeploymentStatusesNext
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the app.
   * @param nextLink The nextLink from the previous successful call to the
   *                 ListProductionSiteDeploymentStatuses method.
   * @param options The options parameters.
   */
  private _listProductionSiteDeploymentStatusesNext(
    resourceGroupName: string,
    name: string,
    nextLink: string,
    options?: WebAppsListProductionSiteDeploymentStatusesNextOptionalParams
  ): Promise<WebAppsListProductionSiteDeploymentStatusesNextResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, nextLink, options },
      listProductionSiteDeploymentStatusesNextOperationSpec
    );
  }

  /**
   * ListDeploymentsNext
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the app.
   * @param nextLink The nextLink from the previous successful call to the ListDeployments method.
   * @param options The options parameters.
   */
  private _listDeploymentsNext(
    resourceGroupName: string,
    name: string,
    nextLink: string,
    options?: WebAppsListDeploymentsNextOptionalParams
  ): Promise<WebAppsListDeploymentsNextResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, nextLink, options },
      listDeploymentsNextOperationSpec
    );
  }

  /**
   * ListDomainOwnershipIdentifiersNext
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the app.
   * @param nextLink The nextLink from the previous successful call to the ListDomainOwnershipIdentifiers
   *                 method.
   * @param options The options parameters.
   */
  private _listDomainOwnershipIdentifiersNext(
    resourceGroupName: string,
    name: string,
    nextLink: string,
    options?: WebAppsListDomainOwnershipIdentifiersNextOptionalParams
  ): Promise<WebAppsListDomainOwnershipIdentifiersNextResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, nextLink, options },
      listDomainOwnershipIdentifiersNextOperationSpec
    );
  }

  /**
   * ListFunctionsNext
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Site name.
   * @param nextLink The nextLink from the previous successful call to the ListFunctions method.
   * @param options The options parameters.
   */
  private _listFunctionsNext(
    resourceGroupName: string,
    name: string,
    nextLink: string,
    options?: WebAppsListFunctionsNextOptionalParams
  ): Promise<WebAppsListFunctionsNextResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, nextLink, options },
      listFunctionsNextOperationSpec
    );
  }

  /**
   * ListHostNameBindingsNext
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the app.
   * @param nextLink The nextLink from the previous successful call to the ListHostNameBindings method.
   * @param options The options parameters.
   */
  private _listHostNameBindingsNext(
    resourceGroupName: string,
    name: string,
    nextLink: string,
    options?: WebAppsListHostNameBindingsNextOptionalParams
  ): Promise<WebAppsListHostNameBindingsNextResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, nextLink, options },
      listHostNameBindingsNextOperationSpec
    );
  }

  /**
   * ListInstanceIdentifiersNext
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the app.
   * @param nextLink The nextLink from the previous successful call to the ListInstanceIdentifiers
   *                 method.
   * @param options The options parameters.
   */
  private _listInstanceIdentifiersNext(
    resourceGroupName: string,
    name: string,
    nextLink: string,
    options?: WebAppsListInstanceIdentifiersNextOptionalParams
  ): Promise<WebAppsListInstanceIdentifiersNextResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, nextLink, options },
      listInstanceIdentifiersNextOperationSpec
    );
  }

  /**
   * ListInstanceProcessesNext
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Site name.
   * @param instanceId ID of a specific scaled-out instance. This is the value of the name property in
   *                   the JSON response from "GET api/sites/{siteName}/instances".
   * @param nextLink The nextLink from the previous successful call to the ListInstanceProcesses method.
   * @param options The options parameters.
   */
  private _listInstanceProcessesNext(
    resourceGroupName: string,
    name: string,
    instanceId: string,
    nextLink: string,
    options?: WebAppsListInstanceProcessesNextOptionalParams
  ): Promise<WebAppsListInstanceProcessesNextResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, instanceId, nextLink, options },
      listInstanceProcessesNextOperationSpec
    );
  }

  /**
   * ListInstanceProcessModulesNext
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Site name.
   * @param processId PID.
   * @param instanceId ID of a specific scaled-out instance. This is the value of the name property in
   *                   the JSON response from "GET api/sites/{siteName}/instances".
   * @param nextLink The nextLink from the previous successful call to the ListInstanceProcessModules
   *                 method.
   * @param options The options parameters.
   */
  private _listInstanceProcessModulesNext(
    resourceGroupName: string,
    name: string,
    processId: string,
    instanceId: string,
    nextLink: string,
    options?: WebAppsListInstanceProcessModulesNextOptionalParams
  ): Promise<WebAppsListInstanceProcessModulesNextResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, processId, instanceId, nextLink, options },
      listInstanceProcessModulesNextOperationSpec
    );
  }

  /**
   * ListInstanceProcessThreadsNext
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Site name.
   * @param processId PID.
   * @param instanceId ID of a specific scaled-out instance. This is the value of the name property in
   *                   the JSON response from "GET api/sites/{siteName}/instances".
   * @param nextLink The nextLink from the previous successful call to the ListInstanceProcessThreads
   *                 method.
   * @param options The options parameters.
   */
  private _listInstanceProcessThreadsNext(
    resourceGroupName: string,
    name: string,
    processId: string,
    instanceId: string,
    nextLink: string,
    options?: WebAppsListInstanceProcessThreadsNextOptionalParams
  ): Promise<WebAppsListInstanceProcessThreadsNextResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, processId, instanceId, nextLink, options },
      listInstanceProcessThreadsNextOperationSpec
    );
  }

  /**
   * ListSiteBackupsNext
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the app.
   * @param nextLink The nextLink from the previous successful call to the ListSiteBackups method.
   * @param options The options parameters.
   */
  private _listSiteBackupsNext(
    resourceGroupName: string,
    name: string,
    nextLink: string,
    options?: WebAppsListSiteBackupsNextOptionalParams
  ): Promise<WebAppsListSiteBackupsNextResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, nextLink, options },
      listSiteBackupsNextOperationSpec
    );
  }

  /**
   * ListPerfMonCountersNext
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of web app.
   * @param nextLink The nextLink from the previous successful call to the ListPerfMonCounters method.
   * @param options The options parameters.
   */
  private _listPerfMonCountersNext(
    resourceGroupName: string,
    name: string,
    nextLink: string,
    options?: WebAppsListPerfMonCountersNextOptionalParams
  ): Promise<WebAppsListPerfMonCountersNextResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, nextLink, options },
      listPerfMonCountersNextOperationSpec
    );
  }

  /**
   * GetPrivateEndpointConnectionListNext
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the site.
   * @param nextLink The nextLink from the previous successful call to the
   *                 GetPrivateEndpointConnectionList method.
   * @param options The options parameters.
   */
  private _getPrivateEndpointConnectionListNext(
    resourceGroupName: string,
    name: string,
    nextLink: string,
    options?: WebAppsGetPrivateEndpointConnectionListNextOptionalParams
  ): Promise<WebAppsGetPrivateEndpointConnectionListNextResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, nextLink, options },
      getPrivateEndpointConnectionListNextOperationSpec
    );
  }

  /**
   * ListProcessesNext
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Site name.
   * @param nextLink The nextLink from the previous successful call to the ListProcesses method.
   * @param options The options parameters.
   */
  private _listProcessesNext(
    resourceGroupName: string,
    name: string,
    nextLink: string,
    options?: WebAppsListProcessesNextOptionalParams
  ): Promise<WebAppsListProcessesNextResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, nextLink, options },
      listProcessesNextOperationSpec
    );
  }

  /**
   * ListProcessModulesNext
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Site name.
   * @param processId PID.
   * @param nextLink The nextLink from the previous successful call to the ListProcessModules method.
   * @param options The options parameters.
   */
  private _listProcessModulesNext(
    resourceGroupName: string,
    name: string,
    processId: string,
    nextLink: string,
    options?: WebAppsListProcessModulesNextOptionalParams
  ): Promise<WebAppsListProcessModulesNextResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, processId, nextLink, options },
      listProcessModulesNextOperationSpec
    );
  }

  /**
   * ListProcessThreadsNext
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Site name.
   * @param processId PID.
   * @param nextLink The nextLink from the previous successful call to the ListProcessThreads method.
   * @param options The options parameters.
   */
  private _listProcessThreadsNext(
    resourceGroupName: string,
    name: string,
    processId: string,
    nextLink: string,
    options?: WebAppsListProcessThreadsNextOptionalParams
  ): Promise<WebAppsListProcessThreadsNextResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, processId, nextLink, options },
      listProcessThreadsNextOperationSpec
    );
  }

  /**
   * ListPublicCertificatesNext
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the app.
   * @param nextLink The nextLink from the previous successful call to the ListPublicCertificates method.
   * @param options The options parameters.
   */
  private _listPublicCertificatesNext(
    resourceGroupName: string,
    name: string,
    nextLink: string,
    options?: WebAppsListPublicCertificatesNextOptionalParams
  ): Promise<WebAppsListPublicCertificatesNextResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, nextLink, options },
      listPublicCertificatesNextOperationSpec
    );
  }

  /**
   * ListSiteExtensionsNext
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Site name.
   * @param nextLink The nextLink from the previous successful call to the ListSiteExtensions method.
   * @param options The options parameters.
   */
  private _listSiteExtensionsNext(
    resourceGroupName: string,
    name: string,
    nextLink: string,
    options?: WebAppsListSiteExtensionsNextOptionalParams
  ): Promise<WebAppsListSiteExtensionsNextResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, nextLink, options },
      listSiteExtensionsNextOperationSpec
    );
  }

  /**
   * ListSlotsNext
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the app.
   * @param nextLink The nextLink from the previous successful call to the ListSlots method.
   * @param options The options parameters.
   */
  private _listSlotsNext(
    resourceGroupName: string,
    name: string,
    nextLink: string,
    options?: WebAppsListSlotsNextOptionalParams
  ): Promise<WebAppsListSlotsNextResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, nextLink, options },
      listSlotsNextOperationSpec
    );
  }

  /**
   * ListBackupsSlotNext
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the app.
   * @param slot Name of the deployment slot. If a slot is not specified, the API will get backups of the
   *             production slot.
   * @param nextLink The nextLink from the previous successful call to the ListBackupsSlot method.
   * @param options The options parameters.
   */
  private _listBackupsSlotNext(
    resourceGroupName: string,
    name: string,
    slot: string,
    nextLink: string,
    options?: WebAppsListBackupsSlotNextOptionalParams
  ): Promise<WebAppsListBackupsSlotNextResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, slot, nextLink, options },
      listBackupsSlotNextOperationSpec
    );
  }

  /**
   * ListBasicPublishingCredentialsPoliciesSlotNext
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the app.
   * @param slot
   * @param nextLink The nextLink from the previous successful call to the
   *                 ListBasicPublishingCredentialsPoliciesSlot method.
   * @param options The options parameters.
   */
  private _listBasicPublishingCredentialsPoliciesSlotNext(
    resourceGroupName: string,
    name: string,
    slot: string,
    nextLink: string,
    options?: WebAppsListBasicPublishingCredentialsPoliciesSlotNextOptionalParams
  ): Promise<WebAppsListBasicPublishingCredentialsPoliciesSlotNextResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, slot, nextLink, options },
      listBasicPublishingCredentialsPoliciesSlotNextOperationSpec
    );
  }

  /**
   * ListConfigurationsSlotNext
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the app.
   * @param slot Name of the deployment slot. If a slot is not specified, the API will return
   *             configuration for the production slot.
   * @param nextLink The nextLink from the previous successful call to the ListConfigurationsSlot method.
   * @param options The options parameters.
   */
  private _listConfigurationsSlotNext(
    resourceGroupName: string,
    name: string,
    slot: string,
    nextLink: string,
    options?: WebAppsListConfigurationsSlotNextOptionalParams
  ): Promise<WebAppsListConfigurationsSlotNextResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, slot, nextLink, options },
      listConfigurationsSlotNextOperationSpec
    );
  }

  /**
   * GetAppSettingsKeyVaultReferencesSlotNext
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the app.
   * @param slot
   * @param nextLink The nextLink from the previous successful call to the
   *                 GetAppSettingsKeyVaultReferencesSlot method.
   * @param options The options parameters.
   */
  private _getAppSettingsKeyVaultReferencesSlotNext(
    resourceGroupName: string,
    name: string,
    slot: string,
    nextLink: string,
    options?: WebAppsGetAppSettingsKeyVaultReferencesSlotNextOptionalParams
  ): Promise<WebAppsGetAppSettingsKeyVaultReferencesSlotNextResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, slot, nextLink, options },
      getAppSettingsKeyVaultReferencesSlotNextOperationSpec
    );
  }

  /**
   * GetSiteConnectionStringKeyVaultReferencesSlotNext
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the app.
   * @param slot
   * @param nextLink The nextLink from the previous successful call to the
   *                 GetSiteConnectionStringKeyVaultReferencesSlot method.
   * @param options The options parameters.
   */
  private _getSiteConnectionStringKeyVaultReferencesSlotNext(
    resourceGroupName: string,
    name: string,
    slot: string,
    nextLink: string,
    options?: WebAppsGetSiteConnectionStringKeyVaultReferencesSlotNextOptionalParams
  ): Promise<WebAppsGetSiteConnectionStringKeyVaultReferencesSlotNextResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, slot, nextLink, options },
      getSiteConnectionStringKeyVaultReferencesSlotNextOperationSpec
    );
  }

  /**
   * ListConfigurationSnapshotInfoSlotNext
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the app.
   * @param slot Name of the deployment slot. If a slot is not specified, the API will return
   *             configuration for the production slot.
   * @param nextLink The nextLink from the previous successful call to the
   *                 ListConfigurationSnapshotInfoSlot method.
   * @param options The options parameters.
   */
  private _listConfigurationSnapshotInfoSlotNext(
    resourceGroupName: string,
    name: string,
    slot: string,
    nextLink: string,
    options?: WebAppsListConfigurationSnapshotInfoSlotNextOptionalParams
  ): Promise<WebAppsListConfigurationSnapshotInfoSlotNextResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, slot, nextLink, options },
      listConfigurationSnapshotInfoSlotNextOperationSpec
    );
  }

  /**
   * ListContinuousWebJobsSlotNext
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Site name.
   * @param slot Name of the deployment slot. If a slot is not specified, the API deletes a deployment
   *             for the production slot.
   * @param nextLink The nextLink from the previous successful call to the ListContinuousWebJobsSlot
   *                 method.
   * @param options The options parameters.
   */
  private _listContinuousWebJobsSlotNext(
    resourceGroupName: string,
    name: string,
    slot: string,
    nextLink: string,
    options?: WebAppsListContinuousWebJobsSlotNextOptionalParams
  ): Promise<WebAppsListContinuousWebJobsSlotNextResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, slot, nextLink, options },
      listContinuousWebJobsSlotNextOperationSpec
    );
  }

  /**
   * ListSlotSiteDeploymentStatusesSlotNext
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the app.
   * @param slot Name of the deployment slot. If a slot is not specified, the API will get the deployment
   *             status for the production slot.
   * @param nextLink The nextLink from the previous successful call to the
   *                 ListSlotSiteDeploymentStatusesSlot method.
   * @param options The options parameters.
   */
  private _listSlotSiteDeploymentStatusesSlotNext(
    resourceGroupName: string,
    name: string,
    slot: string,
    nextLink: string,
    options?: WebAppsListSlotSiteDeploymentStatusesSlotNextOptionalParams
  ): Promise<WebAppsListSlotSiteDeploymentStatusesSlotNextResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, slot, nextLink, options },
      listSlotSiteDeploymentStatusesSlotNextOperationSpec
    );
  }

  /**
   * ListDeploymentsSlotNext
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the app.
   * @param slot Name of the deployment slot. If a slot is not specified, the API returns deployments for
   *             the production slot.
   * @param nextLink The nextLink from the previous successful call to the ListDeploymentsSlot method.
   * @param options The options parameters.
   */
  private _listDeploymentsSlotNext(
    resourceGroupName: string,
    name: string,
    slot: string,
    nextLink: string,
    options?: WebAppsListDeploymentsSlotNextOptionalParams
  ): Promise<WebAppsListDeploymentsSlotNextResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, slot, nextLink, options },
      listDeploymentsSlotNextOperationSpec
    );
  }

  /**
   * ListDomainOwnershipIdentifiersSlotNext
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the app.
   * @param slot Name of the deployment slot. If a slot is not specified, the API will delete the binding
   *             for the production slot.
   * @param nextLink The nextLink from the previous successful call to the
   *                 ListDomainOwnershipIdentifiersSlot method.
   * @param options The options parameters.
   */
  private _listDomainOwnershipIdentifiersSlotNext(
    resourceGroupName: string,
    name: string,
    slot: string,
    nextLink: string,
    options?: WebAppsListDomainOwnershipIdentifiersSlotNextOptionalParams
  ): Promise<WebAppsListDomainOwnershipIdentifiersSlotNextResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, slot, nextLink, options },
      listDomainOwnershipIdentifiersSlotNextOperationSpec
    );
  }

  /**
   * ListInstanceFunctionsSlotNext
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Site name.
   * @param slot Name of the deployment slot.
   * @param nextLink The nextLink from the previous successful call to the ListInstanceFunctionsSlot
   *                 method.
   * @param options The options parameters.
   */
  private _listInstanceFunctionsSlotNext(
    resourceGroupName: string,
    name: string,
    slot: string,
    nextLink: string,
    options?: WebAppsListInstanceFunctionsSlotNextOptionalParams
  ): Promise<WebAppsListInstanceFunctionsSlotNextResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, slot, nextLink, options },
      listInstanceFunctionsSlotNextOperationSpec
    );
  }

  /**
   * ListHostNameBindingsSlotNext
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the app.
   * @param slot Name of the deployment slot. If a slot is not specified, the API gets hostname bindings
   *             for the production slot.
   * @param nextLink The nextLink from the previous successful call to the ListHostNameBindingsSlot
   *                 method.
   * @param options The options parameters.
   */
  private _listHostNameBindingsSlotNext(
    resourceGroupName: string,
    name: string,
    slot: string,
    nextLink: string,
    options?: WebAppsListHostNameBindingsSlotNextOptionalParams
  ): Promise<WebAppsListHostNameBindingsSlotNextResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, slot, nextLink, options },
      listHostNameBindingsSlotNextOperationSpec
    );
  }

  /**
   * ListInstanceIdentifiersSlotNext
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the app.
   * @param slot Name of the deployment slot. If a slot is not specified, the API gets the production
   *             slot instances.
   * @param nextLink The nextLink from the previous successful call to the ListInstanceIdentifiersSlot
   *                 method.
   * @param options The options parameters.
   */
  private _listInstanceIdentifiersSlotNext(
    resourceGroupName: string,
    name: string,
    slot: string,
    nextLink: string,
    options?: WebAppsListInstanceIdentifiersSlotNextOptionalParams
  ): Promise<WebAppsListInstanceIdentifiersSlotNextResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, slot, nextLink, options },
      listInstanceIdentifiersSlotNextOperationSpec
    );
  }

  /**
   * ListInstanceProcessesSlotNext
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Site name.
   * @param slot Name of the deployment slot. If a slot is not specified, the API returns deployments for
   *             the production slot.
   * @param instanceId ID of a specific scaled-out instance. This is the value of the name property in
   *                   the JSON response from "GET api/sites/{siteName}/instances".
   * @param nextLink The nextLink from the previous successful call to the ListInstanceProcessesSlot
   *                 method.
   * @param options The options parameters.
   */
  private _listInstanceProcessesSlotNext(
    resourceGroupName: string,
    name: string,
    slot: string,
    instanceId: string,
    nextLink: string,
    options?: WebAppsListInstanceProcessesSlotNextOptionalParams
  ): Promise<WebAppsListInstanceProcessesSlotNextResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, slot, instanceId, nextLink, options },
      listInstanceProcessesSlotNextOperationSpec
    );
  }

  /**
   * ListInstanceProcessModulesSlotNext
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Site name.
   * @param processId PID.
   * @param slot Name of the deployment slot. If a slot is not specified, the API returns deployments for
   *             the production slot.
   * @param instanceId ID of a specific scaled-out instance. This is the value of the name property in
   *                   the JSON response from "GET api/sites/{siteName}/instances".
   * @param nextLink The nextLink from the previous successful call to the ListInstanceProcessModulesSlot
   *                 method.
   * @param options The options parameters.
   */
  private _listInstanceProcessModulesSlotNext(
    resourceGroupName: string,
    name: string,
    processId: string,
    slot: string,
    instanceId: string,
    nextLink: string,
    options?: WebAppsListInstanceProcessModulesSlotNextOptionalParams
  ): Promise<WebAppsListInstanceProcessModulesSlotNextResponse> {
    return this.client.sendOperationRequest(
      {
        resourceGroupName,
        name,
        processId,
        slot,
        instanceId,
        nextLink,
        options
      },
      listInstanceProcessModulesSlotNextOperationSpec
    );
  }

  /**
   * ListInstanceProcessThreadsSlotNext
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Site name.
   * @param processId PID.
   * @param slot Name of the deployment slot. If a slot is not specified, the API returns deployments for
   *             the production slot.
   * @param instanceId ID of a specific scaled-out instance. This is the value of the name property in
   *                   the JSON response from "GET api/sites/{siteName}/instances".
   * @param nextLink The nextLink from the previous successful call to the ListInstanceProcessThreadsSlot
   *                 method.
   * @param options The options parameters.
   */
  private _listInstanceProcessThreadsSlotNext(
    resourceGroupName: string,
    name: string,
    processId: string,
    slot: string,
    instanceId: string,
    nextLink: string,
    options?: WebAppsListInstanceProcessThreadsSlotNextOptionalParams
  ): Promise<WebAppsListInstanceProcessThreadsSlotNextResponse> {
    return this.client.sendOperationRequest(
      {
        resourceGroupName,
        name,
        processId,
        slot,
        instanceId,
        nextLink,
        options
      },
      listInstanceProcessThreadsSlotNextOperationSpec
    );
  }

  /**
   * ListSiteBackupsSlotNext
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the app.
   * @param slot Name of the deployment slot. If a slot is not specified, the API will get backups of the
   *             production slot.
   * @param nextLink The nextLink from the previous successful call to the ListSiteBackupsSlot method.
   * @param options The options parameters.
   */
  private _listSiteBackupsSlotNext(
    resourceGroupName: string,
    name: string,
    slot: string,
    nextLink: string,
    options?: WebAppsListSiteBackupsSlotNextOptionalParams
  ): Promise<WebAppsListSiteBackupsSlotNextResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, slot, nextLink, options },
      listSiteBackupsSlotNextOperationSpec
    );
  }

  /**
   * ListPerfMonCountersSlotNext
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of web app.
   * @param slot Name of web app slot. If not specified then will default to production slot.
   * @param nextLink The nextLink from the previous successful call to the ListPerfMonCountersSlot
   *                 method.
   * @param options The options parameters.
   */
  private _listPerfMonCountersSlotNext(
    resourceGroupName: string,
    name: string,
    slot: string,
    nextLink: string,
    options?: WebAppsListPerfMonCountersSlotNextOptionalParams
  ): Promise<WebAppsListPerfMonCountersSlotNextResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, slot, nextLink, options },
      listPerfMonCountersSlotNextOperationSpec
    );
  }

  /**
   * GetPrivateEndpointConnectionListSlotNext
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the site.
   * @param slot Name of the site deployment slot.
   * @param nextLink The nextLink from the previous successful call to the
   *                 GetPrivateEndpointConnectionListSlot method.
   * @param options The options parameters.
   */
  private _getPrivateEndpointConnectionListSlotNext(
    resourceGroupName: string,
    name: string,
    slot: string,
    nextLink: string,
    options?: WebAppsGetPrivateEndpointConnectionListSlotNextOptionalParams
  ): Promise<WebAppsGetPrivateEndpointConnectionListSlotNextResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, slot, nextLink, options },
      getPrivateEndpointConnectionListSlotNextOperationSpec
    );
  }

  /**
   * ListProcessesSlotNext
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Site name.
   * @param slot Name of the deployment slot. If a slot is not specified, the API returns deployments for
   *             the production slot.
   * @param nextLink The nextLink from the previous successful call to the ListProcessesSlot method.
   * @param options The options parameters.
   */
  private _listProcessesSlotNext(
    resourceGroupName: string,
    name: string,
    slot: string,
    nextLink: string,
    options?: WebAppsListProcessesSlotNextOptionalParams
  ): Promise<WebAppsListProcessesSlotNextResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, slot, nextLink, options },
      listProcessesSlotNextOperationSpec
    );
  }

  /**
   * ListProcessModulesSlotNext
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Site name.
   * @param processId PID.
   * @param slot Name of the deployment slot. If a slot is not specified, the API returns deployments for
   *             the production slot.
   * @param nextLink The nextLink from the previous successful call to the ListProcessModulesSlot method.
   * @param options The options parameters.
   */
  private _listProcessModulesSlotNext(
    resourceGroupName: string,
    name: string,
    processId: string,
    slot: string,
    nextLink: string,
    options?: WebAppsListProcessModulesSlotNextOptionalParams
  ): Promise<WebAppsListProcessModulesSlotNextResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, processId, slot, nextLink, options },
      listProcessModulesSlotNextOperationSpec
    );
  }

  /**
   * ListProcessThreadsSlotNext
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Site name.
   * @param processId PID.
   * @param slot Name of the deployment slot. If a slot is not specified, the API returns deployments for
   *             the production slot.
   * @param nextLink The nextLink from the previous successful call to the ListProcessThreadsSlot method.
   * @param options The options parameters.
   */
  private _listProcessThreadsSlotNext(
    resourceGroupName: string,
    name: string,
    processId: string,
    slot: string,
    nextLink: string,
    options?: WebAppsListProcessThreadsSlotNextOptionalParams
  ): Promise<WebAppsListProcessThreadsSlotNextResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, processId, slot, nextLink, options },
      listProcessThreadsSlotNextOperationSpec
    );
  }

  /**
   * ListPublicCertificatesSlotNext
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the app.
   * @param slot Name of the deployment slot. If a slot is not specified, the API gets hostname bindings
   *             for the production slot.
   * @param nextLink The nextLink from the previous successful call to the ListPublicCertificatesSlot
   *                 method.
   * @param options The options parameters.
   */
  private _listPublicCertificatesSlotNext(
    resourceGroupName: string,
    name: string,
    slot: string,
    nextLink: string,
    options?: WebAppsListPublicCertificatesSlotNextOptionalParams
  ): Promise<WebAppsListPublicCertificatesSlotNextResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, slot, nextLink, options },
      listPublicCertificatesSlotNextOperationSpec
    );
  }

  /**
   * ListSiteExtensionsSlotNext
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Site name.
   * @param slot Name of the deployment slot. If a slot is not specified, the API uses the production
   *             slot.
   * @param nextLink The nextLink from the previous successful call to the ListSiteExtensionsSlot method.
   * @param options The options parameters.
   */
  private _listSiteExtensionsSlotNext(
    resourceGroupName: string,
    name: string,
    slot: string,
    nextLink: string,
    options?: WebAppsListSiteExtensionsSlotNextOptionalParams
  ): Promise<WebAppsListSiteExtensionsSlotNextResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, slot, nextLink, options },
      listSiteExtensionsSlotNextOperationSpec
    );
  }

  /**
   * ListSlotDifferencesSlotNext
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the app.
   * @param slot Name of the source slot. If a slot is not specified, the production slot is used as the
   *             source slot.
   * @param slotSwapEntity JSON object that contains the target slot name. See example.
   * @param nextLink The nextLink from the previous successful call to the ListSlotDifferencesSlot
   *                 method.
   * @param options The options parameters.
   */
  private _listSlotDifferencesSlotNext(
    resourceGroupName: string,
    name: string,
    slot: string,
    slotSwapEntity: CsmSlotEntity,
    nextLink: string,
    options?: WebAppsListSlotDifferencesSlotNextOptionalParams
  ): Promise<WebAppsListSlotDifferencesSlotNextResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, slot, slotSwapEntity, nextLink, options },
      listSlotDifferencesSlotNextOperationSpec
    );
  }

  /**
   * ListSnapshotsSlotNext
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Website Name.
   * @param slot Website Slot.
   * @param nextLink The nextLink from the previous successful call to the ListSnapshotsSlot method.
   * @param options The options parameters.
   */
  private _listSnapshotsSlotNext(
    resourceGroupName: string,
    name: string,
    slot: string,
    nextLink: string,
    options?: WebAppsListSnapshotsSlotNextOptionalParams
  ): Promise<WebAppsListSnapshotsSlotNextResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, slot, nextLink, options },
      listSnapshotsSlotNextOperationSpec
    );
  }

  /**
   * ListSnapshotsFromDRSecondarySlotNext
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Website Name.
   * @param slot Website Slot.
   * @param nextLink The nextLink from the previous successful call to the
   *                 ListSnapshotsFromDRSecondarySlot method.
   * @param options The options parameters.
   */
  private _listSnapshotsFromDRSecondarySlotNext(
    resourceGroupName: string,
    name: string,
    slot: string,
    nextLink: string,
    options?: WebAppsListSnapshotsFromDRSecondarySlotNextOptionalParams
  ): Promise<WebAppsListSnapshotsFromDRSecondarySlotNextResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, slot, nextLink, options },
      listSnapshotsFromDRSecondarySlotNextOperationSpec
    );
  }

  /**
   * ListTriggeredWebJobsSlotNext
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Site name.
   * @param slot Name of the deployment slot. If a slot is not specified, the API deletes a deployment
   *             for the production slot.
   * @param nextLink The nextLink from the previous successful call to the ListTriggeredWebJobsSlot
   *                 method.
   * @param options The options parameters.
   */
  private _listTriggeredWebJobsSlotNext(
    resourceGroupName: string,
    name: string,
    slot: string,
    nextLink: string,
    options?: WebAppsListTriggeredWebJobsSlotNextOptionalParams
  ): Promise<WebAppsListTriggeredWebJobsSlotNextResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, slot, nextLink, options },
      listTriggeredWebJobsSlotNextOperationSpec
    );
  }

  /**
   * ListTriggeredWebJobHistorySlotNext
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Site name.
   * @param webJobName Name of Web Job.
   * @param slot Name of the deployment slot. If a slot is not specified, the API uses the production
   *             slot.
   * @param nextLink The nextLink from the previous successful call to the ListTriggeredWebJobHistorySlot
   *                 method.
   * @param options The options parameters.
   */
  private _listTriggeredWebJobHistorySlotNext(
    resourceGroupName: string,
    name: string,
    webJobName: string,
    slot: string,
    nextLink: string,
    options?: WebAppsListTriggeredWebJobHistorySlotNextOptionalParams
  ): Promise<WebAppsListTriggeredWebJobHistorySlotNextResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, webJobName, slot, nextLink, options },
      listTriggeredWebJobHistorySlotNextOperationSpec
    );
  }

  /**
   * ListUsagesSlotNext
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the app.
   * @param slot Name of the deployment slot. If a slot is not specified, the API will get quota
   *             information of the production slot.
   * @param nextLink The nextLink from the previous successful call to the ListUsagesSlot method.
   * @param options The options parameters.
   */
  private _listUsagesSlotNext(
    resourceGroupName: string,
    name: string,
    slot: string,
    nextLink: string,
    options?: WebAppsListUsagesSlotNextOptionalParams
  ): Promise<WebAppsListUsagesSlotNextResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, slot, nextLink, options },
      listUsagesSlotNextOperationSpec
    );
  }

  /**
   * ListWebJobsSlotNext
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Site name.
   * @param slot Name of the deployment slot. If a slot is not specified, the API returns deployments for
   *             the production slot.
   * @param nextLink The nextLink from the previous successful call to the ListWebJobsSlot method.
   * @param options The options parameters.
   */
  private _listWebJobsSlotNext(
    resourceGroupName: string,
    name: string,
    slot: string,
    nextLink: string,
    options?: WebAppsListWebJobsSlotNextOptionalParams
  ): Promise<WebAppsListWebJobsSlotNextResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, slot, nextLink, options },
      listWebJobsSlotNextOperationSpec
    );
  }

  /**
   * ListSlotDifferencesFromProductionNext
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the app.
   * @param slotSwapEntity JSON object that contains the target slot name. See example.
   * @param nextLink The nextLink from the previous successful call to the
   *                 ListSlotDifferencesFromProduction method.
   * @param options The options parameters.
   */
  private _listSlotDifferencesFromProductionNext(
    resourceGroupName: string,
    name: string,
    slotSwapEntity: CsmSlotEntity,
    nextLink: string,
    options?: WebAppsListSlotDifferencesFromProductionNextOptionalParams
  ): Promise<WebAppsListSlotDifferencesFromProductionNextResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, slotSwapEntity, nextLink, options },
      listSlotDifferencesFromProductionNextOperationSpec
    );
  }

  /**
   * ListSnapshotsNext
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Website Name.
   * @param nextLink The nextLink from the previous successful call to the ListSnapshots method.
   * @param options The options parameters.
   */
  private _listSnapshotsNext(
    resourceGroupName: string,
    name: string,
    nextLink: string,
    options?: WebAppsListSnapshotsNextOptionalParams
  ): Promise<WebAppsListSnapshotsNextResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, nextLink, options },
      listSnapshotsNextOperationSpec
    );
  }

  /**
   * ListSnapshotsFromDRSecondaryNext
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Website Name.
   * @param nextLink The nextLink from the previous successful call to the ListSnapshotsFromDRSecondary
   *                 method.
   * @param options The options parameters.
   */
  private _listSnapshotsFromDRSecondaryNext(
    resourceGroupName: string,
    name: string,
    nextLink: string,
    options?: WebAppsListSnapshotsFromDRSecondaryNextOptionalParams
  ): Promise<WebAppsListSnapshotsFromDRSecondaryNextResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, nextLink, options },
      listSnapshotsFromDRSecondaryNextOperationSpec
    );
  }

  /**
   * ListTriggeredWebJobsNext
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Site name.
   * @param nextLink The nextLink from the previous successful call to the ListTriggeredWebJobs method.
   * @param options The options parameters.
   */
  private _listTriggeredWebJobsNext(
    resourceGroupName: string,
    name: string,
    nextLink: string,
    options?: WebAppsListTriggeredWebJobsNextOptionalParams
  ): Promise<WebAppsListTriggeredWebJobsNextResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, nextLink, options },
      listTriggeredWebJobsNextOperationSpec
    );
  }

  /**
   * ListTriggeredWebJobHistoryNext
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Site name.
   * @param webJobName Name of Web Job.
   * @param nextLink The nextLink from the previous successful call to the ListTriggeredWebJobHistory
   *                 method.
   * @param options The options parameters.
   */
  private _listTriggeredWebJobHistoryNext(
    resourceGroupName: string,
    name: string,
    webJobName: string,
    nextLink: string,
    options?: WebAppsListTriggeredWebJobHistoryNextOptionalParams
  ): Promise<WebAppsListTriggeredWebJobHistoryNextResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, webJobName, nextLink, options },
      listTriggeredWebJobHistoryNextOperationSpec
    );
  }

  /**
   * ListUsagesNext
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Name of the app.
   * @param nextLink The nextLink from the previous successful call to the ListUsages method.
   * @param options The options parameters.
   */
  private _listUsagesNext(
    resourceGroupName: string,
    name: string,
    nextLink: string,
    options?: WebAppsListUsagesNextOptionalParams
  ): Promise<WebAppsListUsagesNextResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, nextLink, options },
      listUsagesNextOperationSpec
    );
  }

  /**
   * ListWebJobsNext
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Site name.
   * @param nextLink The nextLink from the previous successful call to the ListWebJobs method.
   * @param options The options parameters.
   */
  private _listWebJobsNext(
    resourceGroupName: string,
    name: string,
    nextLink: string,
    options?: WebAppsListWebJobsNextOptionalParams
  ): Promise<WebAppsListWebJobsNextResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, nextLink, options },
      listWebJobsNextOperationSpec
    );
  }

  /**
   * ListInstanceWorkflowsSlotNext
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Site name.
   * @param slot Name of the deployment slot.
   * @param nextLink The nextLink from the previous successful call to the ListInstanceWorkflowsSlot
   *                 method.
   * @param options The options parameters.
   */
  private _listInstanceWorkflowsSlotNext(
    resourceGroupName: string,
    name: string,
    slot: string,
    nextLink: string,
    options?: WebAppsListInstanceWorkflowsSlotNextOptionalParams
  ): Promise<WebAppsListInstanceWorkflowsSlotNextResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, slot, nextLink, options },
      listInstanceWorkflowsSlotNextOperationSpec
    );
  }

  /**
   * ListWorkflowsNext
   * @param resourceGroupName Name of the resource group to which the resource belongs.
   * @param name Site name.
   * @param nextLink The nextLink from the previous successful call to the ListWorkflows method.
   * @param options The options parameters.
   */
  private _listWorkflowsNext(
    resourceGroupName: string,
    name: string,
    nextLink: string,
    options?: WebAppsListWorkflowsNextOptionalParams
  ): Promise<WebAppsListWorkflowsNextResponse> {
    return this.client.sendOperationRequest(
      { resourceGroupName, name, nextLink, options },
      listWorkflowsNextOperationSpec
    );
  }
}
// Operation Specifications
const serializer = coreClient.createSerializer(Mappers, /* isXml */ false);

const listOperationSpec: coreClient.OperationSpec = {
  path: "/subscriptions/{subscriptionId}/providers/Microsoft.Web/sites",
  httpMethod: "GET",
  responses: {
    200: {
      bodyMapper: Mappers.WebAppCollection
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  queryParameters: [Parameters.apiVersion],
  urlParameters: [Parameters.$host, Parameters.subscriptionId],
  headerParameters: [Parameters.accept],
  serializer
};
const listByResourceGroupOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites",
  httpMethod: "GET",
  responses: {
    200: {
      bodyMapper: Mappers.WebAppCollection
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  queryParameters: [Parameters.apiVersion, Parameters.includeSlots],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const getOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}",
  httpMethod: "GET",
  responses: {
    200: {
      bodyMapper: Mappers.Site
    },
    404: {
      isError: true
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const createOrUpdateOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}",
  httpMethod: "PUT",
  responses: {
    200: {
      bodyMapper: Mappers.Site
    },
    201: {
      bodyMapper: Mappers.Site
    },
    202: {
      bodyMapper: Mappers.Site
    },
    204: {
      bodyMapper: Mappers.Site
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  requestBody: Parameters.siteEnvelope,
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name
  ],
  headerParameters: [Parameters.accept, Parameters.contentType],
  mediaType: "json",
  serializer
};
const deleteOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}",
  httpMethod: "DELETE",
  responses: {
    200: {},
    204: {},
    404: {
      isError: true
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  queryParameters: [
    Parameters.apiVersion,
    Parameters.deleteMetrics,
    Parameters.deleteEmptyServerFarm
  ],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const updateOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}",
  httpMethod: "PATCH",
  responses: {
    200: {
      bodyMapper: Mappers.Site
    },
    202: {
      bodyMapper: Mappers.Site
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  requestBody: Parameters.siteEnvelope1,
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name
  ],
  headerParameters: [Parameters.accept, Parameters.contentType],
  mediaType: "json",
  serializer
};
const analyzeCustomHostnameOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/analyzeCustomHostname",
  httpMethod: "GET",
  responses: {
    200: {
      bodyMapper: Mappers.CustomHostnameAnalysisResult
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  queryParameters: [Parameters.apiVersion, Parameters.hostName],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const applySlotConfigToProductionOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/applySlotConfig",
  httpMethod: "POST",
  responses: {
    200: {},
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  requestBody: Parameters.slotSwapEntity,
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name
  ],
  headerParameters: [Parameters.accept, Parameters.contentType],
  mediaType: "json",
  serializer
};
const backupOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/backup",
  httpMethod: "POST",
  responses: {
    200: {
      bodyMapper: Mappers.BackupItem
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  requestBody: Parameters.request1,
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name
  ],
  headerParameters: [Parameters.accept, Parameters.contentType],
  mediaType: "json",
  serializer
};
const listBackupsOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/backups",
  httpMethod: "GET",
  responses: {
    200: {
      bodyMapper: Mappers.BackupItemCollection
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const getBackupStatusOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/backups/{backupId}",
  httpMethod: "GET",
  responses: {
    200: {
      bodyMapper: Mappers.BackupItem
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.backupId
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const deleteBackupOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/backups/{backupId}",
  httpMethod: "DELETE",
  responses: {
    200: {},
    404: {
      isError: true
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.backupId
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const listBackupStatusSecretsOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/backups/{backupId}/list",
  httpMethod: "POST",
  responses: {
    200: {
      bodyMapper: Mappers.BackupItem
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  requestBody: Parameters.request1,
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.backupId
  ],
  headerParameters: [Parameters.accept, Parameters.contentType],
  mediaType: "json",
  serializer
};
const restoreOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/backups/{backupId}/restore",
  httpMethod: "POST",
  responses: {
    200: {},
    201: {},
    202: {},
    204: {},
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  requestBody: Parameters.request2,
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.backupId
  ],
  headerParameters: [Parameters.accept, Parameters.contentType],
  mediaType: "json",
  serializer
};
const listBasicPublishingCredentialsPoliciesOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/basicPublishingCredentialsPolicies",
  httpMethod: "GET",
  responses: {
    200: {
      bodyMapper: Mappers.PublishingCredentialsPoliciesCollection
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const getFtpAllowedOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/basicPublishingCredentialsPolicies/ftp",
  httpMethod: "GET",
  responses: {
    200: {
      bodyMapper: Mappers.CsmPublishingCredentialsPoliciesEntity
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const updateFtpAllowedOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/basicPublishingCredentialsPolicies/ftp",
  httpMethod: "PUT",
  responses: {
    200: {
      bodyMapper: Mappers.CsmPublishingCredentialsPoliciesEntity
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  requestBody: Parameters.csmPublishingAccessPoliciesEntity,
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name
  ],
  headerParameters: [Parameters.accept, Parameters.contentType],
  mediaType: "json",
  serializer
};
const getScmAllowedOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/basicPublishingCredentialsPolicies/scm",
  httpMethod: "GET",
  responses: {
    200: {
      bodyMapper: Mappers.CsmPublishingCredentialsPoliciesEntity
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const updateScmAllowedOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/basicPublishingCredentialsPolicies/scm",
  httpMethod: "PUT",
  responses: {
    200: {
      bodyMapper: Mappers.CsmPublishingCredentialsPoliciesEntity
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  requestBody: Parameters.csmPublishingAccessPoliciesEntity,
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name
  ],
  headerParameters: [Parameters.accept, Parameters.contentType],
  mediaType: "json",
  serializer
};
const listConfigurationsOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/config",
  httpMethod: "GET",
  responses: {
    200: {
      bodyMapper: Mappers.SiteConfigResourceCollection
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const updateApplicationSettingsOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/config/appsettings",
  httpMethod: "PUT",
  responses: {
    200: {
      bodyMapper: Mappers.StringDictionary
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  requestBody: Parameters.appSettings,
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name
  ],
  headerParameters: [Parameters.accept, Parameters.contentType],
  mediaType: "json",
  serializer
};
const listApplicationSettingsOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/config/appsettings/list",
  httpMethod: "POST",
  responses: {
    200: {
      bodyMapper: Mappers.StringDictionary
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const updateAuthSettingsOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/config/authsettings",
  httpMethod: "PUT",
  responses: {
    200: {
      bodyMapper: Mappers.SiteAuthSettings
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  requestBody: Parameters.siteAuthSettings,
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name
  ],
  headerParameters: [Parameters.accept, Parameters.contentType],
  mediaType: "json",
  serializer
};
const getAuthSettingsOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/config/authsettings/list",
  httpMethod: "POST",
  responses: {
    200: {
      bodyMapper: Mappers.SiteAuthSettings
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const getAuthSettingsV2WithoutSecretsOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/config/authsettingsV2",
  httpMethod: "GET",
  responses: {
    200: {
      bodyMapper: Mappers.SiteAuthSettingsV2
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const updateAuthSettingsV2OperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/config/authsettingsV2",
  httpMethod: "PUT",
  responses: {
    200: {
      bodyMapper: Mappers.SiteAuthSettingsV2
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  requestBody: Parameters.siteAuthSettingsV2,
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name
  ],
  headerParameters: [Parameters.accept, Parameters.contentType],
  mediaType: "json",
  serializer
};
const getAuthSettingsV2OperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/config/authsettingsV2/list",
  httpMethod: "GET",
  responses: {
    200: {
      bodyMapper: Mappers.SiteAuthSettingsV2
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const updateAzureStorageAccountsOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/config/azurestorageaccounts",
  httpMethod: "PUT",
  responses: {
    200: {
      bodyMapper: Mappers.AzureStoragePropertyDictionaryResource
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  requestBody: Parameters.azureStorageAccounts,
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name
  ],
  headerParameters: [Parameters.accept, Parameters.contentType],
  mediaType: "json",
  serializer
};
const listAzureStorageAccountsOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/config/azurestorageaccounts/list",
  httpMethod: "POST",
  responses: {
    200: {
      bodyMapper: Mappers.AzureStoragePropertyDictionaryResource
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const updateBackupConfigurationOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/config/backup",
  httpMethod: "PUT",
  responses: {
    200: {
      bodyMapper: Mappers.BackupRequest
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  requestBody: Parameters.request1,
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name
  ],
  headerParameters: [Parameters.accept, Parameters.contentType],
  mediaType: "json",
  serializer
};
const deleteBackupConfigurationOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/config/backup",
  httpMethod: "DELETE",
  responses: {
    200: {},
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const getBackupConfigurationOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/config/backup/list",
  httpMethod: "POST",
  responses: {
    200: {
      bodyMapper: Mappers.BackupRequest
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const getAppSettingsKeyVaultReferencesOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/config/configreferences/appsettings",
  httpMethod: "GET",
  responses: {
    200: {
      bodyMapper: Mappers.ApiKVReferenceCollection
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const getAppSettingKeyVaultReferenceOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/config/configreferences/appsettings/{appSettingKey}",
  httpMethod: "GET",
  responses: {
    200: {
      bodyMapper: Mappers.ApiKVReference
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.appSettingKey
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const getSiteConnectionStringKeyVaultReferencesOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/config/configreferences/connectionstrings",
  httpMethod: "GET",
  responses: {
    200: {
      bodyMapper: Mappers.ApiKVReferenceCollection
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const getSiteConnectionStringKeyVaultReferenceOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/config/configreferences/connectionstrings/{connectionStringKey}",
  httpMethod: "GET",
  responses: {
    200: {
      bodyMapper: Mappers.ApiKVReference
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.connectionStringKey
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const updateConnectionStringsOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/config/connectionstrings",
  httpMethod: "PUT",
  responses: {
    200: {
      bodyMapper: Mappers.ConnectionStringDictionary
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  requestBody: Parameters.connectionStrings,
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name
  ],
  headerParameters: [Parameters.accept, Parameters.contentType],
  mediaType: "json",
  serializer
};
const listConnectionStringsOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/config/connectionstrings/list",
  httpMethod: "POST",
  responses: {
    200: {
      bodyMapper: Mappers.ConnectionStringDictionary
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const getDiagnosticLogsConfigurationOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/config/logs",
  httpMethod: "GET",
  responses: {
    200: {
      bodyMapper: Mappers.SiteLogsConfig
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const updateDiagnosticLogsConfigOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/config/logs",
  httpMethod: "PUT",
  responses: {
    200: {
      bodyMapper: Mappers.SiteLogsConfig
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  requestBody: Parameters.siteLogsConfig,
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name
  ],
  headerParameters: [Parameters.accept, Parameters.contentType],
  mediaType: "json",
  serializer
};
const updateMetadataOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/config/metadata",
  httpMethod: "PUT",
  responses: {
    200: {
      bodyMapper: Mappers.StringDictionary
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  requestBody: Parameters.metadata,
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name
  ],
  headerParameters: [Parameters.accept, Parameters.contentType],
  mediaType: "json",
  serializer
};
const listMetadataOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/config/metadata/list",
  httpMethod: "POST",
  responses: {
    200: {
      bodyMapper: Mappers.StringDictionary
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const listPublishingCredentialsOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/config/publishingcredentials/list",
  httpMethod: "POST",
  responses: {
    200: {
      bodyMapper: Mappers.User
    },
    201: {
      bodyMapper: Mappers.User
    },
    202: {
      bodyMapper: Mappers.User
    },
    204: {
      bodyMapper: Mappers.User
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const updateSitePushSettingsOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/config/pushsettings",
  httpMethod: "PUT",
  responses: {
    200: {
      bodyMapper: Mappers.PushSettings
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  requestBody: Parameters.pushSettings,
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name
  ],
  headerParameters: [Parameters.accept, Parameters.contentType],
  mediaType: "json",
  serializer
};
const listSitePushSettingsOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/config/pushsettings/list",
  httpMethod: "POST",
  responses: {
    200: {
      bodyMapper: Mappers.PushSettings
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const listSlotConfigurationNamesOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/config/slotConfigNames",
  httpMethod: "GET",
  responses: {
    200: {
      bodyMapper: Mappers.SlotConfigNamesResource
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const updateSlotConfigurationNamesOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/config/slotConfigNames",
  httpMethod: "PUT",
  responses: {
    200: {
      bodyMapper: Mappers.SlotConfigNamesResource
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  requestBody: Parameters.slotConfigNames,
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name
  ],
  headerParameters: [Parameters.accept, Parameters.contentType],
  mediaType: "json",
  serializer
};
const getConfigurationOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/config/web",
  httpMethod: "GET",
  responses: {
    200: {
      bodyMapper: Mappers.SiteConfigResource
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const createOrUpdateConfigurationOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/config/web",
  httpMethod: "PUT",
  responses: {
    200: {
      bodyMapper: Mappers.SiteConfigResource
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  requestBody: Parameters.siteConfig,
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name
  ],
  headerParameters: [Parameters.accept, Parameters.contentType],
  mediaType: "json",
  serializer
};
const updateConfigurationOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/config/web",
  httpMethod: "PATCH",
  responses: {
    200: {
      bodyMapper: Mappers.SiteConfigResource
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  requestBody: Parameters.siteConfig,
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name
  ],
  headerParameters: [Parameters.accept, Parameters.contentType],
  mediaType: "json",
  serializer
};
const listConfigurationSnapshotInfoOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/config/web/snapshots",
  httpMethod: "GET",
  responses: {
    200: {
      bodyMapper: Mappers.SiteConfigurationSnapshotInfoCollection
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const getConfigurationSnapshotOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/config/web/snapshots/{snapshotId}",
  httpMethod: "GET",
  responses: {
    200: {
      bodyMapper: Mappers.SiteConfigResource
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.snapshotId
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const recoverSiteConfigurationSnapshotOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/config/web/snapshots/{snapshotId}/recover",
  httpMethod: "POST",
  responses: {
    204: {},
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.snapshotId
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const getWebSiteContainerLogsOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/containerlogs",
  httpMethod: "POST",
  responses: {
    200: {
      bodyMapper: { type: { name: "Stream" }, serializedName: "parsedResponse" }
    },
    204: {},
    default: {}
  },
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name
  ],
  headerParameters: [Parameters.accept1],
  serializer
};
const getContainerLogsZipOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/containerlogs/zip/download",
  httpMethod: "POST",
  responses: {
    200: {
      bodyMapper: { type: { name: "Stream" }, serializedName: "parsedResponse" }
    },
    204: {},
    default: {}
  },
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name
  ],
  headerParameters: [Parameters.accept2],
  serializer
};
const listContinuousWebJobsOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/continuouswebjobs",
  httpMethod: "GET",
  responses: {
    200: {
      bodyMapper: Mappers.ContinuousWebJobCollection
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const getContinuousWebJobOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/continuouswebjobs/{webJobName}",
  httpMethod: "GET",
  responses: {
    200: {
      bodyMapper: Mappers.ContinuousWebJob
    },
    404: {
      isError: true
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.webJobName
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const deleteContinuousWebJobOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/continuouswebjobs/{webJobName}",
  httpMethod: "DELETE",
  responses: {
    200: {},
    204: {},
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.webJobName
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const startContinuousWebJobOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/continuouswebjobs/{webJobName}/start",
  httpMethod: "POST",
  responses: {
    200: {},
    404: {
      isError: true
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.webJobName
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const stopContinuousWebJobOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/continuouswebjobs/{webJobName}/stop",
  httpMethod: "POST",
  responses: {
    200: {},
    404: {
      isError: true
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.webJobName
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const listProductionSiteDeploymentStatusesOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/deploymentStatus",
  httpMethod: "GET",
  responses: {
    200: {
      bodyMapper: Mappers.CsmDeploymentStatusCollection
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const getProductionSiteDeploymentStatusOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/deploymentStatus/{deploymentStatusId}",
  httpMethod: "GET",
  responses: {
    200: {
      bodyMapper: Mappers.CsmDeploymentStatus
    },
    201: {
      bodyMapper: Mappers.CsmDeploymentStatus
    },
    202: {
      bodyMapper: Mappers.CsmDeploymentStatus
    },
    204: {
      bodyMapper: Mappers.CsmDeploymentStatus
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.deploymentStatusId
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const listDeploymentsOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/deployments",
  httpMethod: "GET",
  responses: {
    200: {
      bodyMapper: Mappers.DeploymentCollection
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const getDeploymentOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/deployments/{id}",
  httpMethod: "GET",
  responses: {
    200: {
      bodyMapper: Mappers.Deployment
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.id
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const createDeploymentOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/deployments/{id}",
  httpMethod: "PUT",
  responses: {
    200: {
      bodyMapper: Mappers.Deployment
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  requestBody: Parameters.deployment,
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.id
  ],
  headerParameters: [Parameters.accept, Parameters.contentType],
  mediaType: "json",
  serializer
};
const deleteDeploymentOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/deployments/{id}",
  httpMethod: "DELETE",
  responses: {
    200: {},
    204: {},
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.id
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const listDeploymentLogOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/deployments/{id}/log",
  httpMethod: "GET",
  responses: {
    200: {
      bodyMapper: Mappers.Deployment
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.id
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const discoverBackupOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/discoverbackup",
  httpMethod: "POST",
  responses: {
    200: {
      bodyMapper: Mappers.RestoreRequest
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  requestBody: Parameters.request2,
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name
  ],
  headerParameters: [Parameters.accept, Parameters.contentType],
  mediaType: "json",
  serializer
};
const listDomainOwnershipIdentifiersOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/domainOwnershipIdentifiers",
  httpMethod: "GET",
  responses: {
    200: {
      bodyMapper: Mappers.IdentifierCollection
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const getDomainOwnershipIdentifierOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/domainOwnershipIdentifiers/{domainOwnershipIdentifierName}",
  httpMethod: "GET",
  responses: {
    200: {
      bodyMapper: Mappers.Identifier
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.domainOwnershipIdentifierName
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const createOrUpdateDomainOwnershipIdentifierOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/domainOwnershipIdentifiers/{domainOwnershipIdentifierName}",
  httpMethod: "PUT",
  responses: {
    200: {
      bodyMapper: Mappers.Identifier
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  requestBody: Parameters.domainOwnershipIdentifier1,
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.domainOwnershipIdentifierName
  ],
  headerParameters: [Parameters.accept, Parameters.contentType],
  mediaType: "json",
  serializer
};
const deleteDomainOwnershipIdentifierOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/domainOwnershipIdentifiers/{domainOwnershipIdentifierName}",
  httpMethod: "DELETE",
  responses: {
    200: {},
    204: {},
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.domainOwnershipIdentifierName
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const updateDomainOwnershipIdentifierOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/domainOwnershipIdentifiers/{domainOwnershipIdentifierName}",
  httpMethod: "PATCH",
  responses: {
    200: {
      bodyMapper: Mappers.Identifier
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  requestBody: Parameters.domainOwnershipIdentifier1,
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.domainOwnershipIdentifierName
  ],
  headerParameters: [Parameters.accept, Parameters.contentType],
  mediaType: "json",
  serializer
};
const getMSDeployStatusOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/extensions/MSDeploy",
  httpMethod: "GET",
  responses: {
    200: {
      bodyMapper: Mappers.MSDeployStatus
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const createMSDeployOperationOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/extensions/MSDeploy",
  httpMethod: "PUT",
  responses: {
    200: {
      bodyMapper: Mappers.MSDeployStatus
    },
    201: {
      bodyMapper: Mappers.MSDeployStatus
    },
    202: {
      bodyMapper: Mappers.MSDeployStatus
    },
    204: {
      bodyMapper: Mappers.MSDeployStatus
    },
    409: {
      isError: true
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  requestBody: Parameters.mSDeploy,
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name
  ],
  headerParameters: [Parameters.accept, Parameters.contentType],
  mediaType: "json",
  serializer
};
const getMSDeployLogOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/extensions/MSDeploy/log",
  httpMethod: "GET",
  responses: {
    200: {
      bodyMapper: Mappers.MSDeployLog
    },
    404: {
      isError: true
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const getOneDeployStatusOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/extensions/onedeploy",
  httpMethod: "GET",
  responses: {
    200: {
      bodyMapper: {
        type: { name: "Dictionary", value: { type: { name: "any" } } }
      }
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const createOneDeployOperationOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/extensions/onedeploy",
  httpMethod: "PUT",
  responses: {
    200: {
      bodyMapper: {
        type: { name: "Dictionary", value: { type: { name: "any" } } }
      }
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const listFunctionsOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/functions",
  httpMethod: "GET",
  responses: {
    200: {
      bodyMapper: Mappers.FunctionEnvelopeCollection
    },
    404: {
      isError: true
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const getFunctionsAdminTokenOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/functions/admin/token",
  httpMethod: "GET",
  responses: {
    200: {
      bodyMapper: { type: { name: "String" } }
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const getFunctionOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/functions/{functionName}",
  httpMethod: "GET",
  responses: {
    200: {
      bodyMapper: Mappers.FunctionEnvelope
    },
    404: {
      isError: true
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.functionName
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const createFunctionOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/functions/{functionName}",
  httpMethod: "PUT",
  responses: {
    200: {
      bodyMapper: Mappers.FunctionEnvelope
    },
    201: {
      bodyMapper: Mappers.FunctionEnvelope
    },
    202: {
      bodyMapper: Mappers.FunctionEnvelope
    },
    204: {
      bodyMapper: Mappers.FunctionEnvelope
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  requestBody: Parameters.functionEnvelope,
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.functionName
  ],
  headerParameters: [Parameters.accept, Parameters.contentType],
  mediaType: "json",
  serializer
};
const deleteFunctionOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/functions/{functionName}",
  httpMethod: "DELETE",
  responses: {
    204: {},
    404: {
      isError: true
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.functionName
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const createOrUpdateFunctionSecretOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/functions/{functionName}/keys/{keyName}",
  httpMethod: "PUT",
  responses: {
    200: {
      bodyMapper: Mappers.KeyInfo
    },
    201: {
      bodyMapper: Mappers.KeyInfo
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  requestBody: Parameters.key,
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.functionName,
    Parameters.keyName
  ],
  headerParameters: [Parameters.accept, Parameters.contentType],
  mediaType: "json",
  serializer
};
const deleteFunctionSecretOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/functions/{functionName}/keys/{keyName}",
  httpMethod: "DELETE",
  responses: {
    204: {},
    404: {
      isError: true
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.functionName,
    Parameters.keyName
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const listFunctionKeysOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/functions/{functionName}/listkeys",
  httpMethod: "POST",
  responses: {
    200: {
      bodyMapper: Mappers.StringDictionary
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.functionName
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const listFunctionSecretsOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/functions/{functionName}/listsecrets",
  httpMethod: "POST",
  responses: {
    200: {
      bodyMapper: Mappers.FunctionSecrets
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.functionName
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const listHostKeysOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/host/default/listkeys",
  httpMethod: "POST",
  responses: {
    200: {
      bodyMapper: Mappers.HostKeys
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const listSyncStatusOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/host/default/listsyncstatus",
  httpMethod: "POST",
  responses: {
    204: {},
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const syncFunctionsOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/host/default/sync",
  httpMethod: "POST",
  responses: {
    204: {},
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const createOrUpdateHostSecretOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/host/default/{keyType}/{keyName}",
  httpMethod: "PUT",
  responses: {
    200: {
      bodyMapper: Mappers.KeyInfo
    },
    201: {
      bodyMapper: Mappers.KeyInfo
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  requestBody: Parameters.key,
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.keyName,
    Parameters.keyType
  ],
  headerParameters: [Parameters.accept, Parameters.contentType],
  mediaType: "json",
  serializer
};
const deleteHostSecretOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/host/default/{keyType}/{keyName}",
  httpMethod: "DELETE",
  responses: {
    204: {},
    404: {
      isError: true
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.keyName,
    Parameters.keyType
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const listHostNameBindingsOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/hostNameBindings",
  httpMethod: "GET",
  responses: {
    200: {
      bodyMapper: Mappers.HostNameBindingCollection
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const getHostNameBindingOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/hostNameBindings/{hostName}",
  httpMethod: "GET",
  responses: {
    200: {
      bodyMapper: Mappers.HostNameBinding
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.hostName1
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const createOrUpdateHostNameBindingOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/hostNameBindings/{hostName}",
  httpMethod: "PUT",
  responses: {
    200: {
      bodyMapper: Mappers.HostNameBinding
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  requestBody: Parameters.hostNameBinding,
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.hostName1
  ],
  headerParameters: [Parameters.accept, Parameters.contentType],
  mediaType: "json",
  serializer
};
const deleteHostNameBindingOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/hostNameBindings/{hostName}",
  httpMethod: "DELETE",
  responses: {
    200: {},
    204: {},
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.hostName1
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const getHybridConnectionOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/hybridConnectionNamespaces/{namespaceName}/relays/{relayName}",
  httpMethod: "GET",
  responses: {
    200: {
      bodyMapper: Mappers.HybridConnection
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.namespaceName,
    Parameters.relayName
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const createOrUpdateHybridConnectionOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/hybridConnectionNamespaces/{namespaceName}/relays/{relayName}",
  httpMethod: "PUT",
  responses: {
    200: {
      bodyMapper: Mappers.HybridConnection
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  requestBody: Parameters.connectionEnvelope1,
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.namespaceName,
    Parameters.relayName
  ],
  headerParameters: [Parameters.accept, Parameters.contentType],
  mediaType: "json",
  serializer
};
const deleteHybridConnectionOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/hybridConnectionNamespaces/{namespaceName}/relays/{relayName}",
  httpMethod: "DELETE",
  responses: {
    200: {},
    404: {
      isError: true
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.namespaceName,
    Parameters.relayName
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const updateHybridConnectionOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/hybridConnectionNamespaces/{namespaceName}/relays/{relayName}",
  httpMethod: "PATCH",
  responses: {
    200: {
      bodyMapper: Mappers.HybridConnection
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  requestBody: Parameters.connectionEnvelope1,
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.namespaceName,
    Parameters.relayName
  ],
  headerParameters: [Parameters.accept, Parameters.contentType],
  mediaType: "json",
  serializer
};
const listHybridConnectionsOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/hybridConnectionRelays",
  httpMethod: "GET",
  responses: {
    200: {
      bodyMapper: Mappers.HybridConnection
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const listRelayServiceConnectionsOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/hybridconnection",
  httpMethod: "GET",
  responses: {
    200: {
      bodyMapper: Mappers.RelayServiceConnectionEntity
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const getRelayServiceConnectionOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/hybridconnection/{entityName}",
  httpMethod: "GET",
  responses: {
    200: {
      bodyMapper: Mappers.RelayServiceConnectionEntity
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.entityName
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const createOrUpdateRelayServiceConnectionOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/hybridconnection/{entityName}",
  httpMethod: "PUT",
  responses: {
    200: {
      bodyMapper: Mappers.RelayServiceConnectionEntity
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  requestBody: Parameters.connectionEnvelope2,
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.entityName
  ],
  headerParameters: [Parameters.accept, Parameters.contentType],
  mediaType: "json",
  serializer
};
const deleteRelayServiceConnectionOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/hybridconnection/{entityName}",
  httpMethod: "DELETE",
  responses: {
    200: {},
    404: {
      isError: true
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.entityName
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const updateRelayServiceConnectionOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/hybridconnection/{entityName}",
  httpMethod: "PATCH",
  responses: {
    200: {
      bodyMapper: Mappers.RelayServiceConnectionEntity
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  requestBody: Parameters.connectionEnvelope2,
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.entityName
  ],
  headerParameters: [Parameters.accept, Parameters.contentType],
  mediaType: "json",
  serializer
};
const listInstanceIdentifiersOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/instances",
  httpMethod: "GET",
  responses: {
    200: {
      bodyMapper: Mappers.WebAppInstanceStatusCollection
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const getInstanceInfoOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/instances/{instanceId}",
  httpMethod: "GET",
  responses: {
    200: {
      bodyMapper: Mappers.WebSiteInstanceStatus
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.instanceId
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const getInstanceMsDeployStatusOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/instances/{instanceId}/extensions/MSDeploy",
  httpMethod: "GET",
  responses: {
    200: {
      bodyMapper: Mappers.MSDeployStatus
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.instanceId
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const createInstanceMSDeployOperationOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/instances/{instanceId}/extensions/MSDeploy",
  httpMethod: "PUT",
  responses: {
    200: {
      bodyMapper: Mappers.MSDeployStatus
    },
    201: {
      bodyMapper: Mappers.MSDeployStatus
    },
    202: {
      bodyMapper: Mappers.MSDeployStatus
    },
    204: {
      bodyMapper: Mappers.MSDeployStatus
    },
    409: {
      isError: true
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  requestBody: Parameters.mSDeploy,
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.instanceId
  ],
  headerParameters: [Parameters.accept, Parameters.contentType],
  mediaType: "json",
  serializer
};
const getInstanceMSDeployLogOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/instances/{instanceId}/extensions/MSDeploy/log",
  httpMethod: "GET",
  responses: {
    200: {
      bodyMapper: Mappers.MSDeployLog
    },
    404: {
      isError: true
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.instanceId
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const listInstanceProcessesOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/instances/{instanceId}/processes",
  httpMethod: "GET",
  responses: {
    200: {
      bodyMapper: Mappers.ProcessInfoCollection
    },
    404: {
      isError: true
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.instanceId
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const getInstanceProcessOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/instances/{instanceId}/processes/{processId}",
  httpMethod: "GET",
  responses: {
    200: {
      bodyMapper: Mappers.ProcessInfo
    },
    404: {
      isError: true
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.instanceId,
    Parameters.processId
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const deleteInstanceProcessOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/instances/{instanceId}/processes/{processId}",
  httpMethod: "DELETE",
  responses: {
    204: {},
    404: {
      isError: true
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.instanceId,
    Parameters.processId
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const getInstanceProcessDumpOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/instances/{instanceId}/processes/{processId}/dump",
  httpMethod: "GET",
  responses: {
    200: {
      bodyMapper: { type: { name: "Stream" }, serializedName: "parsedResponse" }
    },
    404: {
      isError: true
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.instanceId,
    Parameters.processId
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const listInstanceProcessModulesOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/instances/{instanceId}/processes/{processId}/modules",
  httpMethod: "GET",
  responses: {
    200: {
      bodyMapper: Mappers.ProcessModuleInfoCollection
    },
    404: {
      isError: true
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.instanceId,
    Parameters.processId
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const getInstanceProcessModuleOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/instances/{instanceId}/processes/{processId}/modules/{baseAddress}",
  httpMethod: "GET",
  responses: {
    200: {
      bodyMapper: Mappers.ProcessModuleInfo
    },
    404: {
      isError: true
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.instanceId,
    Parameters.processId,
    Parameters.baseAddress
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const listInstanceProcessThreadsOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/instances/{instanceId}/processes/{processId}/threads",
  httpMethod: "GET",
  responses: {
    200: {
      bodyMapper: Mappers.ProcessThreadInfoCollection
    },
    404: {
      isError: true
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.instanceId,
    Parameters.processId
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const isCloneableOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/iscloneable",
  httpMethod: "POST",
  responses: {
    200: {
      bodyMapper: Mappers.SiteCloneability
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const listSiteBackupsOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/listbackups",
  httpMethod: "POST",
  responses: {
    200: {
      bodyMapper: Mappers.BackupItemCollection
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const listSyncFunctionTriggersOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/listsyncfunctiontriggerstatus",
  httpMethod: "POST",
  responses: {
    200: {
      bodyMapper: Mappers.FunctionSecrets
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const migrateStorageOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/migrate",
  httpMethod: "PUT",
  responses: {
    200: {
      bodyMapper: Mappers.StorageMigrationResponse
    },
    201: {
      bodyMapper: Mappers.StorageMigrationResponse
    },
    202: {
      bodyMapper: Mappers.StorageMigrationResponse
    },
    204: {
      bodyMapper: Mappers.StorageMigrationResponse
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  requestBody: Parameters.migrationOptions,
  queryParameters: [Parameters.apiVersion, Parameters.subscriptionName],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name
  ],
  headerParameters: [Parameters.accept, Parameters.contentType],
  mediaType: "json",
  serializer
};
const migrateMySqlOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/migratemysql",
  httpMethod: "POST",
  responses: {
    200: {
      bodyMapper: Mappers.Operation
    },
    201: {
      bodyMapper: Mappers.Operation
    },
    202: {
      bodyMapper: Mappers.Operation
    },
    204: {
      bodyMapper: Mappers.Operation
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  requestBody: Parameters.migrationRequestEnvelope,
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name
  ],
  headerParameters: [Parameters.accept, Parameters.contentType],
  mediaType: "json",
  serializer
};
const getMigrateMySqlStatusOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/migratemysql/status",
  httpMethod: "GET",
  responses: {
    200: {
      bodyMapper: Mappers.MigrateMySqlStatus
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const getSwiftVirtualNetworkConnectionOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/networkConfig/virtualNetwork",
  httpMethod: "GET",
  responses: {
    200: {
      bodyMapper: Mappers.SwiftVirtualNetwork
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const createOrUpdateSwiftVirtualNetworkConnectionWithCheckOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/networkConfig/virtualNetwork",
  httpMethod: "PUT",
  responses: {
    200: {
      bodyMapper: Mappers.SwiftVirtualNetwork
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  requestBody: Parameters.connectionEnvelope3,
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name
  ],
  headerParameters: [Parameters.accept, Parameters.contentType],
  mediaType: "json",
  serializer
};
const deleteSwiftVirtualNetworkOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/networkConfig/virtualNetwork",
  httpMethod: "DELETE",
  responses: {
    200: {},
    404: {
      isError: true
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const updateSwiftVirtualNetworkConnectionWithCheckOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/networkConfig/virtualNetwork",
  httpMethod: "PATCH",
  responses: {
    200: {
      bodyMapper: Mappers.SwiftVirtualNetwork
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  requestBody: Parameters.connectionEnvelope3,
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name
  ],
  headerParameters: [Parameters.accept, Parameters.contentType],
  mediaType: "json",
  serializer
};
const listNetworkFeaturesOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/networkFeatures/{view}",
  httpMethod: "GET",
  responses: {
    200: {
      bodyMapper: Mappers.NetworkFeatures
    },
    404: {
      isError: true
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.view
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const getNetworkTraceOperationOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/networkTrace/operationresults/{operationId}",
  httpMethod: "GET",
  responses: {
    200: {
      bodyMapper: {
        type: {
          name: "Sequence",
          element: { type: { name: "Composite", className: "NetworkTrace" } }
        }
      }
    },
    202: {
      bodyMapper: {
        type: {
          name: "Sequence",
          element: { type: { name: "Composite", className: "NetworkTrace" } }
        }
      }
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.operationId
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const startWebSiteNetworkTraceOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/networkTrace/start",
  httpMethod: "POST",
  responses: {
    200: {
      bodyMapper: { type: { name: "String" } }
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  queryParameters: [
    Parameters.apiVersion,
    Parameters.durationInSeconds,
    Parameters.maxFrameLength,
    Parameters.sasUrl
  ],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const startWebSiteNetworkTraceOperationOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/networkTrace/startOperation",
  httpMethod: "POST",
  responses: {
    200: {
      bodyMapper: {
        type: {
          name: "Sequence",
          element: { type: { name: "Composite", className: "NetworkTrace" } }
        }
      }
    },
    201: {
      bodyMapper: {
        type: {
          name: "Sequence",
          element: { type: { name: "Composite", className: "NetworkTrace" } }
        }
      }
    },
    202: {
      bodyMapper: {
        type: {
          name: "Sequence",
          element: { type: { name: "Composite", className: "NetworkTrace" } }
        }
      }
    },
    204: {
      bodyMapper: {
        type: {
          name: "Sequence",
          element: { type: { name: "Composite", className: "NetworkTrace" } }
        }
      }
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  queryParameters: [
    Parameters.apiVersion,
    Parameters.durationInSeconds,
    Parameters.maxFrameLength,
    Parameters.sasUrl
  ],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const stopWebSiteNetworkTraceOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/networkTrace/stop",
  httpMethod: "POST",
  responses: {
    200: {},
    204: {},
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const getNetworkTracesOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/networkTrace/{operationId}",
  httpMethod: "GET",
  responses: {
    200: {
      bodyMapper: {
        type: {
          name: "Sequence",
          element: { type: { name: "Composite", className: "NetworkTrace" } }
        }
      }
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.operationId
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const getNetworkTraceOperationV2OperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/networkTraces/current/operationresults/{operationId}",
  httpMethod: "GET",
  responses: {
    200: {
      bodyMapper: {
        type: {
          name: "Sequence",
          element: { type: { name: "Composite", className: "NetworkTrace" } }
        }
      }
    },
    202: {
      bodyMapper: {
        type: {
          name: "Sequence",
          element: { type: { name: "Composite", className: "NetworkTrace" } }
        }
      }
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.operationId
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const getNetworkTracesV2OperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/networkTraces/{operationId}",
  httpMethod: "GET",
  responses: {
    200: {
      bodyMapper: {
        type: {
          name: "Sequence",
          element: { type: { name: "Composite", className: "NetworkTrace" } }
        }
      }
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.operationId
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const generateNewSitePublishingPasswordOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/newpassword",
  httpMethod: "POST",
  responses: {
    200: {},
    204: {},
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const listPerfMonCountersOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/perfcounters",
  httpMethod: "GET",
  responses: {
    200: {
      bodyMapper: Mappers.PerfMonCounterCollection
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  queryParameters: [Parameters.apiVersion, Parameters.filter],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const getSitePhpErrorLogFlagOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/phplogging",
  httpMethod: "GET",
  responses: {
    200: {
      bodyMapper: Mappers.SitePhpErrorLogFlag
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const listPremierAddOnsOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/premieraddons",
  httpMethod: "GET",
  responses: {
    200: {
      bodyMapper: Mappers.PremierAddOn
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const getPremierAddOnOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/premieraddons/{premierAddOnName}",
  httpMethod: "GET",
  responses: {
    200: {
      bodyMapper: Mappers.PremierAddOn
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.premierAddOnName
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const addPremierAddOnOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/premieraddons/{premierAddOnName}",
  httpMethod: "PUT",
  responses: {
    200: {
      bodyMapper: Mappers.PremierAddOn
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  requestBody: Parameters.premierAddOn,
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.premierAddOnName
  ],
  headerParameters: [Parameters.accept, Parameters.contentType],
  mediaType: "json",
  serializer
};
const deletePremierAddOnOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/premieraddons/{premierAddOnName}",
  httpMethod: "DELETE",
  responses: {
    200: {},
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.premierAddOnName
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const updatePremierAddOnOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/premieraddons/{premierAddOnName}",
  httpMethod: "PATCH",
  responses: {
    200: {
      bodyMapper: Mappers.PremierAddOn
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  requestBody: Parameters.premierAddOn1,
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.premierAddOnName
  ],
  headerParameters: [Parameters.accept, Parameters.contentType],
  mediaType: "json",
  serializer
};
const getPrivateAccessOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/privateAccess/virtualNetworks",
  httpMethod: "GET",
  responses: {
    200: {
      bodyMapper: Mappers.PrivateAccess
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const putPrivateAccessVnetOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/privateAccess/virtualNetworks",
  httpMethod: "PUT",
  responses: {
    200: {
      bodyMapper: Mappers.PrivateAccess
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  requestBody: Parameters.access,
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name
  ],
  headerParameters: [Parameters.accept, Parameters.contentType],
  mediaType: "json",
  serializer
};
const getPrivateEndpointConnectionListOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/privateEndpointConnections",
  httpMethod: "GET",
  responses: {
    200: {
      bodyMapper: Mappers.PrivateEndpointConnectionCollection
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const getPrivateEndpointConnectionOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/privateEndpointConnections/{privateEndpointConnectionName}",
  httpMethod: "GET",
  responses: {
    200: {
      bodyMapper: Mappers.RemotePrivateEndpointConnectionARMResource
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.privateEndpointConnectionName
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const approveOrRejectPrivateEndpointConnectionOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/privateEndpointConnections/{privateEndpointConnectionName}",
  httpMethod: "PUT",
  responses: {
    200: {
      bodyMapper: Mappers.RemotePrivateEndpointConnectionARMResource
    },
    201: {
      bodyMapper: Mappers.RemotePrivateEndpointConnectionARMResource
    },
    202: {
      bodyMapper: Mappers.RemotePrivateEndpointConnectionARMResource
    },
    204: {
      bodyMapper: Mappers.RemotePrivateEndpointConnectionARMResource
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  requestBody: Parameters.privateEndpointWrapper,
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.privateEndpointConnectionName
  ],
  headerParameters: [Parameters.accept, Parameters.contentType],
  mediaType: "json",
  serializer
};
const deletePrivateEndpointConnectionOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/privateEndpointConnections/{privateEndpointConnectionName}",
  httpMethod: "DELETE",
  responses: {
    200: {
      bodyMapper: {
        type: { name: "Dictionary", value: { type: { name: "any" } } }
      }
    },
    201: {
      bodyMapper: {
        type: { name: "Dictionary", value: { type: { name: "any" } } }
      }
    },
    202: {
      bodyMapper: {
        type: { name: "Dictionary", value: { type: { name: "any" } } }
      }
    },
    204: {
      bodyMapper: {
        type: { name: "Dictionary", value: { type: { name: "any" } } }
      }
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.privateEndpointConnectionName
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const getPrivateLinkResourcesOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/privateLinkResources",
  httpMethod: "GET",
  responses: {
    200: {
      bodyMapper: Mappers.PrivateLinkResourcesWrapper
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const listProcessesOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/processes",
  httpMethod: "GET",
  responses: {
    200: {
      bodyMapper: Mappers.ProcessInfoCollection
    },
    404: {
      isError: true
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const getProcessOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/processes/{processId}",
  httpMethod: "GET",
  responses: {
    200: {
      bodyMapper: Mappers.ProcessInfo
    },
    404: {
      isError: true
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.processId
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const deleteProcessOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/processes/{processId}",
  httpMethod: "DELETE",
  responses: {
    204: {},
    404: {
      isError: true
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.processId
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const getProcessDumpOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/processes/{processId}/dump",
  httpMethod: "GET",
  responses: {
    200: {
      bodyMapper: { type: { name: "Stream" }, serializedName: "parsedResponse" }
    },
    404: {
      isError: true
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.processId
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const listProcessModulesOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/processes/{processId}/modules",
  httpMethod: "GET",
  responses: {
    200: {
      bodyMapper: Mappers.ProcessModuleInfoCollection
    },
    404: {
      isError: true
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.processId
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const getProcessModuleOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/processes/{processId}/modules/{baseAddress}",
  httpMethod: "GET",
  responses: {
    200: {
      bodyMapper: Mappers.ProcessModuleInfo
    },
    404: {
      isError: true
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.processId,
    Parameters.baseAddress
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const listProcessThreadsOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/processes/{processId}/threads",
  httpMethod: "GET",
  responses: {
    200: {
      bodyMapper: Mappers.ProcessThreadInfoCollection
    },
    404: {
      isError: true
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.processId
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const listPublicCertificatesOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/publicCertificates",
  httpMethod: "GET",
  responses: {
    200: {
      bodyMapper: Mappers.PublicCertificateCollection
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const getPublicCertificateOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/publicCertificates/{publicCertificateName}",
  httpMethod: "GET",
  responses: {
    200: {
      bodyMapper: Mappers.PublicCertificate
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.publicCertificateName
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const createOrUpdatePublicCertificateOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/publicCertificates/{publicCertificateName}",
  httpMethod: "PUT",
  responses: {
    200: {
      bodyMapper: Mappers.PublicCertificate
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  requestBody: Parameters.publicCertificate,
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.publicCertificateName
  ],
  headerParameters: [Parameters.accept, Parameters.contentType],
  mediaType: "json",
  serializer
};
const deletePublicCertificateOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/publicCertificates/{publicCertificateName}",
  httpMethod: "DELETE",
  responses: {
    200: {},
    204: {},
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.publicCertificateName
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const listPublishingProfileXmlWithSecretsOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/publishxml",
  httpMethod: "POST",
  responses: {
    200: {
      bodyMapper: { type: { name: "Stream" }, serializedName: "parsedResponse" }
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  requestBody: Parameters.publishingProfileOptions,
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name
  ],
  headerParameters: [Parameters.contentType, Parameters.accept3],
  mediaType: "json",
  serializer
};
const resetProductionSlotConfigOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/resetSlotConfig",
  httpMethod: "POST",
  responses: {
    200: {},
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const restartOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/restart",
  httpMethod: "POST",
  responses: {
    200: {},
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  queryParameters: [
    Parameters.apiVersion,
    Parameters.softRestart,
    Parameters.synchronous
  ],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const restoreFromBackupBlobOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/restoreFromBackupBlob",
  httpMethod: "POST",
  responses: {
    200: {},
    201: {},
    202: {},
    204: {},
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  requestBody: Parameters.request2,
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name
  ],
  headerParameters: [Parameters.accept, Parameters.contentType],
  mediaType: "json",
  serializer
};
const restoreFromDeletedAppOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/restoreFromDeletedApp",
  httpMethod: "POST",
  responses: {
    200: {},
    201: {},
    202: {},
    204: {},
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  requestBody: Parameters.restoreRequest,
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name
  ],
  headerParameters: [Parameters.accept, Parameters.contentType],
  mediaType: "json",
  serializer
};
const restoreSnapshotOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/restoreSnapshot",
  httpMethod: "POST",
  responses: {
    200: {},
    201: {},
    202: {},
    204: {},
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  requestBody: Parameters.restoreRequest1,
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name
  ],
  headerParameters: [Parameters.accept, Parameters.contentType],
  mediaType: "json",
  serializer
};
const listSiteExtensionsOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/siteextensions",
  httpMethod: "GET",
  responses: {
    200: {
      bodyMapper: Mappers.SiteExtensionInfoCollection
    },
    404: {
      isError: true
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const getSiteExtensionOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/siteextensions/{siteExtensionId}",
  httpMethod: "GET",
  responses: {
    200: {
      bodyMapper: Mappers.SiteExtensionInfo
    },
    404: {
      isError: true
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.siteExtensionId
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const installSiteExtensionOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/siteextensions/{siteExtensionId}",
  httpMethod: "PUT",
  responses: {
    200: {
      bodyMapper: Mappers.SiteExtensionInfo
    },
    201: {
      bodyMapper: Mappers.SiteExtensionInfo
    },
    202: {
      bodyMapper: Mappers.SiteExtensionInfo
    },
    204: {
      bodyMapper: Mappers.SiteExtensionInfo
    },
    429: {
      isError: true
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.siteExtensionId
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const deleteSiteExtensionOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/siteextensions/{siteExtensionId}",
  httpMethod: "DELETE",
  responses: {
    204: {},
    404: {
      isError: true
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.siteExtensionId
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const listSlotsOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots",
  httpMethod: "GET",
  responses: {
    200: {
      bodyMapper: Mappers.WebAppCollection
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const getSlotOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}",
  httpMethod: "GET",
  responses: {
    200: {
      bodyMapper: Mappers.Site
    },
    404: {
      isError: true
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.slot
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const createOrUpdateSlotOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}",
  httpMethod: "PUT",
  responses: {
    200: {
      bodyMapper: Mappers.Site
    },
    201: {
      bodyMapper: Mappers.Site
    },
    202: {
      bodyMapper: Mappers.Site
    },
    204: {
      bodyMapper: Mappers.Site
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  requestBody: Parameters.siteEnvelope,
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.slot
  ],
  headerParameters: [Parameters.accept, Parameters.contentType],
  mediaType: "json",
  serializer
};
const deleteSlotOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}",
  httpMethod: "DELETE",
  responses: {
    200: {},
    204: {},
    404: {
      isError: true
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  queryParameters: [
    Parameters.apiVersion,
    Parameters.deleteMetrics,
    Parameters.deleteEmptyServerFarm
  ],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.slot
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const updateSlotOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}",
  httpMethod: "PATCH",
  responses: {
    200: {
      bodyMapper: Mappers.Site
    },
    202: {
      bodyMapper: Mappers.Site
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  requestBody: Parameters.siteEnvelope1,
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.slot
  ],
  headerParameters: [Parameters.accept, Parameters.contentType],
  mediaType: "json",
  serializer
};
const analyzeCustomHostnameSlotOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/analyzeCustomHostname",
  httpMethod: "GET",
  responses: {
    200: {
      bodyMapper: Mappers.CustomHostnameAnalysisResult
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  queryParameters: [Parameters.apiVersion, Parameters.hostName],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.slot
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const applySlotConfigurationSlotOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/applySlotConfig",
  httpMethod: "POST",
  responses: {
    200: {},
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  requestBody: Parameters.slotSwapEntity,
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.slot
  ],
  headerParameters: [Parameters.accept, Parameters.contentType],
  mediaType: "json",
  serializer
};
const backupSlotOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/backup",
  httpMethod: "POST",
  responses: {
    200: {
      bodyMapper: Mappers.BackupItem
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  requestBody: Parameters.request1,
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.slot
  ],
  headerParameters: [Parameters.accept, Parameters.contentType],
  mediaType: "json",
  serializer
};
const listBackupsSlotOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/backups",
  httpMethod: "GET",
  responses: {
    200: {
      bodyMapper: Mappers.BackupItemCollection
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.slot
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const getBackupStatusSlotOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/backups/{backupId}",
  httpMethod: "GET",
  responses: {
    200: {
      bodyMapper: Mappers.BackupItem
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.slot,
    Parameters.backupId
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const deleteBackupSlotOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/backups/{backupId}",
  httpMethod: "DELETE",
  responses: {
    200: {},
    404: {
      isError: true
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.slot,
    Parameters.backupId
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const listBackupStatusSecretsSlotOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/backups/{backupId}/list",
  httpMethod: "POST",
  responses: {
    200: {
      bodyMapper: Mappers.BackupItem
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  requestBody: Parameters.request1,
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.slot,
    Parameters.backupId
  ],
  headerParameters: [Parameters.accept, Parameters.contentType],
  mediaType: "json",
  serializer
};
const restoreSlotOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/backups/{backupId}/restore",
  httpMethod: "POST",
  responses: {
    200: {},
    201: {},
    202: {},
    204: {},
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  requestBody: Parameters.request2,
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.slot,
    Parameters.backupId
  ],
  headerParameters: [Parameters.accept, Parameters.contentType],
  mediaType: "json",
  serializer
};
const listBasicPublishingCredentialsPoliciesSlotOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/basicPublishingCredentialsPolicies",
  httpMethod: "GET",
  responses: {
    200: {
      bodyMapper: Mappers.PublishingCredentialsPoliciesCollection
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.slot
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const getFtpAllowedSlotOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/basicPublishingCredentialsPolicies/ftp",
  httpMethod: "GET",
  responses: {
    200: {
      bodyMapper: Mappers.CsmPublishingCredentialsPoliciesEntity
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.slot
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const updateFtpAllowedSlotOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/basicPublishingCredentialsPolicies/ftp",
  httpMethod: "PUT",
  responses: {
    200: {
      bodyMapper: Mappers.CsmPublishingCredentialsPoliciesEntity
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  requestBody: Parameters.csmPublishingAccessPoliciesEntity,
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.slot
  ],
  headerParameters: [Parameters.accept, Parameters.contentType],
  mediaType: "json",
  serializer
};
const getScmAllowedSlotOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/basicPublishingCredentialsPolicies/scm",
  httpMethod: "GET",
  responses: {
    200: {
      bodyMapper: Mappers.CsmPublishingCredentialsPoliciesEntity
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.slot
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const updateScmAllowedSlotOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/basicPublishingCredentialsPolicies/scm",
  httpMethod: "PUT",
  responses: {
    200: {
      bodyMapper: Mappers.CsmPublishingCredentialsPoliciesEntity
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  requestBody: Parameters.csmPublishingAccessPoliciesEntity,
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.slot
  ],
  headerParameters: [Parameters.accept, Parameters.contentType],
  mediaType: "json",
  serializer
};
const listConfigurationsSlotOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/config",
  httpMethod: "GET",
  responses: {
    200: {
      bodyMapper: Mappers.SiteConfigResourceCollection
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.slot
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const updateApplicationSettingsSlotOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/config/appsettings",
  httpMethod: "PUT",
  responses: {
    200: {
      bodyMapper: Mappers.StringDictionary
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  requestBody: Parameters.appSettings,
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.slot
  ],
  headerParameters: [Parameters.accept, Parameters.contentType],
  mediaType: "json",
  serializer
};
const listApplicationSettingsSlotOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/config/appsettings/list",
  httpMethod: "POST",
  responses: {
    200: {
      bodyMapper: Mappers.StringDictionary
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.slot
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const updateAuthSettingsSlotOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/config/authsettings",
  httpMethod: "PUT",
  responses: {
    200: {
      bodyMapper: Mappers.SiteAuthSettings
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  requestBody: Parameters.siteAuthSettings,
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.slot
  ],
  headerParameters: [Parameters.accept, Parameters.contentType],
  mediaType: "json",
  serializer
};
const getAuthSettingsSlotOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/config/authsettings/list",
  httpMethod: "POST",
  responses: {
    200: {
      bodyMapper: Mappers.SiteAuthSettings
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.slot
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const getAuthSettingsV2WithoutSecretsSlotOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/config/authsettingsV2",
  httpMethod: "GET",
  responses: {
    200: {
      bodyMapper: Mappers.SiteAuthSettingsV2
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.slot
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const updateAuthSettingsV2SlotOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/config/authsettingsV2",
  httpMethod: "PUT",
  responses: {
    200: {
      bodyMapper: Mappers.SiteAuthSettingsV2
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  requestBody: Parameters.siteAuthSettingsV2,
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.slot
  ],
  headerParameters: [Parameters.accept, Parameters.contentType],
  mediaType: "json",
  serializer
};
const getAuthSettingsV2SlotOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/config/authsettingsV2/list",
  httpMethod: "GET",
  responses: {
    200: {
      bodyMapper: Mappers.SiteAuthSettingsV2
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.slot
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const updateAzureStorageAccountsSlotOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/config/azurestorageaccounts",
  httpMethod: "PUT",
  responses: {
    200: {
      bodyMapper: Mappers.AzureStoragePropertyDictionaryResource
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  requestBody: Parameters.azureStorageAccounts,
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.slot
  ],
  headerParameters: [Parameters.accept, Parameters.contentType],
  mediaType: "json",
  serializer
};
const listAzureStorageAccountsSlotOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/config/azurestorageaccounts/list",
  httpMethod: "POST",
  responses: {
    200: {
      bodyMapper: Mappers.AzureStoragePropertyDictionaryResource
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.slot
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const updateBackupConfigurationSlotOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/config/backup",
  httpMethod: "PUT",
  responses: {
    200: {
      bodyMapper: Mappers.BackupRequest
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  requestBody: Parameters.request1,
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.slot
  ],
  headerParameters: [Parameters.accept, Parameters.contentType],
  mediaType: "json",
  serializer
};
const deleteBackupConfigurationSlotOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/config/backup",
  httpMethod: "DELETE",
  responses: {
    200: {},
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.slot
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const getBackupConfigurationSlotOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/config/backup/list",
  httpMethod: "POST",
  responses: {
    200: {
      bodyMapper: Mappers.BackupRequest
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.slot
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const getAppSettingsKeyVaultReferencesSlotOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/config/configreferences/appsettings",
  httpMethod: "GET",
  responses: {
    200: {
      bodyMapper: Mappers.ApiKVReferenceCollection
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.slot
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const getAppSettingKeyVaultReferenceSlotOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/config/configreferences/appsettings/{appSettingKey}",
  httpMethod: "GET",
  responses: {
    200: {
      bodyMapper: Mappers.ApiKVReference
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.slot,
    Parameters.appSettingKey
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const getSiteConnectionStringKeyVaultReferencesSlotOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/config/configreferences/connectionstrings",
  httpMethod: "GET",
  responses: {
    200: {
      bodyMapper: Mappers.ApiKVReferenceCollection
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.slot
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const getSiteConnectionStringKeyVaultReferenceSlotOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/config/configreferences/connectionstrings/{connectionStringKey}",
  httpMethod: "GET",
  responses: {
    200: {
      bodyMapper: Mappers.ApiKVReference
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.slot,
    Parameters.connectionStringKey
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const updateConnectionStringsSlotOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/config/connectionstrings",
  httpMethod: "PUT",
  responses: {
    200: {
      bodyMapper: Mappers.ConnectionStringDictionary
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  requestBody: Parameters.connectionStrings,
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.slot
  ],
  headerParameters: [Parameters.accept, Parameters.contentType],
  mediaType: "json",
  serializer
};
const listConnectionStringsSlotOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/config/connectionstrings/list",
  httpMethod: "POST",
  responses: {
    200: {
      bodyMapper: Mappers.ConnectionStringDictionary
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.slot
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const getDiagnosticLogsConfigurationSlotOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/config/logs",
  httpMethod: "GET",
  responses: {
    200: {
      bodyMapper: Mappers.SiteLogsConfig
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.slot
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const updateDiagnosticLogsConfigSlotOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/config/logs",
  httpMethod: "PUT",
  responses: {
    200: {
      bodyMapper: Mappers.SiteLogsConfig
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  requestBody: Parameters.siteLogsConfig,
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.slot
  ],
  headerParameters: [Parameters.accept, Parameters.contentType],
  mediaType: "json",
  serializer
};
const updateMetadataSlotOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/config/metadata",
  httpMethod: "PUT",
  responses: {
    200: {
      bodyMapper: Mappers.StringDictionary
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  requestBody: Parameters.metadata,
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.slot
  ],
  headerParameters: [Parameters.accept, Parameters.contentType],
  mediaType: "json",
  serializer
};
const listMetadataSlotOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/config/metadata/list",
  httpMethod: "POST",
  responses: {
    200: {
      bodyMapper: Mappers.StringDictionary
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.slot
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const listPublishingCredentialsSlotOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/config/publishingcredentials/list",
  httpMethod: "POST",
  responses: {
    200: {
      bodyMapper: Mappers.User
    },
    201: {
      bodyMapper: Mappers.User
    },
    202: {
      bodyMapper: Mappers.User
    },
    204: {
      bodyMapper: Mappers.User
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.slot
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const updateSitePushSettingsSlotOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/config/pushsettings",
  httpMethod: "PUT",
  responses: {
    200: {
      bodyMapper: Mappers.PushSettings
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  requestBody: Parameters.pushSettings,
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.slot
  ],
  headerParameters: [Parameters.accept, Parameters.contentType],
  mediaType: "json",
  serializer
};
const listSitePushSettingsSlotOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/config/pushsettings/list",
  httpMethod: "POST",
  responses: {
    200: {
      bodyMapper: Mappers.PushSettings
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.slot
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const getConfigurationSlotOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/config/web",
  httpMethod: "GET",
  responses: {
    200: {
      bodyMapper: Mappers.SiteConfigResource
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.slot
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const createOrUpdateConfigurationSlotOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/config/web",
  httpMethod: "PUT",
  responses: {
    200: {
      bodyMapper: Mappers.SiteConfigResource
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  requestBody: Parameters.siteConfig,
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.slot
  ],
  headerParameters: [Parameters.accept, Parameters.contentType],
  mediaType: "json",
  serializer
};
const updateConfigurationSlotOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/config/web",
  httpMethod: "PATCH",
  responses: {
    200: {
      bodyMapper: Mappers.SiteConfigResource
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  requestBody: Parameters.siteConfig,
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.slot
  ],
  headerParameters: [Parameters.accept, Parameters.contentType],
  mediaType: "json",
  serializer
};
const listConfigurationSnapshotInfoSlotOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/config/web/snapshots",
  httpMethod: "GET",
  responses: {
    200: {
      bodyMapper: Mappers.SiteConfigurationSnapshotInfoCollection
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.slot
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const getConfigurationSnapshotSlotOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/config/web/snapshots/{snapshotId}",
  httpMethod: "GET",
  responses: {
    200: {
      bodyMapper: Mappers.SiteConfigResource
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.slot,
    Parameters.snapshotId
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const recoverSiteConfigurationSnapshotSlotOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/config/web/snapshots/{snapshotId}/recover",
  httpMethod: "POST",
  responses: {
    204: {},
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.slot,
    Parameters.snapshotId
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const getWebSiteContainerLogsSlotOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/containerlogs",
  httpMethod: "POST",
  responses: {
    200: {
      bodyMapper: { type: { name: "Stream" }, serializedName: "parsedResponse" }
    },
    204: {},
    default: {}
  },
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.slot
  ],
  headerParameters: [Parameters.accept1],
  serializer
};
const getContainerLogsZipSlotOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/containerlogs/zip/download",
  httpMethod: "POST",
  responses: {
    200: {
      bodyMapper: { type: { name: "Stream" }, serializedName: "parsedResponse" }
    },
    204: {},
    default: {}
  },
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.slot
  ],
  headerParameters: [Parameters.accept2],
  serializer
};
const listContinuousWebJobsSlotOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/continuouswebjobs",
  httpMethod: "GET",
  responses: {
    200: {
      bodyMapper: Mappers.ContinuousWebJobCollection
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.slot
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const getContinuousWebJobSlotOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/continuouswebjobs/{webJobName}",
  httpMethod: "GET",
  responses: {
    200: {
      bodyMapper: Mappers.ContinuousWebJob
    },
    404: {
      isError: true
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.slot,
    Parameters.webJobName
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const deleteContinuousWebJobSlotOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/continuouswebjobs/{webJobName}",
  httpMethod: "DELETE",
  responses: {
    200: {},
    204: {},
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.slot,
    Parameters.webJobName
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const startContinuousWebJobSlotOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/continuouswebjobs/{webJobName}/start",
  httpMethod: "POST",
  responses: {
    200: {},
    404: {
      isError: true
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.slot,
    Parameters.webJobName
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const stopContinuousWebJobSlotOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/continuouswebjobs/{webJobName}/stop",
  httpMethod: "POST",
  responses: {
    200: {},
    404: {
      isError: true
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.slot,
    Parameters.webJobName
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const listSlotSiteDeploymentStatusesSlotOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/deploymentStatus",
  httpMethod: "GET",
  responses: {
    200: {
      bodyMapper: Mappers.CsmDeploymentStatusCollection
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.slot
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const getSlotSiteDeploymentStatusSlotOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/deploymentStatus/{deploymentStatusId}",
  httpMethod: "GET",
  responses: {
    200: {
      bodyMapper: Mappers.CsmDeploymentStatus
    },
    201: {
      bodyMapper: Mappers.CsmDeploymentStatus
    },
    202: {
      bodyMapper: Mappers.CsmDeploymentStatus
    },
    204: {
      bodyMapper: Mappers.CsmDeploymentStatus
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.slot,
    Parameters.deploymentStatusId
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const listDeploymentsSlotOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/deployments",
  httpMethod: "GET",
  responses: {
    200: {
      bodyMapper: Mappers.DeploymentCollection
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.slot
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const getDeploymentSlotOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/deployments/{id}",
  httpMethod: "GET",
  responses: {
    200: {
      bodyMapper: Mappers.Deployment
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.slot,
    Parameters.id
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const createDeploymentSlotOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/deployments/{id}",
  httpMethod: "PUT",
  responses: {
    200: {
      bodyMapper: Mappers.Deployment
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  requestBody: Parameters.deployment,
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.slot,
    Parameters.id
  ],
  headerParameters: [Parameters.accept, Parameters.contentType],
  mediaType: "json",
  serializer
};
const deleteDeploymentSlotOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/deployments/{id}",
  httpMethod: "DELETE",
  responses: {
    200: {},
    204: {},
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.slot,
    Parameters.id
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const listDeploymentLogSlotOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/deployments/{id}/log",
  httpMethod: "GET",
  responses: {
    200: {
      bodyMapper: Mappers.Deployment
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.slot,
    Parameters.id
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const discoverBackupSlotOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/discoverbackup",
  httpMethod: "POST",
  responses: {
    200: {
      bodyMapper: Mappers.RestoreRequest
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  requestBody: Parameters.request2,
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.slot
  ],
  headerParameters: [Parameters.accept, Parameters.contentType],
  mediaType: "json",
  serializer
};
const listDomainOwnershipIdentifiersSlotOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/domainOwnershipIdentifiers",
  httpMethod: "GET",
  responses: {
    200: {
      bodyMapper: Mappers.IdentifierCollection
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.slot
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const getDomainOwnershipIdentifierSlotOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/domainOwnershipIdentifiers/{domainOwnershipIdentifierName}",
  httpMethod: "GET",
  responses: {
    200: {
      bodyMapper: Mappers.Identifier
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.slot,
    Parameters.domainOwnershipIdentifierName
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const createOrUpdateDomainOwnershipIdentifierSlotOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/domainOwnershipIdentifiers/{domainOwnershipIdentifierName}",
  httpMethod: "PUT",
  responses: {
    200: {
      bodyMapper: Mappers.Identifier
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  requestBody: Parameters.domainOwnershipIdentifier1,
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.slot,
    Parameters.domainOwnershipIdentifierName
  ],
  headerParameters: [Parameters.accept, Parameters.contentType],
  mediaType: "json",
  serializer
};
const deleteDomainOwnershipIdentifierSlotOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/domainOwnershipIdentifiers/{domainOwnershipIdentifierName}",
  httpMethod: "DELETE",
  responses: {
    200: {},
    204: {},
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.slot,
    Parameters.domainOwnershipIdentifierName
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const updateDomainOwnershipIdentifierSlotOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/domainOwnershipIdentifiers/{domainOwnershipIdentifierName}",
  httpMethod: "PATCH",
  responses: {
    200: {
      bodyMapper: Mappers.Identifier
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  requestBody: Parameters.domainOwnershipIdentifier1,
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.slot,
    Parameters.domainOwnershipIdentifierName
  ],
  headerParameters: [Parameters.accept, Parameters.contentType],
  mediaType: "json",
  serializer
};
const getMSDeployStatusSlotOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/extensions/MSDeploy",
  httpMethod: "GET",
  responses: {
    200: {
      bodyMapper: Mappers.MSDeployStatus
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.slot
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const createMSDeployOperationSlotOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/extensions/MSDeploy",
  httpMethod: "PUT",
  responses: {
    200: {
      bodyMapper: Mappers.MSDeployStatus
    },
    201: {
      bodyMapper: Mappers.MSDeployStatus
    },
    202: {
      bodyMapper: Mappers.MSDeployStatus
    },
    204: {
      bodyMapper: Mappers.MSDeployStatus
    },
    409: {
      isError: true
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  requestBody: Parameters.mSDeploy,
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.slot
  ],
  headerParameters: [Parameters.accept, Parameters.contentType],
  mediaType: "json",
  serializer
};
const getMSDeployLogSlotOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/extensions/MSDeploy/log",
  httpMethod: "GET",
  responses: {
    200: {
      bodyMapper: Mappers.MSDeployLog
    },
    404: {
      isError: true
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.slot
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const listInstanceFunctionsSlotOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/functions",
  httpMethod: "GET",
  responses: {
    200: {
      bodyMapper: Mappers.FunctionEnvelopeCollection
    },
    404: {
      isError: true
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.slot
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const getFunctionsAdminTokenSlotOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/functions/admin/token",
  httpMethod: "GET",
  responses: {
    200: {
      bodyMapper: { type: { name: "String" } }
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.slot
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const getInstanceFunctionSlotOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/functions/{functionName}",
  httpMethod: "GET",
  responses: {
    200: {
      bodyMapper: Mappers.FunctionEnvelope
    },
    404: {
      isError: true
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.slot,
    Parameters.functionName
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const createInstanceFunctionSlotOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/functions/{functionName}",
  httpMethod: "PUT",
  responses: {
    200: {
      bodyMapper: Mappers.FunctionEnvelope
    },
    201: {
      bodyMapper: Mappers.FunctionEnvelope
    },
    202: {
      bodyMapper: Mappers.FunctionEnvelope
    },
    204: {
      bodyMapper: Mappers.FunctionEnvelope
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  requestBody: Parameters.functionEnvelope,
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.slot,
    Parameters.functionName
  ],
  headerParameters: [Parameters.accept, Parameters.contentType],
  mediaType: "json",
  serializer
};
const deleteInstanceFunctionSlotOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/functions/{functionName}",
  httpMethod: "DELETE",
  responses: {
    204: {},
    404: {
      isError: true
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.slot,
    Parameters.functionName
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const createOrUpdateFunctionSecretSlotOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/functions/{functionName}/keys/{keyName}",
  httpMethod: "PUT",
  responses: {
    200: {
      bodyMapper: Mappers.KeyInfo
    },
    201: {
      bodyMapper: Mappers.KeyInfo
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  requestBody: Parameters.key,
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.slot,
    Parameters.functionName,
    Parameters.keyName
  ],
  headerParameters: [Parameters.accept, Parameters.contentType],
  mediaType: "json",
  serializer
};
const deleteFunctionSecretSlotOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/functions/{functionName}/keys/{keyName}",
  httpMethod: "DELETE",
  responses: {
    204: {},
    404: {
      isError: true
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.slot,
    Parameters.functionName,
    Parameters.keyName
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const listFunctionKeysSlotOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/functions/{functionName}/listkeys",
  httpMethod: "POST",
  responses: {
    200: {
      bodyMapper: Mappers.StringDictionary
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.slot,
    Parameters.functionName
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const listFunctionSecretsSlotOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/functions/{functionName}/listsecrets",
  httpMethod: "POST",
  responses: {
    200: {
      bodyMapper: Mappers.FunctionSecrets
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.slot,
    Parameters.functionName
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const listHostKeysSlotOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/host/default/listkeys",
  httpMethod: "POST",
  responses: {
    200: {
      bodyMapper: Mappers.HostKeys
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.slot
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const listSyncStatusSlotOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/host/default/listsyncstatus",
  httpMethod: "POST",
  responses: {
    204: {},
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.slot
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const syncFunctionsSlotOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/host/default/sync",
  httpMethod: "POST",
  responses: {
    204: {},
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.slot
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const createOrUpdateHostSecretSlotOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/host/default/{keyType}/{keyName}",
  httpMethod: "PUT",
  responses: {
    200: {
      bodyMapper: Mappers.KeyInfo
    },
    201: {
      bodyMapper: Mappers.KeyInfo
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  requestBody: Parameters.key,
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.slot,
    Parameters.keyName,
    Parameters.keyType
  ],
  headerParameters: [Parameters.accept, Parameters.contentType],
  mediaType: "json",
  serializer
};
const deleteHostSecretSlotOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/host/default/{keyType}/{keyName}",
  httpMethod: "DELETE",
  responses: {
    204: {},
    404: {
      isError: true
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.slot,
    Parameters.keyName,
    Parameters.keyType
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const listHostNameBindingsSlotOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/hostNameBindings",
  httpMethod: "GET",
  responses: {
    200: {
      bodyMapper: Mappers.HostNameBindingCollection
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.slot
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const getHostNameBindingSlotOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/hostNameBindings/{hostName}",
  httpMethod: "GET",
  responses: {
    200: {
      bodyMapper: Mappers.HostNameBinding
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.slot,
    Parameters.hostName1
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const createOrUpdateHostNameBindingSlotOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/hostNameBindings/{hostName}",
  httpMethod: "PUT",
  responses: {
    200: {
      bodyMapper: Mappers.HostNameBinding
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  requestBody: Parameters.hostNameBinding,
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.slot,
    Parameters.hostName1
  ],
  headerParameters: [Parameters.accept, Parameters.contentType],
  mediaType: "json",
  serializer
};
const deleteHostNameBindingSlotOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/hostNameBindings/{hostName}",
  httpMethod: "DELETE",
  responses: {
    200: {},
    204: {},
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.slot,
    Parameters.hostName1
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const getHybridConnectionSlotOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/hybridConnectionNamespaces/{namespaceName}/relays/{relayName}",
  httpMethod: "GET",
  responses: {
    200: {
      bodyMapper: Mappers.HybridConnection
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.namespaceName,
    Parameters.relayName,
    Parameters.slot
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const createOrUpdateHybridConnectionSlotOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/hybridConnectionNamespaces/{namespaceName}/relays/{relayName}",
  httpMethod: "PUT",
  responses: {
    200: {
      bodyMapper: Mappers.HybridConnection
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  requestBody: Parameters.connectionEnvelope1,
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.namespaceName,
    Parameters.relayName,
    Parameters.slot
  ],
  headerParameters: [Parameters.accept, Parameters.contentType],
  mediaType: "json",
  serializer
};
const deleteHybridConnectionSlotOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/hybridConnectionNamespaces/{namespaceName}/relays/{relayName}",
  httpMethod: "DELETE",
  responses: {
    200: {},
    404: {
      isError: true
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.namespaceName,
    Parameters.relayName,
    Parameters.slot
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const updateHybridConnectionSlotOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/hybridConnectionNamespaces/{namespaceName}/relays/{relayName}",
  httpMethod: "PATCH",
  responses: {
    200: {
      bodyMapper: Mappers.HybridConnection
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  requestBody: Parameters.connectionEnvelope1,
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.namespaceName,
    Parameters.relayName,
    Parameters.slot
  ],
  headerParameters: [Parameters.accept, Parameters.contentType],
  mediaType: "json",
  serializer
};
const listHybridConnectionsSlotOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/hybridConnectionRelays",
  httpMethod: "GET",
  responses: {
    200: {
      bodyMapper: Mappers.HybridConnection
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.slot
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const listRelayServiceConnectionsSlotOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/hybridconnection",
  httpMethod: "GET",
  responses: {
    200: {
      bodyMapper: Mappers.RelayServiceConnectionEntity
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.slot
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const getRelayServiceConnectionSlotOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/hybridconnection/{entityName}",
  httpMethod: "GET",
  responses: {
    200: {
      bodyMapper: Mappers.RelayServiceConnectionEntity
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.slot,
    Parameters.entityName
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const createOrUpdateRelayServiceConnectionSlotOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/hybridconnection/{entityName}",
  httpMethod: "PUT",
  responses: {
    200: {
      bodyMapper: Mappers.RelayServiceConnectionEntity
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  requestBody: Parameters.connectionEnvelope2,
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.slot,
    Parameters.entityName
  ],
  headerParameters: [Parameters.accept, Parameters.contentType],
  mediaType: "json",
  serializer
};
const deleteRelayServiceConnectionSlotOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/hybridconnection/{entityName}",
  httpMethod: "DELETE",
  responses: {
    200: {},
    404: {
      isError: true
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.slot,
    Parameters.entityName
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const updateRelayServiceConnectionSlotOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/hybridconnection/{entityName}",
  httpMethod: "PATCH",
  responses: {
    200: {
      bodyMapper: Mappers.RelayServiceConnectionEntity
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  requestBody: Parameters.connectionEnvelope2,
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.slot,
    Parameters.entityName
  ],
  headerParameters: [Parameters.accept, Parameters.contentType],
  mediaType: "json",
  serializer
};
const listInstanceIdentifiersSlotOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/instances",
  httpMethod: "GET",
  responses: {
    200: {
      bodyMapper: Mappers.WebAppInstanceStatusCollection
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.slot
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const getInstanceInfoSlotOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/instances/{instanceId}",
  httpMethod: "GET",
  responses: {
    200: {
      bodyMapper: Mappers.WebSiteInstanceStatus
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.slot,
    Parameters.instanceId
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const getInstanceMsDeployStatusSlotOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/instances/{instanceId}/extensions/MSDeploy",
  httpMethod: "GET",
  responses: {
    200: {
      bodyMapper: Mappers.MSDeployStatus
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.slot,
    Parameters.instanceId
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const createInstanceMSDeployOperationSlotOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/instances/{instanceId}/extensions/MSDeploy",
  httpMethod: "PUT",
  responses: {
    200: {
      bodyMapper: Mappers.MSDeployStatus
    },
    201: {
      bodyMapper: Mappers.MSDeployStatus
    },
    202: {
      bodyMapper: Mappers.MSDeployStatus
    },
    204: {
      bodyMapper: Mappers.MSDeployStatus
    },
    409: {
      isError: true
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  requestBody: Parameters.mSDeploy,
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.slot,
    Parameters.instanceId
  ],
  headerParameters: [Parameters.accept, Parameters.contentType],
  mediaType: "json",
  serializer
};
const getInstanceMSDeployLogSlotOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/instances/{instanceId}/extensions/MSDeploy/log",
  httpMethod: "GET",
  responses: {
    200: {
      bodyMapper: Mappers.MSDeployLog
    },
    404: {
      isError: true
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.slot,
    Parameters.instanceId
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const listInstanceProcessesSlotOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/instances/{instanceId}/processes",
  httpMethod: "GET",
  responses: {
    200: {
      bodyMapper: Mappers.ProcessInfoCollection
    },
    404: {
      isError: true
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.slot,
    Parameters.instanceId
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const getInstanceProcessSlotOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/instances/{instanceId}/processes/{processId}",
  httpMethod: "GET",
  responses: {
    200: {
      bodyMapper: Mappers.ProcessInfo
    },
    404: {
      isError: true
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.slot,
    Parameters.instanceId,
    Parameters.processId
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const deleteInstanceProcessSlotOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/instances/{instanceId}/processes/{processId}",
  httpMethod: "DELETE",
  responses: {
    204: {},
    404: {
      isError: true
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.slot,
    Parameters.instanceId,
    Parameters.processId
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const getInstanceProcessDumpSlotOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/instances/{instanceId}/processes/{processId}/dump",
  httpMethod: "GET",
  responses: {
    200: {
      bodyMapper: { type: { name: "Stream" }, serializedName: "parsedResponse" }
    },
    404: {
      isError: true
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.slot,
    Parameters.instanceId,
    Parameters.processId
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const listInstanceProcessModulesSlotOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/instances/{instanceId}/processes/{processId}/modules",
  httpMethod: "GET",
  responses: {
    200: {
      bodyMapper: Mappers.ProcessModuleInfoCollection
    },
    404: {
      isError: true
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.slot,
    Parameters.instanceId,
    Parameters.processId
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const getInstanceProcessModuleSlotOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/instances/{instanceId}/processes/{processId}/modules/{baseAddress}",
  httpMethod: "GET",
  responses: {
    200: {
      bodyMapper: Mappers.ProcessModuleInfo
    },
    404: {
      isError: true
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.slot,
    Parameters.instanceId,
    Parameters.processId,
    Parameters.baseAddress
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const listInstanceProcessThreadsSlotOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/instances/{instanceId}/processes/{processId}/threads",
  httpMethod: "GET",
  responses: {
    200: {
      bodyMapper: Mappers.ProcessThreadInfoCollection
    },
    404: {
      isError: true
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.slot,
    Parameters.instanceId,
    Parameters.processId
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const isCloneableSlotOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/iscloneable",
  httpMethod: "POST",
  responses: {
    200: {
      bodyMapper: Mappers.SiteCloneability
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.slot
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const listSiteBackupsSlotOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/listbackups",
  httpMethod: "POST",
  responses: {
    200: {
      bodyMapper: Mappers.BackupItemCollection
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.slot
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const listSyncFunctionTriggersSlotOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/listsyncfunctiontriggerstatus",
  httpMethod: "POST",
  responses: {
    200: {
      bodyMapper: Mappers.FunctionSecrets
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.slot
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const getMigrateMySqlStatusSlotOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/migratemysql/status",
  httpMethod: "GET",
  responses: {
    200: {
      bodyMapper: Mappers.MigrateMySqlStatus
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.slot
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const getSwiftVirtualNetworkConnectionSlotOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/networkConfig/virtualNetwork",
  httpMethod: "GET",
  responses: {
    200: {
      bodyMapper: Mappers.SwiftVirtualNetwork
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.slot
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const createOrUpdateSwiftVirtualNetworkConnectionWithCheckSlotOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/networkConfig/virtualNetwork",
  httpMethod: "PUT",
  responses: {
    200: {
      bodyMapper: Mappers.SwiftVirtualNetwork
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  requestBody: Parameters.connectionEnvelope3,
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.slot
  ],
  headerParameters: [Parameters.accept, Parameters.contentType],
  mediaType: "json",
  serializer
};
const deleteSwiftVirtualNetworkSlotOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/networkConfig/virtualNetwork",
  httpMethod: "DELETE",
  responses: {
    200: {},
    404: {
      isError: true
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.slot
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const updateSwiftVirtualNetworkConnectionWithCheckSlotOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/networkConfig/virtualNetwork",
  httpMethod: "PATCH",
  responses: {
    200: {
      bodyMapper: Mappers.SwiftVirtualNetwork
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  requestBody: Parameters.connectionEnvelope3,
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.slot
  ],
  headerParameters: [Parameters.accept, Parameters.contentType],
  mediaType: "json",
  serializer
};
const listNetworkFeaturesSlotOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/networkFeatures/{view}",
  httpMethod: "GET",
  responses: {
    200: {
      bodyMapper: Mappers.NetworkFeatures
    },
    404: {
      isError: true
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.slot,
    Parameters.view
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const getNetworkTraceOperationSlotOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/networkTrace/operationresults/{operationId}",
  httpMethod: "GET",
  responses: {
    200: {
      bodyMapper: {
        type: {
          name: "Sequence",
          element: { type: { name: "Composite", className: "NetworkTrace" } }
        }
      }
    },
    202: {
      bodyMapper: {
        type: {
          name: "Sequence",
          element: { type: { name: "Composite", className: "NetworkTrace" } }
        }
      }
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.slot,
    Parameters.operationId
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const startWebSiteNetworkTraceSlotOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/networkTrace/start",
  httpMethod: "POST",
  responses: {
    200: {
      bodyMapper: { type: { name: "String" } }
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  queryParameters: [
    Parameters.apiVersion,
    Parameters.durationInSeconds,
    Parameters.maxFrameLength,
    Parameters.sasUrl
  ],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.slot
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const startWebSiteNetworkTraceOperationSlotOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/networkTrace/startOperation",
  httpMethod: "POST",
  responses: {
    200: {
      bodyMapper: {
        type: {
          name: "Sequence",
          element: { type: { name: "Composite", className: "NetworkTrace" } }
        }
      }
    },
    201: {
      bodyMapper: {
        type: {
          name: "Sequence",
          element: { type: { name: "Composite", className: "NetworkTrace" } }
        }
      }
    },
    202: {
      bodyMapper: {
        type: {
          name: "Sequence",
          element: { type: { name: "Composite", className: "NetworkTrace" } }
        }
      }
    },
    204: {
      bodyMapper: {
        type: {
          name: "Sequence",
          element: { type: { name: "Composite", className: "NetworkTrace" } }
        }
      }
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  queryParameters: [
    Parameters.apiVersion,
    Parameters.durationInSeconds,
    Parameters.maxFrameLength,
    Parameters.sasUrl
  ],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.slot
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const stopWebSiteNetworkTraceSlotOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/networkTrace/stop",
  httpMethod: "POST",
  responses: {
    200: {},
    204: {},
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.slot
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const getNetworkTracesSlotOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/networkTrace/{operationId}",
  httpMethod: "GET",
  responses: {
    200: {
      bodyMapper: {
        type: {
          name: "Sequence",
          element: { type: { name: "Composite", className: "NetworkTrace" } }
        }
      }
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.slot,
    Parameters.operationId
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const getNetworkTraceOperationSlotV2OperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/networkTraces/current/operationresults/{operationId}",
  httpMethod: "GET",
  responses: {
    200: {
      bodyMapper: {
        type: {
          name: "Sequence",
          element: { type: { name: "Composite", className: "NetworkTrace" } }
        }
      }
    },
    202: {
      bodyMapper: {
        type: {
          name: "Sequence",
          element: { type: { name: "Composite", className: "NetworkTrace" } }
        }
      }
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.slot,
    Parameters.operationId
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const getNetworkTracesSlotV2OperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/networkTraces/{operationId}",
  httpMethod: "GET",
  responses: {
    200: {
      bodyMapper: {
        type: {
          name: "Sequence",
          element: { type: { name: "Composite", className: "NetworkTrace" } }
        }
      }
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.slot,
    Parameters.operationId
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const generateNewSitePublishingPasswordSlotOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/newpassword",
  httpMethod: "POST",
  responses: {
    200: {},
    204: {},
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.slot
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const listPerfMonCountersSlotOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/perfcounters",
  httpMethod: "GET",
  responses: {
    200: {
      bodyMapper: Mappers.PerfMonCounterCollection
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  queryParameters: [Parameters.apiVersion, Parameters.filter],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.slot
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const getSitePhpErrorLogFlagSlotOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/phplogging",
  httpMethod: "GET",
  responses: {
    200: {
      bodyMapper: Mappers.SitePhpErrorLogFlag
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.slot
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const listPremierAddOnsSlotOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/premieraddons",
  httpMethod: "GET",
  responses: {
    200: {
      bodyMapper: Mappers.PremierAddOn
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.slot
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const getPremierAddOnSlotOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/premieraddons/{premierAddOnName}",
  httpMethod: "GET",
  responses: {
    200: {
      bodyMapper: Mappers.PremierAddOn
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.slot,
    Parameters.premierAddOnName
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const addPremierAddOnSlotOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/premieraddons/{premierAddOnName}",
  httpMethod: "PUT",
  responses: {
    200: {
      bodyMapper: Mappers.PremierAddOn
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  requestBody: Parameters.premierAddOn,
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.slot,
    Parameters.premierAddOnName
  ],
  headerParameters: [Parameters.accept, Parameters.contentType],
  mediaType: "json",
  serializer
};
const deletePremierAddOnSlotOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/premieraddons/{premierAddOnName}",
  httpMethod: "DELETE",
  responses: {
    200: {},
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.slot,
    Parameters.premierAddOnName
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const updatePremierAddOnSlotOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/premieraddons/{premierAddOnName}",
  httpMethod: "PATCH",
  responses: {
    200: {
      bodyMapper: Mappers.PremierAddOn
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  requestBody: Parameters.premierAddOn1,
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.slot,
    Parameters.premierAddOnName
  ],
  headerParameters: [Parameters.accept, Parameters.contentType],
  mediaType: "json",
  serializer
};
const getPrivateAccessSlotOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/privateAccess/virtualNetworks",
  httpMethod: "GET",
  responses: {
    200: {
      bodyMapper: Mappers.PrivateAccess
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.slot
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const putPrivateAccessVnetSlotOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/privateAccess/virtualNetworks",
  httpMethod: "PUT",
  responses: {
    200: {
      bodyMapper: Mappers.PrivateAccess
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  requestBody: Parameters.access,
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.slot
  ],
  headerParameters: [Parameters.accept, Parameters.contentType],
  mediaType: "json",
  serializer
};
const getPrivateEndpointConnectionListSlotOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/privateEndpointConnections",
  httpMethod: "GET",
  responses: {
    200: {
      bodyMapper: Mappers.PrivateEndpointConnectionCollection
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.slot
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const getPrivateEndpointConnectionSlotOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/privateEndpointConnections/{privateEndpointConnectionName}",
  httpMethod: "GET",
  responses: {
    200: {
      bodyMapper: Mappers.RemotePrivateEndpointConnectionARMResource
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.privateEndpointConnectionName,
    Parameters.slot
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const approveOrRejectPrivateEndpointConnectionSlotOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/privateEndpointConnections/{privateEndpointConnectionName}",
  httpMethod: "PUT",
  responses: {
    200: {
      bodyMapper: Mappers.RemotePrivateEndpointConnectionARMResource
    },
    201: {
      bodyMapper: Mappers.RemotePrivateEndpointConnectionARMResource
    },
    202: {
      bodyMapper: Mappers.RemotePrivateEndpointConnectionARMResource
    },
    204: {
      bodyMapper: Mappers.RemotePrivateEndpointConnectionARMResource
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  requestBody: Parameters.privateEndpointWrapper,
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.privateEndpointConnectionName,
    Parameters.slot
  ],
  headerParameters: [Parameters.accept, Parameters.contentType],
  mediaType: "json",
  serializer
};
const deletePrivateEndpointConnectionSlotOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/privateEndpointConnections/{privateEndpointConnectionName}",
  httpMethod: "DELETE",
  responses: {
    200: {
      bodyMapper: {
        type: { name: "Dictionary", value: { type: { name: "any" } } }
      }
    },
    201: {
      bodyMapper: {
        type: { name: "Dictionary", value: { type: { name: "any" } } }
      }
    },
    202: {
      bodyMapper: {
        type: { name: "Dictionary", value: { type: { name: "any" } } }
      }
    },
    204: {
      bodyMapper: {
        type: { name: "Dictionary", value: { type: { name: "any" } } }
      }
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.privateEndpointConnectionName,
    Parameters.slot
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const getPrivateLinkResourcesSlotOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/privateLinkResources",
  httpMethod: "GET",
  responses: {
    200: {
      bodyMapper: Mappers.PrivateLinkResourcesWrapper
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.slot
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const listProcessesSlotOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/processes",
  httpMethod: "GET",
  responses: {
    200: {
      bodyMapper: Mappers.ProcessInfoCollection
    },
    404: {
      isError: true
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.slot
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const getProcessSlotOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/processes/{processId}",
  httpMethod: "GET",
  responses: {
    200: {
      bodyMapper: Mappers.ProcessInfo
    },
    404: {
      isError: true
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.slot,
    Parameters.processId
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const deleteProcessSlotOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/processes/{processId}",
  httpMethod: "DELETE",
  responses: {
    204: {},
    404: {
      isError: true
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.slot,
    Parameters.processId
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const getProcessDumpSlotOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/processes/{processId}/dump",
  httpMethod: "GET",
  responses: {
    200: {
      bodyMapper: { type: { name: "Stream" }, serializedName: "parsedResponse" }
    },
    404: {
      isError: true
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.slot,
    Parameters.processId
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const listProcessModulesSlotOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/processes/{processId}/modules",
  httpMethod: "GET",
  responses: {
    200: {
      bodyMapper: Mappers.ProcessModuleInfoCollection
    },
    404: {
      isError: true
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.slot,
    Parameters.processId
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const getProcessModuleSlotOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/processes/{processId}/modules/{baseAddress}",
  httpMethod: "GET",
  responses: {
    200: {
      bodyMapper: Mappers.ProcessModuleInfo
    },
    404: {
      isError: true
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.slot,
    Parameters.processId,
    Parameters.baseAddress
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const listProcessThreadsSlotOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/processes/{processId}/threads",
  httpMethod: "GET",
  responses: {
    200: {
      bodyMapper: Mappers.ProcessThreadInfoCollection
    },
    404: {
      isError: true
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.slot,
    Parameters.processId
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const listPublicCertificatesSlotOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/publicCertificates",
  httpMethod: "GET",
  responses: {
    200: {
      bodyMapper: Mappers.PublicCertificateCollection
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.slot
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const getPublicCertificateSlotOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/publicCertificates/{publicCertificateName}",
  httpMethod: "GET",
  responses: {
    200: {
      bodyMapper: Mappers.PublicCertificate
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.slot,
    Parameters.publicCertificateName
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const createOrUpdatePublicCertificateSlotOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/publicCertificates/{publicCertificateName}",
  httpMethod: "PUT",
  responses: {
    200: {
      bodyMapper: Mappers.PublicCertificate
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  requestBody: Parameters.publicCertificate,
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.slot,
    Parameters.publicCertificateName
  ],
  headerParameters: [Parameters.accept, Parameters.contentType],
  mediaType: "json",
  serializer
};
const deletePublicCertificateSlotOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/publicCertificates/{publicCertificateName}",
  httpMethod: "DELETE",
  responses: {
    200: {},
    204: {},
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.slot,
    Parameters.publicCertificateName
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const listPublishingProfileXmlWithSecretsSlotOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/publishxml",
  httpMethod: "POST",
  responses: {
    200: {
      bodyMapper: { type: { name: "Stream" }, serializedName: "parsedResponse" }
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  requestBody: Parameters.publishingProfileOptions,
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.slot
  ],
  headerParameters: [Parameters.contentType, Parameters.accept3],
  mediaType: "json",
  serializer
};
const resetSlotConfigurationSlotOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/resetSlotConfig",
  httpMethod: "POST",
  responses: {
    200: {},
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.slot
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const restartSlotOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/restart",
  httpMethod: "POST",
  responses: {
    200: {},
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  queryParameters: [
    Parameters.apiVersion,
    Parameters.softRestart,
    Parameters.synchronous
  ],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.slot
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const restoreFromBackupBlobSlotOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/restoreFromBackupBlob",
  httpMethod: "POST",
  responses: {
    200: {},
    201: {},
    202: {},
    204: {},
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  requestBody: Parameters.request2,
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.slot
  ],
  headerParameters: [Parameters.accept, Parameters.contentType],
  mediaType: "json",
  serializer
};
const restoreFromDeletedAppSlotOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/restoreFromDeletedApp",
  httpMethod: "POST",
  responses: {
    200: {},
    201: {},
    202: {},
    204: {},
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  requestBody: Parameters.restoreRequest,
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.slot
  ],
  headerParameters: [Parameters.accept, Parameters.contentType],
  mediaType: "json",
  serializer
};
const restoreSnapshotSlotOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/restoreSnapshot",
  httpMethod: "POST",
  responses: {
    200: {},
    201: {},
    202: {},
    204: {},
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  requestBody: Parameters.restoreRequest1,
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.slot
  ],
  headerParameters: [Parameters.accept, Parameters.contentType],
  mediaType: "json",
  serializer
};
const listSiteExtensionsSlotOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/siteextensions",
  httpMethod: "GET",
  responses: {
    200: {
      bodyMapper: Mappers.SiteExtensionInfoCollection
    },
    404: {
      isError: true
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.slot
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const getSiteExtensionSlotOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/siteextensions/{siteExtensionId}",
  httpMethod: "GET",
  responses: {
    200: {
      bodyMapper: Mappers.SiteExtensionInfo
    },
    404: {
      isError: true
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.slot,
    Parameters.siteExtensionId
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const installSiteExtensionSlotOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/siteextensions/{siteExtensionId}",
  httpMethod: "PUT",
  responses: {
    200: {
      bodyMapper: Mappers.SiteExtensionInfo
    },
    201: {
      bodyMapper: Mappers.SiteExtensionInfo
    },
    202: {
      bodyMapper: Mappers.SiteExtensionInfo
    },
    204: {
      bodyMapper: Mappers.SiteExtensionInfo
    },
    429: {
      isError: true
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.slot,
    Parameters.siteExtensionId
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const deleteSiteExtensionSlotOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/siteextensions/{siteExtensionId}",
  httpMethod: "DELETE",
  responses: {
    204: {},
    404: {
      isError: true
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.slot,
    Parameters.siteExtensionId
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const listSlotDifferencesSlotOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/slotsdiffs",
  httpMethod: "POST",
  responses: {
    200: {
      bodyMapper: Mappers.SlotDifferenceCollection
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  requestBody: Parameters.slotSwapEntity,
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.slot
  ],
  headerParameters: [Parameters.accept, Parameters.contentType],
  mediaType: "json",
  serializer
};
const swapSlotOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/slotsswap",
  httpMethod: "POST",
  responses: {
    200: {},
    201: {},
    202: {},
    204: {},
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  requestBody: Parameters.slotSwapEntity,
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.slot
  ],
  headerParameters: [Parameters.accept, Parameters.contentType],
  mediaType: "json",
  serializer
};
const listSnapshotsSlotOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/snapshots",
  httpMethod: "GET",
  responses: {
    200: {
      bodyMapper: Mappers.SnapshotCollection
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.slot
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const listSnapshotsFromDRSecondarySlotOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/snapshotsdr",
  httpMethod: "GET",
  responses: {
    200: {
      bodyMapper: Mappers.SnapshotCollection
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.slot
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const getSourceControlSlotOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/sourcecontrols/web",
  httpMethod: "GET",
  responses: {
    200: {
      bodyMapper: Mappers.SiteSourceControl
    },
    201: {
      bodyMapper: Mappers.SiteSourceControl
    },
    202: {
      bodyMapper: Mappers.SiteSourceControl
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.slot
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const createOrUpdateSourceControlSlotOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/sourcecontrols/web",
  httpMethod: "PUT",
  responses: {
    200: {
      bodyMapper: Mappers.SiteSourceControl
    },
    201: {
      bodyMapper: Mappers.SiteSourceControl
    },
    202: {
      bodyMapper: Mappers.SiteSourceControl
    },
    204: {
      bodyMapper: Mappers.SiteSourceControl
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  requestBody: Parameters.siteSourceControl,
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.slot
  ],
  headerParameters: [Parameters.accept, Parameters.contentType],
  mediaType: "json",
  serializer
};
const deleteSourceControlSlotOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/sourcecontrols/web",
  httpMethod: "DELETE",
  responses: {
    200: {},
    202: {},
    404: {
      isError: true
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  queryParameters: [Parameters.apiVersion, Parameters.additionalFlags],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.slot
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const updateSourceControlSlotOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/sourcecontrols/web",
  httpMethod: "PATCH",
  responses: {
    200: {
      bodyMapper: Mappers.SiteSourceControl
    },
    201: {
      bodyMapper: Mappers.SiteSourceControl
    },
    202: {
      bodyMapper: Mappers.SiteSourceControl
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  requestBody: Parameters.siteSourceControl,
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.slot
  ],
  headerParameters: [Parameters.accept, Parameters.contentType],
  mediaType: "json",
  serializer
};
const startSlotOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/start",
  httpMethod: "POST",
  responses: {
    200: {},
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.slot
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const startNetworkTraceSlotOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/startNetworkTrace",
  httpMethod: "POST",
  responses: {
    200: {
      bodyMapper: {
        type: {
          name: "Sequence",
          element: { type: { name: "Composite", className: "NetworkTrace" } }
        }
      }
    },
    201: {
      bodyMapper: {
        type: {
          name: "Sequence",
          element: { type: { name: "Composite", className: "NetworkTrace" } }
        }
      }
    },
    202: {
      bodyMapper: {
        type: {
          name: "Sequence",
          element: { type: { name: "Composite", className: "NetworkTrace" } }
        }
      }
    },
    204: {
      bodyMapper: {
        type: {
          name: "Sequence",
          element: { type: { name: "Composite", className: "NetworkTrace" } }
        }
      }
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  queryParameters: [
    Parameters.apiVersion,
    Parameters.durationInSeconds,
    Parameters.maxFrameLength,
    Parameters.sasUrl
  ],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.slot
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const stopSlotOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/stop",
  httpMethod: "POST",
  responses: {
    200: {},
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.slot
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const stopNetworkTraceSlotOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/stopNetworkTrace",
  httpMethod: "POST",
  responses: {
    200: {},
    204: {},
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.slot
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const syncRepositorySlotOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/sync",
  httpMethod: "POST",
  responses: {
    200: {},
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.slot
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const syncFunctionTriggersSlotOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/syncfunctiontriggers",
  httpMethod: "POST",
  responses: {
    204: {},
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.slot
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const listTriggeredWebJobsSlotOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/triggeredwebjobs",
  httpMethod: "GET",
  responses: {
    200: {
      bodyMapper: Mappers.TriggeredWebJobCollection
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.slot
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const getTriggeredWebJobSlotOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/triggeredwebjobs/{webJobName}",
  httpMethod: "GET",
  responses: {
    200: {
      bodyMapper: Mappers.TriggeredWebJob
    },
    404: {
      isError: true
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.slot,
    Parameters.webJobName
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const deleteTriggeredWebJobSlotOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/triggeredwebjobs/{webJobName}",
  httpMethod: "DELETE",
  responses: {
    200: {},
    204: {},
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.slot,
    Parameters.webJobName
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const listTriggeredWebJobHistorySlotOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/triggeredwebjobs/{webJobName}/history",
  httpMethod: "GET",
  responses: {
    200: {
      bodyMapper: Mappers.TriggeredJobHistoryCollection
    },
    404: {
      isError: true
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.slot,
    Parameters.webJobName
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const getTriggeredWebJobHistorySlotOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/triggeredwebjobs/{webJobName}/history/{id}",
  httpMethod: "GET",
  responses: {
    200: {
      bodyMapper: Mappers.TriggeredJobHistory
    },
    404: {
      isError: true
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.slot,
    Parameters.webJobName,
    Parameters.id
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const runTriggeredWebJobSlotOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/triggeredwebjobs/{webJobName}/run",
  httpMethod: "POST",
  responses: {
    200: {},
    404: {
      isError: true
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.slot,
    Parameters.webJobName
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const listUsagesSlotOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/usages",
  httpMethod: "GET",
  responses: {
    200: {
      bodyMapper: Mappers.CsmUsageQuotaCollection
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  queryParameters: [Parameters.apiVersion, Parameters.filter],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.slot
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const listVnetConnectionsSlotOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/virtualNetworkConnections",
  httpMethod: "GET",
  responses: {
    200: {
      bodyMapper: {
        type: {
          name: "Sequence",
          element: {
            type: { name: "Composite", className: "VnetInfoResource" }
          }
        }
      }
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.slot
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const getVnetConnectionSlotOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/virtualNetworkConnections/{vnetName}",
  httpMethod: "GET",
  responses: {
    200: {
      bodyMapper: Mappers.VnetInfoResource
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.vnetName,
    Parameters.slot
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const createOrUpdateVnetConnectionSlotOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/virtualNetworkConnections/{vnetName}",
  httpMethod: "PUT",
  responses: {
    200: {
      bodyMapper: Mappers.VnetInfoResource
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  requestBody: Parameters.connectionEnvelope4,
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.vnetName,
    Parameters.slot
  ],
  headerParameters: [Parameters.accept, Parameters.contentType],
  mediaType: "json",
  serializer
};
const deleteVnetConnectionSlotOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/virtualNetworkConnections/{vnetName}",
  httpMethod: "DELETE",
  responses: {
    200: {},
    404: {
      isError: true
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.vnetName,
    Parameters.slot
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const updateVnetConnectionSlotOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/virtualNetworkConnections/{vnetName}",
  httpMethod: "PATCH",
  responses: {
    200: {
      bodyMapper: Mappers.VnetInfoResource
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  requestBody: Parameters.connectionEnvelope4,
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.vnetName,
    Parameters.slot
  ],
  headerParameters: [Parameters.accept, Parameters.contentType],
  mediaType: "json",
  serializer
};
const getVnetConnectionGatewaySlotOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/virtualNetworkConnections/{vnetName}/gateways/{gatewayName}",
  httpMethod: "GET",
  responses: {
    200: {
      bodyMapper: Mappers.VnetGateway
    },
    404: {
      isError: true
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.vnetName,
    Parameters.gatewayName,
    Parameters.slot
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const createOrUpdateVnetConnectionGatewaySlotOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/virtualNetworkConnections/{vnetName}/gateways/{gatewayName}",
  httpMethod: "PUT",
  responses: {
    200: {
      bodyMapper: Mappers.VnetGateway
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  requestBody: Parameters.connectionEnvelope,
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.vnetName,
    Parameters.gatewayName,
    Parameters.slot
  ],
  headerParameters: [Parameters.accept, Parameters.contentType],
  mediaType: "json",
  serializer
};
const updateVnetConnectionGatewaySlotOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/virtualNetworkConnections/{vnetName}/gateways/{gatewayName}",
  httpMethod: "PATCH",
  responses: {
    200: {
      bodyMapper: Mappers.VnetGateway
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  requestBody: Parameters.connectionEnvelope,
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.vnetName,
    Parameters.gatewayName,
    Parameters.slot
  ],
  headerParameters: [Parameters.accept, Parameters.contentType],
  mediaType: "json",
  serializer
};
const listWebJobsSlotOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/webjobs",
  httpMethod: "GET",
  responses: {
    200: {
      bodyMapper: Mappers.WebJobCollection
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.slot
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const getWebJobSlotOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/webjobs/{webJobName}",
  httpMethod: "GET",
  responses: {
    200: {
      bodyMapper: Mappers.WebJob
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.slot,
    Parameters.webJobName
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const listSlotDifferencesFromProductionOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slotsdiffs",
  httpMethod: "POST",
  responses: {
    200: {
      bodyMapper: Mappers.SlotDifferenceCollection
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  requestBody: Parameters.slotSwapEntity,
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name
  ],
  headerParameters: [Parameters.accept, Parameters.contentType],
  mediaType: "json",
  serializer
};
const swapSlotWithProductionOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slotsswap",
  httpMethod: "POST",
  responses: {
    200: {},
    201: {},
    202: {},
    204: {},
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  requestBody: Parameters.slotSwapEntity,
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name
  ],
  headerParameters: [Parameters.accept, Parameters.contentType],
  mediaType: "json",
  serializer
};
const listSnapshotsOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/snapshots",
  httpMethod: "GET",
  responses: {
    200: {
      bodyMapper: Mappers.SnapshotCollection
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const listSnapshotsFromDRSecondaryOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/snapshotsdr",
  httpMethod: "GET",
  responses: {
    200: {
      bodyMapper: Mappers.SnapshotCollection
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const getSourceControlOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/sourcecontrols/web",
  httpMethod: "GET",
  responses: {
    200: {
      bodyMapper: Mappers.SiteSourceControl
    },
    201: {
      bodyMapper: Mappers.SiteSourceControl
    },
    202: {
      bodyMapper: Mappers.SiteSourceControl
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const createOrUpdateSourceControlOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/sourcecontrols/web",
  httpMethod: "PUT",
  responses: {
    200: {
      bodyMapper: Mappers.SiteSourceControl
    },
    201: {
      bodyMapper: Mappers.SiteSourceControl
    },
    202: {
      bodyMapper: Mappers.SiteSourceControl
    },
    204: {
      bodyMapper: Mappers.SiteSourceControl
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  requestBody: Parameters.siteSourceControl,
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name
  ],
  headerParameters: [Parameters.accept, Parameters.contentType],
  mediaType: "json",
  serializer
};
const deleteSourceControlOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/sourcecontrols/web",
  httpMethod: "DELETE",
  responses: {
    200: {},
    202: {},
    404: {
      isError: true
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  queryParameters: [Parameters.apiVersion, Parameters.additionalFlags],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const updateSourceControlOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/sourcecontrols/web",
  httpMethod: "PATCH",
  responses: {
    200: {
      bodyMapper: Mappers.SiteSourceControl
    },
    201: {
      bodyMapper: Mappers.SiteSourceControl
    },
    202: {
      bodyMapper: Mappers.SiteSourceControl
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  requestBody: Parameters.siteSourceControl,
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name
  ],
  headerParameters: [Parameters.accept, Parameters.contentType],
  mediaType: "json",
  serializer
};
const startOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/start",
  httpMethod: "POST",
  responses: {
    200: {},
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const startNetworkTraceOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/startNetworkTrace",
  httpMethod: "POST",
  responses: {
    200: {
      bodyMapper: {
        type: {
          name: "Sequence",
          element: { type: { name: "Composite", className: "NetworkTrace" } }
        }
      }
    },
    201: {
      bodyMapper: {
        type: {
          name: "Sequence",
          element: { type: { name: "Composite", className: "NetworkTrace" } }
        }
      }
    },
    202: {
      bodyMapper: {
        type: {
          name: "Sequence",
          element: { type: { name: "Composite", className: "NetworkTrace" } }
        }
      }
    },
    204: {
      bodyMapper: {
        type: {
          name: "Sequence",
          element: { type: { name: "Composite", className: "NetworkTrace" } }
        }
      }
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  queryParameters: [
    Parameters.apiVersion,
    Parameters.durationInSeconds,
    Parameters.maxFrameLength,
    Parameters.sasUrl
  ],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const stopOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/stop",
  httpMethod: "POST",
  responses: {
    200: {},
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const stopNetworkTraceOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/stopNetworkTrace",
  httpMethod: "POST",
  responses: {
    200: {},
    204: {},
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const syncRepositoryOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/sync",
  httpMethod: "POST",
  responses: {
    200: {},
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const syncFunctionTriggersOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/syncfunctiontriggers",
  httpMethod: "POST",
  responses: {
    204: {},
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const listTriggeredWebJobsOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/triggeredwebjobs",
  httpMethod: "GET",
  responses: {
    200: {
      bodyMapper: Mappers.TriggeredWebJobCollection
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const getTriggeredWebJobOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/triggeredwebjobs/{webJobName}",
  httpMethod: "GET",
  responses: {
    200: {
      bodyMapper: Mappers.TriggeredWebJob
    },
    404: {
      isError: true
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.webJobName
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const deleteTriggeredWebJobOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/triggeredwebjobs/{webJobName}",
  httpMethod: "DELETE",
  responses: {
    200: {},
    204: {},
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.webJobName
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const listTriggeredWebJobHistoryOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/triggeredwebjobs/{webJobName}/history",
  httpMethod: "GET",
  responses: {
    200: {
      bodyMapper: Mappers.TriggeredJobHistoryCollection
    },
    404: {
      isError: true
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.webJobName
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const getTriggeredWebJobHistoryOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/triggeredwebjobs/{webJobName}/history/{id}",
  httpMethod: "GET",
  responses: {
    200: {
      bodyMapper: Mappers.TriggeredJobHistory
    },
    404: {
      isError: true
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.webJobName,
    Parameters.id
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const runTriggeredWebJobOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/triggeredwebjobs/{webJobName}/run",
  httpMethod: "POST",
  responses: {
    200: {},
    404: {
      isError: true
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.webJobName
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const listUsagesOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/usages",
  httpMethod: "GET",
  responses: {
    200: {
      bodyMapper: Mappers.CsmUsageQuotaCollection
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  queryParameters: [Parameters.apiVersion, Parameters.filter],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const listVnetConnectionsOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/virtualNetworkConnections",
  httpMethod: "GET",
  responses: {
    200: {
      bodyMapper: {
        type: {
          name: "Sequence",
          element: {
            type: { name: "Composite", className: "VnetInfoResource" }
          }
        }
      }
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const getVnetConnectionOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/virtualNetworkConnections/{vnetName}",
  httpMethod: "GET",
  responses: {
    200: {
      bodyMapper: Mappers.VnetInfoResource
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.vnetName
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const createOrUpdateVnetConnectionOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/virtualNetworkConnections/{vnetName}",
  httpMethod: "PUT",
  responses: {
    200: {
      bodyMapper: Mappers.VnetInfoResource
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  requestBody: Parameters.connectionEnvelope4,
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.vnetName
  ],
  headerParameters: [Parameters.accept, Parameters.contentType],
  mediaType: "json",
  serializer
};
const deleteVnetConnectionOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/virtualNetworkConnections/{vnetName}",
  httpMethod: "DELETE",
  responses: {
    200: {},
    404: {
      isError: true
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.vnetName
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const updateVnetConnectionOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/virtualNetworkConnections/{vnetName}",
  httpMethod: "PATCH",
  responses: {
    200: {
      bodyMapper: Mappers.VnetInfoResource
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  requestBody: Parameters.connectionEnvelope4,
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.vnetName
  ],
  headerParameters: [Parameters.accept, Parameters.contentType],
  mediaType: "json",
  serializer
};
const getVnetConnectionGatewayOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/virtualNetworkConnections/{vnetName}/gateways/{gatewayName}",
  httpMethod: "GET",
  responses: {
    200: {
      bodyMapper: Mappers.VnetGateway
    },
    404: {
      isError: true
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.vnetName,
    Parameters.gatewayName
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const createOrUpdateVnetConnectionGatewayOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/virtualNetworkConnections/{vnetName}/gateways/{gatewayName}",
  httpMethod: "PUT",
  responses: {
    200: {
      bodyMapper: Mappers.VnetGateway
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  requestBody: Parameters.connectionEnvelope,
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.vnetName,
    Parameters.gatewayName
  ],
  headerParameters: [Parameters.accept, Parameters.contentType],
  mediaType: "json",
  serializer
};
const updateVnetConnectionGatewayOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/virtualNetworkConnections/{vnetName}/gateways/{gatewayName}",
  httpMethod: "PATCH",
  responses: {
    200: {
      bodyMapper: Mappers.VnetGateway
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  requestBody: Parameters.connectionEnvelope,
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.vnetName,
    Parameters.gatewayName
  ],
  headerParameters: [Parameters.accept, Parameters.contentType],
  mediaType: "json",
  serializer
};
const listWebJobsOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/webjobs",
  httpMethod: "GET",
  responses: {
    200: {
      bodyMapper: Mappers.WebJobCollection
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const getWebJobOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/webjobs/{webJobName}",
  httpMethod: "GET",
  responses: {
    200: {
      bodyMapper: Mappers.WebJob
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.webJobName
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const deployWorkflowArtifactsOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/deployWorkflowArtifacts",
  httpMethod: "POST",
  responses: {
    200: {},
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  requestBody: Parameters.workflowArtifacts,
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name
  ],
  headerParameters: [Parameters.accept, Parameters.contentType],
  mediaType: "json",
  serializer
};
const deployWorkflowArtifactsSlotOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/deployWorkflowArtifacts",
  httpMethod: "POST",
  responses: {
    200: {},
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  requestBody: Parameters.workflowArtifacts,
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.slot
  ],
  headerParameters: [Parameters.accept, Parameters.contentType],
  mediaType: "json",
  serializer
};
const listInstanceWorkflowsSlotOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/workflows",
  httpMethod: "GET",
  responses: {
    200: {
      bodyMapper: Mappers.WorkflowEnvelopeCollection
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.slot
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const getInstanceWorkflowSlotOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/workflows/{workflowName}",
  httpMethod: "GET",
  responses: {
    200: {
      bodyMapper: Mappers.WorkflowEnvelope
    },
    404: {
      isError: true
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.slot,
    Parameters.workflowName
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const listWorkflowsConnectionsSlotOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/listWorkflowsConnections",
  httpMethod: "POST",
  responses: {
    200: {
      bodyMapper: Mappers.WorkflowEnvelope
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.slot
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const listWorkflowsOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/workflows",
  httpMethod: "GET",
  responses: {
    200: {
      bodyMapper: Mappers.WorkflowEnvelopeCollection
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const getWorkflowOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/workflows/{workflowName}",
  httpMethod: "GET",
  responses: {
    200: {
      bodyMapper: Mappers.WorkflowEnvelope
    },
    404: {
      isError: true
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.workflowName
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const listWorkflowsConnectionsOperationSpec: coreClient.OperationSpec = {
  path:
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/listWorkflowsConnections",
  httpMethod: "POST",
  responses: {
    200: {
      bodyMapper: Mappers.WorkflowEnvelope
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  queryParameters: [Parameters.apiVersion],
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const listNextOperationSpec: coreClient.OperationSpec = {
  path: "{nextLink}",
  httpMethod: "GET",
  responses: {
    200: {
      bodyMapper: Mappers.WebAppCollection
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.nextLink
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const listByResourceGroupNextOperationSpec: coreClient.OperationSpec = {
  path: "{nextLink}",
  httpMethod: "GET",
  responses: {
    200: {
      bodyMapper: Mappers.WebAppCollection
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.nextLink
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const listBackupsNextOperationSpec: coreClient.OperationSpec = {
  path: "{nextLink}",
  httpMethod: "GET",
  responses: {
    200: {
      bodyMapper: Mappers.BackupItemCollection
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.nextLink
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const listBasicPublishingCredentialsPoliciesNextOperationSpec: coreClient.OperationSpec = {
  path: "{nextLink}",
  httpMethod: "GET",
  responses: {
    200: {
      bodyMapper: Mappers.PublishingCredentialsPoliciesCollection
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.nextLink
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const listConfigurationsNextOperationSpec: coreClient.OperationSpec = {
  path: "{nextLink}",
  httpMethod: "GET",
  responses: {
    200: {
      bodyMapper: Mappers.SiteConfigResourceCollection
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.nextLink
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const getAppSettingsKeyVaultReferencesNextOperationSpec: coreClient.OperationSpec = {
  path: "{nextLink}",
  httpMethod: "GET",
  responses: {
    200: {
      bodyMapper: Mappers.ApiKVReferenceCollection
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.nextLink
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const getSiteConnectionStringKeyVaultReferencesNextOperationSpec: coreClient.OperationSpec = {
  path: "{nextLink}",
  httpMethod: "GET",
  responses: {
    200: {
      bodyMapper: Mappers.ApiKVReferenceCollection
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.nextLink
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const listConfigurationSnapshotInfoNextOperationSpec: coreClient.OperationSpec = {
  path: "{nextLink}",
  httpMethod: "GET",
  responses: {
    200: {
      bodyMapper: Mappers.SiteConfigurationSnapshotInfoCollection
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.nextLink
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const listContinuousWebJobsNextOperationSpec: coreClient.OperationSpec = {
  path: "{nextLink}",
  httpMethod: "GET",
  responses: {
    200: {
      bodyMapper: Mappers.ContinuousWebJobCollection
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.nextLink
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const listProductionSiteDeploymentStatusesNextOperationSpec: coreClient.OperationSpec = {
  path: "{nextLink}",
  httpMethod: "GET",
  responses: {
    200: {
      bodyMapper: Mappers.CsmDeploymentStatusCollection
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.nextLink
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const listDeploymentsNextOperationSpec: coreClient.OperationSpec = {
  path: "{nextLink}",
  httpMethod: "GET",
  responses: {
    200: {
      bodyMapper: Mappers.DeploymentCollection
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.nextLink
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const listDomainOwnershipIdentifiersNextOperationSpec: coreClient.OperationSpec = {
  path: "{nextLink}",
  httpMethod: "GET",
  responses: {
    200: {
      bodyMapper: Mappers.IdentifierCollection
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.nextLink
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const listFunctionsNextOperationSpec: coreClient.OperationSpec = {
  path: "{nextLink}",
  httpMethod: "GET",
  responses: {
    200: {
      bodyMapper: Mappers.FunctionEnvelopeCollection
    },
    404: {
      isError: true
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.nextLink
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const listHostNameBindingsNextOperationSpec: coreClient.OperationSpec = {
  path: "{nextLink}",
  httpMethod: "GET",
  responses: {
    200: {
      bodyMapper: Mappers.HostNameBindingCollection
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.nextLink
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const listInstanceIdentifiersNextOperationSpec: coreClient.OperationSpec = {
  path: "{nextLink}",
  httpMethod: "GET",
  responses: {
    200: {
      bodyMapper: Mappers.WebAppInstanceStatusCollection
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.nextLink
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const listInstanceProcessesNextOperationSpec: coreClient.OperationSpec = {
  path: "{nextLink}",
  httpMethod: "GET",
  responses: {
    200: {
      bodyMapper: Mappers.ProcessInfoCollection
    },
    404: {
      isError: true
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.nextLink,
    Parameters.instanceId
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const listInstanceProcessModulesNextOperationSpec: coreClient.OperationSpec = {
  path: "{nextLink}",
  httpMethod: "GET",
  responses: {
    200: {
      bodyMapper: Mappers.ProcessModuleInfoCollection
    },
    404: {
      isError: true
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.nextLink,
    Parameters.instanceId,
    Parameters.processId
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const listInstanceProcessThreadsNextOperationSpec: coreClient.OperationSpec = {
  path: "{nextLink}",
  httpMethod: "GET",
  responses: {
    200: {
      bodyMapper: Mappers.ProcessThreadInfoCollection
    },
    404: {
      isError: true
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.nextLink,
    Parameters.instanceId,
    Parameters.processId
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const listSiteBackupsNextOperationSpec: coreClient.OperationSpec = {
  path: "{nextLink}",
  httpMethod: "GET",
  responses: {
    200: {
      bodyMapper: Mappers.BackupItemCollection
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.nextLink
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const listPerfMonCountersNextOperationSpec: coreClient.OperationSpec = {
  path: "{nextLink}",
  httpMethod: "GET",
  responses: {
    200: {
      bodyMapper: Mappers.PerfMonCounterCollection
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.nextLink
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const getPrivateEndpointConnectionListNextOperationSpec: coreClient.OperationSpec = {
  path: "{nextLink}",
  httpMethod: "GET",
  responses: {
    200: {
      bodyMapper: Mappers.PrivateEndpointConnectionCollection
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.nextLink
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const listProcessesNextOperationSpec: coreClient.OperationSpec = {
  path: "{nextLink}",
  httpMethod: "GET",
  responses: {
    200: {
      bodyMapper: Mappers.ProcessInfoCollection
    },
    404: {
      isError: true
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.nextLink
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const listProcessModulesNextOperationSpec: coreClient.OperationSpec = {
  path: "{nextLink}",
  httpMethod: "GET",
  responses: {
    200: {
      bodyMapper: Mappers.ProcessModuleInfoCollection
    },
    404: {
      isError: true
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.nextLink,
    Parameters.processId
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const listProcessThreadsNextOperationSpec: coreClient.OperationSpec = {
  path: "{nextLink}",
  httpMethod: "GET",
  responses: {
    200: {
      bodyMapper: Mappers.ProcessThreadInfoCollection
    },
    404: {
      isError: true
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.nextLink,
    Parameters.processId
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const listPublicCertificatesNextOperationSpec: coreClient.OperationSpec = {
  path: "{nextLink}",
  httpMethod: "GET",
  responses: {
    200: {
      bodyMapper: Mappers.PublicCertificateCollection
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.nextLink
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const listSiteExtensionsNextOperationSpec: coreClient.OperationSpec = {
  path: "{nextLink}",
  httpMethod: "GET",
  responses: {
    200: {
      bodyMapper: Mappers.SiteExtensionInfoCollection
    },
    404: {
      isError: true
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.nextLink
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const listSlotsNextOperationSpec: coreClient.OperationSpec = {
  path: "{nextLink}",
  httpMethod: "GET",
  responses: {
    200: {
      bodyMapper: Mappers.WebAppCollection
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.nextLink
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const listBackupsSlotNextOperationSpec: coreClient.OperationSpec = {
  path: "{nextLink}",
  httpMethod: "GET",
  responses: {
    200: {
      bodyMapper: Mappers.BackupItemCollection
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.nextLink,
    Parameters.slot
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const listBasicPublishingCredentialsPoliciesSlotNextOperationSpec: coreClient.OperationSpec = {
  path: "{nextLink}",
  httpMethod: "GET",
  responses: {
    200: {
      bodyMapper: Mappers.PublishingCredentialsPoliciesCollection
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.nextLink,
    Parameters.slot
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const listConfigurationsSlotNextOperationSpec: coreClient.OperationSpec = {
  path: "{nextLink}",
  httpMethod: "GET",
  responses: {
    200: {
      bodyMapper: Mappers.SiteConfigResourceCollection
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.nextLink,
    Parameters.slot
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const getAppSettingsKeyVaultReferencesSlotNextOperationSpec: coreClient.OperationSpec = {
  path: "{nextLink}",
  httpMethod: "GET",
  responses: {
    200: {
      bodyMapper: Mappers.ApiKVReferenceCollection
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.nextLink,
    Parameters.slot
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const getSiteConnectionStringKeyVaultReferencesSlotNextOperationSpec: coreClient.OperationSpec = {
  path: "{nextLink}",
  httpMethod: "GET",
  responses: {
    200: {
      bodyMapper: Mappers.ApiKVReferenceCollection
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.nextLink,
    Parameters.slot
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const listConfigurationSnapshotInfoSlotNextOperationSpec: coreClient.OperationSpec = {
  path: "{nextLink}",
  httpMethod: "GET",
  responses: {
    200: {
      bodyMapper: Mappers.SiteConfigurationSnapshotInfoCollection
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.nextLink,
    Parameters.slot
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const listContinuousWebJobsSlotNextOperationSpec: coreClient.OperationSpec = {
  path: "{nextLink}",
  httpMethod: "GET",
  responses: {
    200: {
      bodyMapper: Mappers.ContinuousWebJobCollection
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.nextLink,
    Parameters.slot
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const listSlotSiteDeploymentStatusesSlotNextOperationSpec: coreClient.OperationSpec = {
  path: "{nextLink}",
  httpMethod: "GET",
  responses: {
    200: {
      bodyMapper: Mappers.CsmDeploymentStatusCollection
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.nextLink,
    Parameters.slot
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const listDeploymentsSlotNextOperationSpec: coreClient.OperationSpec = {
  path: "{nextLink}",
  httpMethod: "GET",
  responses: {
    200: {
      bodyMapper: Mappers.DeploymentCollection
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.nextLink,
    Parameters.slot
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const listDomainOwnershipIdentifiersSlotNextOperationSpec: coreClient.OperationSpec = {
  path: "{nextLink}",
  httpMethod: "GET",
  responses: {
    200: {
      bodyMapper: Mappers.IdentifierCollection
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.nextLink,
    Parameters.slot
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const listInstanceFunctionsSlotNextOperationSpec: coreClient.OperationSpec = {
  path: "{nextLink}",
  httpMethod: "GET",
  responses: {
    200: {
      bodyMapper: Mappers.FunctionEnvelopeCollection
    },
    404: {
      isError: true
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.nextLink,
    Parameters.slot
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const listHostNameBindingsSlotNextOperationSpec: coreClient.OperationSpec = {
  path: "{nextLink}",
  httpMethod: "GET",
  responses: {
    200: {
      bodyMapper: Mappers.HostNameBindingCollection
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.nextLink,
    Parameters.slot
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const listInstanceIdentifiersSlotNextOperationSpec: coreClient.OperationSpec = {
  path: "{nextLink}",
  httpMethod: "GET",
  responses: {
    200: {
      bodyMapper: Mappers.WebAppInstanceStatusCollection
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.nextLink,
    Parameters.slot
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const listInstanceProcessesSlotNextOperationSpec: coreClient.OperationSpec = {
  path: "{nextLink}",
  httpMethod: "GET",
  responses: {
    200: {
      bodyMapper: Mappers.ProcessInfoCollection
    },
    404: {
      isError: true
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.nextLink,
    Parameters.slot,
    Parameters.instanceId
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const listInstanceProcessModulesSlotNextOperationSpec: coreClient.OperationSpec = {
  path: "{nextLink}",
  httpMethod: "GET",
  responses: {
    200: {
      bodyMapper: Mappers.ProcessModuleInfoCollection
    },
    404: {
      isError: true
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.nextLink,
    Parameters.slot,
    Parameters.instanceId,
    Parameters.processId
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const listInstanceProcessThreadsSlotNextOperationSpec: coreClient.OperationSpec = {
  path: "{nextLink}",
  httpMethod: "GET",
  responses: {
    200: {
      bodyMapper: Mappers.ProcessThreadInfoCollection
    },
    404: {
      isError: true
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.nextLink,
    Parameters.slot,
    Parameters.instanceId,
    Parameters.processId
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const listSiteBackupsSlotNextOperationSpec: coreClient.OperationSpec = {
  path: "{nextLink}",
  httpMethod: "GET",
  responses: {
    200: {
      bodyMapper: Mappers.BackupItemCollection
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.nextLink,
    Parameters.slot
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const listPerfMonCountersSlotNextOperationSpec: coreClient.OperationSpec = {
  path: "{nextLink}",
  httpMethod: "GET",
  responses: {
    200: {
      bodyMapper: Mappers.PerfMonCounterCollection
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.nextLink,
    Parameters.slot
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const getPrivateEndpointConnectionListSlotNextOperationSpec: coreClient.OperationSpec = {
  path: "{nextLink}",
  httpMethod: "GET",
  responses: {
    200: {
      bodyMapper: Mappers.PrivateEndpointConnectionCollection
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.nextLink,
    Parameters.slot
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const listProcessesSlotNextOperationSpec: coreClient.OperationSpec = {
  path: "{nextLink}",
  httpMethod: "GET",
  responses: {
    200: {
      bodyMapper: Mappers.ProcessInfoCollection
    },
    404: {
      isError: true
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.nextLink,
    Parameters.slot
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const listProcessModulesSlotNextOperationSpec: coreClient.OperationSpec = {
  path: "{nextLink}",
  httpMethod: "GET",
  responses: {
    200: {
      bodyMapper: Mappers.ProcessModuleInfoCollection
    },
    404: {
      isError: true
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.nextLink,
    Parameters.slot,
    Parameters.processId
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const listProcessThreadsSlotNextOperationSpec: coreClient.OperationSpec = {
  path: "{nextLink}",
  httpMethod: "GET",
  responses: {
    200: {
      bodyMapper: Mappers.ProcessThreadInfoCollection
    },
    404: {
      isError: true
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.nextLink,
    Parameters.slot,
    Parameters.processId
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const listPublicCertificatesSlotNextOperationSpec: coreClient.OperationSpec = {
  path: "{nextLink}",
  httpMethod: "GET",
  responses: {
    200: {
      bodyMapper: Mappers.PublicCertificateCollection
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.nextLink,
    Parameters.slot
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const listSiteExtensionsSlotNextOperationSpec: coreClient.OperationSpec = {
  path: "{nextLink}",
  httpMethod: "GET",
  responses: {
    200: {
      bodyMapper: Mappers.SiteExtensionInfoCollection
    },
    404: {
      isError: true
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.nextLink,
    Parameters.slot
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const listSlotDifferencesSlotNextOperationSpec: coreClient.OperationSpec = {
  path: "{nextLink}",
  httpMethod: "GET",
  responses: {
    200: {
      bodyMapper: Mappers.SlotDifferenceCollection
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.nextLink,
    Parameters.slot
  ],
  headerParameters: [Parameters.accept, Parameters.contentType],
  mediaType: "json",
  serializer
};
const listSnapshotsSlotNextOperationSpec: coreClient.OperationSpec = {
  path: "{nextLink}",
  httpMethod: "GET",
  responses: {
    200: {
      bodyMapper: Mappers.SnapshotCollection
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.nextLink,
    Parameters.slot
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const listSnapshotsFromDRSecondarySlotNextOperationSpec: coreClient.OperationSpec = {
  path: "{nextLink}",
  httpMethod: "GET",
  responses: {
    200: {
      bodyMapper: Mappers.SnapshotCollection
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.nextLink,
    Parameters.slot
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const listTriggeredWebJobsSlotNextOperationSpec: coreClient.OperationSpec = {
  path: "{nextLink}",
  httpMethod: "GET",
  responses: {
    200: {
      bodyMapper: Mappers.TriggeredWebJobCollection
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.nextLink,
    Parameters.slot
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const listTriggeredWebJobHistorySlotNextOperationSpec: coreClient.OperationSpec = {
  path: "{nextLink}",
  httpMethod: "GET",
  responses: {
    200: {
      bodyMapper: Mappers.TriggeredJobHistoryCollection
    },
    404: {
      isError: true
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.nextLink,
    Parameters.slot,
    Parameters.webJobName
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const listUsagesSlotNextOperationSpec: coreClient.OperationSpec = {
  path: "{nextLink}",
  httpMethod: "GET",
  responses: {
    200: {
      bodyMapper: Mappers.CsmUsageQuotaCollection
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.nextLink,
    Parameters.slot
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const listWebJobsSlotNextOperationSpec: coreClient.OperationSpec = {
  path: "{nextLink}",
  httpMethod: "GET",
  responses: {
    200: {
      bodyMapper: Mappers.WebJobCollection
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.nextLink,
    Parameters.slot
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const listSlotDifferencesFromProductionNextOperationSpec: coreClient.OperationSpec = {
  path: "{nextLink}",
  httpMethod: "GET",
  responses: {
    200: {
      bodyMapper: Mappers.SlotDifferenceCollection
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.nextLink
  ],
  headerParameters: [Parameters.accept, Parameters.contentType],
  mediaType: "json",
  serializer
};
const listSnapshotsNextOperationSpec: coreClient.OperationSpec = {
  path: "{nextLink}",
  httpMethod: "GET",
  responses: {
    200: {
      bodyMapper: Mappers.SnapshotCollection
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.nextLink
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const listSnapshotsFromDRSecondaryNextOperationSpec: coreClient.OperationSpec = {
  path: "{nextLink}",
  httpMethod: "GET",
  responses: {
    200: {
      bodyMapper: Mappers.SnapshotCollection
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.nextLink
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const listTriggeredWebJobsNextOperationSpec: coreClient.OperationSpec = {
  path: "{nextLink}",
  httpMethod: "GET",
  responses: {
    200: {
      bodyMapper: Mappers.TriggeredWebJobCollection
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.nextLink
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const listTriggeredWebJobHistoryNextOperationSpec: coreClient.OperationSpec = {
  path: "{nextLink}",
  httpMethod: "GET",
  responses: {
    200: {
      bodyMapper: Mappers.TriggeredJobHistoryCollection
    },
    404: {
      isError: true
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.nextLink,
    Parameters.webJobName
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const listUsagesNextOperationSpec: coreClient.OperationSpec = {
  path: "{nextLink}",
  httpMethod: "GET",
  responses: {
    200: {
      bodyMapper: Mappers.CsmUsageQuotaCollection
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.nextLink
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const listWebJobsNextOperationSpec: coreClient.OperationSpec = {
  path: "{nextLink}",
  httpMethod: "GET",
  responses: {
    200: {
      bodyMapper: Mappers.WebJobCollection
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.nextLink
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const listInstanceWorkflowsSlotNextOperationSpec: coreClient.OperationSpec = {
  path: "{nextLink}",
  httpMethod: "GET",
  responses: {
    200: {
      bodyMapper: Mappers.WorkflowEnvelopeCollection
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.nextLink,
    Parameters.slot
  ],
  headerParameters: [Parameters.accept],
  serializer
};
const listWorkflowsNextOperationSpec: coreClient.OperationSpec = {
  path: "{nextLink}",
  httpMethod: "GET",
  responses: {
    200: {
      bodyMapper: Mappers.WorkflowEnvelopeCollection
    },
    default: {
      bodyMapper: Mappers.DefaultErrorResponse
    }
  },
  urlParameters: [
    Parameters.$host,
    Parameters.subscriptionId,
    Parameters.resourceGroupName,
    Parameters.name,
    Parameters.nextLink
  ],
  headerParameters: [Parameters.accept],
  serializer
};
