1package web
2
3// Copyright (c) Microsoft and contributors.  All rights reserved.
4//
5// Licensed under the Apache License, Version 2.0 (the "License");
6// you may not use this file except in compliance with the License.
7// You may obtain a copy of the License at
8// http://www.apache.org/licenses/LICENSE-2.0
9//
10// Unless required by applicable law or agreed to in writing, software
11// distributed under the License is distributed on an "AS IS" BASIS,
12// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13//
14// See the License for the specific language governing permissions and
15// limitations under the License.
16//
17// Code generated by Microsoft (R) AutoRest Code Generator.
18// Changes may cause incorrect behavior and will be lost if the code is regenerated.
19
20import (
21	"context"
22	"encoding/json"
23	"github.com/Azure/go-autorest/autorest"
24	"github.com/Azure/go-autorest/autorest/azure"
25	"github.com/Azure/go-autorest/autorest/date"
26	"github.com/Azure/go-autorest/autorest/to"
27	"github.com/Azure/go-autorest/tracing"
28	"github.com/satori/go.uuid"
29	"io"
30	"net/http"
31)
32
33// The package's fully qualified name.
34const fqdn = "github.com/Azure/azure-sdk-for-go/services/web/mgmt/2016-09-01/web"
35
36// AccessControlEntryAction enumerates the values for access control entry action.
37type AccessControlEntryAction string
38
39const (
40	// Deny ...
41	Deny AccessControlEntryAction = "Deny"
42	// Permit ...
43	Permit AccessControlEntryAction = "Permit"
44)
45
46// PossibleAccessControlEntryActionValues returns an array of possible values for the AccessControlEntryAction const type.
47func PossibleAccessControlEntryActionValues() []AccessControlEntryAction {
48	return []AccessControlEntryAction{Deny, Permit}
49}
50
51// AppServicePlanRestrictions enumerates the values for app service plan restrictions.
52type AppServicePlanRestrictions string
53
54const (
55	// Basic ...
56	Basic AppServicePlanRestrictions = "Basic"
57	// Free ...
58	Free AppServicePlanRestrictions = "Free"
59	// None ...
60	None AppServicePlanRestrictions = "None"
61	// Premium ...
62	Premium AppServicePlanRestrictions = "Premium"
63	// Shared ...
64	Shared AppServicePlanRestrictions = "Shared"
65	// Standard ...
66	Standard AppServicePlanRestrictions = "Standard"
67)
68
69// PossibleAppServicePlanRestrictionsValues returns an array of possible values for the AppServicePlanRestrictions const type.
70func PossibleAppServicePlanRestrictionsValues() []AppServicePlanRestrictions {
71	return []AppServicePlanRestrictions{Basic, Free, None, Premium, Shared, Standard}
72}
73
74// AutoHealActionType enumerates the values for auto heal action type.
75type AutoHealActionType string
76
77const (
78	// CustomAction ...
79	CustomAction AutoHealActionType = "CustomAction"
80	// LogEvent ...
81	LogEvent AutoHealActionType = "LogEvent"
82	// Recycle ...
83	Recycle AutoHealActionType = "Recycle"
84)
85
86// PossibleAutoHealActionTypeValues returns an array of possible values for the AutoHealActionType const type.
87func PossibleAutoHealActionTypeValues() []AutoHealActionType {
88	return []AutoHealActionType{CustomAction, LogEvent, Recycle}
89}
90
91// AzureResourceType enumerates the values for azure resource type.
92type AzureResourceType string
93
94const (
95	// TrafficManager ...
96	TrafficManager AzureResourceType = "TrafficManager"
97	// Website ...
98	Website AzureResourceType = "Website"
99)
100
101// PossibleAzureResourceTypeValues returns an array of possible values for the AzureResourceType const type.
102func PossibleAzureResourceTypeValues() []AzureResourceType {
103	return []AzureResourceType{TrafficManager, Website}
104}
105
106// BackupItemStatus enumerates the values for backup item status.
107type BackupItemStatus string
108
109const (
110	// Created ...
111	Created BackupItemStatus = "Created"
112	// Deleted ...
113	Deleted BackupItemStatus = "Deleted"
114	// DeleteFailed ...
115	DeleteFailed BackupItemStatus = "DeleteFailed"
116	// DeleteInProgress ...
117	DeleteInProgress BackupItemStatus = "DeleteInProgress"
118	// Failed ...
119	Failed BackupItemStatus = "Failed"
120	// InProgress ...
121	InProgress BackupItemStatus = "InProgress"
122	// PartiallySucceeded ...
123	PartiallySucceeded BackupItemStatus = "PartiallySucceeded"
124	// Skipped ...
125	Skipped BackupItemStatus = "Skipped"
126	// Succeeded ...
127	Succeeded BackupItemStatus = "Succeeded"
128	// TimedOut ...
129	TimedOut BackupItemStatus = "TimedOut"
130)
131
132// PossibleBackupItemStatusValues returns an array of possible values for the BackupItemStatus const type.
133func PossibleBackupItemStatusValues() []BackupItemStatus {
134	return []BackupItemStatus{Created, Deleted, DeleteFailed, DeleteInProgress, Failed, InProgress, PartiallySucceeded, Skipped, Succeeded, TimedOut}
135}
136
137// BackupRestoreOperationType enumerates the values for backup restore operation type.
138type BackupRestoreOperationType string
139
140const (
141	// BackupRestoreOperationTypeClone ...
142	BackupRestoreOperationTypeClone BackupRestoreOperationType = "Clone"
143	// BackupRestoreOperationTypeDefault ...
144	BackupRestoreOperationTypeDefault BackupRestoreOperationType = "Default"
145	// BackupRestoreOperationTypeRelocation ...
146	BackupRestoreOperationTypeRelocation BackupRestoreOperationType = "Relocation"
147	// BackupRestoreOperationTypeSnapshot ...
148	BackupRestoreOperationTypeSnapshot BackupRestoreOperationType = "Snapshot"
149)
150
151// PossibleBackupRestoreOperationTypeValues returns an array of possible values for the BackupRestoreOperationType const type.
152func PossibleBackupRestoreOperationTypeValues() []BackupRestoreOperationType {
153	return []BackupRestoreOperationType{BackupRestoreOperationTypeClone, BackupRestoreOperationTypeDefault, BackupRestoreOperationTypeRelocation, BackupRestoreOperationTypeSnapshot}
154}
155
156// BuiltInAuthenticationProvider enumerates the values for built in authentication provider.
157type BuiltInAuthenticationProvider string
158
159const (
160	// AzureActiveDirectory ...
161	AzureActiveDirectory BuiltInAuthenticationProvider = "AzureActiveDirectory"
162	// Facebook ...
163	Facebook BuiltInAuthenticationProvider = "Facebook"
164	// Google ...
165	Google BuiltInAuthenticationProvider = "Google"
166	// MicrosoftAccount ...
167	MicrosoftAccount BuiltInAuthenticationProvider = "MicrosoftAccount"
168	// Twitter ...
169	Twitter BuiltInAuthenticationProvider = "Twitter"
170)
171
172// PossibleBuiltInAuthenticationProviderValues returns an array of possible values for the BuiltInAuthenticationProvider const type.
173func PossibleBuiltInAuthenticationProviderValues() []BuiltInAuthenticationProvider {
174	return []BuiltInAuthenticationProvider{AzureActiveDirectory, Facebook, Google, MicrosoftAccount, Twitter}
175}
176
177// CertificateOrderActionType enumerates the values for certificate order action type.
178type CertificateOrderActionType string
179
180const (
181	// CertificateExpirationWarning ...
182	CertificateExpirationWarning CertificateOrderActionType = "CertificateExpirationWarning"
183	// CertificateExpired ...
184	CertificateExpired CertificateOrderActionType = "CertificateExpired"
185	// CertificateIssued ...
186	CertificateIssued CertificateOrderActionType = "CertificateIssued"
187	// CertificateOrderCanceled ...
188	CertificateOrderCanceled CertificateOrderActionType = "CertificateOrderCanceled"
189	// CertificateOrderCreated ...
190	CertificateOrderCreated CertificateOrderActionType = "CertificateOrderCreated"
191	// CertificateRevoked ...
192	CertificateRevoked CertificateOrderActionType = "CertificateRevoked"
193	// DomainValidationComplete ...
194	DomainValidationComplete CertificateOrderActionType = "DomainValidationComplete"
195	// FraudCleared ...
196	FraudCleared CertificateOrderActionType = "FraudCleared"
197	// FraudDetected ...
198	FraudDetected CertificateOrderActionType = "FraudDetected"
199	// FraudDocumentationRequired ...
200	FraudDocumentationRequired CertificateOrderActionType = "FraudDocumentationRequired"
201	// OrgNameChange ...
202	OrgNameChange CertificateOrderActionType = "OrgNameChange"
203	// OrgValidationComplete ...
204	OrgValidationComplete CertificateOrderActionType = "OrgValidationComplete"
205	// SanDrop ...
206	SanDrop CertificateOrderActionType = "SanDrop"
207	// Unknown ...
208	Unknown CertificateOrderActionType = "Unknown"
209)
210
211// PossibleCertificateOrderActionTypeValues returns an array of possible values for the CertificateOrderActionType const type.
212func PossibleCertificateOrderActionTypeValues() []CertificateOrderActionType {
213	return []CertificateOrderActionType{CertificateExpirationWarning, CertificateExpired, CertificateIssued, CertificateOrderCanceled, CertificateOrderCreated, CertificateRevoked, DomainValidationComplete, FraudCleared, FraudDetected, FraudDocumentationRequired, OrgNameChange, OrgValidationComplete, SanDrop, Unknown}
214}
215
216// CertificateOrderStatus enumerates the values for certificate order status.
217type CertificateOrderStatus string
218
219const (
220	// Canceled ...
221	Canceled CertificateOrderStatus = "Canceled"
222	// Denied ...
223	Denied CertificateOrderStatus = "Denied"
224	// Expired ...
225	Expired CertificateOrderStatus = "Expired"
226	// Issued ...
227	Issued CertificateOrderStatus = "Issued"
228	// NotSubmitted ...
229	NotSubmitted CertificateOrderStatus = "NotSubmitted"
230	// Pendingissuance ...
231	Pendingissuance CertificateOrderStatus = "Pendingissuance"
232	// PendingRekey ...
233	PendingRekey CertificateOrderStatus = "PendingRekey"
234	// Pendingrevocation ...
235	Pendingrevocation CertificateOrderStatus = "Pendingrevocation"
236	// Revoked ...
237	Revoked CertificateOrderStatus = "Revoked"
238	// Unused ...
239	Unused CertificateOrderStatus = "Unused"
240)
241
242// PossibleCertificateOrderStatusValues returns an array of possible values for the CertificateOrderStatus const type.
243func PossibleCertificateOrderStatusValues() []CertificateOrderStatus {
244	return []CertificateOrderStatus{Canceled, Denied, Expired, Issued, NotSubmitted, Pendingissuance, PendingRekey, Pendingrevocation, Revoked, Unused}
245}
246
247// CertificateProductType enumerates the values for certificate product type.
248type CertificateProductType string
249
250const (
251	// StandardDomainValidatedSsl ...
252	StandardDomainValidatedSsl CertificateProductType = "StandardDomainValidatedSsl"
253	// StandardDomainValidatedWildCardSsl ...
254	StandardDomainValidatedWildCardSsl CertificateProductType = "StandardDomainValidatedWildCardSsl"
255)
256
257// PossibleCertificateProductTypeValues returns an array of possible values for the CertificateProductType const type.
258func PossibleCertificateProductTypeValues() []CertificateProductType {
259	return []CertificateProductType{StandardDomainValidatedSsl, StandardDomainValidatedWildCardSsl}
260}
261
262// Channels enumerates the values for channels.
263type Channels string
264
265const (
266	// All ...
267	All Channels = "All"
268	// API ...
269	API Channels = "Api"
270	// Email ...
271	Email Channels = "Email"
272	// Notification ...
273	Notification Channels = "Notification"
274	// Webhook ...
275	Webhook Channels = "Webhook"
276)
277
278// PossibleChannelsValues returns an array of possible values for the Channels const type.
279func PossibleChannelsValues() []Channels {
280	return []Channels{All, API, Email, Notification, Webhook}
281}
282
283// CheckNameResourceTypes enumerates the values for check name resource types.
284type CheckNameResourceTypes string
285
286const (
287	// CheckNameResourceTypesHostingEnvironment ...
288	CheckNameResourceTypesHostingEnvironment CheckNameResourceTypes = "HostingEnvironment"
289	// CheckNameResourceTypesMicrosoftWebhostingEnvironments ...
290	CheckNameResourceTypesMicrosoftWebhostingEnvironments CheckNameResourceTypes = "Microsoft.Web/hostingEnvironments"
291	// CheckNameResourceTypesMicrosoftWebpublishingUsers ...
292	CheckNameResourceTypesMicrosoftWebpublishingUsers CheckNameResourceTypes = "Microsoft.Web/publishingUsers"
293	// CheckNameResourceTypesMicrosoftWebsites ...
294	CheckNameResourceTypesMicrosoftWebsites CheckNameResourceTypes = "Microsoft.Web/sites"
295	// CheckNameResourceTypesMicrosoftWebsitesslots ...
296	CheckNameResourceTypesMicrosoftWebsitesslots CheckNameResourceTypes = "Microsoft.Web/sites/slots"
297	// CheckNameResourceTypesPublishingUser ...
298	CheckNameResourceTypesPublishingUser CheckNameResourceTypes = "PublishingUser"
299	// CheckNameResourceTypesSite ...
300	CheckNameResourceTypesSite CheckNameResourceTypes = "Site"
301	// CheckNameResourceTypesSlot ...
302	CheckNameResourceTypesSlot CheckNameResourceTypes = "Slot"
303)
304
305// PossibleCheckNameResourceTypesValues returns an array of possible values for the CheckNameResourceTypes const type.
306func PossibleCheckNameResourceTypesValues() []CheckNameResourceTypes {
307	return []CheckNameResourceTypes{CheckNameResourceTypesHostingEnvironment, CheckNameResourceTypesMicrosoftWebhostingEnvironments, CheckNameResourceTypesMicrosoftWebpublishingUsers, CheckNameResourceTypesMicrosoftWebsites, CheckNameResourceTypesMicrosoftWebsitesslots, CheckNameResourceTypesPublishingUser, CheckNameResourceTypesSite, CheckNameResourceTypesSlot}
308}
309
310// CloneAbilityResult enumerates the values for clone ability result.
311type CloneAbilityResult string
312
313const (
314	// Cloneable ...
315	Cloneable CloneAbilityResult = "Cloneable"
316	// NotCloneable ...
317	NotCloneable CloneAbilityResult = "NotCloneable"
318	// PartiallyCloneable ...
319	PartiallyCloneable CloneAbilityResult = "PartiallyCloneable"
320)
321
322// PossibleCloneAbilityResultValues returns an array of possible values for the CloneAbilityResult const type.
323func PossibleCloneAbilityResultValues() []CloneAbilityResult {
324	return []CloneAbilityResult{Cloneable, NotCloneable, PartiallyCloneable}
325}
326
327// ComputeModeOptions enumerates the values for compute mode options.
328type ComputeModeOptions string
329
330const (
331	// ComputeModeOptionsDedicated ...
332	ComputeModeOptionsDedicated ComputeModeOptions = "Dedicated"
333	// ComputeModeOptionsDynamic ...
334	ComputeModeOptionsDynamic ComputeModeOptions = "Dynamic"
335	// ComputeModeOptionsShared ...
336	ComputeModeOptionsShared ComputeModeOptions = "Shared"
337)
338
339// PossibleComputeModeOptionsValues returns an array of possible values for the ComputeModeOptions const type.
340func PossibleComputeModeOptionsValues() []ComputeModeOptions {
341	return []ComputeModeOptions{ComputeModeOptionsDedicated, ComputeModeOptionsDynamic, ComputeModeOptionsShared}
342}
343
344// ConnectionStringType enumerates the values for connection string type.
345type ConnectionStringType string
346
347const (
348	// APIHub ...
349	APIHub ConnectionStringType = "ApiHub"
350	// Custom ...
351	Custom ConnectionStringType = "Custom"
352	// DocDb ...
353	DocDb ConnectionStringType = "DocDb"
354	// EventHub ...
355	EventHub ConnectionStringType = "EventHub"
356	// MySQL ...
357	MySQL ConnectionStringType = "MySql"
358	// NotificationHub ...
359	NotificationHub ConnectionStringType = "NotificationHub"
360	// PostgreSQL ...
361	PostgreSQL ConnectionStringType = "PostgreSQL"
362	// RedisCache ...
363	RedisCache ConnectionStringType = "RedisCache"
364	// ServiceBus ...
365	ServiceBus ConnectionStringType = "ServiceBus"
366	// SQLAzure ...
367	SQLAzure ConnectionStringType = "SQLAzure"
368	// SQLServer ...
369	SQLServer ConnectionStringType = "SQLServer"
370)
371
372// PossibleConnectionStringTypeValues returns an array of possible values for the ConnectionStringType const type.
373func PossibleConnectionStringTypeValues() []ConnectionStringType {
374	return []ConnectionStringType{APIHub, Custom, DocDb, EventHub, MySQL, NotificationHub, PostgreSQL, RedisCache, ServiceBus, SQLAzure, SQLServer}
375}
376
377// ContinuousWebJobStatus enumerates the values for continuous web job status.
378type ContinuousWebJobStatus string
379
380const (
381	// Initializing ...
382	Initializing ContinuousWebJobStatus = "Initializing"
383	// PendingRestart ...
384	PendingRestart ContinuousWebJobStatus = "PendingRestart"
385	// Running ...
386	Running ContinuousWebJobStatus = "Running"
387	// Starting ...
388	Starting ContinuousWebJobStatus = "Starting"
389	// Stopped ...
390	Stopped ContinuousWebJobStatus = "Stopped"
391)
392
393// PossibleContinuousWebJobStatusValues returns an array of possible values for the ContinuousWebJobStatus const type.
394func PossibleContinuousWebJobStatusValues() []ContinuousWebJobStatus {
395	return []ContinuousWebJobStatus{Initializing, PendingRestart, Running, Starting, Stopped}
396}
397
398// CustomHostNameDNSRecordType enumerates the values for custom host name dns record type.
399type CustomHostNameDNSRecordType string
400
401const (
402	// A ...
403	A CustomHostNameDNSRecordType = "A"
404	// CName ...
405	CName CustomHostNameDNSRecordType = "CName"
406)
407
408// PossibleCustomHostNameDNSRecordTypeValues returns an array of possible values for the CustomHostNameDNSRecordType const type.
409func PossibleCustomHostNameDNSRecordTypeValues() []CustomHostNameDNSRecordType {
410	return []CustomHostNameDNSRecordType{A, CName}
411}
412
413// DatabaseType enumerates the values for database type.
414type DatabaseType string
415
416const (
417	// DatabaseTypeLocalMySQL ...
418	DatabaseTypeLocalMySQL DatabaseType = "LocalMySql"
419	// DatabaseTypeMySQL ...
420	DatabaseTypeMySQL DatabaseType = "MySql"
421	// DatabaseTypePostgreSQL ...
422	DatabaseTypePostgreSQL DatabaseType = "PostgreSql"
423	// DatabaseTypeSQLAzure ...
424	DatabaseTypeSQLAzure DatabaseType = "SqlAzure"
425)
426
427// PossibleDatabaseTypeValues returns an array of possible values for the DatabaseType const type.
428func PossibleDatabaseTypeValues() []DatabaseType {
429	return []DatabaseType{DatabaseTypeLocalMySQL, DatabaseTypeMySQL, DatabaseTypePostgreSQL, DatabaseTypeSQLAzure}
430}
431
432// DNSType enumerates the values for dns type.
433type DNSType string
434
435const (
436	// AzureDNS ...
437	AzureDNS DNSType = "AzureDns"
438	// DefaultDomainRegistrarDNS ...
439	DefaultDomainRegistrarDNS DNSType = "DefaultDomainRegistrarDns"
440)
441
442// PossibleDNSTypeValues returns an array of possible values for the DNSType const type.
443func PossibleDNSTypeValues() []DNSType {
444	return []DNSType{AzureDNS, DefaultDomainRegistrarDNS}
445}
446
447// DNSVerificationTestResult enumerates the values for dns verification test result.
448type DNSVerificationTestResult string
449
450const (
451	// DNSVerificationTestResultFailed ...
452	DNSVerificationTestResultFailed DNSVerificationTestResult = "Failed"
453	// DNSVerificationTestResultPassed ...
454	DNSVerificationTestResultPassed DNSVerificationTestResult = "Passed"
455	// DNSVerificationTestResultSkipped ...
456	DNSVerificationTestResultSkipped DNSVerificationTestResult = "Skipped"
457)
458
459// PossibleDNSVerificationTestResultValues returns an array of possible values for the DNSVerificationTestResult const type.
460func PossibleDNSVerificationTestResultValues() []DNSVerificationTestResult {
461	return []DNSVerificationTestResult{DNSVerificationTestResultFailed, DNSVerificationTestResultPassed, DNSVerificationTestResultSkipped}
462}
463
464// DomainStatus enumerates the values for domain status.
465type DomainStatus string
466
467const (
468	// DomainStatusActive ...
469	DomainStatusActive DomainStatus = "Active"
470	// DomainStatusAwaiting ...
471	DomainStatusAwaiting DomainStatus = "Awaiting"
472	// DomainStatusCancelled ...
473	DomainStatusCancelled DomainStatus = "Cancelled"
474	// DomainStatusConfiscated ...
475	DomainStatusConfiscated DomainStatus = "Confiscated"
476	// DomainStatusDisabled ...
477	DomainStatusDisabled DomainStatus = "Disabled"
478	// DomainStatusExcluded ...
479	DomainStatusExcluded DomainStatus = "Excluded"
480	// DomainStatusExpired ...
481	DomainStatusExpired DomainStatus = "Expired"
482	// DomainStatusFailed ...
483	DomainStatusFailed DomainStatus = "Failed"
484	// DomainStatusHeld ...
485	DomainStatusHeld DomainStatus = "Held"
486	// DomainStatusJSONConverterFailed ...
487	DomainStatusJSONConverterFailed DomainStatus = "JsonConverterFailed"
488	// DomainStatusLocked ...
489	DomainStatusLocked DomainStatus = "Locked"
490	// DomainStatusParked ...
491	DomainStatusParked DomainStatus = "Parked"
492	// DomainStatusPending ...
493	DomainStatusPending DomainStatus = "Pending"
494	// DomainStatusReserved ...
495	DomainStatusReserved DomainStatus = "Reserved"
496	// DomainStatusReverted ...
497	DomainStatusReverted DomainStatus = "Reverted"
498	// DomainStatusSuspended ...
499	DomainStatusSuspended DomainStatus = "Suspended"
500	// DomainStatusTransferred ...
501	DomainStatusTransferred DomainStatus = "Transferred"
502	// DomainStatusUnknown ...
503	DomainStatusUnknown DomainStatus = "Unknown"
504	// DomainStatusUnlocked ...
505	DomainStatusUnlocked DomainStatus = "Unlocked"
506	// DomainStatusUnparked ...
507	DomainStatusUnparked DomainStatus = "Unparked"
508	// DomainStatusUpdated ...
509	DomainStatusUpdated DomainStatus = "Updated"
510)
511
512// PossibleDomainStatusValues returns an array of possible values for the DomainStatus const type.
513func PossibleDomainStatusValues() []DomainStatus {
514	return []DomainStatus{DomainStatusActive, DomainStatusAwaiting, DomainStatusCancelled, DomainStatusConfiscated, DomainStatusDisabled, DomainStatusExcluded, DomainStatusExpired, DomainStatusFailed, DomainStatusHeld, DomainStatusJSONConverterFailed, DomainStatusLocked, DomainStatusParked, DomainStatusPending, DomainStatusReserved, DomainStatusReverted, DomainStatusSuspended, DomainStatusTransferred, DomainStatusUnknown, DomainStatusUnlocked, DomainStatusUnparked, DomainStatusUpdated}
515}
516
517// DomainType enumerates the values for domain type.
518type DomainType string
519
520const (
521	// Regular ...
522	Regular DomainType = "Regular"
523	// SoftDeleted ...
524	SoftDeleted DomainType = "SoftDeleted"
525)
526
527// PossibleDomainTypeValues returns an array of possible values for the DomainType const type.
528func PossibleDomainTypeValues() []DomainType {
529	return []DomainType{Regular, SoftDeleted}
530}
531
532// FrequencyUnit enumerates the values for frequency unit.
533type FrequencyUnit string
534
535const (
536	// Day ...
537	Day FrequencyUnit = "Day"
538	// Hour ...
539	Hour FrequencyUnit = "Hour"
540)
541
542// PossibleFrequencyUnitValues returns an array of possible values for the FrequencyUnit const type.
543func PossibleFrequencyUnitValues() []FrequencyUnit {
544	return []FrequencyUnit{Day, Hour}
545}
546
547// HostingEnvironmentStatus enumerates the values for hosting environment status.
548type HostingEnvironmentStatus string
549
550const (
551	// Deleting ...
552	Deleting HostingEnvironmentStatus = "Deleting"
553	// Preparing ...
554	Preparing HostingEnvironmentStatus = "Preparing"
555	// Ready ...
556	Ready HostingEnvironmentStatus = "Ready"
557	// Scaling ...
558	Scaling HostingEnvironmentStatus = "Scaling"
559)
560
561// PossibleHostingEnvironmentStatusValues returns an array of possible values for the HostingEnvironmentStatus const type.
562func PossibleHostingEnvironmentStatusValues() []HostingEnvironmentStatus {
563	return []HostingEnvironmentStatus{Deleting, Preparing, Ready, Scaling}
564}
565
566// HostNameType enumerates the values for host name type.
567type HostNameType string
568
569const (
570	// Managed ...
571	Managed HostNameType = "Managed"
572	// Verified ...
573	Verified HostNameType = "Verified"
574)
575
576// PossibleHostNameTypeValues returns an array of possible values for the HostNameType const type.
577func PossibleHostNameTypeValues() []HostNameType {
578	return []HostNameType{Managed, Verified}
579}
580
581// HostType enumerates the values for host type.
582type HostType string
583
584const (
585	// HostTypeRepository ...
586	HostTypeRepository HostType = "Repository"
587	// HostTypeStandard ...
588	HostTypeStandard HostType = "Standard"
589)
590
591// PossibleHostTypeValues returns an array of possible values for the HostType const type.
592func PossibleHostTypeValues() []HostType {
593	return []HostType{HostTypeRepository, HostTypeStandard}
594}
595
596// InAvailabilityReasonType enumerates the values for in availability reason type.
597type InAvailabilityReasonType string
598
599const (
600	// AlreadyExists ...
601	AlreadyExists InAvailabilityReasonType = "AlreadyExists"
602	// Invalid ...
603	Invalid InAvailabilityReasonType = "Invalid"
604)
605
606// PossibleInAvailabilityReasonTypeValues returns an array of possible values for the InAvailabilityReasonType const type.
607func PossibleInAvailabilityReasonTypeValues() []InAvailabilityReasonType {
608	return []InAvailabilityReasonType{AlreadyExists, Invalid}
609}
610
611// InternalLoadBalancingMode enumerates the values for internal load balancing mode.
612type InternalLoadBalancingMode string
613
614const (
615	// InternalLoadBalancingModeNone ...
616	InternalLoadBalancingModeNone InternalLoadBalancingMode = "None"
617	// InternalLoadBalancingModePublishing ...
618	InternalLoadBalancingModePublishing InternalLoadBalancingMode = "Publishing"
619	// InternalLoadBalancingModeWeb ...
620	InternalLoadBalancingModeWeb InternalLoadBalancingMode = "Web"
621)
622
623// PossibleInternalLoadBalancingModeValues returns an array of possible values for the InternalLoadBalancingMode const type.
624func PossibleInternalLoadBalancingModeValues() []InternalLoadBalancingMode {
625	return []InternalLoadBalancingMode{InternalLoadBalancingModeNone, InternalLoadBalancingModePublishing, InternalLoadBalancingModeWeb}
626}
627
628// IssueType enumerates the values for issue type.
629type IssueType string
630
631const (
632	// AppCrash ...
633	AppCrash IssueType = "AppCrash"
634	// AppDeployment ...
635	AppDeployment IssueType = "AppDeployment"
636	// AseDeployment ...
637	AseDeployment IssueType = "AseDeployment"
638	// Other ...
639	Other IssueType = "Other"
640	// PlatformIssue ...
641	PlatformIssue IssueType = "PlatformIssue"
642	// RuntimeIssueDetected ...
643	RuntimeIssueDetected IssueType = "RuntimeIssueDetected"
644	// ServiceIncident ...
645	ServiceIncident IssueType = "ServiceIncident"
646	// UserIssue ...
647	UserIssue IssueType = "UserIssue"
648)
649
650// PossibleIssueTypeValues returns an array of possible values for the IssueType const type.
651func PossibleIssueTypeValues() []IssueType {
652	return []IssueType{AppCrash, AppDeployment, AseDeployment, Other, PlatformIssue, RuntimeIssueDetected, ServiceIncident, UserIssue}
653}
654
655// JobType enumerates the values for job type.
656type JobType string
657
658const (
659	// Continuous ...
660	Continuous JobType = "Continuous"
661	// Triggered ...
662	Triggered JobType = "Triggered"
663)
664
665// PossibleJobTypeValues returns an array of possible values for the JobType const type.
666func PossibleJobTypeValues() []JobType {
667	return []JobType{Continuous, Triggered}
668}
669
670// KeyVaultSecretStatus enumerates the values for key vault secret status.
671type KeyVaultSecretStatus string
672
673const (
674	// KeyVaultSecretStatusAzureServiceUnauthorizedToAccessKeyVault ...
675	KeyVaultSecretStatusAzureServiceUnauthorizedToAccessKeyVault KeyVaultSecretStatus = "AzureServiceUnauthorizedToAccessKeyVault"
676	// KeyVaultSecretStatusCertificateOrderFailed ...
677	KeyVaultSecretStatusCertificateOrderFailed KeyVaultSecretStatus = "CertificateOrderFailed"
678	// KeyVaultSecretStatusExternalPrivateKey ...
679	KeyVaultSecretStatusExternalPrivateKey KeyVaultSecretStatus = "ExternalPrivateKey"
680	// KeyVaultSecretStatusInitialized ...
681	KeyVaultSecretStatusInitialized KeyVaultSecretStatus = "Initialized"
682	// KeyVaultSecretStatusKeyVaultDoesNotExist ...
683	KeyVaultSecretStatusKeyVaultDoesNotExist KeyVaultSecretStatus = "KeyVaultDoesNotExist"
684	// KeyVaultSecretStatusKeyVaultSecretDoesNotExist ...
685	KeyVaultSecretStatusKeyVaultSecretDoesNotExist KeyVaultSecretStatus = "KeyVaultSecretDoesNotExist"
686	// KeyVaultSecretStatusOperationNotPermittedOnKeyVault ...
687	KeyVaultSecretStatusOperationNotPermittedOnKeyVault KeyVaultSecretStatus = "OperationNotPermittedOnKeyVault"
688	// KeyVaultSecretStatusSucceeded ...
689	KeyVaultSecretStatusSucceeded KeyVaultSecretStatus = "Succeeded"
690	// KeyVaultSecretStatusUnknown ...
691	KeyVaultSecretStatusUnknown KeyVaultSecretStatus = "Unknown"
692	// KeyVaultSecretStatusUnknownError ...
693	KeyVaultSecretStatusUnknownError KeyVaultSecretStatus = "UnknownError"
694	// KeyVaultSecretStatusWaitingOnCertificateOrder ...
695	KeyVaultSecretStatusWaitingOnCertificateOrder KeyVaultSecretStatus = "WaitingOnCertificateOrder"
696)
697
698// PossibleKeyVaultSecretStatusValues returns an array of possible values for the KeyVaultSecretStatus const type.
699func PossibleKeyVaultSecretStatusValues() []KeyVaultSecretStatus {
700	return []KeyVaultSecretStatus{KeyVaultSecretStatusAzureServiceUnauthorizedToAccessKeyVault, KeyVaultSecretStatusCertificateOrderFailed, KeyVaultSecretStatusExternalPrivateKey, KeyVaultSecretStatusInitialized, KeyVaultSecretStatusKeyVaultDoesNotExist, KeyVaultSecretStatusKeyVaultSecretDoesNotExist, KeyVaultSecretStatusOperationNotPermittedOnKeyVault, KeyVaultSecretStatusSucceeded, KeyVaultSecretStatusUnknown, KeyVaultSecretStatusUnknownError, KeyVaultSecretStatusWaitingOnCertificateOrder}
701}
702
703// LogLevel enumerates the values for log level.
704type LogLevel string
705
706const (
707	// Error ...
708	Error LogLevel = "Error"
709	// Information ...
710	Information LogLevel = "Information"
711	// Off ...
712	Off LogLevel = "Off"
713	// Verbose ...
714	Verbose LogLevel = "Verbose"
715	// Warning ...
716	Warning LogLevel = "Warning"
717)
718
719// PossibleLogLevelValues returns an array of possible values for the LogLevel const type.
720func PossibleLogLevelValues() []LogLevel {
721	return []LogLevel{Error, Information, Off, Verbose, Warning}
722}
723
724// ManagedPipelineMode enumerates the values for managed pipeline mode.
725type ManagedPipelineMode string
726
727const (
728	// Classic ...
729	Classic ManagedPipelineMode = "Classic"
730	// Integrated ...
731	Integrated ManagedPipelineMode = "Integrated"
732)
733
734// PossibleManagedPipelineModeValues returns an array of possible values for the ManagedPipelineMode const type.
735func PossibleManagedPipelineModeValues() []ManagedPipelineMode {
736	return []ManagedPipelineMode{Classic, Integrated}
737}
738
739// ManagedServiceIdentityType enumerates the values for managed service identity type.
740type ManagedServiceIdentityType string
741
742const (
743	// SystemAssigned ...
744	SystemAssigned ManagedServiceIdentityType = "SystemAssigned"
745)
746
747// PossibleManagedServiceIdentityTypeValues returns an array of possible values for the ManagedServiceIdentityType const type.
748func PossibleManagedServiceIdentityTypeValues() []ManagedServiceIdentityType {
749	return []ManagedServiceIdentityType{SystemAssigned}
750}
751
752// MSDeployLogEntryType enumerates the values for ms deploy log entry type.
753type MSDeployLogEntryType string
754
755const (
756	// MSDeployLogEntryTypeError ...
757	MSDeployLogEntryTypeError MSDeployLogEntryType = "Error"
758	// MSDeployLogEntryTypeMessage ...
759	MSDeployLogEntryTypeMessage MSDeployLogEntryType = "Message"
760	// MSDeployLogEntryTypeWarning ...
761	MSDeployLogEntryTypeWarning MSDeployLogEntryType = "Warning"
762)
763
764// PossibleMSDeployLogEntryTypeValues returns an array of possible values for the MSDeployLogEntryType const type.
765func PossibleMSDeployLogEntryTypeValues() []MSDeployLogEntryType {
766	return []MSDeployLogEntryType{MSDeployLogEntryTypeError, MSDeployLogEntryTypeMessage, MSDeployLogEntryTypeWarning}
767}
768
769// MSDeployProvisioningState enumerates the values for ms deploy provisioning state.
770type MSDeployProvisioningState string
771
772const (
773	// MSDeployProvisioningStateAccepted ...
774	MSDeployProvisioningStateAccepted MSDeployProvisioningState = "accepted"
775	// MSDeployProvisioningStateCanceled ...
776	MSDeployProvisioningStateCanceled MSDeployProvisioningState = "canceled"
777	// MSDeployProvisioningStateFailed ...
778	MSDeployProvisioningStateFailed MSDeployProvisioningState = "failed"
779	// MSDeployProvisioningStateRunning ...
780	MSDeployProvisioningStateRunning MSDeployProvisioningState = "running"
781	// MSDeployProvisioningStateSucceeded ...
782	MSDeployProvisioningStateSucceeded MSDeployProvisioningState = "succeeded"
783)
784
785// PossibleMSDeployProvisioningStateValues returns an array of possible values for the MSDeployProvisioningState const type.
786func PossibleMSDeployProvisioningStateValues() []MSDeployProvisioningState {
787	return []MSDeployProvisioningState{MSDeployProvisioningStateAccepted, MSDeployProvisioningStateCanceled, MSDeployProvisioningStateFailed, MSDeployProvisioningStateRunning, MSDeployProvisioningStateSucceeded}
788}
789
790// MySQLMigrationType enumerates the values for my sql migration type.
791type MySQLMigrationType string
792
793const (
794	// LocalToRemote ...
795	LocalToRemote MySQLMigrationType = "LocalToRemote"
796	// RemoteToLocal ...
797	RemoteToLocal MySQLMigrationType = "RemoteToLocal"
798)
799
800// PossibleMySQLMigrationTypeValues returns an array of possible values for the MySQLMigrationType const type.
801func PossibleMySQLMigrationTypeValues() []MySQLMigrationType {
802	return []MySQLMigrationType{LocalToRemote, RemoteToLocal}
803}
804
805// NotificationLevel enumerates the values for notification level.
806type NotificationLevel string
807
808const (
809	// NotificationLevelCritical ...
810	NotificationLevelCritical NotificationLevel = "Critical"
811	// NotificationLevelInformation ...
812	NotificationLevelInformation NotificationLevel = "Information"
813	// NotificationLevelNonUrgentSuggestion ...
814	NotificationLevelNonUrgentSuggestion NotificationLevel = "NonUrgentSuggestion"
815	// NotificationLevelWarning ...
816	NotificationLevelWarning NotificationLevel = "Warning"
817)
818
819// PossibleNotificationLevelValues returns an array of possible values for the NotificationLevel const type.
820func PossibleNotificationLevelValues() []NotificationLevel {
821	return []NotificationLevel{NotificationLevelCritical, NotificationLevelInformation, NotificationLevelNonUrgentSuggestion, NotificationLevelWarning}
822}
823
824// OperationStatus enumerates the values for operation status.
825type OperationStatus string
826
827const (
828	// OperationStatusCreated ...
829	OperationStatusCreated OperationStatus = "Created"
830	// OperationStatusFailed ...
831	OperationStatusFailed OperationStatus = "Failed"
832	// OperationStatusInProgress ...
833	OperationStatusInProgress OperationStatus = "InProgress"
834	// OperationStatusSucceeded ...
835	OperationStatusSucceeded OperationStatus = "Succeeded"
836	// OperationStatusTimedOut ...
837	OperationStatusTimedOut OperationStatus = "TimedOut"
838)
839
840// PossibleOperationStatusValues returns an array of possible values for the OperationStatus const type.
841func PossibleOperationStatusValues() []OperationStatus {
842	return []OperationStatus{OperationStatusCreated, OperationStatusFailed, OperationStatusInProgress, OperationStatusSucceeded, OperationStatusTimedOut}
843}
844
845// ProvisioningState enumerates the values for provisioning state.
846type ProvisioningState string
847
848const (
849	// ProvisioningStateCanceled ...
850	ProvisioningStateCanceled ProvisioningState = "Canceled"
851	// ProvisioningStateDeleting ...
852	ProvisioningStateDeleting ProvisioningState = "Deleting"
853	// ProvisioningStateFailed ...
854	ProvisioningStateFailed ProvisioningState = "Failed"
855	// ProvisioningStateInProgress ...
856	ProvisioningStateInProgress ProvisioningState = "InProgress"
857	// ProvisioningStateSucceeded ...
858	ProvisioningStateSucceeded ProvisioningState = "Succeeded"
859)
860
861// PossibleProvisioningStateValues returns an array of possible values for the ProvisioningState const type.
862func PossibleProvisioningStateValues() []ProvisioningState {
863	return []ProvisioningState{ProvisioningStateCanceled, ProvisioningStateDeleting, ProvisioningStateFailed, ProvisioningStateInProgress, ProvisioningStateSucceeded}
864}
865
866// PublicCertificateLocation enumerates the values for public certificate location.
867type PublicCertificateLocation string
868
869const (
870	// PublicCertificateLocationCurrentUserMy ...
871	PublicCertificateLocationCurrentUserMy PublicCertificateLocation = "CurrentUserMy"
872	// PublicCertificateLocationLocalMachineMy ...
873	PublicCertificateLocationLocalMachineMy PublicCertificateLocation = "LocalMachineMy"
874	// PublicCertificateLocationUnknown ...
875	PublicCertificateLocationUnknown PublicCertificateLocation = "Unknown"
876)
877
878// PossiblePublicCertificateLocationValues returns an array of possible values for the PublicCertificateLocation const type.
879func PossiblePublicCertificateLocationValues() []PublicCertificateLocation {
880	return []PublicCertificateLocation{PublicCertificateLocationCurrentUserMy, PublicCertificateLocationLocalMachineMy, PublicCertificateLocationUnknown}
881}
882
883// PublishingProfileFormat enumerates the values for publishing profile format.
884type PublishingProfileFormat string
885
886const (
887	// FileZilla3 ...
888	FileZilla3 PublishingProfileFormat = "FileZilla3"
889	// Ftp ...
890	Ftp PublishingProfileFormat = "Ftp"
891	// WebDeploy ...
892	WebDeploy PublishingProfileFormat = "WebDeploy"
893)
894
895// PossiblePublishingProfileFormatValues returns an array of possible values for the PublishingProfileFormat const type.
896func PossiblePublishingProfileFormatValues() []PublishingProfileFormat {
897	return []PublishingProfileFormat{FileZilla3, Ftp, WebDeploy}
898}
899
900// RenderingType enumerates the values for rendering type.
901type RenderingType string
902
903const (
904	// NoGraph ...
905	NoGraph RenderingType = "NoGraph"
906	// Table ...
907	Table RenderingType = "Table"
908	// TimeSeries ...
909	TimeSeries RenderingType = "TimeSeries"
910	// TimeSeriesPerInstance ...
911	TimeSeriesPerInstance RenderingType = "TimeSeriesPerInstance"
912)
913
914// PossibleRenderingTypeValues returns an array of possible values for the RenderingType const type.
915func PossibleRenderingTypeValues() []RenderingType {
916	return []RenderingType{NoGraph, Table, TimeSeries, TimeSeriesPerInstance}
917}
918
919// ResourceScopeType enumerates the values for resource scope type.
920type ResourceScopeType string
921
922const (
923	// ServerFarm ...
924	ServerFarm ResourceScopeType = "ServerFarm"
925	// Subscription ...
926	Subscription ResourceScopeType = "Subscription"
927	// WebSite ...
928	WebSite ResourceScopeType = "WebSite"
929)
930
931// PossibleResourceScopeTypeValues returns an array of possible values for the ResourceScopeType const type.
932func PossibleResourceScopeTypeValues() []ResourceScopeType {
933	return []ResourceScopeType{ServerFarm, Subscription, WebSite}
934}
935
936// RouteType enumerates the values for route type.
937type RouteType string
938
939const (
940	// DEFAULT ...
941	DEFAULT RouteType = "DEFAULT"
942	// INHERITED ...
943	INHERITED RouteType = "INHERITED"
944	// STATIC ...
945	STATIC RouteType = "STATIC"
946)
947
948// PossibleRouteTypeValues returns an array of possible values for the RouteType const type.
949func PossibleRouteTypeValues() []RouteType {
950	return []RouteType{DEFAULT, INHERITED, STATIC}
951}
952
953// ScmType enumerates the values for scm type.
954type ScmType string
955
956const (
957	// ScmTypeBitbucketGit ...
958	ScmTypeBitbucketGit ScmType = "BitbucketGit"
959	// ScmTypeBitbucketHg ...
960	ScmTypeBitbucketHg ScmType = "BitbucketHg"
961	// ScmTypeCodePlexGit ...
962	ScmTypeCodePlexGit ScmType = "CodePlexGit"
963	// ScmTypeCodePlexHg ...
964	ScmTypeCodePlexHg ScmType = "CodePlexHg"
965	// ScmTypeDropbox ...
966	ScmTypeDropbox ScmType = "Dropbox"
967	// ScmTypeExternalGit ...
968	ScmTypeExternalGit ScmType = "ExternalGit"
969	// ScmTypeExternalHg ...
970	ScmTypeExternalHg ScmType = "ExternalHg"
971	// ScmTypeGitHub ...
972	ScmTypeGitHub ScmType = "GitHub"
973	// ScmTypeLocalGit ...
974	ScmTypeLocalGit ScmType = "LocalGit"
975	// ScmTypeNone ...
976	ScmTypeNone ScmType = "None"
977	// ScmTypeOneDrive ...
978	ScmTypeOneDrive ScmType = "OneDrive"
979	// ScmTypeTfs ...
980	ScmTypeTfs ScmType = "Tfs"
981	// ScmTypeVSO ...
982	ScmTypeVSO ScmType = "VSO"
983)
984
985// PossibleScmTypeValues returns an array of possible values for the ScmType const type.
986func PossibleScmTypeValues() []ScmType {
987	return []ScmType{ScmTypeBitbucketGit, ScmTypeBitbucketHg, ScmTypeCodePlexGit, ScmTypeCodePlexHg, ScmTypeDropbox, ScmTypeExternalGit, ScmTypeExternalHg, ScmTypeGitHub, ScmTypeLocalGit, ScmTypeNone, ScmTypeOneDrive, ScmTypeTfs, ScmTypeVSO}
988}
989
990// SiteAvailabilityState enumerates the values for site availability state.
991type SiteAvailabilityState string
992
993const (
994	// DisasterRecoveryMode ...
995	DisasterRecoveryMode SiteAvailabilityState = "DisasterRecoveryMode"
996	// Limited ...
997	Limited SiteAvailabilityState = "Limited"
998	// Normal ...
999	Normal SiteAvailabilityState = "Normal"
1000)
1001
1002// PossibleSiteAvailabilityStateValues returns an array of possible values for the SiteAvailabilityState const type.
1003func PossibleSiteAvailabilityStateValues() []SiteAvailabilityState {
1004	return []SiteAvailabilityState{DisasterRecoveryMode, Limited, Normal}
1005}
1006
1007// SiteExtensionType enumerates the values for site extension type.
1008type SiteExtensionType string
1009
1010const (
1011	// Gallery ...
1012	Gallery SiteExtensionType = "Gallery"
1013	// WebRoot ...
1014	WebRoot SiteExtensionType = "WebRoot"
1015)
1016
1017// PossibleSiteExtensionTypeValues returns an array of possible values for the SiteExtensionType const type.
1018func PossibleSiteExtensionTypeValues() []SiteExtensionType {
1019	return []SiteExtensionType{Gallery, WebRoot}
1020}
1021
1022// SiteLoadBalancing enumerates the values for site load balancing.
1023type SiteLoadBalancing string
1024
1025const (
1026	// LeastRequests ...
1027	LeastRequests SiteLoadBalancing = "LeastRequests"
1028	// LeastResponseTime ...
1029	LeastResponseTime SiteLoadBalancing = "LeastResponseTime"
1030	// RequestHash ...
1031	RequestHash SiteLoadBalancing = "RequestHash"
1032	// WeightedRoundRobin ...
1033	WeightedRoundRobin SiteLoadBalancing = "WeightedRoundRobin"
1034	// WeightedTotalTraffic ...
1035	WeightedTotalTraffic SiteLoadBalancing = "WeightedTotalTraffic"
1036)
1037
1038// PossibleSiteLoadBalancingValues returns an array of possible values for the SiteLoadBalancing const type.
1039func PossibleSiteLoadBalancingValues() []SiteLoadBalancing {
1040	return []SiteLoadBalancing{LeastRequests, LeastResponseTime, RequestHash, WeightedRoundRobin, WeightedTotalTraffic}
1041}
1042
1043// SkuName enumerates the values for sku name.
1044type SkuName string
1045
1046const (
1047	// SkuNameBasic ...
1048	SkuNameBasic SkuName = "Basic"
1049	// SkuNameDynamic ...
1050	SkuNameDynamic SkuName = "Dynamic"
1051	// SkuNameFree ...
1052	SkuNameFree SkuName = "Free"
1053	// SkuNameIsolated ...
1054	SkuNameIsolated SkuName = "Isolated"
1055	// SkuNamePremium ...
1056	SkuNamePremium SkuName = "Premium"
1057	// SkuNamePremiumV2 ...
1058	SkuNamePremiumV2 SkuName = "PremiumV2"
1059	// SkuNameShared ...
1060	SkuNameShared SkuName = "Shared"
1061	// SkuNameStandard ...
1062	SkuNameStandard SkuName = "Standard"
1063)
1064
1065// PossibleSkuNameValues returns an array of possible values for the SkuName const type.
1066func PossibleSkuNameValues() []SkuName {
1067	return []SkuName{SkuNameBasic, SkuNameDynamic, SkuNameFree, SkuNameIsolated, SkuNamePremium, SkuNamePremiumV2, SkuNameShared, SkuNameStandard}
1068}
1069
1070// SolutionType enumerates the values for solution type.
1071type SolutionType string
1072
1073const (
1074	// BestPractices ...
1075	BestPractices SolutionType = "BestPractices"
1076	// DeepInvestigation ...
1077	DeepInvestigation SolutionType = "DeepInvestigation"
1078	// QuickSolution ...
1079	QuickSolution SolutionType = "QuickSolution"
1080)
1081
1082// PossibleSolutionTypeValues returns an array of possible values for the SolutionType const type.
1083func PossibleSolutionTypeValues() []SolutionType {
1084	return []SolutionType{BestPractices, DeepInvestigation, QuickSolution}
1085}
1086
1087// SslState enumerates the values for ssl state.
1088type SslState string
1089
1090const (
1091	// Disabled ...
1092	Disabled SslState = "Disabled"
1093	// IPBasedEnabled ...
1094	IPBasedEnabled SslState = "IpBasedEnabled"
1095	// SniEnabled ...
1096	SniEnabled SslState = "SniEnabled"
1097)
1098
1099// PossibleSslStateValues returns an array of possible values for the SslState const type.
1100func PossibleSslStateValues() []SslState {
1101	return []SslState{Disabled, IPBasedEnabled, SniEnabled}
1102}
1103
1104// StatusOptions enumerates the values for status options.
1105type StatusOptions string
1106
1107const (
1108	// StatusOptionsCreating ...
1109	StatusOptionsCreating StatusOptions = "Creating"
1110	// StatusOptionsPending ...
1111	StatusOptionsPending StatusOptions = "Pending"
1112	// StatusOptionsReady ...
1113	StatusOptionsReady StatusOptions = "Ready"
1114)
1115
1116// PossibleStatusOptionsValues returns an array of possible values for the StatusOptions const type.
1117func PossibleStatusOptionsValues() []StatusOptions {
1118	return []StatusOptions{StatusOptionsCreating, StatusOptionsPending, StatusOptionsReady}
1119}
1120
1121// SupportedTLSVersions enumerates the values for supported tls versions.
1122type SupportedTLSVersions string
1123
1124const (
1125	// OneFullStopOne ...
1126	OneFullStopOne SupportedTLSVersions = "1.1"
1127	// OneFullStopTwo ...
1128	OneFullStopTwo SupportedTLSVersions = "1.2"
1129	// OneFullStopZero ...
1130	OneFullStopZero SupportedTLSVersions = "1.0"
1131)
1132
1133// PossibleSupportedTLSVersionsValues returns an array of possible values for the SupportedTLSVersions const type.
1134func PossibleSupportedTLSVersionsValues() []SupportedTLSVersions {
1135	return []SupportedTLSVersions{OneFullStopOne, OneFullStopTwo, OneFullStopZero}
1136}
1137
1138// TriggeredWebJobStatus enumerates the values for triggered web job status.
1139type TriggeredWebJobStatus string
1140
1141const (
1142	// TriggeredWebJobStatusError ...
1143	TriggeredWebJobStatusError TriggeredWebJobStatus = "Error"
1144	// TriggeredWebJobStatusFailed ...
1145	TriggeredWebJobStatusFailed TriggeredWebJobStatus = "Failed"
1146	// TriggeredWebJobStatusSuccess ...
1147	TriggeredWebJobStatusSuccess TriggeredWebJobStatus = "Success"
1148)
1149
1150// PossibleTriggeredWebJobStatusValues returns an array of possible values for the TriggeredWebJobStatus const type.
1151func PossibleTriggeredWebJobStatusValues() []TriggeredWebJobStatus {
1152	return []TriggeredWebJobStatus{TriggeredWebJobStatusError, TriggeredWebJobStatusFailed, TriggeredWebJobStatusSuccess}
1153}
1154
1155// UnauthenticatedClientAction enumerates the values for unauthenticated client action.
1156type UnauthenticatedClientAction string
1157
1158const (
1159	// AllowAnonymous ...
1160	AllowAnonymous UnauthenticatedClientAction = "AllowAnonymous"
1161	// RedirectToLoginPage ...
1162	RedirectToLoginPage UnauthenticatedClientAction = "RedirectToLoginPage"
1163)
1164
1165// PossibleUnauthenticatedClientActionValues returns an array of possible values for the UnauthenticatedClientAction const type.
1166func PossibleUnauthenticatedClientActionValues() []UnauthenticatedClientAction {
1167	return []UnauthenticatedClientAction{AllowAnonymous, RedirectToLoginPage}
1168}
1169
1170// UsageState enumerates the values for usage state.
1171type UsageState string
1172
1173const (
1174	// UsageStateExceeded ...
1175	UsageStateExceeded UsageState = "Exceeded"
1176	// UsageStateNormal ...
1177	UsageStateNormal UsageState = "Normal"
1178)
1179
1180// PossibleUsageStateValues returns an array of possible values for the UsageState const type.
1181func PossibleUsageStateValues() []UsageState {
1182	return []UsageState{UsageStateExceeded, UsageStateNormal}
1183}
1184
1185// ValidateResourceTypes enumerates the values for validate resource types.
1186type ValidateResourceTypes string
1187
1188const (
1189	// ValidateResourceTypesServerFarm ...
1190	ValidateResourceTypesServerFarm ValidateResourceTypes = "ServerFarm"
1191	// ValidateResourceTypesSite ...
1192	ValidateResourceTypesSite ValidateResourceTypes = "Site"
1193)
1194
1195// PossibleValidateResourceTypesValues returns an array of possible values for the ValidateResourceTypes const type.
1196func PossibleValidateResourceTypesValues() []ValidateResourceTypes {
1197	return []ValidateResourceTypes{ValidateResourceTypesServerFarm, ValidateResourceTypesSite}
1198}
1199
1200// WorkerSizeOptions enumerates the values for worker size options.
1201type WorkerSizeOptions string
1202
1203const (
1204	// D1 ...
1205	D1 WorkerSizeOptions = "D1"
1206	// D2 ...
1207	D2 WorkerSizeOptions = "D2"
1208	// D3 ...
1209	D3 WorkerSizeOptions = "D3"
1210	// Default ...
1211	Default WorkerSizeOptions = "Default"
1212	// Large ...
1213	Large WorkerSizeOptions = "Large"
1214	// Medium ...
1215	Medium WorkerSizeOptions = "Medium"
1216	// Small ...
1217	Small WorkerSizeOptions = "Small"
1218)
1219
1220// PossibleWorkerSizeOptionsValues returns an array of possible values for the WorkerSizeOptions const type.
1221func PossibleWorkerSizeOptionsValues() []WorkerSizeOptions {
1222	return []WorkerSizeOptions{D1, D2, D3, Default, Large, Medium, Small}
1223}
1224
1225// AbnormalTimePeriod class representing Abnormal Time Period identified in diagnosis
1226type AbnormalTimePeriod struct {
1227	// StartTime - Start time of the downtime
1228	StartTime *date.Time `json:"startTime,omitempty"`
1229	// EndTime - End time of the downtime
1230	EndTime *date.Time `json:"endTime,omitempty"`
1231	// Events - List of Possible Cause of downtime
1232	Events *[]DetectorAbnormalTimePeriod `json:"events,omitempty"`
1233	// Solutions - List of proposed solutions
1234	Solutions *[]Solution `json:"solutions,omitempty"`
1235}
1236
1237// Address address information for domain registration.
1238type Address struct {
1239	// Address1 - First line of an Address.
1240	Address1 *string `json:"address1,omitempty"`
1241	// Address2 - The second line of the Address. Optional.
1242	Address2 *string `json:"address2,omitempty"`
1243	// City - The city for the address.
1244	City *string `json:"city,omitempty"`
1245	// Country - The country for the address.
1246	Country *string `json:"country,omitempty"`
1247	// PostalCode - The postal code for the address.
1248	PostalCode *string `json:"postalCode,omitempty"`
1249	// State - The state or province for the address.
1250	State *string `json:"state,omitempty"`
1251}
1252
1253// AddressResponse describes main public IP address and any extra virtual IPs.
1254type AddressResponse struct {
1255	autorest.Response `json:"-"`
1256	// ServiceIPAddress - Main public virtual IP.
1257	ServiceIPAddress *string `json:"serviceIpAddress,omitempty"`
1258	// InternalIPAddress - Virtual Network internal IP address of the App Service Environment if it is in internal load-balancing mode.
1259	InternalIPAddress *string `json:"internalIpAddress,omitempty"`
1260	// OutboundIPAddresses - IP addresses appearing on outbound connections.
1261	OutboundIPAddresses *[]string `json:"outboundIpAddresses,omitempty"`
1262	// VipMappings - Additional virtual IPs.
1263	VipMappings *[]VirtualIPMapping `json:"vipMappings,omitempty"`
1264}
1265
1266// AnalysisData class Representing Detector Evidence used for analysis
1267type AnalysisData struct {
1268	// Source - Name of the Detector
1269	Source *string `json:"source,omitempty"`
1270	// DetectorDefinition - Detector Definition
1271	DetectorDefinition *DetectorDefinition `json:"detectorDefinition,omitempty"`
1272	// Metrics - Source Metrics
1273	Metrics *[]DiagnosticMetricSet `json:"metrics,omitempty"`
1274	// Data - Additional Source Data
1275	Data *[][]NameValuePair `json:"data,omitempty"`
1276	// DetectorMetaData - Detector Meta Data
1277	DetectorMetaData *ResponseMetaData `json:"detectorMetaData,omitempty"`
1278}
1279
1280// AnalysisDefinition definition of Analysis
1281type AnalysisDefinition struct {
1282	// AnalysisDefinitionProperties - AnalysisDefinition resource specific properties
1283	*AnalysisDefinitionProperties `json:"properties,omitempty"`
1284	// ID - READ-ONLY; Resource Id.
1285	ID *string `json:"id,omitempty"`
1286	// Name - READ-ONLY; Resource Name.
1287	Name *string `json:"name,omitempty"`
1288	// Kind - Kind of resource.
1289	Kind *string `json:"kind,omitempty"`
1290	// Type - READ-ONLY; Resource type.
1291	Type *string `json:"type,omitempty"`
1292}
1293
1294// MarshalJSON is the custom marshaler for AnalysisDefinition.
1295func (ad AnalysisDefinition) MarshalJSON() ([]byte, error) {
1296	objectMap := make(map[string]interface{})
1297	if ad.AnalysisDefinitionProperties != nil {
1298		objectMap["properties"] = ad.AnalysisDefinitionProperties
1299	}
1300	if ad.Kind != nil {
1301		objectMap["kind"] = ad.Kind
1302	}
1303	return json.Marshal(objectMap)
1304}
1305
1306// UnmarshalJSON is the custom unmarshaler for AnalysisDefinition struct.
1307func (ad *AnalysisDefinition) UnmarshalJSON(body []byte) error {
1308	var m map[string]*json.RawMessage
1309	err := json.Unmarshal(body, &m)
1310	if err != nil {
1311		return err
1312	}
1313	for k, v := range m {
1314		switch k {
1315		case "properties":
1316			if v != nil {
1317				var analysisDefinitionProperties AnalysisDefinitionProperties
1318				err = json.Unmarshal(*v, &analysisDefinitionProperties)
1319				if err != nil {
1320					return err
1321				}
1322				ad.AnalysisDefinitionProperties = &analysisDefinitionProperties
1323			}
1324		case "id":
1325			if v != nil {
1326				var ID string
1327				err = json.Unmarshal(*v, &ID)
1328				if err != nil {
1329					return err
1330				}
1331				ad.ID = &ID
1332			}
1333		case "name":
1334			if v != nil {
1335				var name string
1336				err = json.Unmarshal(*v, &name)
1337				if err != nil {
1338					return err
1339				}
1340				ad.Name = &name
1341			}
1342		case "kind":
1343			if v != nil {
1344				var kind string
1345				err = json.Unmarshal(*v, &kind)
1346				if err != nil {
1347					return err
1348				}
1349				ad.Kind = &kind
1350			}
1351		case "type":
1352			if v != nil {
1353				var typeVar string
1354				err = json.Unmarshal(*v, &typeVar)
1355				if err != nil {
1356					return err
1357				}
1358				ad.Type = &typeVar
1359			}
1360		}
1361	}
1362
1363	return nil
1364}
1365
1366// AnalysisDefinitionProperties analysisDefinition resource specific properties
1367type AnalysisDefinitionProperties struct {
1368	// Description - READ-ONLY; Description of the Analysis
1369	Description *string `json:"description,omitempty"`
1370}
1371
1372// APIDefinitionInfo information about the formal API definition for the app.
1373type APIDefinitionInfo struct {
1374	// URL - The URL of the API definition.
1375	URL *string `json:"url,omitempty"`
1376}
1377
1378// AppCollection collection of App Service apps.
1379type AppCollection struct {
1380	autorest.Response `json:"-"`
1381	// Value - Collection of resources.
1382	Value *[]Site `json:"value,omitempty"`
1383	// NextLink - READ-ONLY; Link to next page of resources.
1384	NextLink *string `json:"nextLink,omitempty"`
1385}
1386
1387// AppCollectionIterator provides access to a complete listing of Site values.
1388type AppCollectionIterator struct {
1389	i    int
1390	page AppCollectionPage
1391}
1392
1393// NextWithContext advances to the next value.  If there was an error making
1394// the request the iterator does not advance and the error is returned.
1395func (iter *AppCollectionIterator) NextWithContext(ctx context.Context) (err error) {
1396	if tracing.IsEnabled() {
1397		ctx = tracing.StartSpan(ctx, fqdn+"/AppCollectionIterator.NextWithContext")
1398		defer func() {
1399			sc := -1
1400			if iter.Response().Response.Response != nil {
1401				sc = iter.Response().Response.Response.StatusCode
1402			}
1403			tracing.EndSpan(ctx, sc, err)
1404		}()
1405	}
1406	iter.i++
1407	if iter.i < len(iter.page.Values()) {
1408		return nil
1409	}
1410	err = iter.page.NextWithContext(ctx)
1411	if err != nil {
1412		iter.i--
1413		return err
1414	}
1415	iter.i = 0
1416	return nil
1417}
1418
1419// Next advances to the next value.  If there was an error making
1420// the request the iterator does not advance and the error is returned.
1421// Deprecated: Use NextWithContext() instead.
1422func (iter *AppCollectionIterator) Next() error {
1423	return iter.NextWithContext(context.Background())
1424}
1425
1426// NotDone returns true if the enumeration should be started or is not yet complete.
1427func (iter AppCollectionIterator) NotDone() bool {
1428	return iter.page.NotDone() && iter.i < len(iter.page.Values())
1429}
1430
1431// Response returns the raw server response from the last page request.
1432func (iter AppCollectionIterator) Response() AppCollection {
1433	return iter.page.Response()
1434}
1435
1436// Value returns the current value or a zero-initialized value if the
1437// iterator has advanced beyond the end of the collection.
1438func (iter AppCollectionIterator) Value() Site {
1439	if !iter.page.NotDone() {
1440		return Site{}
1441	}
1442	return iter.page.Values()[iter.i]
1443}
1444
1445// Creates a new instance of the AppCollectionIterator type.
1446func NewAppCollectionIterator(page AppCollectionPage) AppCollectionIterator {
1447	return AppCollectionIterator{page: page}
1448}
1449
1450// IsEmpty returns true if the ListResult contains no values.
1451func (ac AppCollection) IsEmpty() bool {
1452	return ac.Value == nil || len(*ac.Value) == 0
1453}
1454
1455// appCollectionPreparer prepares a request to retrieve the next set of results.
1456// It returns nil if no more results exist.
1457func (ac AppCollection) appCollectionPreparer(ctx context.Context) (*http.Request, error) {
1458	if ac.NextLink == nil || len(to.String(ac.NextLink)) < 1 {
1459		return nil, nil
1460	}
1461	return autorest.Prepare((&http.Request{}).WithContext(ctx),
1462		autorest.AsJSON(),
1463		autorest.AsGet(),
1464		autorest.WithBaseURL(to.String(ac.NextLink)))
1465}
1466
1467// AppCollectionPage contains a page of Site values.
1468type AppCollectionPage struct {
1469	fn func(context.Context, AppCollection) (AppCollection, error)
1470	ac AppCollection
1471}
1472
1473// NextWithContext advances to the next page of values.  If there was an error making
1474// the request the page does not advance and the error is returned.
1475func (page *AppCollectionPage) NextWithContext(ctx context.Context) (err error) {
1476	if tracing.IsEnabled() {
1477		ctx = tracing.StartSpan(ctx, fqdn+"/AppCollectionPage.NextWithContext")
1478		defer func() {
1479			sc := -1
1480			if page.Response().Response.Response != nil {
1481				sc = page.Response().Response.Response.StatusCode
1482			}
1483			tracing.EndSpan(ctx, sc, err)
1484		}()
1485	}
1486	next, err := page.fn(ctx, page.ac)
1487	if err != nil {
1488		return err
1489	}
1490	page.ac = next
1491	return nil
1492}
1493
1494// Next advances to the next page of values.  If there was an error making
1495// the request the page does not advance and the error is returned.
1496// Deprecated: Use NextWithContext() instead.
1497func (page *AppCollectionPage) Next() error {
1498	return page.NextWithContext(context.Background())
1499}
1500
1501// NotDone returns true if the page enumeration should be started or is not yet complete.
1502func (page AppCollectionPage) NotDone() bool {
1503	return !page.ac.IsEmpty()
1504}
1505
1506// Response returns the raw server response from the last page request.
1507func (page AppCollectionPage) Response() AppCollection {
1508	return page.ac
1509}
1510
1511// Values returns the slice of values for the current page or nil if there are no values.
1512func (page AppCollectionPage) Values() []Site {
1513	if page.ac.IsEmpty() {
1514		return nil
1515	}
1516	return *page.ac.Value
1517}
1518
1519// Creates a new instance of the AppCollectionPage type.
1520func NewAppCollectionPage(getNextPage func(context.Context, AppCollection) (AppCollection, error)) AppCollectionPage {
1521	return AppCollectionPage{fn: getNextPage}
1522}
1523
1524// AppInstanceCollection collection of app instances.
1525type AppInstanceCollection struct {
1526	autorest.Response `json:"-"`
1527	// Value - Collection of resources.
1528	Value *[]SiteInstance `json:"value,omitempty"`
1529	// NextLink - READ-ONLY; Link to next page of resources.
1530	NextLink *string `json:"nextLink,omitempty"`
1531}
1532
1533// AppInstanceCollectionIterator provides access to a complete listing of SiteInstance values.
1534type AppInstanceCollectionIterator struct {
1535	i    int
1536	page AppInstanceCollectionPage
1537}
1538
1539// NextWithContext advances to the next value.  If there was an error making
1540// the request the iterator does not advance and the error is returned.
1541func (iter *AppInstanceCollectionIterator) NextWithContext(ctx context.Context) (err error) {
1542	if tracing.IsEnabled() {
1543		ctx = tracing.StartSpan(ctx, fqdn+"/AppInstanceCollectionIterator.NextWithContext")
1544		defer func() {
1545			sc := -1
1546			if iter.Response().Response.Response != nil {
1547				sc = iter.Response().Response.Response.StatusCode
1548			}
1549			tracing.EndSpan(ctx, sc, err)
1550		}()
1551	}
1552	iter.i++
1553	if iter.i < len(iter.page.Values()) {
1554		return nil
1555	}
1556	err = iter.page.NextWithContext(ctx)
1557	if err != nil {
1558		iter.i--
1559		return err
1560	}
1561	iter.i = 0
1562	return nil
1563}
1564
1565// Next advances to the next value.  If there was an error making
1566// the request the iterator does not advance and the error is returned.
1567// Deprecated: Use NextWithContext() instead.
1568func (iter *AppInstanceCollectionIterator) Next() error {
1569	return iter.NextWithContext(context.Background())
1570}
1571
1572// NotDone returns true if the enumeration should be started or is not yet complete.
1573func (iter AppInstanceCollectionIterator) NotDone() bool {
1574	return iter.page.NotDone() && iter.i < len(iter.page.Values())
1575}
1576
1577// Response returns the raw server response from the last page request.
1578func (iter AppInstanceCollectionIterator) Response() AppInstanceCollection {
1579	return iter.page.Response()
1580}
1581
1582// Value returns the current value or a zero-initialized value if the
1583// iterator has advanced beyond the end of the collection.
1584func (iter AppInstanceCollectionIterator) Value() SiteInstance {
1585	if !iter.page.NotDone() {
1586		return SiteInstance{}
1587	}
1588	return iter.page.Values()[iter.i]
1589}
1590
1591// Creates a new instance of the AppInstanceCollectionIterator type.
1592func NewAppInstanceCollectionIterator(page AppInstanceCollectionPage) AppInstanceCollectionIterator {
1593	return AppInstanceCollectionIterator{page: page}
1594}
1595
1596// IsEmpty returns true if the ListResult contains no values.
1597func (aic AppInstanceCollection) IsEmpty() bool {
1598	return aic.Value == nil || len(*aic.Value) == 0
1599}
1600
1601// appInstanceCollectionPreparer prepares a request to retrieve the next set of results.
1602// It returns nil if no more results exist.
1603func (aic AppInstanceCollection) appInstanceCollectionPreparer(ctx context.Context) (*http.Request, error) {
1604	if aic.NextLink == nil || len(to.String(aic.NextLink)) < 1 {
1605		return nil, nil
1606	}
1607	return autorest.Prepare((&http.Request{}).WithContext(ctx),
1608		autorest.AsJSON(),
1609		autorest.AsGet(),
1610		autorest.WithBaseURL(to.String(aic.NextLink)))
1611}
1612
1613// AppInstanceCollectionPage contains a page of SiteInstance values.
1614type AppInstanceCollectionPage struct {
1615	fn  func(context.Context, AppInstanceCollection) (AppInstanceCollection, error)
1616	aic AppInstanceCollection
1617}
1618
1619// NextWithContext advances to the next page of values.  If there was an error making
1620// the request the page does not advance and the error is returned.
1621func (page *AppInstanceCollectionPage) NextWithContext(ctx context.Context) (err error) {
1622	if tracing.IsEnabled() {
1623		ctx = tracing.StartSpan(ctx, fqdn+"/AppInstanceCollectionPage.NextWithContext")
1624		defer func() {
1625			sc := -1
1626			if page.Response().Response.Response != nil {
1627				sc = page.Response().Response.Response.StatusCode
1628			}
1629			tracing.EndSpan(ctx, sc, err)
1630		}()
1631	}
1632	next, err := page.fn(ctx, page.aic)
1633	if err != nil {
1634		return err
1635	}
1636	page.aic = next
1637	return nil
1638}
1639
1640// Next advances to the next page of values.  If there was an error making
1641// the request the page does not advance and the error is returned.
1642// Deprecated: Use NextWithContext() instead.
1643func (page *AppInstanceCollectionPage) Next() error {
1644	return page.NextWithContext(context.Background())
1645}
1646
1647// NotDone returns true if the page enumeration should be started or is not yet complete.
1648func (page AppInstanceCollectionPage) NotDone() bool {
1649	return !page.aic.IsEmpty()
1650}
1651
1652// Response returns the raw server response from the last page request.
1653func (page AppInstanceCollectionPage) Response() AppInstanceCollection {
1654	return page.aic
1655}
1656
1657// Values returns the slice of values for the current page or nil if there are no values.
1658func (page AppInstanceCollectionPage) Values() []SiteInstance {
1659	if page.aic.IsEmpty() {
1660		return nil
1661	}
1662	return *page.aic.Value
1663}
1664
1665// Creates a new instance of the AppInstanceCollectionPage type.
1666func NewAppInstanceCollectionPage(getNextPage func(context.Context, AppInstanceCollection) (AppInstanceCollection, error)) AppInstanceCollectionPage {
1667	return AppInstanceCollectionPage{fn: getNextPage}
1668}
1669
1670// ApplicationLogsConfig application logs configuration.
1671type ApplicationLogsConfig struct {
1672	// FileSystem - Application logs to file system configuration.
1673	FileSystem *FileSystemApplicationLogsConfig `json:"fileSystem,omitempty"`
1674	// AzureTableStorage - Application logs to azure table storage configuration.
1675	AzureTableStorage *AzureTableStorageApplicationLogsConfig `json:"azureTableStorage,omitempty"`
1676	// AzureBlobStorage - Application logs to blob storage configuration.
1677	AzureBlobStorage *AzureBlobStorageApplicationLogsConfig `json:"azureBlobStorage,omitempty"`
1678}
1679
1680// ApplicationStack application stack.
1681type ApplicationStack struct {
1682	// Name - Application stack name.
1683	Name *string `json:"name,omitempty"`
1684	// Display - Application stack display name.
1685	Display *string `json:"display,omitempty"`
1686	// Dependency - Application stack dependency.
1687	Dependency *string `json:"dependency,omitempty"`
1688	// MajorVersions - List of major versions available.
1689	MajorVersions *[]StackMajorVersion `json:"majorVersions,omitempty"`
1690	// Frameworks - List of frameworks associated with application stack.
1691	Frameworks *[]ApplicationStack `json:"frameworks,omitempty"`
1692}
1693
1694// ApplicationStackCollection collection of Application Stacks
1695type ApplicationStackCollection struct {
1696	autorest.Response `json:"-"`
1697	// Value - Collection of resources.
1698	Value *[]ApplicationStack `json:"value,omitempty"`
1699	// NextLink - READ-ONLY; Link to next page of resources.
1700	NextLink *string `json:"nextLink,omitempty"`
1701}
1702
1703// ApplicationStackCollectionIterator provides access to a complete listing of ApplicationStack values.
1704type ApplicationStackCollectionIterator struct {
1705	i    int
1706	page ApplicationStackCollectionPage
1707}
1708
1709// NextWithContext advances to the next value.  If there was an error making
1710// the request the iterator does not advance and the error is returned.
1711func (iter *ApplicationStackCollectionIterator) NextWithContext(ctx context.Context) (err error) {
1712	if tracing.IsEnabled() {
1713		ctx = tracing.StartSpan(ctx, fqdn+"/ApplicationStackCollectionIterator.NextWithContext")
1714		defer func() {
1715			sc := -1
1716			if iter.Response().Response.Response != nil {
1717				sc = iter.Response().Response.Response.StatusCode
1718			}
1719			tracing.EndSpan(ctx, sc, err)
1720		}()
1721	}
1722	iter.i++
1723	if iter.i < len(iter.page.Values()) {
1724		return nil
1725	}
1726	err = iter.page.NextWithContext(ctx)
1727	if err != nil {
1728		iter.i--
1729		return err
1730	}
1731	iter.i = 0
1732	return nil
1733}
1734
1735// Next advances to the next value.  If there was an error making
1736// the request the iterator does not advance and the error is returned.
1737// Deprecated: Use NextWithContext() instead.
1738func (iter *ApplicationStackCollectionIterator) Next() error {
1739	return iter.NextWithContext(context.Background())
1740}
1741
1742// NotDone returns true if the enumeration should be started or is not yet complete.
1743func (iter ApplicationStackCollectionIterator) NotDone() bool {
1744	return iter.page.NotDone() && iter.i < len(iter.page.Values())
1745}
1746
1747// Response returns the raw server response from the last page request.
1748func (iter ApplicationStackCollectionIterator) Response() ApplicationStackCollection {
1749	return iter.page.Response()
1750}
1751
1752// Value returns the current value or a zero-initialized value if the
1753// iterator has advanced beyond the end of the collection.
1754func (iter ApplicationStackCollectionIterator) Value() ApplicationStack {
1755	if !iter.page.NotDone() {
1756		return ApplicationStack{}
1757	}
1758	return iter.page.Values()[iter.i]
1759}
1760
1761// Creates a new instance of the ApplicationStackCollectionIterator type.
1762func NewApplicationStackCollectionIterator(page ApplicationStackCollectionPage) ApplicationStackCollectionIterator {
1763	return ApplicationStackCollectionIterator{page: page}
1764}
1765
1766// IsEmpty returns true if the ListResult contains no values.
1767func (asc ApplicationStackCollection) IsEmpty() bool {
1768	return asc.Value == nil || len(*asc.Value) == 0
1769}
1770
1771// applicationStackCollectionPreparer prepares a request to retrieve the next set of results.
1772// It returns nil if no more results exist.
1773func (asc ApplicationStackCollection) applicationStackCollectionPreparer(ctx context.Context) (*http.Request, error) {
1774	if asc.NextLink == nil || len(to.String(asc.NextLink)) < 1 {
1775		return nil, nil
1776	}
1777	return autorest.Prepare((&http.Request{}).WithContext(ctx),
1778		autorest.AsJSON(),
1779		autorest.AsGet(),
1780		autorest.WithBaseURL(to.String(asc.NextLink)))
1781}
1782
1783// ApplicationStackCollectionPage contains a page of ApplicationStack values.
1784type ApplicationStackCollectionPage struct {
1785	fn  func(context.Context, ApplicationStackCollection) (ApplicationStackCollection, error)
1786	asc ApplicationStackCollection
1787}
1788
1789// NextWithContext advances to the next page of values.  If there was an error making
1790// the request the page does not advance and the error is returned.
1791func (page *ApplicationStackCollectionPage) NextWithContext(ctx context.Context) (err error) {
1792	if tracing.IsEnabled() {
1793		ctx = tracing.StartSpan(ctx, fqdn+"/ApplicationStackCollectionPage.NextWithContext")
1794		defer func() {
1795			sc := -1
1796			if page.Response().Response.Response != nil {
1797				sc = page.Response().Response.Response.StatusCode
1798			}
1799			tracing.EndSpan(ctx, sc, err)
1800		}()
1801	}
1802	next, err := page.fn(ctx, page.asc)
1803	if err != nil {
1804		return err
1805	}
1806	page.asc = next
1807	return nil
1808}
1809
1810// Next advances to the next page of values.  If there was an error making
1811// the request the page does not advance and the error is returned.
1812// Deprecated: Use NextWithContext() instead.
1813func (page *ApplicationStackCollectionPage) Next() error {
1814	return page.NextWithContext(context.Background())
1815}
1816
1817// NotDone returns true if the page enumeration should be started or is not yet complete.
1818func (page ApplicationStackCollectionPage) NotDone() bool {
1819	return !page.asc.IsEmpty()
1820}
1821
1822// Response returns the raw server response from the last page request.
1823func (page ApplicationStackCollectionPage) Response() ApplicationStackCollection {
1824	return page.asc
1825}
1826
1827// Values returns the slice of values for the current page or nil if there are no values.
1828func (page ApplicationStackCollectionPage) Values() []ApplicationStack {
1829	if page.asc.IsEmpty() {
1830		return nil
1831	}
1832	return *page.asc.Value
1833}
1834
1835// Creates a new instance of the ApplicationStackCollectionPage type.
1836func NewApplicationStackCollectionPage(getNextPage func(context.Context, ApplicationStackCollection) (ApplicationStackCollection, error)) ApplicationStackCollectionPage {
1837	return ApplicationStackCollectionPage{fn: getNextPage}
1838}
1839
1840// AppsCreateFunctionFuture an abstraction for monitoring and retrieving the results of a long-running
1841// operation.
1842type AppsCreateFunctionFuture struct {
1843	azure.Future
1844}
1845
1846// Result returns the result of the asynchronous operation.
1847// If the operation has not completed it will return an error.
1848func (future *AppsCreateFunctionFuture) Result(client AppsClient) (fe FunctionEnvelope, err error) {
1849	var done bool
1850	done, err = future.DoneWithContext(context.Background(), client)
1851	if err != nil {
1852		err = autorest.NewErrorWithError(err, "web.AppsCreateFunctionFuture", "Result", future.Response(), "Polling failure")
1853		return
1854	}
1855	if !done {
1856		err = azure.NewAsyncOpIncompleteError("web.AppsCreateFunctionFuture")
1857		return
1858	}
1859	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
1860	if fe.Response.Response, err = future.GetResult(sender); err == nil && fe.Response.Response.StatusCode != http.StatusNoContent {
1861		fe, err = client.CreateFunctionResponder(fe.Response.Response)
1862		if err != nil {
1863			err = autorest.NewErrorWithError(err, "web.AppsCreateFunctionFuture", "Result", fe.Response.Response, "Failure responding to request")
1864		}
1865	}
1866	return
1867}
1868
1869// AppsCreateInstanceFunctionSlotFuture an abstraction for monitoring and retrieving the results of a
1870// long-running operation.
1871type AppsCreateInstanceFunctionSlotFuture struct {
1872	azure.Future
1873}
1874
1875// Result returns the result of the asynchronous operation.
1876// If the operation has not completed it will return an error.
1877func (future *AppsCreateInstanceFunctionSlotFuture) Result(client AppsClient) (fe FunctionEnvelope, err error) {
1878	var done bool
1879	done, err = future.DoneWithContext(context.Background(), client)
1880	if err != nil {
1881		err = autorest.NewErrorWithError(err, "web.AppsCreateInstanceFunctionSlotFuture", "Result", future.Response(), "Polling failure")
1882		return
1883	}
1884	if !done {
1885		err = azure.NewAsyncOpIncompleteError("web.AppsCreateInstanceFunctionSlotFuture")
1886		return
1887	}
1888	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
1889	if fe.Response.Response, err = future.GetResult(sender); err == nil && fe.Response.Response.StatusCode != http.StatusNoContent {
1890		fe, err = client.CreateInstanceFunctionSlotResponder(fe.Response.Response)
1891		if err != nil {
1892			err = autorest.NewErrorWithError(err, "web.AppsCreateInstanceFunctionSlotFuture", "Result", fe.Response.Response, "Failure responding to request")
1893		}
1894	}
1895	return
1896}
1897
1898// AppsCreateInstanceMSDeployOperationFuture an abstraction for monitoring and retrieving the results of a
1899// long-running operation.
1900type AppsCreateInstanceMSDeployOperationFuture struct {
1901	azure.Future
1902}
1903
1904// Result returns the result of the asynchronous operation.
1905// If the operation has not completed it will return an error.
1906func (future *AppsCreateInstanceMSDeployOperationFuture) Result(client AppsClient) (mds MSDeployStatus, err error) {
1907	var done bool
1908	done, err = future.DoneWithContext(context.Background(), client)
1909	if err != nil {
1910		err = autorest.NewErrorWithError(err, "web.AppsCreateInstanceMSDeployOperationFuture", "Result", future.Response(), "Polling failure")
1911		return
1912	}
1913	if !done {
1914		err = azure.NewAsyncOpIncompleteError("web.AppsCreateInstanceMSDeployOperationFuture")
1915		return
1916	}
1917	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
1918	if mds.Response.Response, err = future.GetResult(sender); err == nil && mds.Response.Response.StatusCode != http.StatusNoContent {
1919		mds, err = client.CreateInstanceMSDeployOperationResponder(mds.Response.Response)
1920		if err != nil {
1921			err = autorest.NewErrorWithError(err, "web.AppsCreateInstanceMSDeployOperationFuture", "Result", mds.Response.Response, "Failure responding to request")
1922		}
1923	}
1924	return
1925}
1926
1927// AppsCreateInstanceMSDeployOperationSlotFuture an abstraction for monitoring and retrieving the results
1928// of a long-running operation.
1929type AppsCreateInstanceMSDeployOperationSlotFuture struct {
1930	azure.Future
1931}
1932
1933// Result returns the result of the asynchronous operation.
1934// If the operation has not completed it will return an error.
1935func (future *AppsCreateInstanceMSDeployOperationSlotFuture) Result(client AppsClient) (mds MSDeployStatus, err error) {
1936	var done bool
1937	done, err = future.DoneWithContext(context.Background(), client)
1938	if err != nil {
1939		err = autorest.NewErrorWithError(err, "web.AppsCreateInstanceMSDeployOperationSlotFuture", "Result", future.Response(), "Polling failure")
1940		return
1941	}
1942	if !done {
1943		err = azure.NewAsyncOpIncompleteError("web.AppsCreateInstanceMSDeployOperationSlotFuture")
1944		return
1945	}
1946	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
1947	if mds.Response.Response, err = future.GetResult(sender); err == nil && mds.Response.Response.StatusCode != http.StatusNoContent {
1948		mds, err = client.CreateInstanceMSDeployOperationSlotResponder(mds.Response.Response)
1949		if err != nil {
1950			err = autorest.NewErrorWithError(err, "web.AppsCreateInstanceMSDeployOperationSlotFuture", "Result", mds.Response.Response, "Failure responding to request")
1951		}
1952	}
1953	return
1954}
1955
1956// AppsCreateMSDeployOperationFuture an abstraction for monitoring and retrieving the results of a
1957// long-running operation.
1958type AppsCreateMSDeployOperationFuture struct {
1959	azure.Future
1960}
1961
1962// Result returns the result of the asynchronous operation.
1963// If the operation has not completed it will return an error.
1964func (future *AppsCreateMSDeployOperationFuture) Result(client AppsClient) (mds MSDeployStatus, err error) {
1965	var done bool
1966	done, err = future.DoneWithContext(context.Background(), client)
1967	if err != nil {
1968		err = autorest.NewErrorWithError(err, "web.AppsCreateMSDeployOperationFuture", "Result", future.Response(), "Polling failure")
1969		return
1970	}
1971	if !done {
1972		err = azure.NewAsyncOpIncompleteError("web.AppsCreateMSDeployOperationFuture")
1973		return
1974	}
1975	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
1976	if mds.Response.Response, err = future.GetResult(sender); err == nil && mds.Response.Response.StatusCode != http.StatusNoContent {
1977		mds, err = client.CreateMSDeployOperationResponder(mds.Response.Response)
1978		if err != nil {
1979			err = autorest.NewErrorWithError(err, "web.AppsCreateMSDeployOperationFuture", "Result", mds.Response.Response, "Failure responding to request")
1980		}
1981	}
1982	return
1983}
1984
1985// AppsCreateMSDeployOperationSlotFuture an abstraction for monitoring and retrieving the results of a
1986// long-running operation.
1987type AppsCreateMSDeployOperationSlotFuture struct {
1988	azure.Future
1989}
1990
1991// Result returns the result of the asynchronous operation.
1992// If the operation has not completed it will return an error.
1993func (future *AppsCreateMSDeployOperationSlotFuture) Result(client AppsClient) (mds MSDeployStatus, err error) {
1994	var done bool
1995	done, err = future.DoneWithContext(context.Background(), client)
1996	if err != nil {
1997		err = autorest.NewErrorWithError(err, "web.AppsCreateMSDeployOperationSlotFuture", "Result", future.Response(), "Polling failure")
1998		return
1999	}
2000	if !done {
2001		err = azure.NewAsyncOpIncompleteError("web.AppsCreateMSDeployOperationSlotFuture")
2002		return
2003	}
2004	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
2005	if mds.Response.Response, err = future.GetResult(sender); err == nil && mds.Response.Response.StatusCode != http.StatusNoContent {
2006		mds, err = client.CreateMSDeployOperationSlotResponder(mds.Response.Response)
2007		if err != nil {
2008			err = autorest.NewErrorWithError(err, "web.AppsCreateMSDeployOperationSlotFuture", "Result", mds.Response.Response, "Failure responding to request")
2009		}
2010	}
2011	return
2012}
2013
2014// AppsCreateOrUpdateFuture an abstraction for monitoring and retrieving the results of a long-running
2015// operation.
2016type AppsCreateOrUpdateFuture struct {
2017	azure.Future
2018}
2019
2020// Result returns the result of the asynchronous operation.
2021// If the operation has not completed it will return an error.
2022func (future *AppsCreateOrUpdateFuture) Result(client AppsClient) (s Site, err error) {
2023	var done bool
2024	done, err = future.DoneWithContext(context.Background(), client)
2025	if err != nil {
2026		err = autorest.NewErrorWithError(err, "web.AppsCreateOrUpdateFuture", "Result", future.Response(), "Polling failure")
2027		return
2028	}
2029	if !done {
2030		err = azure.NewAsyncOpIncompleteError("web.AppsCreateOrUpdateFuture")
2031		return
2032	}
2033	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
2034	if s.Response.Response, err = future.GetResult(sender); err == nil && s.Response.Response.StatusCode != http.StatusNoContent {
2035		s, err = client.CreateOrUpdateResponder(s.Response.Response)
2036		if err != nil {
2037			err = autorest.NewErrorWithError(err, "web.AppsCreateOrUpdateFuture", "Result", s.Response.Response, "Failure responding to request")
2038		}
2039	}
2040	return
2041}
2042
2043// AppsCreateOrUpdateSlotFuture an abstraction for monitoring and retrieving the results of a long-running
2044// operation.
2045type AppsCreateOrUpdateSlotFuture struct {
2046	azure.Future
2047}
2048
2049// Result returns the result of the asynchronous operation.
2050// If the operation has not completed it will return an error.
2051func (future *AppsCreateOrUpdateSlotFuture) Result(client AppsClient) (s Site, err error) {
2052	var done bool
2053	done, err = future.DoneWithContext(context.Background(), client)
2054	if err != nil {
2055		err = autorest.NewErrorWithError(err, "web.AppsCreateOrUpdateSlotFuture", "Result", future.Response(), "Polling failure")
2056		return
2057	}
2058	if !done {
2059		err = azure.NewAsyncOpIncompleteError("web.AppsCreateOrUpdateSlotFuture")
2060		return
2061	}
2062	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
2063	if s.Response.Response, err = future.GetResult(sender); err == nil && s.Response.Response.StatusCode != http.StatusNoContent {
2064		s, err = client.CreateOrUpdateSlotResponder(s.Response.Response)
2065		if err != nil {
2066			err = autorest.NewErrorWithError(err, "web.AppsCreateOrUpdateSlotFuture", "Result", s.Response.Response, "Failure responding to request")
2067		}
2068	}
2069	return
2070}
2071
2072// AppsCreateOrUpdateSourceControlFuture an abstraction for monitoring and retrieving the results of a
2073// long-running operation.
2074type AppsCreateOrUpdateSourceControlFuture struct {
2075	azure.Future
2076}
2077
2078// Result returns the result of the asynchronous operation.
2079// If the operation has not completed it will return an error.
2080func (future *AppsCreateOrUpdateSourceControlFuture) Result(client AppsClient) (ssc SiteSourceControl, err error) {
2081	var done bool
2082	done, err = future.DoneWithContext(context.Background(), client)
2083	if err != nil {
2084		err = autorest.NewErrorWithError(err, "web.AppsCreateOrUpdateSourceControlFuture", "Result", future.Response(), "Polling failure")
2085		return
2086	}
2087	if !done {
2088		err = azure.NewAsyncOpIncompleteError("web.AppsCreateOrUpdateSourceControlFuture")
2089		return
2090	}
2091	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
2092	if ssc.Response.Response, err = future.GetResult(sender); err == nil && ssc.Response.Response.StatusCode != http.StatusNoContent {
2093		ssc, err = client.CreateOrUpdateSourceControlResponder(ssc.Response.Response)
2094		if err != nil {
2095			err = autorest.NewErrorWithError(err, "web.AppsCreateOrUpdateSourceControlFuture", "Result", ssc.Response.Response, "Failure responding to request")
2096		}
2097	}
2098	return
2099}
2100
2101// AppsCreateOrUpdateSourceControlSlotFuture an abstraction for monitoring and retrieving the results of a
2102// long-running operation.
2103type AppsCreateOrUpdateSourceControlSlotFuture struct {
2104	azure.Future
2105}
2106
2107// Result returns the result of the asynchronous operation.
2108// If the operation has not completed it will return an error.
2109func (future *AppsCreateOrUpdateSourceControlSlotFuture) Result(client AppsClient) (ssc SiteSourceControl, err error) {
2110	var done bool
2111	done, err = future.DoneWithContext(context.Background(), client)
2112	if err != nil {
2113		err = autorest.NewErrorWithError(err, "web.AppsCreateOrUpdateSourceControlSlotFuture", "Result", future.Response(), "Polling failure")
2114		return
2115	}
2116	if !done {
2117		err = azure.NewAsyncOpIncompleteError("web.AppsCreateOrUpdateSourceControlSlotFuture")
2118		return
2119	}
2120	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
2121	if ssc.Response.Response, err = future.GetResult(sender); err == nil && ssc.Response.Response.StatusCode != http.StatusNoContent {
2122		ssc, err = client.CreateOrUpdateSourceControlSlotResponder(ssc.Response.Response)
2123		if err != nil {
2124			err = autorest.NewErrorWithError(err, "web.AppsCreateOrUpdateSourceControlSlotFuture", "Result", ssc.Response.Response, "Failure responding to request")
2125		}
2126	}
2127	return
2128}
2129
2130// AppServiceCertificate key Vault container for a certificate that is purchased through Azure.
2131type AppServiceCertificate struct {
2132	// KeyVaultID - Key Vault resource Id.
2133	KeyVaultID *string `json:"keyVaultId,omitempty"`
2134	// KeyVaultSecretName - Key Vault secret name.
2135	KeyVaultSecretName *string `json:"keyVaultSecretName,omitempty"`
2136	// ProvisioningState - READ-ONLY; Status of the Key Vault secret. Possible values include: 'KeyVaultSecretStatusInitialized', 'KeyVaultSecretStatusWaitingOnCertificateOrder', 'KeyVaultSecretStatusSucceeded', 'KeyVaultSecretStatusCertificateOrderFailed', 'KeyVaultSecretStatusOperationNotPermittedOnKeyVault', 'KeyVaultSecretStatusAzureServiceUnauthorizedToAccessKeyVault', 'KeyVaultSecretStatusKeyVaultDoesNotExist', 'KeyVaultSecretStatusKeyVaultSecretDoesNotExist', 'KeyVaultSecretStatusUnknownError', 'KeyVaultSecretStatusExternalPrivateKey', 'KeyVaultSecretStatusUnknown'
2137	ProvisioningState KeyVaultSecretStatus `json:"provisioningState,omitempty"`
2138}
2139
2140// AppServiceCertificateCollection collection of certificate order certificates.
2141type AppServiceCertificateCollection struct {
2142	autorest.Response `json:"-"`
2143	// Value - Collection of resources.
2144	Value *[]AppServiceCertificateResource `json:"value,omitempty"`
2145	// NextLink - READ-ONLY; Link to next page of resources.
2146	NextLink *string `json:"nextLink,omitempty"`
2147}
2148
2149// AppServiceCertificateCollectionIterator provides access to a complete listing of
2150// AppServiceCertificateResource values.
2151type AppServiceCertificateCollectionIterator struct {
2152	i    int
2153	page AppServiceCertificateCollectionPage
2154}
2155
2156// NextWithContext advances to the next value.  If there was an error making
2157// the request the iterator does not advance and the error is returned.
2158func (iter *AppServiceCertificateCollectionIterator) NextWithContext(ctx context.Context) (err error) {
2159	if tracing.IsEnabled() {
2160		ctx = tracing.StartSpan(ctx, fqdn+"/AppServiceCertificateCollectionIterator.NextWithContext")
2161		defer func() {
2162			sc := -1
2163			if iter.Response().Response.Response != nil {
2164				sc = iter.Response().Response.Response.StatusCode
2165			}
2166			tracing.EndSpan(ctx, sc, err)
2167		}()
2168	}
2169	iter.i++
2170	if iter.i < len(iter.page.Values()) {
2171		return nil
2172	}
2173	err = iter.page.NextWithContext(ctx)
2174	if err != nil {
2175		iter.i--
2176		return err
2177	}
2178	iter.i = 0
2179	return nil
2180}
2181
2182// Next advances to the next value.  If there was an error making
2183// the request the iterator does not advance and the error is returned.
2184// Deprecated: Use NextWithContext() instead.
2185func (iter *AppServiceCertificateCollectionIterator) Next() error {
2186	return iter.NextWithContext(context.Background())
2187}
2188
2189// NotDone returns true if the enumeration should be started or is not yet complete.
2190func (iter AppServiceCertificateCollectionIterator) NotDone() bool {
2191	return iter.page.NotDone() && iter.i < len(iter.page.Values())
2192}
2193
2194// Response returns the raw server response from the last page request.
2195func (iter AppServiceCertificateCollectionIterator) Response() AppServiceCertificateCollection {
2196	return iter.page.Response()
2197}
2198
2199// Value returns the current value or a zero-initialized value if the
2200// iterator has advanced beyond the end of the collection.
2201func (iter AppServiceCertificateCollectionIterator) Value() AppServiceCertificateResource {
2202	if !iter.page.NotDone() {
2203		return AppServiceCertificateResource{}
2204	}
2205	return iter.page.Values()[iter.i]
2206}
2207
2208// Creates a new instance of the AppServiceCertificateCollectionIterator type.
2209func NewAppServiceCertificateCollectionIterator(page AppServiceCertificateCollectionPage) AppServiceCertificateCollectionIterator {
2210	return AppServiceCertificateCollectionIterator{page: page}
2211}
2212
2213// IsEmpty returns true if the ListResult contains no values.
2214func (ascc AppServiceCertificateCollection) IsEmpty() bool {
2215	return ascc.Value == nil || len(*ascc.Value) == 0
2216}
2217
2218// appServiceCertificateCollectionPreparer prepares a request to retrieve the next set of results.
2219// It returns nil if no more results exist.
2220func (ascc AppServiceCertificateCollection) appServiceCertificateCollectionPreparer(ctx context.Context) (*http.Request, error) {
2221	if ascc.NextLink == nil || len(to.String(ascc.NextLink)) < 1 {
2222		return nil, nil
2223	}
2224	return autorest.Prepare((&http.Request{}).WithContext(ctx),
2225		autorest.AsJSON(),
2226		autorest.AsGet(),
2227		autorest.WithBaseURL(to.String(ascc.NextLink)))
2228}
2229
2230// AppServiceCertificateCollectionPage contains a page of AppServiceCertificateResource values.
2231type AppServiceCertificateCollectionPage struct {
2232	fn   func(context.Context, AppServiceCertificateCollection) (AppServiceCertificateCollection, error)
2233	ascc AppServiceCertificateCollection
2234}
2235
2236// NextWithContext advances to the next page of values.  If there was an error making
2237// the request the page does not advance and the error is returned.
2238func (page *AppServiceCertificateCollectionPage) NextWithContext(ctx context.Context) (err error) {
2239	if tracing.IsEnabled() {
2240		ctx = tracing.StartSpan(ctx, fqdn+"/AppServiceCertificateCollectionPage.NextWithContext")
2241		defer func() {
2242			sc := -1
2243			if page.Response().Response.Response != nil {
2244				sc = page.Response().Response.Response.StatusCode
2245			}
2246			tracing.EndSpan(ctx, sc, err)
2247		}()
2248	}
2249	next, err := page.fn(ctx, page.ascc)
2250	if err != nil {
2251		return err
2252	}
2253	page.ascc = next
2254	return nil
2255}
2256
2257// Next advances to the next page of values.  If there was an error making
2258// the request the page does not advance and the error is returned.
2259// Deprecated: Use NextWithContext() instead.
2260func (page *AppServiceCertificateCollectionPage) Next() error {
2261	return page.NextWithContext(context.Background())
2262}
2263
2264// NotDone returns true if the page enumeration should be started or is not yet complete.
2265func (page AppServiceCertificateCollectionPage) NotDone() bool {
2266	return !page.ascc.IsEmpty()
2267}
2268
2269// Response returns the raw server response from the last page request.
2270func (page AppServiceCertificateCollectionPage) Response() AppServiceCertificateCollection {
2271	return page.ascc
2272}
2273
2274// Values returns the slice of values for the current page or nil if there are no values.
2275func (page AppServiceCertificateCollectionPage) Values() []AppServiceCertificateResource {
2276	if page.ascc.IsEmpty() {
2277		return nil
2278	}
2279	return *page.ascc.Value
2280}
2281
2282// Creates a new instance of the AppServiceCertificateCollectionPage type.
2283func NewAppServiceCertificateCollectionPage(getNextPage func(context.Context, AppServiceCertificateCollection) (AppServiceCertificateCollection, error)) AppServiceCertificateCollectionPage {
2284	return AppServiceCertificateCollectionPage{fn: getNextPage}
2285}
2286
2287// AppServiceCertificateOrder SSL certificate purchase order.
2288type AppServiceCertificateOrder struct {
2289	autorest.Response `json:"-"`
2290	// AppServiceCertificateOrderProperties - AppServiceCertificateOrder resource specific properties
2291	*AppServiceCertificateOrderProperties `json:"properties,omitempty"`
2292	// ID - READ-ONLY; Resource Id.
2293	ID *string `json:"id,omitempty"`
2294	// Name - READ-ONLY; Resource Name.
2295	Name *string `json:"name,omitempty"`
2296	// Kind - Kind of resource.
2297	Kind *string `json:"kind,omitempty"`
2298	// Location - Resource Location.
2299	Location *string `json:"location,omitempty"`
2300	// Type - READ-ONLY; Resource type.
2301	Type *string `json:"type,omitempty"`
2302	// Tags - Resource tags.
2303	Tags map[string]*string `json:"tags"`
2304}
2305
2306// MarshalJSON is the custom marshaler for AppServiceCertificateOrder.
2307func (asco AppServiceCertificateOrder) MarshalJSON() ([]byte, error) {
2308	objectMap := make(map[string]interface{})
2309	if asco.AppServiceCertificateOrderProperties != nil {
2310		objectMap["properties"] = asco.AppServiceCertificateOrderProperties
2311	}
2312	if asco.Kind != nil {
2313		objectMap["kind"] = asco.Kind
2314	}
2315	if asco.Location != nil {
2316		objectMap["location"] = asco.Location
2317	}
2318	if asco.Tags != nil {
2319		objectMap["tags"] = asco.Tags
2320	}
2321	return json.Marshal(objectMap)
2322}
2323
2324// UnmarshalJSON is the custom unmarshaler for AppServiceCertificateOrder struct.
2325func (asco *AppServiceCertificateOrder) UnmarshalJSON(body []byte) error {
2326	var m map[string]*json.RawMessage
2327	err := json.Unmarshal(body, &m)
2328	if err != nil {
2329		return err
2330	}
2331	for k, v := range m {
2332		switch k {
2333		case "properties":
2334			if v != nil {
2335				var appServiceCertificateOrderProperties AppServiceCertificateOrderProperties
2336				err = json.Unmarshal(*v, &appServiceCertificateOrderProperties)
2337				if err != nil {
2338					return err
2339				}
2340				asco.AppServiceCertificateOrderProperties = &appServiceCertificateOrderProperties
2341			}
2342		case "id":
2343			if v != nil {
2344				var ID string
2345				err = json.Unmarshal(*v, &ID)
2346				if err != nil {
2347					return err
2348				}
2349				asco.ID = &ID
2350			}
2351		case "name":
2352			if v != nil {
2353				var name string
2354				err = json.Unmarshal(*v, &name)
2355				if err != nil {
2356					return err
2357				}
2358				asco.Name = &name
2359			}
2360		case "kind":
2361			if v != nil {
2362				var kind string
2363				err = json.Unmarshal(*v, &kind)
2364				if err != nil {
2365					return err
2366				}
2367				asco.Kind = &kind
2368			}
2369		case "location":
2370			if v != nil {
2371				var location string
2372				err = json.Unmarshal(*v, &location)
2373				if err != nil {
2374					return err
2375				}
2376				asco.Location = &location
2377			}
2378		case "type":
2379			if v != nil {
2380				var typeVar string
2381				err = json.Unmarshal(*v, &typeVar)
2382				if err != nil {
2383					return err
2384				}
2385				asco.Type = &typeVar
2386			}
2387		case "tags":
2388			if v != nil {
2389				var tags map[string]*string
2390				err = json.Unmarshal(*v, &tags)
2391				if err != nil {
2392					return err
2393				}
2394				asco.Tags = tags
2395			}
2396		}
2397	}
2398
2399	return nil
2400}
2401
2402// AppServiceCertificateOrderCollection collection of certificate orders.
2403type AppServiceCertificateOrderCollection struct {
2404	autorest.Response `json:"-"`
2405	// Value - Collection of resources.
2406	Value *[]AppServiceCertificateOrder `json:"value,omitempty"`
2407	// NextLink - READ-ONLY; Link to next page of resources.
2408	NextLink *string `json:"nextLink,omitempty"`
2409}
2410
2411// AppServiceCertificateOrderCollectionIterator provides access to a complete listing of
2412// AppServiceCertificateOrder values.
2413type AppServiceCertificateOrderCollectionIterator struct {
2414	i    int
2415	page AppServiceCertificateOrderCollectionPage
2416}
2417
2418// NextWithContext advances to the next value.  If there was an error making
2419// the request the iterator does not advance and the error is returned.
2420func (iter *AppServiceCertificateOrderCollectionIterator) NextWithContext(ctx context.Context) (err error) {
2421	if tracing.IsEnabled() {
2422		ctx = tracing.StartSpan(ctx, fqdn+"/AppServiceCertificateOrderCollectionIterator.NextWithContext")
2423		defer func() {
2424			sc := -1
2425			if iter.Response().Response.Response != nil {
2426				sc = iter.Response().Response.Response.StatusCode
2427			}
2428			tracing.EndSpan(ctx, sc, err)
2429		}()
2430	}
2431	iter.i++
2432	if iter.i < len(iter.page.Values()) {
2433		return nil
2434	}
2435	err = iter.page.NextWithContext(ctx)
2436	if err != nil {
2437		iter.i--
2438		return err
2439	}
2440	iter.i = 0
2441	return nil
2442}
2443
2444// Next advances to the next value.  If there was an error making
2445// the request the iterator does not advance and the error is returned.
2446// Deprecated: Use NextWithContext() instead.
2447func (iter *AppServiceCertificateOrderCollectionIterator) Next() error {
2448	return iter.NextWithContext(context.Background())
2449}
2450
2451// NotDone returns true if the enumeration should be started or is not yet complete.
2452func (iter AppServiceCertificateOrderCollectionIterator) NotDone() bool {
2453	return iter.page.NotDone() && iter.i < len(iter.page.Values())
2454}
2455
2456// Response returns the raw server response from the last page request.
2457func (iter AppServiceCertificateOrderCollectionIterator) Response() AppServiceCertificateOrderCollection {
2458	return iter.page.Response()
2459}
2460
2461// Value returns the current value or a zero-initialized value if the
2462// iterator has advanced beyond the end of the collection.
2463func (iter AppServiceCertificateOrderCollectionIterator) Value() AppServiceCertificateOrder {
2464	if !iter.page.NotDone() {
2465		return AppServiceCertificateOrder{}
2466	}
2467	return iter.page.Values()[iter.i]
2468}
2469
2470// Creates a new instance of the AppServiceCertificateOrderCollectionIterator type.
2471func NewAppServiceCertificateOrderCollectionIterator(page AppServiceCertificateOrderCollectionPage) AppServiceCertificateOrderCollectionIterator {
2472	return AppServiceCertificateOrderCollectionIterator{page: page}
2473}
2474
2475// IsEmpty returns true if the ListResult contains no values.
2476func (ascoc AppServiceCertificateOrderCollection) IsEmpty() bool {
2477	return ascoc.Value == nil || len(*ascoc.Value) == 0
2478}
2479
2480// appServiceCertificateOrderCollectionPreparer prepares a request to retrieve the next set of results.
2481// It returns nil if no more results exist.
2482func (ascoc AppServiceCertificateOrderCollection) appServiceCertificateOrderCollectionPreparer(ctx context.Context) (*http.Request, error) {
2483	if ascoc.NextLink == nil || len(to.String(ascoc.NextLink)) < 1 {
2484		return nil, nil
2485	}
2486	return autorest.Prepare((&http.Request{}).WithContext(ctx),
2487		autorest.AsJSON(),
2488		autorest.AsGet(),
2489		autorest.WithBaseURL(to.String(ascoc.NextLink)))
2490}
2491
2492// AppServiceCertificateOrderCollectionPage contains a page of AppServiceCertificateOrder values.
2493type AppServiceCertificateOrderCollectionPage struct {
2494	fn    func(context.Context, AppServiceCertificateOrderCollection) (AppServiceCertificateOrderCollection, error)
2495	ascoc AppServiceCertificateOrderCollection
2496}
2497
2498// NextWithContext advances to the next page of values.  If there was an error making
2499// the request the page does not advance and the error is returned.
2500func (page *AppServiceCertificateOrderCollectionPage) NextWithContext(ctx context.Context) (err error) {
2501	if tracing.IsEnabled() {
2502		ctx = tracing.StartSpan(ctx, fqdn+"/AppServiceCertificateOrderCollectionPage.NextWithContext")
2503		defer func() {
2504			sc := -1
2505			if page.Response().Response.Response != nil {
2506				sc = page.Response().Response.Response.StatusCode
2507			}
2508			tracing.EndSpan(ctx, sc, err)
2509		}()
2510	}
2511	next, err := page.fn(ctx, page.ascoc)
2512	if err != nil {
2513		return err
2514	}
2515	page.ascoc = next
2516	return nil
2517}
2518
2519// Next advances to the next page of values.  If there was an error making
2520// the request the page does not advance and the error is returned.
2521// Deprecated: Use NextWithContext() instead.
2522func (page *AppServiceCertificateOrderCollectionPage) Next() error {
2523	return page.NextWithContext(context.Background())
2524}
2525
2526// NotDone returns true if the page enumeration should be started or is not yet complete.
2527func (page AppServiceCertificateOrderCollectionPage) NotDone() bool {
2528	return !page.ascoc.IsEmpty()
2529}
2530
2531// Response returns the raw server response from the last page request.
2532func (page AppServiceCertificateOrderCollectionPage) Response() AppServiceCertificateOrderCollection {
2533	return page.ascoc
2534}
2535
2536// Values returns the slice of values for the current page or nil if there are no values.
2537func (page AppServiceCertificateOrderCollectionPage) Values() []AppServiceCertificateOrder {
2538	if page.ascoc.IsEmpty() {
2539		return nil
2540	}
2541	return *page.ascoc.Value
2542}
2543
2544// Creates a new instance of the AppServiceCertificateOrderCollectionPage type.
2545func NewAppServiceCertificateOrderCollectionPage(getNextPage func(context.Context, AppServiceCertificateOrderCollection) (AppServiceCertificateOrderCollection, error)) AppServiceCertificateOrderCollectionPage {
2546	return AppServiceCertificateOrderCollectionPage{fn: getNextPage}
2547}
2548
2549// AppServiceCertificateOrderPatchResource ARM resource for a certificate order that is purchased through
2550// Azure.
2551type AppServiceCertificateOrderPatchResource struct {
2552	// AppServiceCertificateOrderPatchResourceProperties - AppServiceCertificateOrderPatchResource resource specific properties
2553	*AppServiceCertificateOrderPatchResourceProperties `json:"properties,omitempty"`
2554	// ID - READ-ONLY; Resource Id.
2555	ID *string `json:"id,omitempty"`
2556	// Name - READ-ONLY; Resource Name.
2557	Name *string `json:"name,omitempty"`
2558	// Kind - Kind of resource.
2559	Kind *string `json:"kind,omitempty"`
2560	// Type - READ-ONLY; Resource type.
2561	Type *string `json:"type,omitempty"`
2562}
2563
2564// MarshalJSON is the custom marshaler for AppServiceCertificateOrderPatchResource.
2565func (ascopr AppServiceCertificateOrderPatchResource) MarshalJSON() ([]byte, error) {
2566	objectMap := make(map[string]interface{})
2567	if ascopr.AppServiceCertificateOrderPatchResourceProperties != nil {
2568		objectMap["properties"] = ascopr.AppServiceCertificateOrderPatchResourceProperties
2569	}
2570	if ascopr.Kind != nil {
2571		objectMap["kind"] = ascopr.Kind
2572	}
2573	return json.Marshal(objectMap)
2574}
2575
2576// UnmarshalJSON is the custom unmarshaler for AppServiceCertificateOrderPatchResource struct.
2577func (ascopr *AppServiceCertificateOrderPatchResource) UnmarshalJSON(body []byte) error {
2578	var m map[string]*json.RawMessage
2579	err := json.Unmarshal(body, &m)
2580	if err != nil {
2581		return err
2582	}
2583	for k, v := range m {
2584		switch k {
2585		case "properties":
2586			if v != nil {
2587				var appServiceCertificateOrderPatchResourceProperties AppServiceCertificateOrderPatchResourceProperties
2588				err = json.Unmarshal(*v, &appServiceCertificateOrderPatchResourceProperties)
2589				if err != nil {
2590					return err
2591				}
2592				ascopr.AppServiceCertificateOrderPatchResourceProperties = &appServiceCertificateOrderPatchResourceProperties
2593			}
2594		case "id":
2595			if v != nil {
2596				var ID string
2597				err = json.Unmarshal(*v, &ID)
2598				if err != nil {
2599					return err
2600				}
2601				ascopr.ID = &ID
2602			}
2603		case "name":
2604			if v != nil {
2605				var name string
2606				err = json.Unmarshal(*v, &name)
2607				if err != nil {
2608					return err
2609				}
2610				ascopr.Name = &name
2611			}
2612		case "kind":
2613			if v != nil {
2614				var kind string
2615				err = json.Unmarshal(*v, &kind)
2616				if err != nil {
2617					return err
2618				}
2619				ascopr.Kind = &kind
2620			}
2621		case "type":
2622			if v != nil {
2623				var typeVar string
2624				err = json.Unmarshal(*v, &typeVar)
2625				if err != nil {
2626					return err
2627				}
2628				ascopr.Type = &typeVar
2629			}
2630		}
2631	}
2632
2633	return nil
2634}
2635
2636// AppServiceCertificateOrderPatchResourceProperties appServiceCertificateOrderPatchResource resource
2637// specific properties
2638type AppServiceCertificateOrderPatchResourceProperties struct {
2639	// Certificates - State of the Key Vault secret.
2640	Certificates map[string]*AppServiceCertificate `json:"certificates"`
2641	// DistinguishedName - Certificate distinguished name.
2642	DistinguishedName *string `json:"distinguishedName,omitempty"`
2643	// DomainVerificationToken - READ-ONLY; Domain verification token.
2644	DomainVerificationToken *string `json:"domainVerificationToken,omitempty"`
2645	// ValidityInYears - Duration in years (must be between 1 and 3).
2646	ValidityInYears *int32 `json:"validityInYears,omitempty"`
2647	// KeySize - Certificate key size.
2648	KeySize *int32 `json:"keySize,omitempty"`
2649	// ProductType - Certificate product type. Possible values include: 'StandardDomainValidatedSsl', 'StandardDomainValidatedWildCardSsl'
2650	ProductType CertificateProductType `json:"productType,omitempty"`
2651	// AutoRenew - <code>true</code> if the certificate should be automatically renewed when it expires; otherwise, <code>false</code>.
2652	AutoRenew *bool `json:"autoRenew,omitempty"`
2653	// ProvisioningState - READ-ONLY; Status of certificate order. Possible values include: 'ProvisioningStateSucceeded', 'ProvisioningStateFailed', 'ProvisioningStateCanceled', 'ProvisioningStateInProgress', 'ProvisioningStateDeleting'
2654	ProvisioningState ProvisioningState `json:"provisioningState,omitempty"`
2655	// Status - READ-ONLY; Current order status. Possible values include: 'Pendingissuance', 'Issued', 'Revoked', 'Canceled', 'Denied', 'Pendingrevocation', 'PendingRekey', 'Unused', 'Expired', 'NotSubmitted'
2656	Status CertificateOrderStatus `json:"status,omitempty"`
2657	// SignedCertificate - READ-ONLY; Signed certificate.
2658	SignedCertificate *CertificateDetails `json:"signedCertificate,omitempty"`
2659	// Csr - Last CSR that was created for this order.
2660	Csr *string `json:"csr,omitempty"`
2661	// Intermediate - READ-ONLY; Intermediate certificate.
2662	Intermediate *CertificateDetails `json:"intermediate,omitempty"`
2663	// Root - READ-ONLY; Root certificate.
2664	Root *CertificateDetails `json:"root,omitempty"`
2665	// SerialNumber - READ-ONLY; Current serial number of the certificate.
2666	SerialNumber *string `json:"serialNumber,omitempty"`
2667	// LastCertificateIssuanceTime - READ-ONLY; Certificate last issuance time.
2668	LastCertificateIssuanceTime *date.Time `json:"lastCertificateIssuanceTime,omitempty"`
2669	// ExpirationTime - READ-ONLY; Certificate expiration time.
2670	ExpirationTime *date.Time `json:"expirationTime,omitempty"`
2671	// IsPrivateKeyExternal - READ-ONLY; <code>true</code> if private key is external; otherwise, <code>false</code>.
2672	IsPrivateKeyExternal *bool `json:"isPrivateKeyExternal,omitempty"`
2673	// AppServiceCertificateNotRenewableReasons - READ-ONLY; Reasons why App Service Certificate is not renewable at the current moment.
2674	AppServiceCertificateNotRenewableReasons *[]string `json:"appServiceCertificateNotRenewableReasons,omitempty"`
2675	// NextAutoRenewalTimeStamp - READ-ONLY; Time stamp when the certificate would be auto renewed next
2676	NextAutoRenewalTimeStamp *date.Time `json:"nextAutoRenewalTimeStamp,omitempty"`
2677}
2678
2679// MarshalJSON is the custom marshaler for AppServiceCertificateOrderPatchResourceProperties.
2680func (ascopr AppServiceCertificateOrderPatchResourceProperties) MarshalJSON() ([]byte, error) {
2681	objectMap := make(map[string]interface{})
2682	if ascopr.Certificates != nil {
2683		objectMap["certificates"] = ascopr.Certificates
2684	}
2685	if ascopr.DistinguishedName != nil {
2686		objectMap["distinguishedName"] = ascopr.DistinguishedName
2687	}
2688	if ascopr.ValidityInYears != nil {
2689		objectMap["validityInYears"] = ascopr.ValidityInYears
2690	}
2691	if ascopr.KeySize != nil {
2692		objectMap["keySize"] = ascopr.KeySize
2693	}
2694	if ascopr.ProductType != "" {
2695		objectMap["productType"] = ascopr.ProductType
2696	}
2697	if ascopr.AutoRenew != nil {
2698		objectMap["autoRenew"] = ascopr.AutoRenew
2699	}
2700	if ascopr.Csr != nil {
2701		objectMap["csr"] = ascopr.Csr
2702	}
2703	return json.Marshal(objectMap)
2704}
2705
2706// AppServiceCertificateOrderProperties appServiceCertificateOrder resource specific properties
2707type AppServiceCertificateOrderProperties struct {
2708	// Certificates - State of the Key Vault secret.
2709	Certificates map[string]*AppServiceCertificate `json:"certificates"`
2710	// DistinguishedName - Certificate distinguished name.
2711	DistinguishedName *string `json:"distinguishedName,omitempty"`
2712	// DomainVerificationToken - READ-ONLY; Domain verification token.
2713	DomainVerificationToken *string `json:"domainVerificationToken,omitempty"`
2714	// ValidityInYears - Duration in years (must be between 1 and 3).
2715	ValidityInYears *int32 `json:"validityInYears,omitempty"`
2716	// KeySize - Certificate key size.
2717	KeySize *int32 `json:"keySize,omitempty"`
2718	// ProductType - Certificate product type. Possible values include: 'StandardDomainValidatedSsl', 'StandardDomainValidatedWildCardSsl'
2719	ProductType CertificateProductType `json:"productType,omitempty"`
2720	// AutoRenew - <code>true</code> if the certificate should be automatically renewed when it expires; otherwise, <code>false</code>.
2721	AutoRenew *bool `json:"autoRenew,omitempty"`
2722	// ProvisioningState - READ-ONLY; Status of certificate order. Possible values include: 'ProvisioningStateSucceeded', 'ProvisioningStateFailed', 'ProvisioningStateCanceled', 'ProvisioningStateInProgress', 'ProvisioningStateDeleting'
2723	ProvisioningState ProvisioningState `json:"provisioningState,omitempty"`
2724	// Status - READ-ONLY; Current order status. Possible values include: 'Pendingissuance', 'Issued', 'Revoked', 'Canceled', 'Denied', 'Pendingrevocation', 'PendingRekey', 'Unused', 'Expired', 'NotSubmitted'
2725	Status CertificateOrderStatus `json:"status,omitempty"`
2726	// SignedCertificate - READ-ONLY; Signed certificate.
2727	SignedCertificate *CertificateDetails `json:"signedCertificate,omitempty"`
2728	// Csr - Last CSR that was created for this order.
2729	Csr *string `json:"csr,omitempty"`
2730	// Intermediate - READ-ONLY; Intermediate certificate.
2731	Intermediate *CertificateDetails `json:"intermediate,omitempty"`
2732	// Root - READ-ONLY; Root certificate.
2733	Root *CertificateDetails `json:"root,omitempty"`
2734	// SerialNumber - READ-ONLY; Current serial number of the certificate.
2735	SerialNumber *string `json:"serialNumber,omitempty"`
2736	// LastCertificateIssuanceTime - READ-ONLY; Certificate last issuance time.
2737	LastCertificateIssuanceTime *date.Time `json:"lastCertificateIssuanceTime,omitempty"`
2738	// ExpirationTime - READ-ONLY; Certificate expiration time.
2739	ExpirationTime *date.Time `json:"expirationTime,omitempty"`
2740	// IsPrivateKeyExternal - READ-ONLY; <code>true</code> if private key is external; otherwise, <code>false</code>.
2741	IsPrivateKeyExternal *bool `json:"isPrivateKeyExternal,omitempty"`
2742	// AppServiceCertificateNotRenewableReasons - READ-ONLY; Reasons why App Service Certificate is not renewable at the current moment.
2743	AppServiceCertificateNotRenewableReasons *[]string `json:"appServiceCertificateNotRenewableReasons,omitempty"`
2744	// NextAutoRenewalTimeStamp - READ-ONLY; Time stamp when the certificate would be auto renewed next
2745	NextAutoRenewalTimeStamp *date.Time `json:"nextAutoRenewalTimeStamp,omitempty"`
2746}
2747
2748// MarshalJSON is the custom marshaler for AppServiceCertificateOrderProperties.
2749func (asco AppServiceCertificateOrderProperties) MarshalJSON() ([]byte, error) {
2750	objectMap := make(map[string]interface{})
2751	if asco.Certificates != nil {
2752		objectMap["certificates"] = asco.Certificates
2753	}
2754	if asco.DistinguishedName != nil {
2755		objectMap["distinguishedName"] = asco.DistinguishedName
2756	}
2757	if asco.ValidityInYears != nil {
2758		objectMap["validityInYears"] = asco.ValidityInYears
2759	}
2760	if asco.KeySize != nil {
2761		objectMap["keySize"] = asco.KeySize
2762	}
2763	if asco.ProductType != "" {
2764		objectMap["productType"] = asco.ProductType
2765	}
2766	if asco.AutoRenew != nil {
2767		objectMap["autoRenew"] = asco.AutoRenew
2768	}
2769	if asco.Csr != nil {
2770		objectMap["csr"] = asco.Csr
2771	}
2772	return json.Marshal(objectMap)
2773}
2774
2775// AppServiceCertificateOrdersCreateOrUpdateCertificateFuture an abstraction for monitoring and retrieving
2776// the results of a long-running operation.
2777type AppServiceCertificateOrdersCreateOrUpdateCertificateFuture struct {
2778	azure.Future
2779}
2780
2781// Result returns the result of the asynchronous operation.
2782// If the operation has not completed it will return an error.
2783func (future *AppServiceCertificateOrdersCreateOrUpdateCertificateFuture) Result(client AppServiceCertificateOrdersClient) (ascr AppServiceCertificateResource, err error) {
2784	var done bool
2785	done, err = future.DoneWithContext(context.Background(), client)
2786	if err != nil {
2787		err = autorest.NewErrorWithError(err, "web.AppServiceCertificateOrdersCreateOrUpdateCertificateFuture", "Result", future.Response(), "Polling failure")
2788		return
2789	}
2790	if !done {
2791		err = azure.NewAsyncOpIncompleteError("web.AppServiceCertificateOrdersCreateOrUpdateCertificateFuture")
2792		return
2793	}
2794	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
2795	if ascr.Response.Response, err = future.GetResult(sender); err == nil && ascr.Response.Response.StatusCode != http.StatusNoContent {
2796		ascr, err = client.CreateOrUpdateCertificateResponder(ascr.Response.Response)
2797		if err != nil {
2798			err = autorest.NewErrorWithError(err, "web.AppServiceCertificateOrdersCreateOrUpdateCertificateFuture", "Result", ascr.Response.Response, "Failure responding to request")
2799		}
2800	}
2801	return
2802}
2803
2804// AppServiceCertificateOrdersCreateOrUpdateFuture an abstraction for monitoring and retrieving the results
2805// of a long-running operation.
2806type AppServiceCertificateOrdersCreateOrUpdateFuture struct {
2807	azure.Future
2808}
2809
2810// Result returns the result of the asynchronous operation.
2811// If the operation has not completed it will return an error.
2812func (future *AppServiceCertificateOrdersCreateOrUpdateFuture) Result(client AppServiceCertificateOrdersClient) (asco AppServiceCertificateOrder, err error) {
2813	var done bool
2814	done, err = future.DoneWithContext(context.Background(), client)
2815	if err != nil {
2816		err = autorest.NewErrorWithError(err, "web.AppServiceCertificateOrdersCreateOrUpdateFuture", "Result", future.Response(), "Polling failure")
2817		return
2818	}
2819	if !done {
2820		err = azure.NewAsyncOpIncompleteError("web.AppServiceCertificateOrdersCreateOrUpdateFuture")
2821		return
2822	}
2823	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
2824	if asco.Response.Response, err = future.GetResult(sender); err == nil && asco.Response.Response.StatusCode != http.StatusNoContent {
2825		asco, err = client.CreateOrUpdateResponder(asco.Response.Response)
2826		if err != nil {
2827			err = autorest.NewErrorWithError(err, "web.AppServiceCertificateOrdersCreateOrUpdateFuture", "Result", asco.Response.Response, "Failure responding to request")
2828		}
2829	}
2830	return
2831}
2832
2833// AppServiceCertificatePatchResource key Vault container ARM resource for a certificate that is purchased
2834// through Azure.
2835type AppServiceCertificatePatchResource struct {
2836	// AppServiceCertificate - Core resource properties
2837	*AppServiceCertificate `json:"properties,omitempty"`
2838	// ID - READ-ONLY; Resource Id.
2839	ID *string `json:"id,omitempty"`
2840	// Name - READ-ONLY; Resource Name.
2841	Name *string `json:"name,omitempty"`
2842	// Kind - Kind of resource.
2843	Kind *string `json:"kind,omitempty"`
2844	// Type - READ-ONLY; Resource type.
2845	Type *string `json:"type,omitempty"`
2846}
2847
2848// MarshalJSON is the custom marshaler for AppServiceCertificatePatchResource.
2849func (ascpr AppServiceCertificatePatchResource) MarshalJSON() ([]byte, error) {
2850	objectMap := make(map[string]interface{})
2851	if ascpr.AppServiceCertificate != nil {
2852		objectMap["properties"] = ascpr.AppServiceCertificate
2853	}
2854	if ascpr.Kind != nil {
2855		objectMap["kind"] = ascpr.Kind
2856	}
2857	return json.Marshal(objectMap)
2858}
2859
2860// UnmarshalJSON is the custom unmarshaler for AppServiceCertificatePatchResource struct.
2861func (ascpr *AppServiceCertificatePatchResource) UnmarshalJSON(body []byte) error {
2862	var m map[string]*json.RawMessage
2863	err := json.Unmarshal(body, &m)
2864	if err != nil {
2865		return err
2866	}
2867	for k, v := range m {
2868		switch k {
2869		case "properties":
2870			if v != nil {
2871				var appServiceCertificate AppServiceCertificate
2872				err = json.Unmarshal(*v, &appServiceCertificate)
2873				if err != nil {
2874					return err
2875				}
2876				ascpr.AppServiceCertificate = &appServiceCertificate
2877			}
2878		case "id":
2879			if v != nil {
2880				var ID string
2881				err = json.Unmarshal(*v, &ID)
2882				if err != nil {
2883					return err
2884				}
2885				ascpr.ID = &ID
2886			}
2887		case "name":
2888			if v != nil {
2889				var name string
2890				err = json.Unmarshal(*v, &name)
2891				if err != nil {
2892					return err
2893				}
2894				ascpr.Name = &name
2895			}
2896		case "kind":
2897			if v != nil {
2898				var kind string
2899				err = json.Unmarshal(*v, &kind)
2900				if err != nil {
2901					return err
2902				}
2903				ascpr.Kind = &kind
2904			}
2905		case "type":
2906			if v != nil {
2907				var typeVar string
2908				err = json.Unmarshal(*v, &typeVar)
2909				if err != nil {
2910					return err
2911				}
2912				ascpr.Type = &typeVar
2913			}
2914		}
2915	}
2916
2917	return nil
2918}
2919
2920// AppServiceCertificateResource key Vault container ARM resource for a certificate that is purchased
2921// through Azure.
2922type AppServiceCertificateResource struct {
2923	autorest.Response `json:"-"`
2924	// AppServiceCertificate - Core resource properties
2925	*AppServiceCertificate `json:"properties,omitempty"`
2926	// ID - READ-ONLY; Resource Id.
2927	ID *string `json:"id,omitempty"`
2928	// Name - READ-ONLY; Resource Name.
2929	Name *string `json:"name,omitempty"`
2930	// Kind - Kind of resource.
2931	Kind *string `json:"kind,omitempty"`
2932	// Location - Resource Location.
2933	Location *string `json:"location,omitempty"`
2934	// Type - READ-ONLY; Resource type.
2935	Type *string `json:"type,omitempty"`
2936	// Tags - Resource tags.
2937	Tags map[string]*string `json:"tags"`
2938}
2939
2940// MarshalJSON is the custom marshaler for AppServiceCertificateResource.
2941func (ascr AppServiceCertificateResource) MarshalJSON() ([]byte, error) {
2942	objectMap := make(map[string]interface{})
2943	if ascr.AppServiceCertificate != nil {
2944		objectMap["properties"] = ascr.AppServiceCertificate
2945	}
2946	if ascr.Kind != nil {
2947		objectMap["kind"] = ascr.Kind
2948	}
2949	if ascr.Location != nil {
2950		objectMap["location"] = ascr.Location
2951	}
2952	if ascr.Tags != nil {
2953		objectMap["tags"] = ascr.Tags
2954	}
2955	return json.Marshal(objectMap)
2956}
2957
2958// UnmarshalJSON is the custom unmarshaler for AppServiceCertificateResource struct.
2959func (ascr *AppServiceCertificateResource) UnmarshalJSON(body []byte) error {
2960	var m map[string]*json.RawMessage
2961	err := json.Unmarshal(body, &m)
2962	if err != nil {
2963		return err
2964	}
2965	for k, v := range m {
2966		switch k {
2967		case "properties":
2968			if v != nil {
2969				var appServiceCertificate AppServiceCertificate
2970				err = json.Unmarshal(*v, &appServiceCertificate)
2971				if err != nil {
2972					return err
2973				}
2974				ascr.AppServiceCertificate = &appServiceCertificate
2975			}
2976		case "id":
2977			if v != nil {
2978				var ID string
2979				err = json.Unmarshal(*v, &ID)
2980				if err != nil {
2981					return err
2982				}
2983				ascr.ID = &ID
2984			}
2985		case "name":
2986			if v != nil {
2987				var name string
2988				err = json.Unmarshal(*v, &name)
2989				if err != nil {
2990					return err
2991				}
2992				ascr.Name = &name
2993			}
2994		case "kind":
2995			if v != nil {
2996				var kind string
2997				err = json.Unmarshal(*v, &kind)
2998				if err != nil {
2999					return err
3000				}
3001				ascr.Kind = &kind
3002			}
3003		case "location":
3004			if v != nil {
3005				var location string
3006				err = json.Unmarshal(*v, &location)
3007				if err != nil {
3008					return err
3009				}
3010				ascr.Location = &location
3011			}
3012		case "type":
3013			if v != nil {
3014				var typeVar string
3015				err = json.Unmarshal(*v, &typeVar)
3016				if err != nil {
3017					return err
3018				}
3019				ascr.Type = &typeVar
3020			}
3021		case "tags":
3022			if v != nil {
3023				var tags map[string]*string
3024				err = json.Unmarshal(*v, &tags)
3025				if err != nil {
3026					return err
3027				}
3028				ascr.Tags = tags
3029			}
3030		}
3031	}
3032
3033	return nil
3034}
3035
3036// AppServiceEnvironment description of an App Service Environment.
3037type AppServiceEnvironment struct {
3038	// Name - Name of the App Service Environment.
3039	Name *string `json:"name,omitempty"`
3040	// Location - Location of the App Service Environment, e.g. "West US".
3041	Location *string `json:"location,omitempty"`
3042	// ProvisioningState - READ-ONLY; Provisioning state of the App Service Environment. Possible values include: 'ProvisioningStateSucceeded', 'ProvisioningStateFailed', 'ProvisioningStateCanceled', 'ProvisioningStateInProgress', 'ProvisioningStateDeleting'
3043	ProvisioningState ProvisioningState `json:"provisioningState,omitempty"`
3044	// Status - READ-ONLY; Current status of the App Service Environment. Possible values include: 'Preparing', 'Ready', 'Scaling', 'Deleting'
3045	Status HostingEnvironmentStatus `json:"status,omitempty"`
3046	// VnetName - Name of the Virtual Network for the App Service Environment.
3047	VnetName *string `json:"vnetName,omitempty"`
3048	// VnetResourceGroupName - Resource group of the Virtual Network.
3049	VnetResourceGroupName *string `json:"vnetResourceGroupName,omitempty"`
3050	// VnetSubnetName - Subnet of the Virtual Network.
3051	VnetSubnetName *string `json:"vnetSubnetName,omitempty"`
3052	// VirtualNetwork - Description of the Virtual Network.
3053	VirtualNetwork *VirtualNetworkProfile `json:"virtualNetwork,omitempty"`
3054	// InternalLoadBalancingMode - Specifies which endpoints to serve internally in the Virtual Network for the App Service Environment. Possible values include: 'InternalLoadBalancingModeNone', 'InternalLoadBalancingModeWeb', 'InternalLoadBalancingModePublishing'
3055	InternalLoadBalancingMode InternalLoadBalancingMode `json:"internalLoadBalancingMode,omitempty"`
3056	// MultiSize - Front-end VM size, e.g. "Medium", "Large".
3057	MultiSize *string `json:"multiSize,omitempty"`
3058	// MultiRoleCount - Number of front-end instances.
3059	MultiRoleCount *int32 `json:"multiRoleCount,omitempty"`
3060	// WorkerPools - Description of worker pools with worker size IDs, VM sizes, and number of workers in each pool.
3061	WorkerPools *[]WorkerPool `json:"workerPools,omitempty"`
3062	// IpsslAddressCount - Number of IP SSL addresses reserved for the App Service Environment.
3063	IpsslAddressCount *int32 `json:"ipsslAddressCount,omitempty"`
3064	// DatabaseEdition - READ-ONLY; Edition of the metadata database for the App Service Environment, e.g. "Standard".
3065	DatabaseEdition *string `json:"databaseEdition,omitempty"`
3066	// DatabaseServiceObjective - READ-ONLY; Service objective of the metadata database for the App Service Environment, e.g. "S0".
3067	DatabaseServiceObjective *string `json:"databaseServiceObjective,omitempty"`
3068	// UpgradeDomains - READ-ONLY; Number of upgrade domains of the App Service Environment.
3069	UpgradeDomains *int32 `json:"upgradeDomains,omitempty"`
3070	// SubscriptionID - READ-ONLY; Subscription of the App Service Environment.
3071	SubscriptionID *string `json:"subscriptionId,omitempty"`
3072	// DNSSuffix - DNS suffix of the App Service Environment.
3073	DNSSuffix *string `json:"dnsSuffix,omitempty"`
3074	// LastAction - READ-ONLY; Last deployment action on the App Service Environment.
3075	LastAction *string `json:"lastAction,omitempty"`
3076	// LastActionResult - READ-ONLY; Result of the last deployment action on the App Service Environment.
3077	LastActionResult *string `json:"lastActionResult,omitempty"`
3078	// AllowedMultiSizes - READ-ONLY; List of comma separated strings describing which VM sizes are allowed for front-ends.
3079	AllowedMultiSizes *string `json:"allowedMultiSizes,omitempty"`
3080	// AllowedWorkerSizes - READ-ONLY; List of comma separated strings describing which VM sizes are allowed for workers.
3081	AllowedWorkerSizes *string `json:"allowedWorkerSizes,omitempty"`
3082	// MaximumNumberOfMachines - READ-ONLY; Maximum number of VMs in the App Service Environment.
3083	MaximumNumberOfMachines *int32 `json:"maximumNumberOfMachines,omitempty"`
3084	// VipMappings - READ-ONLY; Description of IP SSL mapping for the App Service Environment.
3085	VipMappings *[]VirtualIPMapping `json:"vipMappings,omitempty"`
3086	// EnvironmentCapacities - READ-ONLY; Current total, used, and available worker capacities.
3087	EnvironmentCapacities *[]StampCapacity `json:"environmentCapacities,omitempty"`
3088	// NetworkAccessControlList - Access control list for controlling traffic to the App Service Environment.
3089	NetworkAccessControlList *[]NetworkAccessControlEntry `json:"networkAccessControlList,omitempty"`
3090	// EnvironmentIsHealthy - READ-ONLY; True/false indicating whether the App Service Environment is healthy.
3091	EnvironmentIsHealthy *bool `json:"environmentIsHealthy,omitempty"`
3092	// EnvironmentStatus - READ-ONLY; Detailed message about with results of the last check of the App Service Environment.
3093	EnvironmentStatus *string `json:"environmentStatus,omitempty"`
3094	// ResourceGroup - READ-ONLY; Resource group of the App Service Environment.
3095	ResourceGroup *string `json:"resourceGroup,omitempty"`
3096	// FrontEndScaleFactor - Scale factor for front-ends.
3097	FrontEndScaleFactor *int32 `json:"frontEndScaleFactor,omitempty"`
3098	// DefaultFrontEndScaleFactor - READ-ONLY; Default Scale Factor for FrontEnds.
3099	DefaultFrontEndScaleFactor *int32 `json:"defaultFrontEndScaleFactor,omitempty"`
3100	// APIManagementAccountID - API Management Account associated with the App Service Environment.
3101	APIManagementAccountID *string `json:"apiManagementAccountId,omitempty"`
3102	// Suspended - <code>true</code> if the App Service Environment is suspended; otherwise, <code>false</code>. The environment can be suspended, e.g. when the management endpoint is no longer available
3103	//  (most likely because NSG blocked the incoming traffic).
3104	Suspended *bool `json:"suspended,omitempty"`
3105	// DynamicCacheEnabled - True/false indicating whether the App Service Environment is suspended. The environment can be suspended e.g. when the management endpoint is no longer available
3106	// (most likely because NSG blocked the incoming traffic).
3107	DynamicCacheEnabled *bool `json:"dynamicCacheEnabled,omitempty"`
3108	// ClusterSettings - Custom settings for changing the behavior of the App Service Environment.
3109	ClusterSettings *[]NameValuePair `json:"clusterSettings,omitempty"`
3110	// UserWhitelistedIPRanges - User added ip ranges to whitelist on ASE db
3111	UserWhitelistedIPRanges *[]string `json:"userWhitelistedIpRanges,omitempty"`
3112}
3113
3114// AppServiceEnvironmentCollection collection of App Service Environments.
3115type AppServiceEnvironmentCollection struct {
3116	autorest.Response `json:"-"`
3117	// Value - Collection of resources.
3118	Value *[]AppServiceEnvironmentResource `json:"value,omitempty"`
3119	// NextLink - READ-ONLY; Link to next page of resources.
3120	NextLink *string `json:"nextLink,omitempty"`
3121}
3122
3123// AppServiceEnvironmentCollectionIterator provides access to a complete listing of
3124// AppServiceEnvironmentResource values.
3125type AppServiceEnvironmentCollectionIterator struct {
3126	i    int
3127	page AppServiceEnvironmentCollectionPage
3128}
3129
3130// NextWithContext advances to the next value.  If there was an error making
3131// the request the iterator does not advance and the error is returned.
3132func (iter *AppServiceEnvironmentCollectionIterator) NextWithContext(ctx context.Context) (err error) {
3133	if tracing.IsEnabled() {
3134		ctx = tracing.StartSpan(ctx, fqdn+"/AppServiceEnvironmentCollectionIterator.NextWithContext")
3135		defer func() {
3136			sc := -1
3137			if iter.Response().Response.Response != nil {
3138				sc = iter.Response().Response.Response.StatusCode
3139			}
3140			tracing.EndSpan(ctx, sc, err)
3141		}()
3142	}
3143	iter.i++
3144	if iter.i < len(iter.page.Values()) {
3145		return nil
3146	}
3147	err = iter.page.NextWithContext(ctx)
3148	if err != nil {
3149		iter.i--
3150		return err
3151	}
3152	iter.i = 0
3153	return nil
3154}
3155
3156// Next advances to the next value.  If there was an error making
3157// the request the iterator does not advance and the error is returned.
3158// Deprecated: Use NextWithContext() instead.
3159func (iter *AppServiceEnvironmentCollectionIterator) Next() error {
3160	return iter.NextWithContext(context.Background())
3161}
3162
3163// NotDone returns true if the enumeration should be started or is not yet complete.
3164func (iter AppServiceEnvironmentCollectionIterator) NotDone() bool {
3165	return iter.page.NotDone() && iter.i < len(iter.page.Values())
3166}
3167
3168// Response returns the raw server response from the last page request.
3169func (iter AppServiceEnvironmentCollectionIterator) Response() AppServiceEnvironmentCollection {
3170	return iter.page.Response()
3171}
3172
3173// Value returns the current value or a zero-initialized value if the
3174// iterator has advanced beyond the end of the collection.
3175func (iter AppServiceEnvironmentCollectionIterator) Value() AppServiceEnvironmentResource {
3176	if !iter.page.NotDone() {
3177		return AppServiceEnvironmentResource{}
3178	}
3179	return iter.page.Values()[iter.i]
3180}
3181
3182// Creates a new instance of the AppServiceEnvironmentCollectionIterator type.
3183func NewAppServiceEnvironmentCollectionIterator(page AppServiceEnvironmentCollectionPage) AppServiceEnvironmentCollectionIterator {
3184	return AppServiceEnvironmentCollectionIterator{page: page}
3185}
3186
3187// IsEmpty returns true if the ListResult contains no values.
3188func (asec AppServiceEnvironmentCollection) IsEmpty() bool {
3189	return asec.Value == nil || len(*asec.Value) == 0
3190}
3191
3192// appServiceEnvironmentCollectionPreparer prepares a request to retrieve the next set of results.
3193// It returns nil if no more results exist.
3194func (asec AppServiceEnvironmentCollection) appServiceEnvironmentCollectionPreparer(ctx context.Context) (*http.Request, error) {
3195	if asec.NextLink == nil || len(to.String(asec.NextLink)) < 1 {
3196		return nil, nil
3197	}
3198	return autorest.Prepare((&http.Request{}).WithContext(ctx),
3199		autorest.AsJSON(),
3200		autorest.AsGet(),
3201		autorest.WithBaseURL(to.String(asec.NextLink)))
3202}
3203
3204// AppServiceEnvironmentCollectionPage contains a page of AppServiceEnvironmentResource values.
3205type AppServiceEnvironmentCollectionPage struct {
3206	fn   func(context.Context, AppServiceEnvironmentCollection) (AppServiceEnvironmentCollection, error)
3207	asec AppServiceEnvironmentCollection
3208}
3209
3210// NextWithContext advances to the next page of values.  If there was an error making
3211// the request the page does not advance and the error is returned.
3212func (page *AppServiceEnvironmentCollectionPage) NextWithContext(ctx context.Context) (err error) {
3213	if tracing.IsEnabled() {
3214		ctx = tracing.StartSpan(ctx, fqdn+"/AppServiceEnvironmentCollectionPage.NextWithContext")
3215		defer func() {
3216			sc := -1
3217			if page.Response().Response.Response != nil {
3218				sc = page.Response().Response.Response.StatusCode
3219			}
3220			tracing.EndSpan(ctx, sc, err)
3221		}()
3222	}
3223	next, err := page.fn(ctx, page.asec)
3224	if err != nil {
3225		return err
3226	}
3227	page.asec = next
3228	return nil
3229}
3230
3231// Next advances to the next page of values.  If there was an error making
3232// the request the page does not advance and the error is returned.
3233// Deprecated: Use NextWithContext() instead.
3234func (page *AppServiceEnvironmentCollectionPage) Next() error {
3235	return page.NextWithContext(context.Background())
3236}
3237
3238// NotDone returns true if the page enumeration should be started or is not yet complete.
3239func (page AppServiceEnvironmentCollectionPage) NotDone() bool {
3240	return !page.asec.IsEmpty()
3241}
3242
3243// Response returns the raw server response from the last page request.
3244func (page AppServiceEnvironmentCollectionPage) Response() AppServiceEnvironmentCollection {
3245	return page.asec
3246}
3247
3248// Values returns the slice of values for the current page or nil if there are no values.
3249func (page AppServiceEnvironmentCollectionPage) Values() []AppServiceEnvironmentResource {
3250	if page.asec.IsEmpty() {
3251		return nil
3252	}
3253	return *page.asec.Value
3254}
3255
3256// Creates a new instance of the AppServiceEnvironmentCollectionPage type.
3257func NewAppServiceEnvironmentCollectionPage(getNextPage func(context.Context, AppServiceEnvironmentCollection) (AppServiceEnvironmentCollection, error)) AppServiceEnvironmentCollectionPage {
3258	return AppServiceEnvironmentCollectionPage{fn: getNextPage}
3259}
3260
3261// AppServiceEnvironmentPatchResource ARM resource for a app service environment.
3262type AppServiceEnvironmentPatchResource struct {
3263	// AppServiceEnvironment - Core resource properties
3264	*AppServiceEnvironment `json:"properties,omitempty"`
3265	// ID - READ-ONLY; Resource Id.
3266	ID *string `json:"id,omitempty"`
3267	// Name - READ-ONLY; Resource Name.
3268	Name *string `json:"name,omitempty"`
3269	// Kind - Kind of resource.
3270	Kind *string `json:"kind,omitempty"`
3271	// Type - READ-ONLY; Resource type.
3272	Type *string `json:"type,omitempty"`
3273}
3274
3275// MarshalJSON is the custom marshaler for AppServiceEnvironmentPatchResource.
3276func (asepr AppServiceEnvironmentPatchResource) MarshalJSON() ([]byte, error) {
3277	objectMap := make(map[string]interface{})
3278	if asepr.AppServiceEnvironment != nil {
3279		objectMap["properties"] = asepr.AppServiceEnvironment
3280	}
3281	if asepr.Kind != nil {
3282		objectMap["kind"] = asepr.Kind
3283	}
3284	return json.Marshal(objectMap)
3285}
3286
3287// UnmarshalJSON is the custom unmarshaler for AppServiceEnvironmentPatchResource struct.
3288func (asepr *AppServiceEnvironmentPatchResource) UnmarshalJSON(body []byte) error {
3289	var m map[string]*json.RawMessage
3290	err := json.Unmarshal(body, &m)
3291	if err != nil {
3292		return err
3293	}
3294	for k, v := range m {
3295		switch k {
3296		case "properties":
3297			if v != nil {
3298				var appServiceEnvironment AppServiceEnvironment
3299				err = json.Unmarshal(*v, &appServiceEnvironment)
3300				if err != nil {
3301					return err
3302				}
3303				asepr.AppServiceEnvironment = &appServiceEnvironment
3304			}
3305		case "id":
3306			if v != nil {
3307				var ID string
3308				err = json.Unmarshal(*v, &ID)
3309				if err != nil {
3310					return err
3311				}
3312				asepr.ID = &ID
3313			}
3314		case "name":
3315			if v != nil {
3316				var name string
3317				err = json.Unmarshal(*v, &name)
3318				if err != nil {
3319					return err
3320				}
3321				asepr.Name = &name
3322			}
3323		case "kind":
3324			if v != nil {
3325				var kind string
3326				err = json.Unmarshal(*v, &kind)
3327				if err != nil {
3328					return err
3329				}
3330				asepr.Kind = &kind
3331			}
3332		case "type":
3333			if v != nil {
3334				var typeVar string
3335				err = json.Unmarshal(*v, &typeVar)
3336				if err != nil {
3337					return err
3338				}
3339				asepr.Type = &typeVar
3340			}
3341		}
3342	}
3343
3344	return nil
3345}
3346
3347// AppServiceEnvironmentResource app Service Environment ARM resource.
3348type AppServiceEnvironmentResource struct {
3349	autorest.Response `json:"-"`
3350	// AppServiceEnvironment - Core resource properties
3351	*AppServiceEnvironment `json:"properties,omitempty"`
3352	// ID - READ-ONLY; Resource Id.
3353	ID *string `json:"id,omitempty"`
3354	// Name - READ-ONLY; Resource Name.
3355	Name *string `json:"name,omitempty"`
3356	// Kind - Kind of resource.
3357	Kind *string `json:"kind,omitempty"`
3358	// Location - Resource Location.
3359	Location *string `json:"location,omitempty"`
3360	// Type - READ-ONLY; Resource type.
3361	Type *string `json:"type,omitempty"`
3362	// Tags - Resource tags.
3363	Tags map[string]*string `json:"tags"`
3364}
3365
3366// MarshalJSON is the custom marshaler for AppServiceEnvironmentResource.
3367func (aser AppServiceEnvironmentResource) MarshalJSON() ([]byte, error) {
3368	objectMap := make(map[string]interface{})
3369	if aser.AppServiceEnvironment != nil {
3370		objectMap["properties"] = aser.AppServiceEnvironment
3371	}
3372	if aser.Kind != nil {
3373		objectMap["kind"] = aser.Kind
3374	}
3375	if aser.Location != nil {
3376		objectMap["location"] = aser.Location
3377	}
3378	if aser.Tags != nil {
3379		objectMap["tags"] = aser.Tags
3380	}
3381	return json.Marshal(objectMap)
3382}
3383
3384// UnmarshalJSON is the custom unmarshaler for AppServiceEnvironmentResource struct.
3385func (aser *AppServiceEnvironmentResource) UnmarshalJSON(body []byte) error {
3386	var m map[string]*json.RawMessage
3387	err := json.Unmarshal(body, &m)
3388	if err != nil {
3389		return err
3390	}
3391	for k, v := range m {
3392		switch k {
3393		case "properties":
3394			if v != nil {
3395				var appServiceEnvironment AppServiceEnvironment
3396				err = json.Unmarshal(*v, &appServiceEnvironment)
3397				if err != nil {
3398					return err
3399				}
3400				aser.AppServiceEnvironment = &appServiceEnvironment
3401			}
3402		case "id":
3403			if v != nil {
3404				var ID string
3405				err = json.Unmarshal(*v, &ID)
3406				if err != nil {
3407					return err
3408				}
3409				aser.ID = &ID
3410			}
3411		case "name":
3412			if v != nil {
3413				var name string
3414				err = json.Unmarshal(*v, &name)
3415				if err != nil {
3416					return err
3417				}
3418				aser.Name = &name
3419			}
3420		case "kind":
3421			if v != nil {
3422				var kind string
3423				err = json.Unmarshal(*v, &kind)
3424				if err != nil {
3425					return err
3426				}
3427				aser.Kind = &kind
3428			}
3429		case "location":
3430			if v != nil {
3431				var location string
3432				err = json.Unmarshal(*v, &location)
3433				if err != nil {
3434					return err
3435				}
3436				aser.Location = &location
3437			}
3438		case "type":
3439			if v != nil {
3440				var typeVar string
3441				err = json.Unmarshal(*v, &typeVar)
3442				if err != nil {
3443					return err
3444				}
3445				aser.Type = &typeVar
3446			}
3447		case "tags":
3448			if v != nil {
3449				var tags map[string]*string
3450				err = json.Unmarshal(*v, &tags)
3451				if err != nil {
3452					return err
3453				}
3454				aser.Tags = tags
3455			}
3456		}
3457	}
3458
3459	return nil
3460}
3461
3462// AppServiceEnvironmentsCreateOrUpdateFuture an abstraction for monitoring and retrieving the results of a
3463// long-running operation.
3464type AppServiceEnvironmentsCreateOrUpdateFuture struct {
3465	azure.Future
3466}
3467
3468// Result returns the result of the asynchronous operation.
3469// If the operation has not completed it will return an error.
3470func (future *AppServiceEnvironmentsCreateOrUpdateFuture) Result(client AppServiceEnvironmentsClient) (aser AppServiceEnvironmentResource, err error) {
3471	var done bool
3472	done, err = future.DoneWithContext(context.Background(), client)
3473	if err != nil {
3474		err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsCreateOrUpdateFuture", "Result", future.Response(), "Polling failure")
3475		return
3476	}
3477	if !done {
3478		err = azure.NewAsyncOpIncompleteError("web.AppServiceEnvironmentsCreateOrUpdateFuture")
3479		return
3480	}
3481	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
3482	if aser.Response.Response, err = future.GetResult(sender); err == nil && aser.Response.Response.StatusCode != http.StatusNoContent {
3483		aser, err = client.CreateOrUpdateResponder(aser.Response.Response)
3484		if err != nil {
3485			err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsCreateOrUpdateFuture", "Result", aser.Response.Response, "Failure responding to request")
3486		}
3487	}
3488	return
3489}
3490
3491// AppServiceEnvironmentsCreateOrUpdateMultiRolePoolFuture an abstraction for monitoring and retrieving the
3492// results of a long-running operation.
3493type AppServiceEnvironmentsCreateOrUpdateMultiRolePoolFuture struct {
3494	azure.Future
3495}
3496
3497// Result returns the result of the asynchronous operation.
3498// If the operation has not completed it will return an error.
3499func (future *AppServiceEnvironmentsCreateOrUpdateMultiRolePoolFuture) Result(client AppServiceEnvironmentsClient) (wpr WorkerPoolResource, err error) {
3500	var done bool
3501	done, err = future.DoneWithContext(context.Background(), client)
3502	if err != nil {
3503		err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsCreateOrUpdateMultiRolePoolFuture", "Result", future.Response(), "Polling failure")
3504		return
3505	}
3506	if !done {
3507		err = azure.NewAsyncOpIncompleteError("web.AppServiceEnvironmentsCreateOrUpdateMultiRolePoolFuture")
3508		return
3509	}
3510	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
3511	if wpr.Response.Response, err = future.GetResult(sender); err == nil && wpr.Response.Response.StatusCode != http.StatusNoContent {
3512		wpr, err = client.CreateOrUpdateMultiRolePoolResponder(wpr.Response.Response)
3513		if err != nil {
3514			err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsCreateOrUpdateMultiRolePoolFuture", "Result", wpr.Response.Response, "Failure responding to request")
3515		}
3516	}
3517	return
3518}
3519
3520// AppServiceEnvironmentsCreateOrUpdateWorkerPoolFuture an abstraction for monitoring and retrieving the
3521// results of a long-running operation.
3522type AppServiceEnvironmentsCreateOrUpdateWorkerPoolFuture struct {
3523	azure.Future
3524}
3525
3526// Result returns the result of the asynchronous operation.
3527// If the operation has not completed it will return an error.
3528func (future *AppServiceEnvironmentsCreateOrUpdateWorkerPoolFuture) Result(client AppServiceEnvironmentsClient) (wpr WorkerPoolResource, err error) {
3529	var done bool
3530	done, err = future.DoneWithContext(context.Background(), client)
3531	if err != nil {
3532		err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsCreateOrUpdateWorkerPoolFuture", "Result", future.Response(), "Polling failure")
3533		return
3534	}
3535	if !done {
3536		err = azure.NewAsyncOpIncompleteError("web.AppServiceEnvironmentsCreateOrUpdateWorkerPoolFuture")
3537		return
3538	}
3539	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
3540	if wpr.Response.Response, err = future.GetResult(sender); err == nil && wpr.Response.Response.StatusCode != http.StatusNoContent {
3541		wpr, err = client.CreateOrUpdateWorkerPoolResponder(wpr.Response.Response)
3542		if err != nil {
3543			err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsCreateOrUpdateWorkerPoolFuture", "Result", wpr.Response.Response, "Failure responding to request")
3544		}
3545	}
3546	return
3547}
3548
3549// AppServiceEnvironmentsDeleteFuture an abstraction for monitoring and retrieving the results of a
3550// long-running operation.
3551type AppServiceEnvironmentsDeleteFuture struct {
3552	azure.Future
3553}
3554
3555// Result returns the result of the asynchronous operation.
3556// If the operation has not completed it will return an error.
3557func (future *AppServiceEnvironmentsDeleteFuture) Result(client AppServiceEnvironmentsClient) (ar autorest.Response, err error) {
3558	var done bool
3559	done, err = future.DoneWithContext(context.Background(), client)
3560	if err != nil {
3561		err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsDeleteFuture", "Result", future.Response(), "Polling failure")
3562		return
3563	}
3564	if !done {
3565		err = azure.NewAsyncOpIncompleteError("web.AppServiceEnvironmentsDeleteFuture")
3566		return
3567	}
3568	ar.Response = future.Response()
3569	return
3570}
3571
3572// AppServiceEnvironmentsResumeAllFuture an abstraction for monitoring and retrieving the results of a
3573// long-running operation.
3574type AppServiceEnvironmentsResumeAllFuture struct {
3575	azure.Future
3576}
3577
3578// Result returns the result of the asynchronous operation.
3579// If the operation has not completed it will return an error.
3580func (future *AppServiceEnvironmentsResumeAllFuture) Result(client AppServiceEnvironmentsClient) (acp AppCollectionPage, err error) {
3581	var done bool
3582	done, err = future.DoneWithContext(context.Background(), client)
3583	if err != nil {
3584		err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsResumeAllFuture", "Result", future.Response(), "Polling failure")
3585		return
3586	}
3587	if !done {
3588		err = azure.NewAsyncOpIncompleteError("web.AppServiceEnvironmentsResumeAllFuture")
3589		return
3590	}
3591	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
3592	if acp.ac.Response.Response, err = future.GetResult(sender); err == nil && acp.ac.Response.Response.StatusCode != http.StatusNoContent {
3593		acp, err = client.ResumeResponder(acp.ac.Response.Response)
3594		if err != nil {
3595			err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsResumeAllFuture", "Result", acp.ac.Response.Response, "Failure responding to request")
3596		}
3597	}
3598	return
3599}
3600
3601// AppServiceEnvironmentsResumeFuture an abstraction for monitoring and retrieving the results of a
3602// long-running operation.
3603type AppServiceEnvironmentsResumeFuture struct {
3604	azure.Future
3605}
3606
3607// Result returns the result of the asynchronous operation.
3608// If the operation has not completed it will return an error.
3609func (future *AppServiceEnvironmentsResumeFuture) Result(client AppServiceEnvironmentsClient) (acp AppCollectionPage, err error) {
3610	var done bool
3611	done, err = future.DoneWithContext(context.Background(), client)
3612	if err != nil {
3613		err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsResumeFuture", "Result", future.Response(), "Polling failure")
3614		return
3615	}
3616	if !done {
3617		err = azure.NewAsyncOpIncompleteError("web.AppServiceEnvironmentsResumeFuture")
3618		return
3619	}
3620	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
3621	if acp.ac.Response.Response, err = future.GetResult(sender); err == nil && acp.ac.Response.Response.StatusCode != http.StatusNoContent {
3622		acp, err = client.ResumeResponder(acp.ac.Response.Response)
3623		if err != nil {
3624			err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsResumeFuture", "Result", acp.ac.Response.Response, "Failure responding to request")
3625		}
3626	}
3627	return
3628}
3629
3630// AppServiceEnvironmentsSuspendAllFuture an abstraction for monitoring and retrieving the results of a
3631// long-running operation.
3632type AppServiceEnvironmentsSuspendAllFuture struct {
3633	azure.Future
3634}
3635
3636// Result returns the result of the asynchronous operation.
3637// If the operation has not completed it will return an error.
3638func (future *AppServiceEnvironmentsSuspendAllFuture) Result(client AppServiceEnvironmentsClient) (acp AppCollectionPage, err error) {
3639	var done bool
3640	done, err = future.DoneWithContext(context.Background(), client)
3641	if err != nil {
3642		err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsSuspendAllFuture", "Result", future.Response(), "Polling failure")
3643		return
3644	}
3645	if !done {
3646		err = azure.NewAsyncOpIncompleteError("web.AppServiceEnvironmentsSuspendAllFuture")
3647		return
3648	}
3649	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
3650	if acp.ac.Response.Response, err = future.GetResult(sender); err == nil && acp.ac.Response.Response.StatusCode != http.StatusNoContent {
3651		acp, err = client.SuspendResponder(acp.ac.Response.Response)
3652		if err != nil {
3653			err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsSuspendAllFuture", "Result", acp.ac.Response.Response, "Failure responding to request")
3654		}
3655	}
3656	return
3657}
3658
3659// AppServiceEnvironmentsSuspendFuture an abstraction for monitoring and retrieving the results of a
3660// long-running operation.
3661type AppServiceEnvironmentsSuspendFuture struct {
3662	azure.Future
3663}
3664
3665// Result returns the result of the asynchronous operation.
3666// If the operation has not completed it will return an error.
3667func (future *AppServiceEnvironmentsSuspendFuture) Result(client AppServiceEnvironmentsClient) (acp AppCollectionPage, err error) {
3668	var done bool
3669	done, err = future.DoneWithContext(context.Background(), client)
3670	if err != nil {
3671		err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsSuspendFuture", "Result", future.Response(), "Polling failure")
3672		return
3673	}
3674	if !done {
3675		err = azure.NewAsyncOpIncompleteError("web.AppServiceEnvironmentsSuspendFuture")
3676		return
3677	}
3678	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
3679	if acp.ac.Response.Response, err = future.GetResult(sender); err == nil && acp.ac.Response.Response.StatusCode != http.StatusNoContent {
3680		acp, err = client.SuspendResponder(acp.ac.Response.Response)
3681		if err != nil {
3682			err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsSuspendFuture", "Result", acp.ac.Response.Response, "Failure responding to request")
3683		}
3684	}
3685	return
3686}
3687
3688// AppServicePlan app Service plan.
3689type AppServicePlan struct {
3690	autorest.Response `json:"-"`
3691	// AppServicePlanProperties - AppServicePlan resource specific properties
3692	*AppServicePlanProperties `json:"properties,omitempty"`
3693	Sku                       *SkuDescription `json:"sku,omitempty"`
3694	// ID - READ-ONLY; Resource Id.
3695	ID *string `json:"id,omitempty"`
3696	// Name - READ-ONLY; Resource Name.
3697	Name *string `json:"name,omitempty"`
3698	// Kind - Kind of resource.
3699	Kind *string `json:"kind,omitempty"`
3700	// Location - Resource Location.
3701	Location *string `json:"location,omitempty"`
3702	// Type - READ-ONLY; Resource type.
3703	Type *string `json:"type,omitempty"`
3704	// Tags - Resource tags.
3705	Tags map[string]*string `json:"tags"`
3706}
3707
3708// MarshalJSON is the custom marshaler for AppServicePlan.
3709func (asp AppServicePlan) MarshalJSON() ([]byte, error) {
3710	objectMap := make(map[string]interface{})
3711	if asp.AppServicePlanProperties != nil {
3712		objectMap["properties"] = asp.AppServicePlanProperties
3713	}
3714	if asp.Sku != nil {
3715		objectMap["sku"] = asp.Sku
3716	}
3717	if asp.Kind != nil {
3718		objectMap["kind"] = asp.Kind
3719	}
3720	if asp.Location != nil {
3721		objectMap["location"] = asp.Location
3722	}
3723	if asp.Tags != nil {
3724		objectMap["tags"] = asp.Tags
3725	}
3726	return json.Marshal(objectMap)
3727}
3728
3729// UnmarshalJSON is the custom unmarshaler for AppServicePlan struct.
3730func (asp *AppServicePlan) UnmarshalJSON(body []byte) error {
3731	var m map[string]*json.RawMessage
3732	err := json.Unmarshal(body, &m)
3733	if err != nil {
3734		return err
3735	}
3736	for k, v := range m {
3737		switch k {
3738		case "properties":
3739			if v != nil {
3740				var appServicePlanProperties AppServicePlanProperties
3741				err = json.Unmarshal(*v, &appServicePlanProperties)
3742				if err != nil {
3743					return err
3744				}
3745				asp.AppServicePlanProperties = &appServicePlanProperties
3746			}
3747		case "sku":
3748			if v != nil {
3749				var sku SkuDescription
3750				err = json.Unmarshal(*v, &sku)
3751				if err != nil {
3752					return err
3753				}
3754				asp.Sku = &sku
3755			}
3756		case "id":
3757			if v != nil {
3758				var ID string
3759				err = json.Unmarshal(*v, &ID)
3760				if err != nil {
3761					return err
3762				}
3763				asp.ID = &ID
3764			}
3765		case "name":
3766			if v != nil {
3767				var name string
3768				err = json.Unmarshal(*v, &name)
3769				if err != nil {
3770					return err
3771				}
3772				asp.Name = &name
3773			}
3774		case "kind":
3775			if v != nil {
3776				var kind string
3777				err = json.Unmarshal(*v, &kind)
3778				if err != nil {
3779					return err
3780				}
3781				asp.Kind = &kind
3782			}
3783		case "location":
3784			if v != nil {
3785				var location string
3786				err = json.Unmarshal(*v, &location)
3787				if err != nil {
3788					return err
3789				}
3790				asp.Location = &location
3791			}
3792		case "type":
3793			if v != nil {
3794				var typeVar string
3795				err = json.Unmarshal(*v, &typeVar)
3796				if err != nil {
3797					return err
3798				}
3799				asp.Type = &typeVar
3800			}
3801		case "tags":
3802			if v != nil {
3803				var tags map[string]*string
3804				err = json.Unmarshal(*v, &tags)
3805				if err != nil {
3806					return err
3807				}
3808				asp.Tags = tags
3809			}
3810		}
3811	}
3812
3813	return nil
3814}
3815
3816// AppServicePlanCollection collection of App Service plans.
3817type AppServicePlanCollection struct {
3818	autorest.Response `json:"-"`
3819	// Value - Collection of resources.
3820	Value *[]AppServicePlan `json:"value,omitempty"`
3821	// NextLink - Link to next page of resources.
3822	NextLink *string `json:"nextLink,omitempty"`
3823}
3824
3825// AppServicePlanCollectionIterator provides access to a complete listing of AppServicePlan values.
3826type AppServicePlanCollectionIterator struct {
3827	i    int
3828	page AppServicePlanCollectionPage
3829}
3830
3831// NextWithContext advances to the next value.  If there was an error making
3832// the request the iterator does not advance and the error is returned.
3833func (iter *AppServicePlanCollectionIterator) NextWithContext(ctx context.Context) (err error) {
3834	if tracing.IsEnabled() {
3835		ctx = tracing.StartSpan(ctx, fqdn+"/AppServicePlanCollectionIterator.NextWithContext")
3836		defer func() {
3837			sc := -1
3838			if iter.Response().Response.Response != nil {
3839				sc = iter.Response().Response.Response.StatusCode
3840			}
3841			tracing.EndSpan(ctx, sc, err)
3842		}()
3843	}
3844	iter.i++
3845	if iter.i < len(iter.page.Values()) {
3846		return nil
3847	}
3848	err = iter.page.NextWithContext(ctx)
3849	if err != nil {
3850		iter.i--
3851		return err
3852	}
3853	iter.i = 0
3854	return nil
3855}
3856
3857// Next advances to the next value.  If there was an error making
3858// the request the iterator does not advance and the error is returned.
3859// Deprecated: Use NextWithContext() instead.
3860func (iter *AppServicePlanCollectionIterator) Next() error {
3861	return iter.NextWithContext(context.Background())
3862}
3863
3864// NotDone returns true if the enumeration should be started or is not yet complete.
3865func (iter AppServicePlanCollectionIterator) NotDone() bool {
3866	return iter.page.NotDone() && iter.i < len(iter.page.Values())
3867}
3868
3869// Response returns the raw server response from the last page request.
3870func (iter AppServicePlanCollectionIterator) Response() AppServicePlanCollection {
3871	return iter.page.Response()
3872}
3873
3874// Value returns the current value or a zero-initialized value if the
3875// iterator has advanced beyond the end of the collection.
3876func (iter AppServicePlanCollectionIterator) Value() AppServicePlan {
3877	if !iter.page.NotDone() {
3878		return AppServicePlan{}
3879	}
3880	return iter.page.Values()[iter.i]
3881}
3882
3883// Creates a new instance of the AppServicePlanCollectionIterator type.
3884func NewAppServicePlanCollectionIterator(page AppServicePlanCollectionPage) AppServicePlanCollectionIterator {
3885	return AppServicePlanCollectionIterator{page: page}
3886}
3887
3888// IsEmpty returns true if the ListResult contains no values.
3889func (aspc AppServicePlanCollection) IsEmpty() bool {
3890	return aspc.Value == nil || len(*aspc.Value) == 0
3891}
3892
3893// appServicePlanCollectionPreparer prepares a request to retrieve the next set of results.
3894// It returns nil if no more results exist.
3895func (aspc AppServicePlanCollection) appServicePlanCollectionPreparer(ctx context.Context) (*http.Request, error) {
3896	if aspc.NextLink == nil || len(to.String(aspc.NextLink)) < 1 {
3897		return nil, nil
3898	}
3899	return autorest.Prepare((&http.Request{}).WithContext(ctx),
3900		autorest.AsJSON(),
3901		autorest.AsGet(),
3902		autorest.WithBaseURL(to.String(aspc.NextLink)))
3903}
3904
3905// AppServicePlanCollectionPage contains a page of AppServicePlan values.
3906type AppServicePlanCollectionPage struct {
3907	fn   func(context.Context, AppServicePlanCollection) (AppServicePlanCollection, error)
3908	aspc AppServicePlanCollection
3909}
3910
3911// NextWithContext advances to the next page of values.  If there was an error making
3912// the request the page does not advance and the error is returned.
3913func (page *AppServicePlanCollectionPage) NextWithContext(ctx context.Context) (err error) {
3914	if tracing.IsEnabled() {
3915		ctx = tracing.StartSpan(ctx, fqdn+"/AppServicePlanCollectionPage.NextWithContext")
3916		defer func() {
3917			sc := -1
3918			if page.Response().Response.Response != nil {
3919				sc = page.Response().Response.Response.StatusCode
3920			}
3921			tracing.EndSpan(ctx, sc, err)
3922		}()
3923	}
3924	next, err := page.fn(ctx, page.aspc)
3925	if err != nil {
3926		return err
3927	}
3928	page.aspc = next
3929	return nil
3930}
3931
3932// Next advances to the next page of values.  If there was an error making
3933// the request the page does not advance and the error is returned.
3934// Deprecated: Use NextWithContext() instead.
3935func (page *AppServicePlanCollectionPage) Next() error {
3936	return page.NextWithContext(context.Background())
3937}
3938
3939// NotDone returns true if the page enumeration should be started or is not yet complete.
3940func (page AppServicePlanCollectionPage) NotDone() bool {
3941	return !page.aspc.IsEmpty()
3942}
3943
3944// Response returns the raw server response from the last page request.
3945func (page AppServicePlanCollectionPage) Response() AppServicePlanCollection {
3946	return page.aspc
3947}
3948
3949// Values returns the slice of values for the current page or nil if there are no values.
3950func (page AppServicePlanCollectionPage) Values() []AppServicePlan {
3951	if page.aspc.IsEmpty() {
3952		return nil
3953	}
3954	return *page.aspc.Value
3955}
3956
3957// Creates a new instance of the AppServicePlanCollectionPage type.
3958func NewAppServicePlanCollectionPage(getNextPage func(context.Context, AppServicePlanCollection) (AppServicePlanCollection, error)) AppServicePlanCollectionPage {
3959	return AppServicePlanCollectionPage{fn: getNextPage}
3960}
3961
3962// AppServicePlanPatchResource ARM resource for a app service plan.
3963type AppServicePlanPatchResource struct {
3964	// AppServicePlanPatchResourceProperties - AppServicePlanPatchResource resource specific properties
3965	*AppServicePlanPatchResourceProperties `json:"properties,omitempty"`
3966	// ID - READ-ONLY; Resource Id.
3967	ID *string `json:"id,omitempty"`
3968	// Name - READ-ONLY; Resource Name.
3969	Name *string `json:"name,omitempty"`
3970	// Kind - Kind of resource.
3971	Kind *string `json:"kind,omitempty"`
3972	// Type - READ-ONLY; Resource type.
3973	Type *string `json:"type,omitempty"`
3974}
3975
3976// MarshalJSON is the custom marshaler for AppServicePlanPatchResource.
3977func (asppr AppServicePlanPatchResource) MarshalJSON() ([]byte, error) {
3978	objectMap := make(map[string]interface{})
3979	if asppr.AppServicePlanPatchResourceProperties != nil {
3980		objectMap["properties"] = asppr.AppServicePlanPatchResourceProperties
3981	}
3982	if asppr.Kind != nil {
3983		objectMap["kind"] = asppr.Kind
3984	}
3985	return json.Marshal(objectMap)
3986}
3987
3988// UnmarshalJSON is the custom unmarshaler for AppServicePlanPatchResource struct.
3989func (asppr *AppServicePlanPatchResource) UnmarshalJSON(body []byte) error {
3990	var m map[string]*json.RawMessage
3991	err := json.Unmarshal(body, &m)
3992	if err != nil {
3993		return err
3994	}
3995	for k, v := range m {
3996		switch k {
3997		case "properties":
3998			if v != nil {
3999				var appServicePlanPatchResourceProperties AppServicePlanPatchResourceProperties
4000				err = json.Unmarshal(*v, &appServicePlanPatchResourceProperties)
4001				if err != nil {
4002					return err
4003				}
4004				asppr.AppServicePlanPatchResourceProperties = &appServicePlanPatchResourceProperties
4005			}
4006		case "id":
4007			if v != nil {
4008				var ID string
4009				err = json.Unmarshal(*v, &ID)
4010				if err != nil {
4011					return err
4012				}
4013				asppr.ID = &ID
4014			}
4015		case "name":
4016			if v != nil {
4017				var name string
4018				err = json.Unmarshal(*v, &name)
4019				if err != nil {
4020					return err
4021				}
4022				asppr.Name = &name
4023			}
4024		case "kind":
4025			if v != nil {
4026				var kind string
4027				err = json.Unmarshal(*v, &kind)
4028				if err != nil {
4029					return err
4030				}
4031				asppr.Kind = &kind
4032			}
4033		case "type":
4034			if v != nil {
4035				var typeVar string
4036				err = json.Unmarshal(*v, &typeVar)
4037				if err != nil {
4038					return err
4039				}
4040				asppr.Type = &typeVar
4041			}
4042		}
4043	}
4044
4045	return nil
4046}
4047
4048// AppServicePlanPatchResourceProperties appServicePlanPatchResource resource specific properties
4049type AppServicePlanPatchResourceProperties struct {
4050	// Name - Name for the App Service plan.
4051	Name *string `json:"name,omitempty"`
4052	// WorkerTierName - Target worker tier assigned to the App Service plan.
4053	WorkerTierName *string `json:"workerTierName,omitempty"`
4054	// Status - READ-ONLY; App Service plan status. Possible values include: 'StatusOptionsReady', 'StatusOptionsPending', 'StatusOptionsCreating'
4055	Status StatusOptions `json:"status,omitempty"`
4056	// Subscription - READ-ONLY; App Service plan subscription.
4057	Subscription *string `json:"subscription,omitempty"`
4058	// AdminSiteName - App Service plan administration site.
4059	AdminSiteName *string `json:"adminSiteName,omitempty"`
4060	// HostingEnvironmentProfile - Specification for the App Service Environment to use for the App Service plan.
4061	HostingEnvironmentProfile *HostingEnvironmentProfile `json:"hostingEnvironmentProfile,omitempty"`
4062	// MaximumNumberOfWorkers - READ-ONLY; Maximum number of instances that can be assigned to this App Service plan.
4063	MaximumNumberOfWorkers *int32 `json:"maximumNumberOfWorkers,omitempty"`
4064	// GeoRegion - READ-ONLY; Geographical location for the App Service plan.
4065	GeoRegion *string `json:"geoRegion,omitempty"`
4066	// PerSiteScaling - If <code>true</code>, apps assigned to this App Service plan can be scaled independently.
4067	// If <code>false</code>, apps assigned to this App Service plan will scale to all instances of the plan.
4068	PerSiteScaling *bool `json:"perSiteScaling,omitempty"`
4069	// NumberOfSites - READ-ONLY; Number of apps assigned to this App Service plan.
4070	NumberOfSites *int32 `json:"numberOfSites,omitempty"`
4071	// IsSpot - If <code>true</code>, this App Service Plan owns spot instances.
4072	IsSpot *bool `json:"isSpot,omitempty"`
4073	// SpotExpirationTime - The time when the server farm expires. Valid only if it is a spot server farm.
4074	SpotExpirationTime *date.Time `json:"spotExpirationTime,omitempty"`
4075	// ResourceGroup - READ-ONLY; Resource group of the App Service plan.
4076	ResourceGroup *string `json:"resourceGroup,omitempty"`
4077	// Reserved - If Linux app service plan <code>true</code>, <code>false</code> otherwise.
4078	Reserved *bool `json:"reserved,omitempty"`
4079	// TargetWorkerCount - Scaling worker count.
4080	TargetWorkerCount *int32 `json:"targetWorkerCount,omitempty"`
4081	// TargetWorkerSizeID - Scaling worker size ID.
4082	TargetWorkerSizeID *int32 `json:"targetWorkerSizeId,omitempty"`
4083	// ProvisioningState - READ-ONLY; Provisioning state of the App Service Environment. Possible values include: 'ProvisioningStateSucceeded', 'ProvisioningStateFailed', 'ProvisioningStateCanceled', 'ProvisioningStateInProgress', 'ProvisioningStateDeleting'
4084	ProvisioningState ProvisioningState `json:"provisioningState,omitempty"`
4085}
4086
4087// AppServicePlanProperties appServicePlan resource specific properties
4088type AppServicePlanProperties struct {
4089	// Name - Name for the App Service plan.
4090	Name *string `json:"name,omitempty"`
4091	// WorkerTierName - Target worker tier assigned to the App Service plan.
4092	WorkerTierName *string `json:"workerTierName,omitempty"`
4093	// Status - READ-ONLY; App Service plan status. Possible values include: 'StatusOptionsReady', 'StatusOptionsPending', 'StatusOptionsCreating'
4094	Status StatusOptions `json:"status,omitempty"`
4095	// Subscription - READ-ONLY; App Service plan subscription.
4096	Subscription *string `json:"subscription,omitempty"`
4097	// AdminSiteName - App Service plan administration site.
4098	AdminSiteName *string `json:"adminSiteName,omitempty"`
4099	// HostingEnvironmentProfile - Specification for the App Service Environment to use for the App Service plan.
4100	HostingEnvironmentProfile *HostingEnvironmentProfile `json:"hostingEnvironmentProfile,omitempty"`
4101	// MaximumNumberOfWorkers - READ-ONLY; Maximum number of instances that can be assigned to this App Service plan.
4102	MaximumNumberOfWorkers *int32 `json:"maximumNumberOfWorkers,omitempty"`
4103	// GeoRegion - READ-ONLY; Geographical location for the App Service plan.
4104	GeoRegion *string `json:"geoRegion,omitempty"`
4105	// PerSiteScaling - If <code>true</code>, apps assigned to this App Service plan can be scaled independently.
4106	// If <code>false</code>, apps assigned to this App Service plan will scale to all instances of the plan.
4107	PerSiteScaling *bool `json:"perSiteScaling,omitempty"`
4108	// NumberOfSites - READ-ONLY; Number of apps assigned to this App Service plan.
4109	NumberOfSites *int32 `json:"numberOfSites,omitempty"`
4110	// IsSpot - If <code>true</code>, this App Service Plan owns spot instances.
4111	IsSpot *bool `json:"isSpot,omitempty"`
4112	// SpotExpirationTime - The time when the server farm expires. Valid only if it is a spot server farm.
4113	SpotExpirationTime *date.Time `json:"spotExpirationTime,omitempty"`
4114	// ResourceGroup - READ-ONLY; Resource group of the App Service plan.
4115	ResourceGroup *string `json:"resourceGroup,omitempty"`
4116	// Reserved - If Linux app service plan <code>true</code>, <code>false</code> otherwise.
4117	Reserved *bool `json:"reserved,omitempty"`
4118	// TargetWorkerCount - Scaling worker count.
4119	TargetWorkerCount *int32 `json:"targetWorkerCount,omitempty"`
4120	// TargetWorkerSizeID - Scaling worker size ID.
4121	TargetWorkerSizeID *int32 `json:"targetWorkerSizeId,omitempty"`
4122	// ProvisioningState - READ-ONLY; Provisioning state of the App Service Environment. Possible values include: 'ProvisioningStateSucceeded', 'ProvisioningStateFailed', 'ProvisioningStateCanceled', 'ProvisioningStateInProgress', 'ProvisioningStateDeleting'
4123	ProvisioningState ProvisioningState `json:"provisioningState,omitempty"`
4124}
4125
4126// AppServicePlansCreateOrUpdateFuture an abstraction for monitoring and retrieving the results of a
4127// long-running operation.
4128type AppServicePlansCreateOrUpdateFuture struct {
4129	azure.Future
4130}
4131
4132// Result returns the result of the asynchronous operation.
4133// If the operation has not completed it will return an error.
4134func (future *AppServicePlansCreateOrUpdateFuture) Result(client AppServicePlansClient) (asp AppServicePlan, err error) {
4135	var done bool
4136	done, err = future.DoneWithContext(context.Background(), client)
4137	if err != nil {
4138		err = autorest.NewErrorWithError(err, "web.AppServicePlansCreateOrUpdateFuture", "Result", future.Response(), "Polling failure")
4139		return
4140	}
4141	if !done {
4142		err = azure.NewAsyncOpIncompleteError("web.AppServicePlansCreateOrUpdateFuture")
4143		return
4144	}
4145	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
4146	if asp.Response.Response, err = future.GetResult(sender); err == nil && asp.Response.Response.StatusCode != http.StatusNoContent {
4147		asp, err = client.CreateOrUpdateResponder(asp.Response.Response)
4148		if err != nil {
4149			err = autorest.NewErrorWithError(err, "web.AppServicePlansCreateOrUpdateFuture", "Result", asp.Response.Response, "Failure responding to request")
4150		}
4151	}
4152	return
4153}
4154
4155// AppsInstallSiteExtensionFuture an abstraction for monitoring and retrieving the results of a
4156// long-running operation.
4157type AppsInstallSiteExtensionFuture struct {
4158	azure.Future
4159}
4160
4161// Result returns the result of the asynchronous operation.
4162// If the operation has not completed it will return an error.
4163func (future *AppsInstallSiteExtensionFuture) Result(client AppsClient) (sei SiteExtensionInfo, err error) {
4164	var done bool
4165	done, err = future.DoneWithContext(context.Background(), client)
4166	if err != nil {
4167		err = autorest.NewErrorWithError(err, "web.AppsInstallSiteExtensionFuture", "Result", future.Response(), "Polling failure")
4168		return
4169	}
4170	if !done {
4171		err = azure.NewAsyncOpIncompleteError("web.AppsInstallSiteExtensionFuture")
4172		return
4173	}
4174	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
4175	if sei.Response.Response, err = future.GetResult(sender); err == nil && sei.Response.Response.StatusCode != http.StatusNoContent {
4176		sei, err = client.InstallSiteExtensionResponder(sei.Response.Response)
4177		if err != nil {
4178			err = autorest.NewErrorWithError(err, "web.AppsInstallSiteExtensionFuture", "Result", sei.Response.Response, "Failure responding to request")
4179		}
4180	}
4181	return
4182}
4183
4184// AppsInstallSiteExtensionSlotFuture an abstraction for monitoring and retrieving the results of a
4185// long-running operation.
4186type AppsInstallSiteExtensionSlotFuture struct {
4187	azure.Future
4188}
4189
4190// Result returns the result of the asynchronous operation.
4191// If the operation has not completed it will return an error.
4192func (future *AppsInstallSiteExtensionSlotFuture) Result(client AppsClient) (sei SiteExtensionInfo, err error) {
4193	var done bool
4194	done, err = future.DoneWithContext(context.Background(), client)
4195	if err != nil {
4196		err = autorest.NewErrorWithError(err, "web.AppsInstallSiteExtensionSlotFuture", "Result", future.Response(), "Polling failure")
4197		return
4198	}
4199	if !done {
4200		err = azure.NewAsyncOpIncompleteError("web.AppsInstallSiteExtensionSlotFuture")
4201		return
4202	}
4203	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
4204	if sei.Response.Response, err = future.GetResult(sender); err == nil && sei.Response.Response.StatusCode != http.StatusNoContent {
4205		sei, err = client.InstallSiteExtensionSlotResponder(sei.Response.Response)
4206		if err != nil {
4207			err = autorest.NewErrorWithError(err, "web.AppsInstallSiteExtensionSlotFuture", "Result", sei.Response.Response, "Failure responding to request")
4208		}
4209	}
4210	return
4211}
4212
4213// AppsListPublishingCredentialsFuture an abstraction for monitoring and retrieving the results of a
4214// long-running operation.
4215type AppsListPublishingCredentialsFuture struct {
4216	azure.Future
4217}
4218
4219// Result returns the result of the asynchronous operation.
4220// If the operation has not completed it will return an error.
4221func (future *AppsListPublishingCredentialsFuture) Result(client AppsClient) (u User, err error) {
4222	var done bool
4223	done, err = future.DoneWithContext(context.Background(), client)
4224	if err != nil {
4225		err = autorest.NewErrorWithError(err, "web.AppsListPublishingCredentialsFuture", "Result", future.Response(), "Polling failure")
4226		return
4227	}
4228	if !done {
4229		err = azure.NewAsyncOpIncompleteError("web.AppsListPublishingCredentialsFuture")
4230		return
4231	}
4232	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
4233	if u.Response.Response, err = future.GetResult(sender); err == nil && u.Response.Response.StatusCode != http.StatusNoContent {
4234		u, err = client.ListPublishingCredentialsResponder(u.Response.Response)
4235		if err != nil {
4236			err = autorest.NewErrorWithError(err, "web.AppsListPublishingCredentialsFuture", "Result", u.Response.Response, "Failure responding to request")
4237		}
4238	}
4239	return
4240}
4241
4242// AppsListPublishingCredentialsSlotFuture an abstraction for monitoring and retrieving the results of a
4243// long-running operation.
4244type AppsListPublishingCredentialsSlotFuture struct {
4245	azure.Future
4246}
4247
4248// Result returns the result of the asynchronous operation.
4249// If the operation has not completed it will return an error.
4250func (future *AppsListPublishingCredentialsSlotFuture) Result(client AppsClient) (u User, err error) {
4251	var done bool
4252	done, err = future.DoneWithContext(context.Background(), client)
4253	if err != nil {
4254		err = autorest.NewErrorWithError(err, "web.AppsListPublishingCredentialsSlotFuture", "Result", future.Response(), "Polling failure")
4255		return
4256	}
4257	if !done {
4258		err = azure.NewAsyncOpIncompleteError("web.AppsListPublishingCredentialsSlotFuture")
4259		return
4260	}
4261	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
4262	if u.Response.Response, err = future.GetResult(sender); err == nil && u.Response.Response.StatusCode != http.StatusNoContent {
4263		u, err = client.ListPublishingCredentialsSlotResponder(u.Response.Response)
4264		if err != nil {
4265			err = autorest.NewErrorWithError(err, "web.AppsListPublishingCredentialsSlotFuture", "Result", u.Response.Response, "Failure responding to request")
4266		}
4267	}
4268	return
4269}
4270
4271// AppsMigrateMySQLFuture an abstraction for monitoring and retrieving the results of a long-running
4272// operation.
4273type AppsMigrateMySQLFuture struct {
4274	azure.Future
4275}
4276
4277// Result returns the result of the asynchronous operation.
4278// If the operation has not completed it will return an error.
4279func (future *AppsMigrateMySQLFuture) Result(client AppsClient) (o Operation, err error) {
4280	var done bool
4281	done, err = future.DoneWithContext(context.Background(), client)
4282	if err != nil {
4283		err = autorest.NewErrorWithError(err, "web.AppsMigrateMySQLFuture", "Result", future.Response(), "Polling failure")
4284		return
4285	}
4286	if !done {
4287		err = azure.NewAsyncOpIncompleteError("web.AppsMigrateMySQLFuture")
4288		return
4289	}
4290	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
4291	if o.Response.Response, err = future.GetResult(sender); err == nil && o.Response.Response.StatusCode != http.StatusNoContent {
4292		o, err = client.MigrateMySQLResponder(o.Response.Response)
4293		if err != nil {
4294			err = autorest.NewErrorWithError(err, "web.AppsMigrateMySQLFuture", "Result", o.Response.Response, "Failure responding to request")
4295		}
4296	}
4297	return
4298}
4299
4300// AppsMigrateStorageFuture an abstraction for monitoring and retrieving the results of a long-running
4301// operation.
4302type AppsMigrateStorageFuture struct {
4303	azure.Future
4304}
4305
4306// Result returns the result of the asynchronous operation.
4307// If the operation has not completed it will return an error.
4308func (future *AppsMigrateStorageFuture) Result(client AppsClient) (smr StorageMigrationResponse, err error) {
4309	var done bool
4310	done, err = future.DoneWithContext(context.Background(), client)
4311	if err != nil {
4312		err = autorest.NewErrorWithError(err, "web.AppsMigrateStorageFuture", "Result", future.Response(), "Polling failure")
4313		return
4314	}
4315	if !done {
4316		err = azure.NewAsyncOpIncompleteError("web.AppsMigrateStorageFuture")
4317		return
4318	}
4319	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
4320	if smr.Response.Response, err = future.GetResult(sender); err == nil && smr.Response.Response.StatusCode != http.StatusNoContent {
4321		smr, err = client.MigrateStorageResponder(smr.Response.Response)
4322		if err != nil {
4323			err = autorest.NewErrorWithError(err, "web.AppsMigrateStorageFuture", "Result", smr.Response.Response, "Failure responding to request")
4324		}
4325	}
4326	return
4327}
4328
4329// AppsRecoverFuture an abstraction for monitoring and retrieving the results of a long-running operation.
4330type AppsRecoverFuture struct {
4331	azure.Future
4332}
4333
4334// Result returns the result of the asynchronous operation.
4335// If the operation has not completed it will return an error.
4336func (future *AppsRecoverFuture) Result(client AppsClient) (ar autorest.Response, err error) {
4337	var done bool
4338	done, err = future.DoneWithContext(context.Background(), client)
4339	if err != nil {
4340		err = autorest.NewErrorWithError(err, "web.AppsRecoverFuture", "Result", future.Response(), "Polling failure")
4341		return
4342	}
4343	if !done {
4344		err = azure.NewAsyncOpIncompleteError("web.AppsRecoverFuture")
4345		return
4346	}
4347	ar.Response = future.Response()
4348	return
4349}
4350
4351// AppsRecoverSlotFuture an abstraction for monitoring and retrieving the results of a long-running
4352// operation.
4353type AppsRecoverSlotFuture struct {
4354	azure.Future
4355}
4356
4357// Result returns the result of the asynchronous operation.
4358// If the operation has not completed it will return an error.
4359func (future *AppsRecoverSlotFuture) Result(client AppsClient) (ar autorest.Response, err error) {
4360	var done bool
4361	done, err = future.DoneWithContext(context.Background(), client)
4362	if err != nil {
4363		err = autorest.NewErrorWithError(err, "web.AppsRecoverSlotFuture", "Result", future.Response(), "Polling failure")
4364		return
4365	}
4366	if !done {
4367		err = azure.NewAsyncOpIncompleteError("web.AppsRecoverSlotFuture")
4368		return
4369	}
4370	ar.Response = future.Response()
4371	return
4372}
4373
4374// AppsRestoreFuture an abstraction for monitoring and retrieving the results of a long-running operation.
4375type AppsRestoreFuture struct {
4376	azure.Future
4377}
4378
4379// Result returns the result of the asynchronous operation.
4380// If the operation has not completed it will return an error.
4381func (future *AppsRestoreFuture) Result(client AppsClient) (rr RestoreResponse, err error) {
4382	var done bool
4383	done, err = future.DoneWithContext(context.Background(), client)
4384	if err != nil {
4385		err = autorest.NewErrorWithError(err, "web.AppsRestoreFuture", "Result", future.Response(), "Polling failure")
4386		return
4387	}
4388	if !done {
4389		err = azure.NewAsyncOpIncompleteError("web.AppsRestoreFuture")
4390		return
4391	}
4392	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
4393	if rr.Response.Response, err = future.GetResult(sender); err == nil && rr.Response.Response.StatusCode != http.StatusNoContent {
4394		rr, err = client.RestoreResponder(rr.Response.Response)
4395		if err != nil {
4396			err = autorest.NewErrorWithError(err, "web.AppsRestoreFuture", "Result", rr.Response.Response, "Failure responding to request")
4397		}
4398	}
4399	return
4400}
4401
4402// AppsRestoreSlotFuture an abstraction for monitoring and retrieving the results of a long-running
4403// operation.
4404type AppsRestoreSlotFuture struct {
4405	azure.Future
4406}
4407
4408// Result returns the result of the asynchronous operation.
4409// If the operation has not completed it will return an error.
4410func (future *AppsRestoreSlotFuture) Result(client AppsClient) (rr RestoreResponse, err error) {
4411	var done bool
4412	done, err = future.DoneWithContext(context.Background(), client)
4413	if err != nil {
4414		err = autorest.NewErrorWithError(err, "web.AppsRestoreSlotFuture", "Result", future.Response(), "Polling failure")
4415		return
4416	}
4417	if !done {
4418		err = azure.NewAsyncOpIncompleteError("web.AppsRestoreSlotFuture")
4419		return
4420	}
4421	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
4422	if rr.Response.Response, err = future.GetResult(sender); err == nil && rr.Response.Response.StatusCode != http.StatusNoContent {
4423		rr, err = client.RestoreSlotResponder(rr.Response.Response)
4424		if err != nil {
4425			err = autorest.NewErrorWithError(err, "web.AppsRestoreSlotFuture", "Result", rr.Response.Response, "Failure responding to request")
4426		}
4427	}
4428	return
4429}
4430
4431// AppsSwapSlotSlotFuture an abstraction for monitoring and retrieving the results of a long-running
4432// operation.
4433type AppsSwapSlotSlotFuture struct {
4434	azure.Future
4435}
4436
4437// Result returns the result of the asynchronous operation.
4438// If the operation has not completed it will return an error.
4439func (future *AppsSwapSlotSlotFuture) Result(client AppsClient) (ar autorest.Response, err error) {
4440	var done bool
4441	done, err = future.DoneWithContext(context.Background(), client)
4442	if err != nil {
4443		err = autorest.NewErrorWithError(err, "web.AppsSwapSlotSlotFuture", "Result", future.Response(), "Polling failure")
4444		return
4445	}
4446	if !done {
4447		err = azure.NewAsyncOpIncompleteError("web.AppsSwapSlotSlotFuture")
4448		return
4449	}
4450	ar.Response = future.Response()
4451	return
4452}
4453
4454// AppsSwapSlotWithProductionFuture an abstraction for monitoring and retrieving the results of a
4455// long-running operation.
4456type AppsSwapSlotWithProductionFuture struct {
4457	azure.Future
4458}
4459
4460// Result returns the result of the asynchronous operation.
4461// If the operation has not completed it will return an error.
4462func (future *AppsSwapSlotWithProductionFuture) Result(client AppsClient) (ar autorest.Response, err error) {
4463	var done bool
4464	done, err = future.DoneWithContext(context.Background(), client)
4465	if err != nil {
4466		err = autorest.NewErrorWithError(err, "web.AppsSwapSlotWithProductionFuture", "Result", future.Response(), "Polling failure")
4467		return
4468	}
4469	if !done {
4470		err = azure.NewAsyncOpIncompleteError("web.AppsSwapSlotWithProductionFuture")
4471		return
4472	}
4473	ar.Response = future.Response()
4474	return
4475}
4476
4477// AutoHealActions actions which to take by the auto-heal module when a rule is triggered.
4478type AutoHealActions struct {
4479	// ActionType - Predefined action to be taken. Possible values include: 'Recycle', 'LogEvent', 'CustomAction'
4480	ActionType AutoHealActionType `json:"actionType,omitempty"`
4481	// CustomAction - Custom action to be taken.
4482	CustomAction *AutoHealCustomAction `json:"customAction,omitempty"`
4483	// MinProcessExecutionTime - Minimum time the process must execute
4484	// before taking the action
4485	MinProcessExecutionTime *string `json:"minProcessExecutionTime,omitempty"`
4486}
4487
4488// AutoHealCustomAction custom action to be executed
4489// when an auto heal rule is triggered.
4490type AutoHealCustomAction struct {
4491	// Exe - Executable to be run.
4492	Exe *string `json:"exe,omitempty"`
4493	// Parameters - Parameters for the executable.
4494	Parameters *string `json:"parameters,omitempty"`
4495}
4496
4497// AutoHealRules rules that can be defined for auto-heal.
4498type AutoHealRules struct {
4499	// Triggers - Conditions that describe when to execute the auto-heal actions.
4500	Triggers *AutoHealTriggers `json:"triggers,omitempty"`
4501	// Actions - Actions to be executed when a rule is triggered.
4502	Actions *AutoHealActions `json:"actions,omitempty"`
4503}
4504
4505// AutoHealTriggers triggers for auto-heal.
4506type AutoHealTriggers struct {
4507	// Requests - A rule based on total requests.
4508	Requests *RequestsBasedTrigger `json:"requests,omitempty"`
4509	// PrivateBytesInKB - A rule based on private bytes.
4510	PrivateBytesInKB *int32 `json:"privateBytesInKB,omitempty"`
4511	// StatusCodes - A rule based on status codes.
4512	StatusCodes *[]StatusCodesBasedTrigger `json:"statusCodes,omitempty"`
4513	// SlowRequests - A rule based on request execution time.
4514	SlowRequests *SlowRequestsBasedTrigger `json:"slowRequests,omitempty"`
4515}
4516
4517// AzureBlobStorageApplicationLogsConfig application logs azure blob storage configuration.
4518type AzureBlobStorageApplicationLogsConfig struct {
4519	// Level - Log level. Possible values include: 'Off', 'Verbose', 'Information', 'Warning', 'Error'
4520	Level LogLevel `json:"level,omitempty"`
4521	// SasURL - SAS url to a azure blob container with read/write/list/delete permissions.
4522	SasURL *string `json:"sasUrl,omitempty"`
4523	// RetentionInDays - Retention in days.
4524	// Remove blobs older than X days.
4525	// 0 or lower means no retention.
4526	RetentionInDays *int32 `json:"retentionInDays,omitempty"`
4527}
4528
4529// AzureBlobStorageHTTPLogsConfig http logs to azure blob storage configuration.
4530type AzureBlobStorageHTTPLogsConfig struct {
4531	// SasURL - SAS url to a azure blob container with read/write/list/delete permissions.
4532	SasURL *string `json:"sasUrl,omitempty"`
4533	// RetentionInDays - Retention in days.
4534	// Remove blobs older than X days.
4535	// 0 or lower means no retention.
4536	RetentionInDays *int32 `json:"retentionInDays,omitempty"`
4537	// Enabled - True if configuration is enabled, false if it is disabled and null if configuration is not set.
4538	Enabled *bool `json:"enabled,omitempty"`
4539}
4540
4541// AzureTableStorageApplicationLogsConfig application logs to Azure table storage configuration.
4542type AzureTableStorageApplicationLogsConfig struct {
4543	// Level - Log level. Possible values include: 'Off', 'Verbose', 'Information', 'Warning', 'Error'
4544	Level LogLevel `json:"level,omitempty"`
4545	// SasURL - SAS URL to an Azure table with add/query/delete permissions.
4546	SasURL *string `json:"sasUrl,omitempty"`
4547}
4548
4549// BackupItem backup description.
4550type BackupItem struct {
4551	autorest.Response `json:"-"`
4552	// BackupItemProperties - BackupItem resource specific properties
4553	*BackupItemProperties `json:"properties,omitempty"`
4554	// ID - READ-ONLY; Resource Id.
4555	ID *string `json:"id,omitempty"`
4556	// Name - READ-ONLY; Resource Name.
4557	Name *string `json:"name,omitempty"`
4558	// Kind - Kind of resource.
4559	Kind *string `json:"kind,omitempty"`
4560	// Type - READ-ONLY; Resource type.
4561	Type *string `json:"type,omitempty"`
4562}
4563
4564// MarshalJSON is the custom marshaler for BackupItem.
4565func (bi BackupItem) MarshalJSON() ([]byte, error) {
4566	objectMap := make(map[string]interface{})
4567	if bi.BackupItemProperties != nil {
4568		objectMap["properties"] = bi.BackupItemProperties
4569	}
4570	if bi.Kind != nil {
4571		objectMap["kind"] = bi.Kind
4572	}
4573	return json.Marshal(objectMap)
4574}
4575
4576// UnmarshalJSON is the custom unmarshaler for BackupItem struct.
4577func (bi *BackupItem) UnmarshalJSON(body []byte) error {
4578	var m map[string]*json.RawMessage
4579	err := json.Unmarshal(body, &m)
4580	if err != nil {
4581		return err
4582	}
4583	for k, v := range m {
4584		switch k {
4585		case "properties":
4586			if v != nil {
4587				var backupItemProperties BackupItemProperties
4588				err = json.Unmarshal(*v, &backupItemProperties)
4589				if err != nil {
4590					return err
4591				}
4592				bi.BackupItemProperties = &backupItemProperties
4593			}
4594		case "id":
4595			if v != nil {
4596				var ID string
4597				err = json.Unmarshal(*v, &ID)
4598				if err != nil {
4599					return err
4600				}
4601				bi.ID = &ID
4602			}
4603		case "name":
4604			if v != nil {
4605				var name string
4606				err = json.Unmarshal(*v, &name)
4607				if err != nil {
4608					return err
4609				}
4610				bi.Name = &name
4611			}
4612		case "kind":
4613			if v != nil {
4614				var kind string
4615				err = json.Unmarshal(*v, &kind)
4616				if err != nil {
4617					return err
4618				}
4619				bi.Kind = &kind
4620			}
4621		case "type":
4622			if v != nil {
4623				var typeVar string
4624				err = json.Unmarshal(*v, &typeVar)
4625				if err != nil {
4626					return err
4627				}
4628				bi.Type = &typeVar
4629			}
4630		}
4631	}
4632
4633	return nil
4634}
4635
4636// BackupItemCollection collection of backup items.
4637type BackupItemCollection struct {
4638	autorest.Response `json:"-"`
4639	// Value - Collection of resources.
4640	Value *[]BackupItem `json:"value,omitempty"`
4641	// NextLink - READ-ONLY; Link to next page of resources.
4642	NextLink *string `json:"nextLink,omitempty"`
4643}
4644
4645// BackupItemCollectionIterator provides access to a complete listing of BackupItem values.
4646type BackupItemCollectionIterator struct {
4647	i    int
4648	page BackupItemCollectionPage
4649}
4650
4651// NextWithContext advances to the next value.  If there was an error making
4652// the request the iterator does not advance and the error is returned.
4653func (iter *BackupItemCollectionIterator) NextWithContext(ctx context.Context) (err error) {
4654	if tracing.IsEnabled() {
4655		ctx = tracing.StartSpan(ctx, fqdn+"/BackupItemCollectionIterator.NextWithContext")
4656		defer func() {
4657			sc := -1
4658			if iter.Response().Response.Response != nil {
4659				sc = iter.Response().Response.Response.StatusCode
4660			}
4661			tracing.EndSpan(ctx, sc, err)
4662		}()
4663	}
4664	iter.i++
4665	if iter.i < len(iter.page.Values()) {
4666		return nil
4667	}
4668	err = iter.page.NextWithContext(ctx)
4669	if err != nil {
4670		iter.i--
4671		return err
4672	}
4673	iter.i = 0
4674	return nil
4675}
4676
4677// Next advances to the next value.  If there was an error making
4678// the request the iterator does not advance and the error is returned.
4679// Deprecated: Use NextWithContext() instead.
4680func (iter *BackupItemCollectionIterator) Next() error {
4681	return iter.NextWithContext(context.Background())
4682}
4683
4684// NotDone returns true if the enumeration should be started or is not yet complete.
4685func (iter BackupItemCollectionIterator) NotDone() bool {
4686	return iter.page.NotDone() && iter.i < len(iter.page.Values())
4687}
4688
4689// Response returns the raw server response from the last page request.
4690func (iter BackupItemCollectionIterator) Response() BackupItemCollection {
4691	return iter.page.Response()
4692}
4693
4694// Value returns the current value or a zero-initialized value if the
4695// iterator has advanced beyond the end of the collection.
4696func (iter BackupItemCollectionIterator) Value() BackupItem {
4697	if !iter.page.NotDone() {
4698		return BackupItem{}
4699	}
4700	return iter.page.Values()[iter.i]
4701}
4702
4703// Creates a new instance of the BackupItemCollectionIterator type.
4704func NewBackupItemCollectionIterator(page BackupItemCollectionPage) BackupItemCollectionIterator {
4705	return BackupItemCollectionIterator{page: page}
4706}
4707
4708// IsEmpty returns true if the ListResult contains no values.
4709func (bic BackupItemCollection) IsEmpty() bool {
4710	return bic.Value == nil || len(*bic.Value) == 0
4711}
4712
4713// backupItemCollectionPreparer prepares a request to retrieve the next set of results.
4714// It returns nil if no more results exist.
4715func (bic BackupItemCollection) backupItemCollectionPreparer(ctx context.Context) (*http.Request, error) {
4716	if bic.NextLink == nil || len(to.String(bic.NextLink)) < 1 {
4717		return nil, nil
4718	}
4719	return autorest.Prepare((&http.Request{}).WithContext(ctx),
4720		autorest.AsJSON(),
4721		autorest.AsGet(),
4722		autorest.WithBaseURL(to.String(bic.NextLink)))
4723}
4724
4725// BackupItemCollectionPage contains a page of BackupItem values.
4726type BackupItemCollectionPage struct {
4727	fn  func(context.Context, BackupItemCollection) (BackupItemCollection, error)
4728	bic BackupItemCollection
4729}
4730
4731// NextWithContext advances to the next page of values.  If there was an error making
4732// the request the page does not advance and the error is returned.
4733func (page *BackupItemCollectionPage) NextWithContext(ctx context.Context) (err error) {
4734	if tracing.IsEnabled() {
4735		ctx = tracing.StartSpan(ctx, fqdn+"/BackupItemCollectionPage.NextWithContext")
4736		defer func() {
4737			sc := -1
4738			if page.Response().Response.Response != nil {
4739				sc = page.Response().Response.Response.StatusCode
4740			}
4741			tracing.EndSpan(ctx, sc, err)
4742		}()
4743	}
4744	next, err := page.fn(ctx, page.bic)
4745	if err != nil {
4746		return err
4747	}
4748	page.bic = next
4749	return nil
4750}
4751
4752// Next advances to the next page of values.  If there was an error making
4753// the request the page does not advance and the error is returned.
4754// Deprecated: Use NextWithContext() instead.
4755func (page *BackupItemCollectionPage) Next() error {
4756	return page.NextWithContext(context.Background())
4757}
4758
4759// NotDone returns true if the page enumeration should be started or is not yet complete.
4760func (page BackupItemCollectionPage) NotDone() bool {
4761	return !page.bic.IsEmpty()
4762}
4763
4764// Response returns the raw server response from the last page request.
4765func (page BackupItemCollectionPage) Response() BackupItemCollection {
4766	return page.bic
4767}
4768
4769// Values returns the slice of values for the current page or nil if there are no values.
4770func (page BackupItemCollectionPage) Values() []BackupItem {
4771	if page.bic.IsEmpty() {
4772		return nil
4773	}
4774	return *page.bic.Value
4775}
4776
4777// Creates a new instance of the BackupItemCollectionPage type.
4778func NewBackupItemCollectionPage(getNextPage func(context.Context, BackupItemCollection) (BackupItemCollection, error)) BackupItemCollectionPage {
4779	return BackupItemCollectionPage{fn: getNextPage}
4780}
4781
4782// BackupItemProperties backupItem resource specific properties
4783type BackupItemProperties struct {
4784	// BackupID - READ-ONLY; Id of the backup.
4785	BackupID *int32 `json:"id,omitempty"`
4786	// StorageAccountURL - READ-ONLY; SAS URL for the storage account container which contains this backup.
4787	StorageAccountURL *string `json:"storageAccountUrl,omitempty"`
4788	// BlobName - READ-ONLY; Name of the blob which contains data for this backup.
4789	BlobName *string `json:"blobName,omitempty"`
4790	// Name - READ-ONLY; Name of this backup.
4791	Name *string `json:"name,omitempty"`
4792	// Status - READ-ONLY; Backup status. Possible values include: 'InProgress', 'Failed', 'Succeeded', 'TimedOut', 'Created', 'Skipped', 'PartiallySucceeded', 'DeleteInProgress', 'DeleteFailed', 'Deleted'
4793	Status BackupItemStatus `json:"status,omitempty"`
4794	// SizeInBytes - READ-ONLY; Size of the backup in bytes.
4795	SizeInBytes *int64 `json:"sizeInBytes,omitempty"`
4796	// Created - READ-ONLY; Timestamp of the backup creation.
4797	Created *date.Time `json:"created,omitempty"`
4798	// Log - READ-ONLY; Details regarding this backup. Might contain an error message.
4799	Log *string `json:"log,omitempty"`
4800	// Databases - READ-ONLY; List of databases included in the backup.
4801	Databases *[]DatabaseBackupSetting `json:"databases,omitempty"`
4802	// Scheduled - READ-ONLY; True if this backup has been created due to a schedule being triggered.
4803	Scheduled *bool `json:"scheduled,omitempty"`
4804	// LastRestoreTimeStamp - READ-ONLY; Timestamp of a last restore operation which used this backup.
4805	LastRestoreTimeStamp *date.Time `json:"lastRestoreTimeStamp,omitempty"`
4806	// FinishedTimeStamp - READ-ONLY; Timestamp when this backup finished.
4807	FinishedTimeStamp *date.Time `json:"finishedTimeStamp,omitempty"`
4808	// CorrelationID - READ-ONLY; Unique correlation identifier. Please use this along with the timestamp while communicating with Azure support.
4809	CorrelationID *string `json:"correlationId,omitempty"`
4810	// WebsiteSizeInBytes - READ-ONLY; Size of the original web app which has been backed up.
4811	WebsiteSizeInBytes *int64 `json:"websiteSizeInBytes,omitempty"`
4812}
4813
4814// BackupRequest description of a backup which will be performed.
4815type BackupRequest struct {
4816	autorest.Response `json:"-"`
4817	// BackupRequestProperties - BackupRequest resource specific properties
4818	*BackupRequestProperties `json:"properties,omitempty"`
4819	// ID - READ-ONLY; Resource Id.
4820	ID *string `json:"id,omitempty"`
4821	// Name - READ-ONLY; Resource Name.
4822	Name *string `json:"name,omitempty"`
4823	// Kind - Kind of resource.
4824	Kind *string `json:"kind,omitempty"`
4825	// Type - READ-ONLY; Resource type.
4826	Type *string `json:"type,omitempty"`
4827}
4828
4829// MarshalJSON is the custom marshaler for BackupRequest.
4830func (br BackupRequest) MarshalJSON() ([]byte, error) {
4831	objectMap := make(map[string]interface{})
4832	if br.BackupRequestProperties != nil {
4833		objectMap["properties"] = br.BackupRequestProperties
4834	}
4835	if br.Kind != nil {
4836		objectMap["kind"] = br.Kind
4837	}
4838	return json.Marshal(objectMap)
4839}
4840
4841// UnmarshalJSON is the custom unmarshaler for BackupRequest struct.
4842func (br *BackupRequest) UnmarshalJSON(body []byte) error {
4843	var m map[string]*json.RawMessage
4844	err := json.Unmarshal(body, &m)
4845	if err != nil {
4846		return err
4847	}
4848	for k, v := range m {
4849		switch k {
4850		case "properties":
4851			if v != nil {
4852				var backupRequestProperties BackupRequestProperties
4853				err = json.Unmarshal(*v, &backupRequestProperties)
4854				if err != nil {
4855					return err
4856				}
4857				br.BackupRequestProperties = &backupRequestProperties
4858			}
4859		case "id":
4860			if v != nil {
4861				var ID string
4862				err = json.Unmarshal(*v, &ID)
4863				if err != nil {
4864					return err
4865				}
4866				br.ID = &ID
4867			}
4868		case "name":
4869			if v != nil {
4870				var name string
4871				err = json.Unmarshal(*v, &name)
4872				if err != nil {
4873					return err
4874				}
4875				br.Name = &name
4876			}
4877		case "kind":
4878			if v != nil {
4879				var kind string
4880				err = json.Unmarshal(*v, &kind)
4881				if err != nil {
4882					return err
4883				}
4884				br.Kind = &kind
4885			}
4886		case "type":
4887			if v != nil {
4888				var typeVar string
4889				err = json.Unmarshal(*v, &typeVar)
4890				if err != nil {
4891					return err
4892				}
4893				br.Type = &typeVar
4894			}
4895		}
4896	}
4897
4898	return nil
4899}
4900
4901// BackupRequestProperties backupRequest resource specific properties
4902type BackupRequestProperties struct {
4903	// BackupRequestName - Name of the backup.
4904	BackupRequestName *string `json:"name,omitempty"`
4905	// Enabled - True if the backup schedule is enabled (must be included in that case), false if the backup schedule should be disabled.
4906	Enabled *bool `json:"enabled,omitempty"`
4907	// StorageAccountURL - SAS URL to the container.
4908	StorageAccountURL *string `json:"storageAccountUrl,omitempty"`
4909	// BackupSchedule - Schedule for the backup if it is executed periodically.
4910	BackupSchedule *BackupSchedule `json:"backupSchedule,omitempty"`
4911	// Databases - Databases included in the backup.
4912	Databases *[]DatabaseBackupSetting `json:"databases,omitempty"`
4913	// Type - Type of the backup. Possible values include: 'BackupRestoreOperationTypeDefault', 'BackupRestoreOperationTypeClone', 'BackupRestoreOperationTypeRelocation', 'BackupRestoreOperationTypeSnapshot'
4914	Type BackupRestoreOperationType `json:"type,omitempty"`
4915}
4916
4917// BackupSchedule description of a backup schedule. Describes how often should be the backup performed and
4918// what should be the retention policy.
4919type BackupSchedule struct {
4920	// FrequencyInterval - How often the backup should be executed (e.g. for weekly backup, this should be set to 7 and FrequencyUnit should be set to Day)
4921	FrequencyInterval *int32 `json:"frequencyInterval,omitempty"`
4922	// FrequencyUnit - The unit of time for how often the backup should be executed (e.g. for weekly backup, this should be set to Day and FrequencyInterval should be set to 7). Possible values include: 'Day', 'Hour'
4923	FrequencyUnit FrequencyUnit `json:"frequencyUnit,omitempty"`
4924	// KeepAtLeastOneBackup - True if the retention policy should always keep at least one backup in the storage account, regardless how old it is; false otherwise.
4925	KeepAtLeastOneBackup *bool `json:"keepAtLeastOneBackup,omitempty"`
4926	// RetentionPeriodInDays - After how many days backups should be deleted.
4927	RetentionPeriodInDays *int32 `json:"retentionPeriodInDays,omitempty"`
4928	// StartTime - When the schedule should start working.
4929	StartTime *date.Time `json:"startTime,omitempty"`
4930	// LastExecutionTime - READ-ONLY; Last time when this schedule was triggered.
4931	LastExecutionTime *date.Time `json:"lastExecutionTime,omitempty"`
4932}
4933
4934// BillingMeter app Service billing entity that contains information about meter which the Azure billing
4935// system utilizes to charge users for services.
4936type BillingMeter struct {
4937	// BillingMeterProperties - BillingMeter resource specific properties
4938	*BillingMeterProperties `json:"properties,omitempty"`
4939	// ID - READ-ONLY; Resource Id.
4940	ID *string `json:"id,omitempty"`
4941	// Name - READ-ONLY; Resource Name.
4942	Name *string `json:"name,omitempty"`
4943	// Kind - Kind of resource.
4944	Kind *string `json:"kind,omitempty"`
4945	// Type - READ-ONLY; Resource type.
4946	Type *string `json:"type,omitempty"`
4947}
4948
4949// MarshalJSON is the custom marshaler for BillingMeter.
4950func (bm BillingMeter) MarshalJSON() ([]byte, error) {
4951	objectMap := make(map[string]interface{})
4952	if bm.BillingMeterProperties != nil {
4953		objectMap["properties"] = bm.BillingMeterProperties
4954	}
4955	if bm.Kind != nil {
4956		objectMap["kind"] = bm.Kind
4957	}
4958	return json.Marshal(objectMap)
4959}
4960
4961// UnmarshalJSON is the custom unmarshaler for BillingMeter struct.
4962func (bm *BillingMeter) UnmarshalJSON(body []byte) error {
4963	var m map[string]*json.RawMessage
4964	err := json.Unmarshal(body, &m)
4965	if err != nil {
4966		return err
4967	}
4968	for k, v := range m {
4969		switch k {
4970		case "properties":
4971			if v != nil {
4972				var billingMeterProperties BillingMeterProperties
4973				err = json.Unmarshal(*v, &billingMeterProperties)
4974				if err != nil {
4975					return err
4976				}
4977				bm.BillingMeterProperties = &billingMeterProperties
4978			}
4979		case "id":
4980			if v != nil {
4981				var ID string
4982				err = json.Unmarshal(*v, &ID)
4983				if err != nil {
4984					return err
4985				}
4986				bm.ID = &ID
4987			}
4988		case "name":
4989			if v != nil {
4990				var name string
4991				err = json.Unmarshal(*v, &name)
4992				if err != nil {
4993					return err
4994				}
4995				bm.Name = &name
4996			}
4997		case "kind":
4998			if v != nil {
4999				var kind string
5000				err = json.Unmarshal(*v, &kind)
5001				if err != nil {
5002					return err
5003				}
5004				bm.Kind = &kind
5005			}
5006		case "type":
5007			if v != nil {
5008				var typeVar string
5009				err = json.Unmarshal(*v, &typeVar)
5010				if err != nil {
5011					return err
5012				}
5013				bm.Type = &typeVar
5014			}
5015		}
5016	}
5017
5018	return nil
5019}
5020
5021// BillingMeterCollection collection of Billing Meters
5022type BillingMeterCollection struct {
5023	autorest.Response `json:"-"`
5024	// Value - Collection of Billing Meters.
5025	Value *[]BillingMeter `json:"value,omitempty"`
5026	// NextLink - READ-ONLY; Link to next page of resources.
5027	NextLink *string `json:"nextLink,omitempty"`
5028}
5029
5030// BillingMeterCollectionIterator provides access to a complete listing of BillingMeter values.
5031type BillingMeterCollectionIterator struct {
5032	i    int
5033	page BillingMeterCollectionPage
5034}
5035
5036// NextWithContext advances to the next value.  If there was an error making
5037// the request the iterator does not advance and the error is returned.
5038func (iter *BillingMeterCollectionIterator) NextWithContext(ctx context.Context) (err error) {
5039	if tracing.IsEnabled() {
5040		ctx = tracing.StartSpan(ctx, fqdn+"/BillingMeterCollectionIterator.NextWithContext")
5041		defer func() {
5042			sc := -1
5043			if iter.Response().Response.Response != nil {
5044				sc = iter.Response().Response.Response.StatusCode
5045			}
5046			tracing.EndSpan(ctx, sc, err)
5047		}()
5048	}
5049	iter.i++
5050	if iter.i < len(iter.page.Values()) {
5051		return nil
5052	}
5053	err = iter.page.NextWithContext(ctx)
5054	if err != nil {
5055		iter.i--
5056		return err
5057	}
5058	iter.i = 0
5059	return nil
5060}
5061
5062// Next advances to the next value.  If there was an error making
5063// the request the iterator does not advance and the error is returned.
5064// Deprecated: Use NextWithContext() instead.
5065func (iter *BillingMeterCollectionIterator) Next() error {
5066	return iter.NextWithContext(context.Background())
5067}
5068
5069// NotDone returns true if the enumeration should be started or is not yet complete.
5070func (iter BillingMeterCollectionIterator) NotDone() bool {
5071	return iter.page.NotDone() && iter.i < len(iter.page.Values())
5072}
5073
5074// Response returns the raw server response from the last page request.
5075func (iter BillingMeterCollectionIterator) Response() BillingMeterCollection {
5076	return iter.page.Response()
5077}
5078
5079// Value returns the current value or a zero-initialized value if the
5080// iterator has advanced beyond the end of the collection.
5081func (iter BillingMeterCollectionIterator) Value() BillingMeter {
5082	if !iter.page.NotDone() {
5083		return BillingMeter{}
5084	}
5085	return iter.page.Values()[iter.i]
5086}
5087
5088// Creates a new instance of the BillingMeterCollectionIterator type.
5089func NewBillingMeterCollectionIterator(page BillingMeterCollectionPage) BillingMeterCollectionIterator {
5090	return BillingMeterCollectionIterator{page: page}
5091}
5092
5093// IsEmpty returns true if the ListResult contains no values.
5094func (bmc BillingMeterCollection) IsEmpty() bool {
5095	return bmc.Value == nil || len(*bmc.Value) == 0
5096}
5097
5098// billingMeterCollectionPreparer prepares a request to retrieve the next set of results.
5099// It returns nil if no more results exist.
5100func (bmc BillingMeterCollection) billingMeterCollectionPreparer(ctx context.Context) (*http.Request, error) {
5101	if bmc.NextLink == nil || len(to.String(bmc.NextLink)) < 1 {
5102		return nil, nil
5103	}
5104	return autorest.Prepare((&http.Request{}).WithContext(ctx),
5105		autorest.AsJSON(),
5106		autorest.AsGet(),
5107		autorest.WithBaseURL(to.String(bmc.NextLink)))
5108}
5109
5110// BillingMeterCollectionPage contains a page of BillingMeter values.
5111type BillingMeterCollectionPage struct {
5112	fn  func(context.Context, BillingMeterCollection) (BillingMeterCollection, error)
5113	bmc BillingMeterCollection
5114}
5115
5116// NextWithContext advances to the next page of values.  If there was an error making
5117// the request the page does not advance and the error is returned.
5118func (page *BillingMeterCollectionPage) NextWithContext(ctx context.Context) (err error) {
5119	if tracing.IsEnabled() {
5120		ctx = tracing.StartSpan(ctx, fqdn+"/BillingMeterCollectionPage.NextWithContext")
5121		defer func() {
5122			sc := -1
5123			if page.Response().Response.Response != nil {
5124				sc = page.Response().Response.Response.StatusCode
5125			}
5126			tracing.EndSpan(ctx, sc, err)
5127		}()
5128	}
5129	next, err := page.fn(ctx, page.bmc)
5130	if err != nil {
5131		return err
5132	}
5133	page.bmc = next
5134	return nil
5135}
5136
5137// Next advances to the next page of values.  If there was an error making
5138// the request the page does not advance and the error is returned.
5139// Deprecated: Use NextWithContext() instead.
5140func (page *BillingMeterCollectionPage) Next() error {
5141	return page.NextWithContext(context.Background())
5142}
5143
5144// NotDone returns true if the page enumeration should be started or is not yet complete.
5145func (page BillingMeterCollectionPage) NotDone() bool {
5146	return !page.bmc.IsEmpty()
5147}
5148
5149// Response returns the raw server response from the last page request.
5150func (page BillingMeterCollectionPage) Response() BillingMeterCollection {
5151	return page.bmc
5152}
5153
5154// Values returns the slice of values for the current page or nil if there are no values.
5155func (page BillingMeterCollectionPage) Values() []BillingMeter {
5156	if page.bmc.IsEmpty() {
5157		return nil
5158	}
5159	return *page.bmc.Value
5160}
5161
5162// Creates a new instance of the BillingMeterCollectionPage type.
5163func NewBillingMeterCollectionPage(getNextPage func(context.Context, BillingMeterCollection) (BillingMeterCollection, error)) BillingMeterCollectionPage {
5164	return BillingMeterCollectionPage{fn: getNextPage}
5165}
5166
5167// BillingMeterProperties billingMeter resource specific properties
5168type BillingMeterProperties struct {
5169	// MeterID - Meter GUID onboarded in Commerce
5170	MeterID *string `json:"meterId,omitempty"`
5171	// BillingLocation - Azure Location of billable resource
5172	BillingLocation *string `json:"billingLocation,omitempty"`
5173	// ShortName - Short Name from App Service Azure pricing Page
5174	ShortName *string `json:"shortName,omitempty"`
5175	// FriendlyName - Friendly name of the meter
5176	FriendlyName *string `json:"friendlyName,omitempty"`
5177	// ResourceType - App Service resource type meter used for
5178	ResourceType *string `json:"resourceType,omitempty"`
5179}
5180
5181// Capability describes the capabilities/features allowed for a specific SKU.
5182type Capability struct {
5183	// Name - Name of the SKU capability.
5184	Name *string `json:"name,omitempty"`
5185	// Value - Value of the SKU capability.
5186	Value *string `json:"value,omitempty"`
5187	// Reason - Reason of the SKU capability.
5188	Reason *string `json:"reason,omitempty"`
5189}
5190
5191// Certificate SSL certificate for an app.
5192type Certificate struct {
5193	autorest.Response `json:"-"`
5194	// CertificateProperties - Certificate resource specific properties
5195	*CertificateProperties `json:"properties,omitempty"`
5196	// ID - READ-ONLY; Resource Id.
5197	ID *string `json:"id,omitempty"`
5198	// Name - READ-ONLY; Resource Name.
5199	Name *string `json:"name,omitempty"`
5200	// Kind - Kind of resource.
5201	Kind *string `json:"kind,omitempty"`
5202	// Location - Resource Location.
5203	Location *string `json:"location,omitempty"`
5204	// Type - READ-ONLY; Resource type.
5205	Type *string `json:"type,omitempty"`
5206	// Tags - Resource tags.
5207	Tags map[string]*string `json:"tags"`
5208}
5209
5210// MarshalJSON is the custom marshaler for Certificate.
5211func (c Certificate) MarshalJSON() ([]byte, error) {
5212	objectMap := make(map[string]interface{})
5213	if c.CertificateProperties != nil {
5214		objectMap["properties"] = c.CertificateProperties
5215	}
5216	if c.Kind != nil {
5217		objectMap["kind"] = c.Kind
5218	}
5219	if c.Location != nil {
5220		objectMap["location"] = c.Location
5221	}
5222	if c.Tags != nil {
5223		objectMap["tags"] = c.Tags
5224	}
5225	return json.Marshal(objectMap)
5226}
5227
5228// UnmarshalJSON is the custom unmarshaler for Certificate struct.
5229func (c *Certificate) UnmarshalJSON(body []byte) error {
5230	var m map[string]*json.RawMessage
5231	err := json.Unmarshal(body, &m)
5232	if err != nil {
5233		return err
5234	}
5235	for k, v := range m {
5236		switch k {
5237		case "properties":
5238			if v != nil {
5239				var certificateProperties CertificateProperties
5240				err = json.Unmarshal(*v, &certificateProperties)
5241				if err != nil {
5242					return err
5243				}
5244				c.CertificateProperties = &certificateProperties
5245			}
5246		case "id":
5247			if v != nil {
5248				var ID string
5249				err = json.Unmarshal(*v, &ID)
5250				if err != nil {
5251					return err
5252				}
5253				c.ID = &ID
5254			}
5255		case "name":
5256			if v != nil {
5257				var name string
5258				err = json.Unmarshal(*v, &name)
5259				if err != nil {
5260					return err
5261				}
5262				c.Name = &name
5263			}
5264		case "kind":
5265			if v != nil {
5266				var kind string
5267				err = json.Unmarshal(*v, &kind)
5268				if err != nil {
5269					return err
5270				}
5271				c.Kind = &kind
5272			}
5273		case "location":
5274			if v != nil {
5275				var location string
5276				err = json.Unmarshal(*v, &location)
5277				if err != nil {
5278					return err
5279				}
5280				c.Location = &location
5281			}
5282		case "type":
5283			if v != nil {
5284				var typeVar string
5285				err = json.Unmarshal(*v, &typeVar)
5286				if err != nil {
5287					return err
5288				}
5289				c.Type = &typeVar
5290			}
5291		case "tags":
5292			if v != nil {
5293				var tags map[string]*string
5294				err = json.Unmarshal(*v, &tags)
5295				if err != nil {
5296					return err
5297				}
5298				c.Tags = tags
5299			}
5300		}
5301	}
5302
5303	return nil
5304}
5305
5306// CertificateCollection collection of certificates.
5307type CertificateCollection struct {
5308	autorest.Response `json:"-"`
5309	// Value - Collection of resources.
5310	Value *[]Certificate `json:"value,omitempty"`
5311	// NextLink - READ-ONLY; Link to next page of resources.
5312	NextLink *string `json:"nextLink,omitempty"`
5313}
5314
5315// CertificateCollectionIterator provides access to a complete listing of Certificate values.
5316type CertificateCollectionIterator struct {
5317	i    int
5318	page CertificateCollectionPage
5319}
5320
5321// NextWithContext advances to the next value.  If there was an error making
5322// the request the iterator does not advance and the error is returned.
5323func (iter *CertificateCollectionIterator) NextWithContext(ctx context.Context) (err error) {
5324	if tracing.IsEnabled() {
5325		ctx = tracing.StartSpan(ctx, fqdn+"/CertificateCollectionIterator.NextWithContext")
5326		defer func() {
5327			sc := -1
5328			if iter.Response().Response.Response != nil {
5329				sc = iter.Response().Response.Response.StatusCode
5330			}
5331			tracing.EndSpan(ctx, sc, err)
5332		}()
5333	}
5334	iter.i++
5335	if iter.i < len(iter.page.Values()) {
5336		return nil
5337	}
5338	err = iter.page.NextWithContext(ctx)
5339	if err != nil {
5340		iter.i--
5341		return err
5342	}
5343	iter.i = 0
5344	return nil
5345}
5346
5347// Next advances to the next value.  If there was an error making
5348// the request the iterator does not advance and the error is returned.
5349// Deprecated: Use NextWithContext() instead.
5350func (iter *CertificateCollectionIterator) Next() error {
5351	return iter.NextWithContext(context.Background())
5352}
5353
5354// NotDone returns true if the enumeration should be started or is not yet complete.
5355func (iter CertificateCollectionIterator) NotDone() bool {
5356	return iter.page.NotDone() && iter.i < len(iter.page.Values())
5357}
5358
5359// Response returns the raw server response from the last page request.
5360func (iter CertificateCollectionIterator) Response() CertificateCollection {
5361	return iter.page.Response()
5362}
5363
5364// Value returns the current value or a zero-initialized value if the
5365// iterator has advanced beyond the end of the collection.
5366func (iter CertificateCollectionIterator) Value() Certificate {
5367	if !iter.page.NotDone() {
5368		return Certificate{}
5369	}
5370	return iter.page.Values()[iter.i]
5371}
5372
5373// Creates a new instance of the CertificateCollectionIterator type.
5374func NewCertificateCollectionIterator(page CertificateCollectionPage) CertificateCollectionIterator {
5375	return CertificateCollectionIterator{page: page}
5376}
5377
5378// IsEmpty returns true if the ListResult contains no values.
5379func (cc CertificateCollection) IsEmpty() bool {
5380	return cc.Value == nil || len(*cc.Value) == 0
5381}
5382
5383// certificateCollectionPreparer prepares a request to retrieve the next set of results.
5384// It returns nil if no more results exist.
5385func (cc CertificateCollection) certificateCollectionPreparer(ctx context.Context) (*http.Request, error) {
5386	if cc.NextLink == nil || len(to.String(cc.NextLink)) < 1 {
5387		return nil, nil
5388	}
5389	return autorest.Prepare((&http.Request{}).WithContext(ctx),
5390		autorest.AsJSON(),
5391		autorest.AsGet(),
5392		autorest.WithBaseURL(to.String(cc.NextLink)))
5393}
5394
5395// CertificateCollectionPage contains a page of Certificate values.
5396type CertificateCollectionPage struct {
5397	fn func(context.Context, CertificateCollection) (CertificateCollection, error)
5398	cc CertificateCollection
5399}
5400
5401// NextWithContext advances to the next page of values.  If there was an error making
5402// the request the page does not advance and the error is returned.
5403func (page *CertificateCollectionPage) NextWithContext(ctx context.Context) (err error) {
5404	if tracing.IsEnabled() {
5405		ctx = tracing.StartSpan(ctx, fqdn+"/CertificateCollectionPage.NextWithContext")
5406		defer func() {
5407			sc := -1
5408			if page.Response().Response.Response != nil {
5409				sc = page.Response().Response.Response.StatusCode
5410			}
5411			tracing.EndSpan(ctx, sc, err)
5412		}()
5413	}
5414	next, err := page.fn(ctx, page.cc)
5415	if err != nil {
5416		return err
5417	}
5418	page.cc = next
5419	return nil
5420}
5421
5422// Next advances to the next page of values.  If there was an error making
5423// the request the page does not advance and the error is returned.
5424// Deprecated: Use NextWithContext() instead.
5425func (page *CertificateCollectionPage) Next() error {
5426	return page.NextWithContext(context.Background())
5427}
5428
5429// NotDone returns true if the page enumeration should be started or is not yet complete.
5430func (page CertificateCollectionPage) NotDone() bool {
5431	return !page.cc.IsEmpty()
5432}
5433
5434// Response returns the raw server response from the last page request.
5435func (page CertificateCollectionPage) Response() CertificateCollection {
5436	return page.cc
5437}
5438
5439// Values returns the slice of values for the current page or nil if there are no values.
5440func (page CertificateCollectionPage) Values() []Certificate {
5441	if page.cc.IsEmpty() {
5442		return nil
5443	}
5444	return *page.cc.Value
5445}
5446
5447// Creates a new instance of the CertificateCollectionPage type.
5448func NewCertificateCollectionPage(getNextPage func(context.Context, CertificateCollection) (CertificateCollection, error)) CertificateCollectionPage {
5449	return CertificateCollectionPage{fn: getNextPage}
5450}
5451
5452// CertificateDetails SSL certificate details.
5453type CertificateDetails struct {
5454	// Version - READ-ONLY; Certificate Version.
5455	Version *int32 `json:"version,omitempty"`
5456	// SerialNumber - READ-ONLY; Certificate Serial Number.
5457	SerialNumber *string `json:"serialNumber,omitempty"`
5458	// Thumbprint - READ-ONLY; Certificate Thumbprint.
5459	Thumbprint *string `json:"thumbprint,omitempty"`
5460	// Subject - READ-ONLY; Certificate Subject.
5461	Subject *string `json:"subject,omitempty"`
5462	// NotBefore - READ-ONLY; Date Certificate is valid from.
5463	NotBefore *date.Time `json:"notBefore,omitempty"`
5464	// NotAfter - READ-ONLY; Date Certificate is valid to.
5465	NotAfter *date.Time `json:"notAfter,omitempty"`
5466	// SignatureAlgorithm - READ-ONLY; Certificate Signature algorithm.
5467	SignatureAlgorithm *string `json:"signatureAlgorithm,omitempty"`
5468	// Issuer - READ-ONLY; Certificate Issuer.
5469	Issuer *string `json:"issuer,omitempty"`
5470	// RawData - READ-ONLY; Raw certificate data.
5471	RawData *string `json:"rawData,omitempty"`
5472}
5473
5474// CertificateEmail SSL certificate email.
5475type CertificateEmail struct {
5476	// CertificateEmailProperties - CertificateEmail resource specific properties
5477	*CertificateEmailProperties `json:"properties,omitempty"`
5478	// ID - READ-ONLY; Resource Id.
5479	ID *string `json:"id,omitempty"`
5480	// Name - READ-ONLY; Resource Name.
5481	Name *string `json:"name,omitempty"`
5482	// Kind - Kind of resource.
5483	Kind *string `json:"kind,omitempty"`
5484	// Type - READ-ONLY; Resource type.
5485	Type *string `json:"type,omitempty"`
5486}
5487
5488// MarshalJSON is the custom marshaler for CertificateEmail.
5489func (ce CertificateEmail) MarshalJSON() ([]byte, error) {
5490	objectMap := make(map[string]interface{})
5491	if ce.CertificateEmailProperties != nil {
5492		objectMap["properties"] = ce.CertificateEmailProperties
5493	}
5494	if ce.Kind != nil {
5495		objectMap["kind"] = ce.Kind
5496	}
5497	return json.Marshal(objectMap)
5498}
5499
5500// UnmarshalJSON is the custom unmarshaler for CertificateEmail struct.
5501func (ce *CertificateEmail) UnmarshalJSON(body []byte) error {
5502	var m map[string]*json.RawMessage
5503	err := json.Unmarshal(body, &m)
5504	if err != nil {
5505		return err
5506	}
5507	for k, v := range m {
5508		switch k {
5509		case "properties":
5510			if v != nil {
5511				var certificateEmailProperties CertificateEmailProperties
5512				err = json.Unmarshal(*v, &certificateEmailProperties)
5513				if err != nil {
5514					return err
5515				}
5516				ce.CertificateEmailProperties = &certificateEmailProperties
5517			}
5518		case "id":
5519			if v != nil {
5520				var ID string
5521				err = json.Unmarshal(*v, &ID)
5522				if err != nil {
5523					return err
5524				}
5525				ce.ID = &ID
5526			}
5527		case "name":
5528			if v != nil {
5529				var name string
5530				err = json.Unmarshal(*v, &name)
5531				if err != nil {
5532					return err
5533				}
5534				ce.Name = &name
5535			}
5536		case "kind":
5537			if v != nil {
5538				var kind string
5539				err = json.Unmarshal(*v, &kind)
5540				if err != nil {
5541					return err
5542				}
5543				ce.Kind = &kind
5544			}
5545		case "type":
5546			if v != nil {
5547				var typeVar string
5548				err = json.Unmarshal(*v, &typeVar)
5549				if err != nil {
5550					return err
5551				}
5552				ce.Type = &typeVar
5553			}
5554		}
5555	}
5556
5557	return nil
5558}
5559
5560// CertificateEmailProperties certificateEmail resource specific properties
5561type CertificateEmailProperties struct {
5562	// EmailID - Email id.
5563	EmailID *string `json:"emailId,omitempty"`
5564	// TimeStamp - Time stamp.
5565	TimeStamp *date.Time `json:"timeStamp,omitempty"`
5566}
5567
5568// CertificateOrderAction certificate order action.
5569type CertificateOrderAction struct {
5570	// CertificateOrderActionProperties - CertificateOrderAction resource specific properties
5571	*CertificateOrderActionProperties `json:"properties,omitempty"`
5572	// ID - READ-ONLY; Resource Id.
5573	ID *string `json:"id,omitempty"`
5574	// Name - READ-ONLY; Resource Name.
5575	Name *string `json:"name,omitempty"`
5576	// Kind - Kind of resource.
5577	Kind *string `json:"kind,omitempty"`
5578	// Type - READ-ONLY; Resource type.
5579	Type *string `json:"type,omitempty"`
5580}
5581
5582// MarshalJSON is the custom marshaler for CertificateOrderAction.
5583func (coa CertificateOrderAction) MarshalJSON() ([]byte, error) {
5584	objectMap := make(map[string]interface{})
5585	if coa.CertificateOrderActionProperties != nil {
5586		objectMap["properties"] = coa.CertificateOrderActionProperties
5587	}
5588	if coa.Kind != nil {
5589		objectMap["kind"] = coa.Kind
5590	}
5591	return json.Marshal(objectMap)
5592}
5593
5594// UnmarshalJSON is the custom unmarshaler for CertificateOrderAction struct.
5595func (coa *CertificateOrderAction) UnmarshalJSON(body []byte) error {
5596	var m map[string]*json.RawMessage
5597	err := json.Unmarshal(body, &m)
5598	if err != nil {
5599		return err
5600	}
5601	for k, v := range m {
5602		switch k {
5603		case "properties":
5604			if v != nil {
5605				var certificateOrderActionProperties CertificateOrderActionProperties
5606				err = json.Unmarshal(*v, &certificateOrderActionProperties)
5607				if err != nil {
5608					return err
5609				}
5610				coa.CertificateOrderActionProperties = &certificateOrderActionProperties
5611			}
5612		case "id":
5613			if v != nil {
5614				var ID string
5615				err = json.Unmarshal(*v, &ID)
5616				if err != nil {
5617					return err
5618				}
5619				coa.ID = &ID
5620			}
5621		case "name":
5622			if v != nil {
5623				var name string
5624				err = json.Unmarshal(*v, &name)
5625				if err != nil {
5626					return err
5627				}
5628				coa.Name = &name
5629			}
5630		case "kind":
5631			if v != nil {
5632				var kind string
5633				err = json.Unmarshal(*v, &kind)
5634				if err != nil {
5635					return err
5636				}
5637				coa.Kind = &kind
5638			}
5639		case "type":
5640			if v != nil {
5641				var typeVar string
5642				err = json.Unmarshal(*v, &typeVar)
5643				if err != nil {
5644					return err
5645				}
5646				coa.Type = &typeVar
5647			}
5648		}
5649	}
5650
5651	return nil
5652}
5653
5654// CertificateOrderActionProperties certificateOrderAction resource specific properties
5655type CertificateOrderActionProperties struct {
5656	// Type - Action type. Possible values include: 'CertificateIssued', 'CertificateOrderCanceled', 'CertificateOrderCreated', 'CertificateRevoked', 'DomainValidationComplete', 'FraudDetected', 'OrgNameChange', 'OrgValidationComplete', 'SanDrop', 'FraudCleared', 'CertificateExpired', 'CertificateExpirationWarning', 'FraudDocumentationRequired', 'Unknown'
5657	Type CertificateOrderActionType `json:"type,omitempty"`
5658	// CreatedAt - Time at which the certificate action was performed.
5659	CreatedAt *date.Time `json:"createdAt,omitempty"`
5660}
5661
5662// CertificatePatchResource ARM resource for a certificate.
5663type CertificatePatchResource struct {
5664	// CertificatePatchResourceProperties - CertificatePatchResource resource specific properties
5665	*CertificatePatchResourceProperties `json:"properties,omitempty"`
5666	// ID - READ-ONLY; Resource Id.
5667	ID *string `json:"id,omitempty"`
5668	// Name - READ-ONLY; Resource Name.
5669	Name *string `json:"name,omitempty"`
5670	// Kind - Kind of resource.
5671	Kind *string `json:"kind,omitempty"`
5672	// Type - READ-ONLY; Resource type.
5673	Type *string `json:"type,omitempty"`
5674}
5675
5676// MarshalJSON is the custom marshaler for CertificatePatchResource.
5677func (cpr CertificatePatchResource) MarshalJSON() ([]byte, error) {
5678	objectMap := make(map[string]interface{})
5679	if cpr.CertificatePatchResourceProperties != nil {
5680		objectMap["properties"] = cpr.CertificatePatchResourceProperties
5681	}
5682	if cpr.Kind != nil {
5683		objectMap["kind"] = cpr.Kind
5684	}
5685	return json.Marshal(objectMap)
5686}
5687
5688// UnmarshalJSON is the custom unmarshaler for CertificatePatchResource struct.
5689func (cpr *CertificatePatchResource) UnmarshalJSON(body []byte) error {
5690	var m map[string]*json.RawMessage
5691	err := json.Unmarshal(body, &m)
5692	if err != nil {
5693		return err
5694	}
5695	for k, v := range m {
5696		switch k {
5697		case "properties":
5698			if v != nil {
5699				var certificatePatchResourceProperties CertificatePatchResourceProperties
5700				err = json.Unmarshal(*v, &certificatePatchResourceProperties)
5701				if err != nil {
5702					return err
5703				}
5704				cpr.CertificatePatchResourceProperties = &certificatePatchResourceProperties
5705			}
5706		case "id":
5707			if v != nil {
5708				var ID string
5709				err = json.Unmarshal(*v, &ID)
5710				if err != nil {
5711					return err
5712				}
5713				cpr.ID = &ID
5714			}
5715		case "name":
5716			if v != nil {
5717				var name string
5718				err = json.Unmarshal(*v, &name)
5719				if err != nil {
5720					return err
5721				}
5722				cpr.Name = &name
5723			}
5724		case "kind":
5725			if v != nil {
5726				var kind string
5727				err = json.Unmarshal(*v, &kind)
5728				if err != nil {
5729					return err
5730				}
5731				cpr.Kind = &kind
5732			}
5733		case "type":
5734			if v != nil {
5735				var typeVar string
5736				err = json.Unmarshal(*v, &typeVar)
5737				if err != nil {
5738					return err
5739				}
5740				cpr.Type = &typeVar
5741			}
5742		}
5743	}
5744
5745	return nil
5746}
5747
5748// CertificatePatchResourceProperties certificatePatchResource resource specific properties
5749type CertificatePatchResourceProperties struct {
5750	// FriendlyName - READ-ONLY; Friendly name of the certificate.
5751	FriendlyName *string `json:"friendlyName,omitempty"`
5752	// SubjectName - READ-ONLY; Subject name of the certificate.
5753	SubjectName *string `json:"subjectName,omitempty"`
5754	// HostNames - Host names the certificate applies to.
5755	HostNames *[]string `json:"hostNames,omitempty"`
5756	// PfxBlob - Pfx blob.
5757	PfxBlob *[]byte `json:"pfxBlob,omitempty"`
5758	// SiteName - READ-ONLY; App name.
5759	SiteName *string `json:"siteName,omitempty"`
5760	// SelfLink - READ-ONLY; Self link.
5761	SelfLink *string `json:"selfLink,omitempty"`
5762	// Issuer - READ-ONLY; Certificate issuer.
5763	Issuer *string `json:"issuer,omitempty"`
5764	// IssueDate - READ-ONLY; Certificate issue Date.
5765	IssueDate *date.Time `json:"issueDate,omitempty"`
5766	// ExpirationDate - READ-ONLY; Certificate expiration date.
5767	ExpirationDate *date.Time `json:"expirationDate,omitempty"`
5768	// Password - Certificate password.
5769	Password *string `json:"password,omitempty"`
5770	// Thumbprint - READ-ONLY; Certificate thumbprint.
5771	Thumbprint *string `json:"thumbprint,omitempty"`
5772	// Valid - READ-ONLY; Is the certificate valid?.
5773	Valid *bool `json:"valid,omitempty"`
5774	// CerBlob - READ-ONLY; Raw bytes of .cer file
5775	CerBlob *[]byte `json:"cerBlob,omitempty"`
5776	// PublicKeyHash - READ-ONLY; Public key hash.
5777	PublicKeyHash *string `json:"publicKeyHash,omitempty"`
5778	// HostingEnvironmentProfile - READ-ONLY; Specification for the App Service Environment to use for the certificate.
5779	HostingEnvironmentProfile *HostingEnvironmentProfile `json:"hostingEnvironmentProfile,omitempty"`
5780	// KeyVaultID - Key Vault Csm resource Id.
5781	KeyVaultID *string `json:"keyVaultId,omitempty"`
5782	// KeyVaultSecretName - Key Vault secret name.
5783	KeyVaultSecretName *string `json:"keyVaultSecretName,omitempty"`
5784	// KeyVaultSecretStatus - READ-ONLY; Status of the Key Vault secret. Possible values include: 'KeyVaultSecretStatusInitialized', 'KeyVaultSecretStatusWaitingOnCertificateOrder', 'KeyVaultSecretStatusSucceeded', 'KeyVaultSecretStatusCertificateOrderFailed', 'KeyVaultSecretStatusOperationNotPermittedOnKeyVault', 'KeyVaultSecretStatusAzureServiceUnauthorizedToAccessKeyVault', 'KeyVaultSecretStatusKeyVaultDoesNotExist', 'KeyVaultSecretStatusKeyVaultSecretDoesNotExist', 'KeyVaultSecretStatusUnknownError', 'KeyVaultSecretStatusExternalPrivateKey', 'KeyVaultSecretStatusUnknown'
5785	KeyVaultSecretStatus KeyVaultSecretStatus `json:"keyVaultSecretStatus,omitempty"`
5786	// GeoRegion - READ-ONLY; Region of the certificate.
5787	GeoRegion *string `json:"geoRegion,omitempty"`
5788	// ServerFarmID - Resource ID of the associated App Service plan, formatted as: "/subscriptions/{subscriptionID}/resourceGroups/{groupName}/providers/Microsoft.Web/serverfarms/{appServicePlanName}".
5789	ServerFarmID *string `json:"serverFarmId,omitempty"`
5790}
5791
5792// CertificateProperties certificate resource specific properties
5793type CertificateProperties struct {
5794	// FriendlyName - READ-ONLY; Friendly name of the certificate.
5795	FriendlyName *string `json:"friendlyName,omitempty"`
5796	// SubjectName - READ-ONLY; Subject name of the certificate.
5797	SubjectName *string `json:"subjectName,omitempty"`
5798	// HostNames - Host names the certificate applies to.
5799	HostNames *[]string `json:"hostNames,omitempty"`
5800	// PfxBlob - Pfx blob.
5801	PfxBlob *[]byte `json:"pfxBlob,omitempty"`
5802	// SiteName - READ-ONLY; App name.
5803	SiteName *string `json:"siteName,omitempty"`
5804	// SelfLink - READ-ONLY; Self link.
5805	SelfLink *string `json:"selfLink,omitempty"`
5806	// Issuer - READ-ONLY; Certificate issuer.
5807	Issuer *string `json:"issuer,omitempty"`
5808	// IssueDate - READ-ONLY; Certificate issue Date.
5809	IssueDate *date.Time `json:"issueDate,omitempty"`
5810	// ExpirationDate - READ-ONLY; Certificate expiration date.
5811	ExpirationDate *date.Time `json:"expirationDate,omitempty"`
5812	// Password - Certificate password.
5813	Password *string `json:"password,omitempty"`
5814	// Thumbprint - READ-ONLY; Certificate thumbprint.
5815	Thumbprint *string `json:"thumbprint,omitempty"`
5816	// Valid - READ-ONLY; Is the certificate valid?.
5817	Valid *bool `json:"valid,omitempty"`
5818	// CerBlob - READ-ONLY; Raw bytes of .cer file
5819	CerBlob *[]byte `json:"cerBlob,omitempty"`
5820	// PublicKeyHash - READ-ONLY; Public key hash.
5821	PublicKeyHash *string `json:"publicKeyHash,omitempty"`
5822	// HostingEnvironmentProfile - READ-ONLY; Specification for the App Service Environment to use for the certificate.
5823	HostingEnvironmentProfile *HostingEnvironmentProfile `json:"hostingEnvironmentProfile,omitempty"`
5824	// KeyVaultID - Key Vault Csm resource Id.
5825	KeyVaultID *string `json:"keyVaultId,omitempty"`
5826	// KeyVaultSecretName - Key Vault secret name.
5827	KeyVaultSecretName *string `json:"keyVaultSecretName,omitempty"`
5828	// KeyVaultSecretStatus - READ-ONLY; Status of the Key Vault secret. Possible values include: 'KeyVaultSecretStatusInitialized', 'KeyVaultSecretStatusWaitingOnCertificateOrder', 'KeyVaultSecretStatusSucceeded', 'KeyVaultSecretStatusCertificateOrderFailed', 'KeyVaultSecretStatusOperationNotPermittedOnKeyVault', 'KeyVaultSecretStatusAzureServiceUnauthorizedToAccessKeyVault', 'KeyVaultSecretStatusKeyVaultDoesNotExist', 'KeyVaultSecretStatusKeyVaultSecretDoesNotExist', 'KeyVaultSecretStatusUnknownError', 'KeyVaultSecretStatusExternalPrivateKey', 'KeyVaultSecretStatusUnknown'
5829	KeyVaultSecretStatus KeyVaultSecretStatus `json:"keyVaultSecretStatus,omitempty"`
5830	// GeoRegion - READ-ONLY; Region of the certificate.
5831	GeoRegion *string `json:"geoRegion,omitempty"`
5832	// ServerFarmID - Resource ID of the associated App Service plan, formatted as: "/subscriptions/{subscriptionID}/resourceGroups/{groupName}/providers/Microsoft.Web/serverfarms/{appServicePlanName}".
5833	ServerFarmID *string `json:"serverFarmId,omitempty"`
5834}
5835
5836// CloningInfo information needed for cloning operation.
5837type CloningInfo struct {
5838	// CorrelationID - Correlation ID of cloning operation. This ID ties multiple cloning operations
5839	// together to use the same snapshot.
5840	CorrelationID *uuid.UUID `json:"correlationId,omitempty"`
5841	// Overwrite - <code>true</code> to overwrite destination app; otherwise, <code>false</code>.
5842	Overwrite *bool `json:"overwrite,omitempty"`
5843	// CloneCustomHostNames - <code>true</code> to clone custom hostnames from source app; otherwise, <code>false</code>.
5844	CloneCustomHostNames *bool `json:"cloneCustomHostNames,omitempty"`
5845	// CloneSourceControl - <code>true</code> to clone source control from source app; otherwise, <code>false</code>.
5846	CloneSourceControl *bool `json:"cloneSourceControl,omitempty"`
5847	// SourceWebAppID - ARM resource ID of the source app. App resource ID is of the form
5848	// /subscriptions/{subId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{siteName} for production slots and
5849	// /subscriptions/{subId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{siteName}/slots/{slotName} for other slots.
5850	SourceWebAppID *string `json:"sourceWebAppId,omitempty"`
5851	// HostingEnvironment - App Service Environment.
5852	HostingEnvironment *string `json:"hostingEnvironment,omitempty"`
5853	// AppSettingsOverrides - Application setting overrides for cloned app. If specified, these settings override the settings cloned
5854	// from source app. Otherwise, application settings from source app are retained.
5855	AppSettingsOverrides map[string]*string `json:"appSettingsOverrides"`
5856	// ConfigureLoadBalancing - <code>true</code> to configure load balancing for source and destination app.
5857	ConfigureLoadBalancing *bool `json:"configureLoadBalancing,omitempty"`
5858	// TrafficManagerProfileID - ARM resource ID of the Traffic Manager profile to use, if it exists. Traffic Manager resource ID is of the form
5859	// /subscriptions/{subId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/trafficManagerProfiles/{profileName}.
5860	TrafficManagerProfileID *string `json:"trafficManagerProfileId,omitempty"`
5861	// TrafficManagerProfileName - Name of Traffic Manager profile to create. This is only needed if Traffic Manager profile does not already exist.
5862	TrafficManagerProfileName *string `json:"trafficManagerProfileName,omitempty"`
5863	// IgnoreQuotas - <code>true</code> if quotas should be ignored; otherwise, <code>false</code>.
5864	IgnoreQuotas *bool `json:"ignoreQuotas,omitempty"`
5865}
5866
5867// MarshalJSON is the custom marshaler for CloningInfo.
5868func (ci CloningInfo) MarshalJSON() ([]byte, error) {
5869	objectMap := make(map[string]interface{})
5870	if ci.CorrelationID != nil {
5871		objectMap["correlationId"] = ci.CorrelationID
5872	}
5873	if ci.Overwrite != nil {
5874		objectMap["overwrite"] = ci.Overwrite
5875	}
5876	if ci.CloneCustomHostNames != nil {
5877		objectMap["cloneCustomHostNames"] = ci.CloneCustomHostNames
5878	}
5879	if ci.CloneSourceControl != nil {
5880		objectMap["cloneSourceControl"] = ci.CloneSourceControl
5881	}
5882	if ci.SourceWebAppID != nil {
5883		objectMap["sourceWebAppId"] = ci.SourceWebAppID
5884	}
5885	if ci.HostingEnvironment != nil {
5886		objectMap["hostingEnvironment"] = ci.HostingEnvironment
5887	}
5888	if ci.AppSettingsOverrides != nil {
5889		objectMap["appSettingsOverrides"] = ci.AppSettingsOverrides
5890	}
5891	if ci.ConfigureLoadBalancing != nil {
5892		objectMap["configureLoadBalancing"] = ci.ConfigureLoadBalancing
5893	}
5894	if ci.TrafficManagerProfileID != nil {
5895		objectMap["trafficManagerProfileId"] = ci.TrafficManagerProfileID
5896	}
5897	if ci.TrafficManagerProfileName != nil {
5898		objectMap["trafficManagerProfileName"] = ci.TrafficManagerProfileName
5899	}
5900	if ci.IgnoreQuotas != nil {
5901		objectMap["ignoreQuotas"] = ci.IgnoreQuotas
5902	}
5903	return json.Marshal(objectMap)
5904}
5905
5906// ConnectionStringDictionary string dictionary resource.
5907type ConnectionStringDictionary struct {
5908	autorest.Response `json:"-"`
5909	// Properties - Connection strings.
5910	Properties map[string]*ConnStringValueTypePair `json:"properties"`
5911	// ID - READ-ONLY; Resource Id.
5912	ID *string `json:"id,omitempty"`
5913	// Name - READ-ONLY; Resource Name.
5914	Name *string `json:"name,omitempty"`
5915	// Kind - Kind of resource.
5916	Kind *string `json:"kind,omitempty"`
5917	// Type - READ-ONLY; Resource type.
5918	Type *string `json:"type,omitempty"`
5919}
5920
5921// MarshalJSON is the custom marshaler for ConnectionStringDictionary.
5922func (csd ConnectionStringDictionary) MarshalJSON() ([]byte, error) {
5923	objectMap := make(map[string]interface{})
5924	if csd.Properties != nil {
5925		objectMap["properties"] = csd.Properties
5926	}
5927	if csd.Kind != nil {
5928		objectMap["kind"] = csd.Kind
5929	}
5930	return json.Marshal(objectMap)
5931}
5932
5933// ConnStringInfo database connection string information.
5934type ConnStringInfo struct {
5935	// Name - Name of connection string.
5936	Name *string `json:"name,omitempty"`
5937	// ConnectionString - Connection string value.
5938	ConnectionString *string `json:"connectionString,omitempty"`
5939	// Type - Type of database. Possible values include: 'MySQL', 'SQLServer', 'SQLAzure', 'Custom', 'NotificationHub', 'ServiceBus', 'EventHub', 'APIHub', 'DocDb', 'RedisCache', 'PostgreSQL'
5940	Type ConnectionStringType `json:"type,omitempty"`
5941}
5942
5943// ConnStringValueTypePair database connection string value to type pair.
5944type ConnStringValueTypePair struct {
5945	// Value - Value of pair.
5946	Value *string `json:"value,omitempty"`
5947	// Type - Type of database. Possible values include: 'MySQL', 'SQLServer', 'SQLAzure', 'Custom', 'NotificationHub', 'ServiceBus', 'EventHub', 'APIHub', 'DocDb', 'RedisCache', 'PostgreSQL'
5948	Type ConnectionStringType `json:"type,omitempty"`
5949}
5950
5951// Contact contact information for domain registration. If 'Domain Privacy' option is not selected then the
5952// contact information is made publicly available through the Whois
5953// directories as per ICANN requirements.
5954type Contact struct {
5955	// AddressMailing - Mailing address.
5956	AddressMailing *Address `json:"addressMailing,omitempty"`
5957	// Email - Email address.
5958	Email *string `json:"email,omitempty"`
5959	// Fax - Fax number.
5960	Fax *string `json:"fax,omitempty"`
5961	// JobTitle - Job title.
5962	JobTitle *string `json:"jobTitle,omitempty"`
5963	// NameFirst - First name.
5964	NameFirst *string `json:"nameFirst,omitempty"`
5965	// NameLast - Last name.
5966	NameLast *string `json:"nameLast,omitempty"`
5967	// NameMiddle - Middle name.
5968	NameMiddle *string `json:"nameMiddle,omitempty"`
5969	// Organization - Organization contact belongs to.
5970	Organization *string `json:"organization,omitempty"`
5971	// Phone - Phone number.
5972	Phone *string `json:"phone,omitempty"`
5973}
5974
5975// ContinuousWebJob continuous Web Job Information.
5976type ContinuousWebJob struct {
5977	autorest.Response `json:"-"`
5978	// ContinuousWebJobProperties - ContinuousWebJob resource specific properties
5979	*ContinuousWebJobProperties `json:"properties,omitempty"`
5980	// ID - READ-ONLY; Resource Id.
5981	ID *string `json:"id,omitempty"`
5982	// Name - READ-ONLY; Resource Name.
5983	Name *string `json:"name,omitempty"`
5984	// Kind - Kind of resource.
5985	Kind *string `json:"kind,omitempty"`
5986	// Type - READ-ONLY; Resource type.
5987	Type *string `json:"type,omitempty"`
5988}
5989
5990// MarshalJSON is the custom marshaler for ContinuousWebJob.
5991func (cwj ContinuousWebJob) MarshalJSON() ([]byte, error) {
5992	objectMap := make(map[string]interface{})
5993	if cwj.ContinuousWebJobProperties != nil {
5994		objectMap["properties"] = cwj.ContinuousWebJobProperties
5995	}
5996	if cwj.Kind != nil {
5997		objectMap["kind"] = cwj.Kind
5998	}
5999	return json.Marshal(objectMap)
6000}
6001
6002// UnmarshalJSON is the custom unmarshaler for ContinuousWebJob struct.
6003func (cwj *ContinuousWebJob) UnmarshalJSON(body []byte) error {
6004	var m map[string]*json.RawMessage
6005	err := json.Unmarshal(body, &m)
6006	if err != nil {
6007		return err
6008	}
6009	for k, v := range m {
6010		switch k {
6011		case "properties":
6012			if v != nil {
6013				var continuousWebJobProperties ContinuousWebJobProperties
6014				err = json.Unmarshal(*v, &continuousWebJobProperties)
6015				if err != nil {
6016					return err
6017				}
6018				cwj.ContinuousWebJobProperties = &continuousWebJobProperties
6019			}
6020		case "id":
6021			if v != nil {
6022				var ID string
6023				err = json.Unmarshal(*v, &ID)
6024				if err != nil {
6025					return err
6026				}
6027				cwj.ID = &ID
6028			}
6029		case "name":
6030			if v != nil {
6031				var name string
6032				err = json.Unmarshal(*v, &name)
6033				if err != nil {
6034					return err
6035				}
6036				cwj.Name = &name
6037			}
6038		case "kind":
6039			if v != nil {
6040				var kind string
6041				err = json.Unmarshal(*v, &kind)
6042				if err != nil {
6043					return err
6044				}
6045				cwj.Kind = &kind
6046			}
6047		case "type":
6048			if v != nil {
6049				var typeVar string
6050				err = json.Unmarshal(*v, &typeVar)
6051				if err != nil {
6052					return err
6053				}
6054				cwj.Type = &typeVar
6055			}
6056		}
6057	}
6058
6059	return nil
6060}
6061
6062// ContinuousWebJobCollection collection of Kudu continuous web job information elements.
6063type ContinuousWebJobCollection struct {
6064	autorest.Response `json:"-"`
6065	// Value - Collection of resources.
6066	Value *[]ContinuousWebJob `json:"value,omitempty"`
6067	// NextLink - Link to next page of resources.
6068	NextLink *string `json:"nextLink,omitempty"`
6069}
6070
6071// ContinuousWebJobCollectionIterator provides access to a complete listing of ContinuousWebJob values.
6072type ContinuousWebJobCollectionIterator struct {
6073	i    int
6074	page ContinuousWebJobCollectionPage
6075}
6076
6077// NextWithContext advances to the next value.  If there was an error making
6078// the request the iterator does not advance and the error is returned.
6079func (iter *ContinuousWebJobCollectionIterator) NextWithContext(ctx context.Context) (err error) {
6080	if tracing.IsEnabled() {
6081		ctx = tracing.StartSpan(ctx, fqdn+"/ContinuousWebJobCollectionIterator.NextWithContext")
6082		defer func() {
6083			sc := -1
6084			if iter.Response().Response.Response != nil {
6085				sc = iter.Response().Response.Response.StatusCode
6086			}
6087			tracing.EndSpan(ctx, sc, err)
6088		}()
6089	}
6090	iter.i++
6091	if iter.i < len(iter.page.Values()) {
6092		return nil
6093	}
6094	err = iter.page.NextWithContext(ctx)
6095	if err != nil {
6096		iter.i--
6097		return err
6098	}
6099	iter.i = 0
6100	return nil
6101}
6102
6103// Next advances to the next value.  If there was an error making
6104// the request the iterator does not advance and the error is returned.
6105// Deprecated: Use NextWithContext() instead.
6106func (iter *ContinuousWebJobCollectionIterator) Next() error {
6107	return iter.NextWithContext(context.Background())
6108}
6109
6110// NotDone returns true if the enumeration should be started or is not yet complete.
6111func (iter ContinuousWebJobCollectionIterator) NotDone() bool {
6112	return iter.page.NotDone() && iter.i < len(iter.page.Values())
6113}
6114
6115// Response returns the raw server response from the last page request.
6116func (iter ContinuousWebJobCollectionIterator) Response() ContinuousWebJobCollection {
6117	return iter.page.Response()
6118}
6119
6120// Value returns the current value or a zero-initialized value if the
6121// iterator has advanced beyond the end of the collection.
6122func (iter ContinuousWebJobCollectionIterator) Value() ContinuousWebJob {
6123	if !iter.page.NotDone() {
6124		return ContinuousWebJob{}
6125	}
6126	return iter.page.Values()[iter.i]
6127}
6128
6129// Creates a new instance of the ContinuousWebJobCollectionIterator type.
6130func NewContinuousWebJobCollectionIterator(page ContinuousWebJobCollectionPage) ContinuousWebJobCollectionIterator {
6131	return ContinuousWebJobCollectionIterator{page: page}
6132}
6133
6134// IsEmpty returns true if the ListResult contains no values.
6135func (cwjc ContinuousWebJobCollection) IsEmpty() bool {
6136	return cwjc.Value == nil || len(*cwjc.Value) == 0
6137}
6138
6139// continuousWebJobCollectionPreparer prepares a request to retrieve the next set of results.
6140// It returns nil if no more results exist.
6141func (cwjc ContinuousWebJobCollection) continuousWebJobCollectionPreparer(ctx context.Context) (*http.Request, error) {
6142	if cwjc.NextLink == nil || len(to.String(cwjc.NextLink)) < 1 {
6143		return nil, nil
6144	}
6145	return autorest.Prepare((&http.Request{}).WithContext(ctx),
6146		autorest.AsJSON(),
6147		autorest.AsGet(),
6148		autorest.WithBaseURL(to.String(cwjc.NextLink)))
6149}
6150
6151// ContinuousWebJobCollectionPage contains a page of ContinuousWebJob values.
6152type ContinuousWebJobCollectionPage struct {
6153	fn   func(context.Context, ContinuousWebJobCollection) (ContinuousWebJobCollection, error)
6154	cwjc ContinuousWebJobCollection
6155}
6156
6157// NextWithContext advances to the next page of values.  If there was an error making
6158// the request the page does not advance and the error is returned.
6159func (page *ContinuousWebJobCollectionPage) NextWithContext(ctx context.Context) (err error) {
6160	if tracing.IsEnabled() {
6161		ctx = tracing.StartSpan(ctx, fqdn+"/ContinuousWebJobCollectionPage.NextWithContext")
6162		defer func() {
6163			sc := -1
6164			if page.Response().Response.Response != nil {
6165				sc = page.Response().Response.Response.StatusCode
6166			}
6167			tracing.EndSpan(ctx, sc, err)
6168		}()
6169	}
6170	next, err := page.fn(ctx, page.cwjc)
6171	if err != nil {
6172		return err
6173	}
6174	page.cwjc = next
6175	return nil
6176}
6177
6178// Next advances to the next page of values.  If there was an error making
6179// the request the page does not advance and the error is returned.
6180// Deprecated: Use NextWithContext() instead.
6181func (page *ContinuousWebJobCollectionPage) Next() error {
6182	return page.NextWithContext(context.Background())
6183}
6184
6185// NotDone returns true if the page enumeration should be started or is not yet complete.
6186func (page ContinuousWebJobCollectionPage) NotDone() bool {
6187	return !page.cwjc.IsEmpty()
6188}
6189
6190// Response returns the raw server response from the last page request.
6191func (page ContinuousWebJobCollectionPage) Response() ContinuousWebJobCollection {
6192	return page.cwjc
6193}
6194
6195// Values returns the slice of values for the current page or nil if there are no values.
6196func (page ContinuousWebJobCollectionPage) Values() []ContinuousWebJob {
6197	if page.cwjc.IsEmpty() {
6198		return nil
6199	}
6200	return *page.cwjc.Value
6201}
6202
6203// Creates a new instance of the ContinuousWebJobCollectionPage type.
6204func NewContinuousWebJobCollectionPage(getNextPage func(context.Context, ContinuousWebJobCollection) (ContinuousWebJobCollection, error)) ContinuousWebJobCollectionPage {
6205	return ContinuousWebJobCollectionPage{fn: getNextPage}
6206}
6207
6208// ContinuousWebJobProperties continuousWebJob resource specific properties
6209type ContinuousWebJobProperties struct {
6210	// Status - Job status. Possible values include: 'Initializing', 'Starting', 'Running', 'PendingRestart', 'Stopped'
6211	Status ContinuousWebJobStatus `json:"status,omitempty"`
6212	// DetailedStatus - Detailed status.
6213	DetailedStatus *string `json:"detailedStatus,omitempty"`
6214	// LogURL - Log URL.
6215	LogURL *string `json:"logUrl,omitempty"`
6216	// Name - READ-ONLY; Job name. Used as job identifier in ARM resource URI.
6217	Name *string `json:"name,omitempty"`
6218	// RunCommand - Run command.
6219	RunCommand *string `json:"runCommand,omitempty"`
6220	// URL - Job URL.
6221	URL *string `json:"url,omitempty"`
6222	// ExtraInfoURL - Extra Info URL.
6223	ExtraInfoURL *string `json:"extraInfoUrl,omitempty"`
6224	// JobType - Job type. Possible values include: 'Continuous', 'Triggered'
6225	JobType JobType `json:"jobType,omitempty"`
6226	// Error - Error information.
6227	Error *string `json:"error,omitempty"`
6228	// UsingSdk - Using SDK?
6229	UsingSdk *bool `json:"usingSdk,omitempty"`
6230	// Settings - Job settings.
6231	Settings map[string]interface{} `json:"settings"`
6232}
6233
6234// MarshalJSON is the custom marshaler for ContinuousWebJobProperties.
6235func (cwj ContinuousWebJobProperties) MarshalJSON() ([]byte, error) {
6236	objectMap := make(map[string]interface{})
6237	if cwj.Status != "" {
6238		objectMap["status"] = cwj.Status
6239	}
6240	if cwj.DetailedStatus != nil {
6241		objectMap["detailedStatus"] = cwj.DetailedStatus
6242	}
6243	if cwj.LogURL != nil {
6244		objectMap["logUrl"] = cwj.LogURL
6245	}
6246	if cwj.RunCommand != nil {
6247		objectMap["runCommand"] = cwj.RunCommand
6248	}
6249	if cwj.URL != nil {
6250		objectMap["url"] = cwj.URL
6251	}
6252	if cwj.ExtraInfoURL != nil {
6253		objectMap["extraInfoUrl"] = cwj.ExtraInfoURL
6254	}
6255	if cwj.JobType != "" {
6256		objectMap["jobType"] = cwj.JobType
6257	}
6258	if cwj.Error != nil {
6259		objectMap["error"] = cwj.Error
6260	}
6261	if cwj.UsingSdk != nil {
6262		objectMap["usingSdk"] = cwj.UsingSdk
6263	}
6264	if cwj.Settings != nil {
6265		objectMap["settings"] = cwj.Settings
6266	}
6267	return json.Marshal(objectMap)
6268}
6269
6270// CorsSettings cross-Origin Resource Sharing (CORS) settings for the app.
6271type CorsSettings struct {
6272	// AllowedOrigins - Gets or sets the list of origins that should be allowed to make cross-origin
6273	// calls (for example: http://example.com:12345). Use "*" to allow all.
6274	AllowedOrigins *[]string `json:"allowedOrigins,omitempty"`
6275}
6276
6277// CsmMoveResourceEnvelope object with a list of the resources that need to be moved and the resource group
6278// they should be moved to.
6279type CsmMoveResourceEnvelope struct {
6280	TargetResourceGroup *string   `json:"targetResourceGroup,omitempty"`
6281	Resources           *[]string `json:"resources,omitempty"`
6282}
6283
6284// CsmOperationCollection collection of Azure resource manager operation metadata.
6285type CsmOperationCollection struct {
6286	autorest.Response `json:"-"`
6287	// Value - Collection of resources.
6288	Value *[]CsmOperationDescription `json:"value,omitempty"`
6289	// NextLink - READ-ONLY; Link to next page of resources.
6290	NextLink *string `json:"nextLink,omitempty"`
6291}
6292
6293// CsmOperationCollectionIterator provides access to a complete listing of CsmOperationDescription values.
6294type CsmOperationCollectionIterator struct {
6295	i    int
6296	page CsmOperationCollectionPage
6297}
6298
6299// NextWithContext advances to the next value.  If there was an error making
6300// the request the iterator does not advance and the error is returned.
6301func (iter *CsmOperationCollectionIterator) NextWithContext(ctx context.Context) (err error) {
6302	if tracing.IsEnabled() {
6303		ctx = tracing.StartSpan(ctx, fqdn+"/CsmOperationCollectionIterator.NextWithContext")
6304		defer func() {
6305			sc := -1
6306			if iter.Response().Response.Response != nil {
6307				sc = iter.Response().Response.Response.StatusCode
6308			}
6309			tracing.EndSpan(ctx, sc, err)
6310		}()
6311	}
6312	iter.i++
6313	if iter.i < len(iter.page.Values()) {
6314		return nil
6315	}
6316	err = iter.page.NextWithContext(ctx)
6317	if err != nil {
6318		iter.i--
6319		return err
6320	}
6321	iter.i = 0
6322	return nil
6323}
6324
6325// Next advances to the next value.  If there was an error making
6326// the request the iterator does not advance and the error is returned.
6327// Deprecated: Use NextWithContext() instead.
6328func (iter *CsmOperationCollectionIterator) Next() error {
6329	return iter.NextWithContext(context.Background())
6330}
6331
6332// NotDone returns true if the enumeration should be started or is not yet complete.
6333func (iter CsmOperationCollectionIterator) NotDone() bool {
6334	return iter.page.NotDone() && iter.i < len(iter.page.Values())
6335}
6336
6337// Response returns the raw server response from the last page request.
6338func (iter CsmOperationCollectionIterator) Response() CsmOperationCollection {
6339	return iter.page.Response()
6340}
6341
6342// Value returns the current value or a zero-initialized value if the
6343// iterator has advanced beyond the end of the collection.
6344func (iter CsmOperationCollectionIterator) Value() CsmOperationDescription {
6345	if !iter.page.NotDone() {
6346		return CsmOperationDescription{}
6347	}
6348	return iter.page.Values()[iter.i]
6349}
6350
6351// Creates a new instance of the CsmOperationCollectionIterator type.
6352func NewCsmOperationCollectionIterator(page CsmOperationCollectionPage) CsmOperationCollectionIterator {
6353	return CsmOperationCollectionIterator{page: page}
6354}
6355
6356// IsEmpty returns true if the ListResult contains no values.
6357func (coc CsmOperationCollection) IsEmpty() bool {
6358	return coc.Value == nil || len(*coc.Value) == 0
6359}
6360
6361// csmOperationCollectionPreparer prepares a request to retrieve the next set of results.
6362// It returns nil if no more results exist.
6363func (coc CsmOperationCollection) csmOperationCollectionPreparer(ctx context.Context) (*http.Request, error) {
6364	if coc.NextLink == nil || len(to.String(coc.NextLink)) < 1 {
6365		return nil, nil
6366	}
6367	return autorest.Prepare((&http.Request{}).WithContext(ctx),
6368		autorest.AsJSON(),
6369		autorest.AsGet(),
6370		autorest.WithBaseURL(to.String(coc.NextLink)))
6371}
6372
6373// CsmOperationCollectionPage contains a page of CsmOperationDescription values.
6374type CsmOperationCollectionPage struct {
6375	fn  func(context.Context, CsmOperationCollection) (CsmOperationCollection, error)
6376	coc CsmOperationCollection
6377}
6378
6379// NextWithContext advances to the next page of values.  If there was an error making
6380// the request the page does not advance and the error is returned.
6381func (page *CsmOperationCollectionPage) NextWithContext(ctx context.Context) (err error) {
6382	if tracing.IsEnabled() {
6383		ctx = tracing.StartSpan(ctx, fqdn+"/CsmOperationCollectionPage.NextWithContext")
6384		defer func() {
6385			sc := -1
6386			if page.Response().Response.Response != nil {
6387				sc = page.Response().Response.Response.StatusCode
6388			}
6389			tracing.EndSpan(ctx, sc, err)
6390		}()
6391	}
6392	next, err := page.fn(ctx, page.coc)
6393	if err != nil {
6394		return err
6395	}
6396	page.coc = next
6397	return nil
6398}
6399
6400// Next advances to the next page of values.  If there was an error making
6401// the request the page does not advance and the error is returned.
6402// Deprecated: Use NextWithContext() instead.
6403func (page *CsmOperationCollectionPage) Next() error {
6404	return page.NextWithContext(context.Background())
6405}
6406
6407// NotDone returns true if the page enumeration should be started or is not yet complete.
6408func (page CsmOperationCollectionPage) NotDone() bool {
6409	return !page.coc.IsEmpty()
6410}
6411
6412// Response returns the raw server response from the last page request.
6413func (page CsmOperationCollectionPage) Response() CsmOperationCollection {
6414	return page.coc
6415}
6416
6417// Values returns the slice of values for the current page or nil if there are no values.
6418func (page CsmOperationCollectionPage) Values() []CsmOperationDescription {
6419	if page.coc.IsEmpty() {
6420		return nil
6421	}
6422	return *page.coc.Value
6423}
6424
6425// Creates a new instance of the CsmOperationCollectionPage type.
6426func NewCsmOperationCollectionPage(getNextPage func(context.Context, CsmOperationCollection) (CsmOperationCollection, error)) CsmOperationCollectionPage {
6427	return CsmOperationCollectionPage{fn: getNextPage}
6428}
6429
6430// CsmOperationDescription description of an operation available for Microsoft.Web resource provider.
6431type CsmOperationDescription struct {
6432	Name       *string                            `json:"name,omitempty"`
6433	Display    *CsmOperationDisplay               `json:"display,omitempty"`
6434	Origin     *string                            `json:"origin,omitempty"`
6435	Properties *CsmOperationDescriptionProperties `json:"properties,omitempty"`
6436}
6437
6438// CsmOperationDescriptionProperties properties available for a Microsoft.Web resource provider operation.
6439type CsmOperationDescriptionProperties struct {
6440	ServiceSpecification *ServiceSpecification `json:"serviceSpecification,omitempty"`
6441}
6442
6443// CsmOperationDisplay meta data about operation used for display in portal.
6444type CsmOperationDisplay struct {
6445	Provider    *string `json:"provider,omitempty"`
6446	Resource    *string `json:"resource,omitempty"`
6447	Operation   *string `json:"operation,omitempty"`
6448	Description *string `json:"description,omitempty"`
6449}
6450
6451// CsmPublishingProfileOptions publishing options for requested profile.
6452type CsmPublishingProfileOptions struct {
6453	// Format - Name of the format. Valid values are:
6454	// FileZilla3
6455	// WebDeploy -- default
6456	// Ftp. Possible values include: 'FileZilla3', 'WebDeploy', 'Ftp'
6457	Format PublishingProfileFormat `json:"format,omitempty"`
6458}
6459
6460// CsmSlotEntity deployment slot parameters.
6461type CsmSlotEntity struct {
6462	// TargetSlot - Destination deployment slot during swap operation.
6463	TargetSlot *string `json:"targetSlot,omitempty"`
6464	// PreserveVnet - <code>true</code> to preserve Virtual Network to the slot during swap; otherwise, <code>false</code>.
6465	PreserveVnet *bool `json:"preserveVnet,omitempty"`
6466}
6467
6468// CsmUsageQuota usage of the quota resource.
6469type CsmUsageQuota struct {
6470	// Unit - Units of measurement for the quota resource.
6471	Unit *string `json:"unit,omitempty"`
6472	// NextResetTime - Next reset time for the resource counter.
6473	NextResetTime *date.Time `json:"nextResetTime,omitempty"`
6474	// CurrentValue - The current value of the resource counter.
6475	CurrentValue *int64 `json:"currentValue,omitempty"`
6476	// Limit - The resource limit.
6477	Limit *int64 `json:"limit,omitempty"`
6478	// Name - Quota name.
6479	Name *LocalizableString `json:"name,omitempty"`
6480}
6481
6482// CsmUsageQuotaCollection collection of CSM usage quotas.
6483type CsmUsageQuotaCollection struct {
6484	autorest.Response `json:"-"`
6485	// Value - Collection of resources.
6486	Value *[]CsmUsageQuota `json:"value,omitempty"`
6487	// NextLink - READ-ONLY; Link to next page of resources.
6488	NextLink *string `json:"nextLink,omitempty"`
6489}
6490
6491// CsmUsageQuotaCollectionIterator provides access to a complete listing of CsmUsageQuota values.
6492type CsmUsageQuotaCollectionIterator struct {
6493	i    int
6494	page CsmUsageQuotaCollectionPage
6495}
6496
6497// NextWithContext advances to the next value.  If there was an error making
6498// the request the iterator does not advance and the error is returned.
6499func (iter *CsmUsageQuotaCollectionIterator) NextWithContext(ctx context.Context) (err error) {
6500	if tracing.IsEnabled() {
6501		ctx = tracing.StartSpan(ctx, fqdn+"/CsmUsageQuotaCollectionIterator.NextWithContext")
6502		defer func() {
6503			sc := -1
6504			if iter.Response().Response.Response != nil {
6505				sc = iter.Response().Response.Response.StatusCode
6506			}
6507			tracing.EndSpan(ctx, sc, err)
6508		}()
6509	}
6510	iter.i++
6511	if iter.i < len(iter.page.Values()) {
6512		return nil
6513	}
6514	err = iter.page.NextWithContext(ctx)
6515	if err != nil {
6516		iter.i--
6517		return err
6518	}
6519	iter.i = 0
6520	return nil
6521}
6522
6523// Next advances to the next value.  If there was an error making
6524// the request the iterator does not advance and the error is returned.
6525// Deprecated: Use NextWithContext() instead.
6526func (iter *CsmUsageQuotaCollectionIterator) Next() error {
6527	return iter.NextWithContext(context.Background())
6528}
6529
6530// NotDone returns true if the enumeration should be started or is not yet complete.
6531func (iter CsmUsageQuotaCollectionIterator) NotDone() bool {
6532	return iter.page.NotDone() && iter.i < len(iter.page.Values())
6533}
6534
6535// Response returns the raw server response from the last page request.
6536func (iter CsmUsageQuotaCollectionIterator) Response() CsmUsageQuotaCollection {
6537	return iter.page.Response()
6538}
6539
6540// Value returns the current value or a zero-initialized value if the
6541// iterator has advanced beyond the end of the collection.
6542func (iter CsmUsageQuotaCollectionIterator) Value() CsmUsageQuota {
6543	if !iter.page.NotDone() {
6544		return CsmUsageQuota{}
6545	}
6546	return iter.page.Values()[iter.i]
6547}
6548
6549// Creates a new instance of the CsmUsageQuotaCollectionIterator type.
6550func NewCsmUsageQuotaCollectionIterator(page CsmUsageQuotaCollectionPage) CsmUsageQuotaCollectionIterator {
6551	return CsmUsageQuotaCollectionIterator{page: page}
6552}
6553
6554// IsEmpty returns true if the ListResult contains no values.
6555func (cuqc CsmUsageQuotaCollection) IsEmpty() bool {
6556	return cuqc.Value == nil || len(*cuqc.Value) == 0
6557}
6558
6559// csmUsageQuotaCollectionPreparer prepares a request to retrieve the next set of results.
6560// It returns nil if no more results exist.
6561func (cuqc CsmUsageQuotaCollection) csmUsageQuotaCollectionPreparer(ctx context.Context) (*http.Request, error) {
6562	if cuqc.NextLink == nil || len(to.String(cuqc.NextLink)) < 1 {
6563		return nil, nil
6564	}
6565	return autorest.Prepare((&http.Request{}).WithContext(ctx),
6566		autorest.AsJSON(),
6567		autorest.AsGet(),
6568		autorest.WithBaseURL(to.String(cuqc.NextLink)))
6569}
6570
6571// CsmUsageQuotaCollectionPage contains a page of CsmUsageQuota values.
6572type CsmUsageQuotaCollectionPage struct {
6573	fn   func(context.Context, CsmUsageQuotaCollection) (CsmUsageQuotaCollection, error)
6574	cuqc CsmUsageQuotaCollection
6575}
6576
6577// NextWithContext advances to the next page of values.  If there was an error making
6578// the request the page does not advance and the error is returned.
6579func (page *CsmUsageQuotaCollectionPage) NextWithContext(ctx context.Context) (err error) {
6580	if tracing.IsEnabled() {
6581		ctx = tracing.StartSpan(ctx, fqdn+"/CsmUsageQuotaCollectionPage.NextWithContext")
6582		defer func() {
6583			sc := -1
6584			if page.Response().Response.Response != nil {
6585				sc = page.Response().Response.Response.StatusCode
6586			}
6587			tracing.EndSpan(ctx, sc, err)
6588		}()
6589	}
6590	next, err := page.fn(ctx, page.cuqc)
6591	if err != nil {
6592		return err
6593	}
6594	page.cuqc = next
6595	return nil
6596}
6597
6598// Next advances to the next page of values.  If there was an error making
6599// the request the page does not advance and the error is returned.
6600// Deprecated: Use NextWithContext() instead.
6601func (page *CsmUsageQuotaCollectionPage) Next() error {
6602	return page.NextWithContext(context.Background())
6603}
6604
6605// NotDone returns true if the page enumeration should be started or is not yet complete.
6606func (page CsmUsageQuotaCollectionPage) NotDone() bool {
6607	return !page.cuqc.IsEmpty()
6608}
6609
6610// Response returns the raw server response from the last page request.
6611func (page CsmUsageQuotaCollectionPage) Response() CsmUsageQuotaCollection {
6612	return page.cuqc
6613}
6614
6615// Values returns the slice of values for the current page or nil if there are no values.
6616func (page CsmUsageQuotaCollectionPage) Values() []CsmUsageQuota {
6617	if page.cuqc.IsEmpty() {
6618		return nil
6619	}
6620	return *page.cuqc.Value
6621}
6622
6623// Creates a new instance of the CsmUsageQuotaCollectionPage type.
6624func NewCsmUsageQuotaCollectionPage(getNextPage func(context.Context, CsmUsageQuotaCollection) (CsmUsageQuotaCollection, error)) CsmUsageQuotaCollectionPage {
6625	return CsmUsageQuotaCollectionPage{fn: getNextPage}
6626}
6627
6628// CustomHostnameAnalysisResult custom domain analysis.
6629type CustomHostnameAnalysisResult struct {
6630	autorest.Response `json:"-"`
6631	// CustomHostnameAnalysisResultProperties - CustomHostnameAnalysisResult resource specific properties
6632	*CustomHostnameAnalysisResultProperties `json:"properties,omitempty"`
6633	// ID - READ-ONLY; Resource Id.
6634	ID *string `json:"id,omitempty"`
6635	// Name - READ-ONLY; Resource Name.
6636	Name *string `json:"name,omitempty"`
6637	// Kind - Kind of resource.
6638	Kind *string `json:"kind,omitempty"`
6639	// Type - READ-ONLY; Resource type.
6640	Type *string `json:"type,omitempty"`
6641}
6642
6643// MarshalJSON is the custom marshaler for CustomHostnameAnalysisResult.
6644func (char CustomHostnameAnalysisResult) MarshalJSON() ([]byte, error) {
6645	objectMap := make(map[string]interface{})
6646	if char.CustomHostnameAnalysisResultProperties != nil {
6647		objectMap["properties"] = char.CustomHostnameAnalysisResultProperties
6648	}
6649	if char.Kind != nil {
6650		objectMap["kind"] = char.Kind
6651	}
6652	return json.Marshal(objectMap)
6653}
6654
6655// UnmarshalJSON is the custom unmarshaler for CustomHostnameAnalysisResult struct.
6656func (char *CustomHostnameAnalysisResult) UnmarshalJSON(body []byte) error {
6657	var m map[string]*json.RawMessage
6658	err := json.Unmarshal(body, &m)
6659	if err != nil {
6660		return err
6661	}
6662	for k, v := range m {
6663		switch k {
6664		case "properties":
6665			if v != nil {
6666				var customHostnameAnalysisResultProperties CustomHostnameAnalysisResultProperties
6667				err = json.Unmarshal(*v, &customHostnameAnalysisResultProperties)
6668				if err != nil {
6669					return err
6670				}
6671				char.CustomHostnameAnalysisResultProperties = &customHostnameAnalysisResultProperties
6672			}
6673		case "id":
6674			if v != nil {
6675				var ID string
6676				err = json.Unmarshal(*v, &ID)
6677				if err != nil {
6678					return err
6679				}
6680				char.ID = &ID
6681			}
6682		case "name":
6683			if v != nil {
6684				var name string
6685				err = json.Unmarshal(*v, &name)
6686				if err != nil {
6687					return err
6688				}
6689				char.Name = &name
6690			}
6691		case "kind":
6692			if v != nil {
6693				var kind string
6694				err = json.Unmarshal(*v, &kind)
6695				if err != nil {
6696					return err
6697				}
6698				char.Kind = &kind
6699			}
6700		case "type":
6701			if v != nil {
6702				var typeVar string
6703				err = json.Unmarshal(*v, &typeVar)
6704				if err != nil {
6705					return err
6706				}
6707				char.Type = &typeVar
6708			}
6709		}
6710	}
6711
6712	return nil
6713}
6714
6715// CustomHostnameAnalysisResultProperties customHostnameAnalysisResult resource specific properties
6716type CustomHostnameAnalysisResultProperties struct {
6717	// IsHostnameAlreadyVerified - READ-ONLY; <code>true</code> if hostname is already verified; otherwise, <code>false</code>.
6718	IsHostnameAlreadyVerified *bool `json:"isHostnameAlreadyVerified,omitempty"`
6719	// CustomDomainVerificationTest - READ-ONLY; DNS verification test result. Possible values include: 'DNSVerificationTestResultPassed', 'DNSVerificationTestResultFailed', 'DNSVerificationTestResultSkipped'
6720	CustomDomainVerificationTest DNSVerificationTestResult `json:"customDomainVerificationTest,omitempty"`
6721	// CustomDomainVerificationFailureInfo - READ-ONLY; Raw failure information if DNS verification fails.
6722	CustomDomainVerificationFailureInfo *ErrorEntity `json:"customDomainVerificationFailureInfo,omitempty"`
6723	// HasConflictOnScaleUnit - READ-ONLY; <code>true</code> if there is a conflict on a scale unit; otherwise, <code>false</code>.
6724	HasConflictOnScaleUnit *bool `json:"hasConflictOnScaleUnit,omitempty"`
6725	// HasConflictAcrossSubscription - READ-ONLY; <code>true</code> if there is a conflict across subscriptions; otherwise, <code>false</code>.
6726	HasConflictAcrossSubscription *bool `json:"hasConflictAcrossSubscription,omitempty"`
6727	// ConflictingAppResourceID - READ-ONLY; Name of the conflicting app on scale unit if it's within the same subscription.
6728	ConflictingAppResourceID *string `json:"conflictingAppResourceId,omitempty"`
6729	// CNameRecords - CName records controller can see for this hostname.
6730	CNameRecords *[]string `json:"cNameRecords,omitempty"`
6731	// TxtRecords - TXT records controller can see for this hostname.
6732	TxtRecords *[]string `json:"txtRecords,omitempty"`
6733	// ARecords - A records controller can see for this hostname.
6734	ARecords *[]string `json:"aRecords,omitempty"`
6735	// AlternateCNameRecords - Alternate CName records controller can see for this hostname.
6736	AlternateCNameRecords *[]string `json:"alternateCNameRecords,omitempty"`
6737	// AlternateTxtRecords - Alternate TXT records controller can see for this hostname.
6738	AlternateTxtRecords *[]string `json:"alternateTxtRecords,omitempty"`
6739}
6740
6741// DatabaseBackupSetting database backup settings.
6742type DatabaseBackupSetting struct {
6743	// DatabaseType - Database type (e.g. SqlAzure / MySql). Possible values include: 'DatabaseTypeSQLAzure', 'DatabaseTypeMySQL', 'DatabaseTypeLocalMySQL', 'DatabaseTypePostgreSQL'
6744	DatabaseType DatabaseType `json:"databaseType,omitempty"`
6745	Name         *string      `json:"name,omitempty"`
6746	// ConnectionStringName - Contains a connection string name that is linked to the SiteConfig.ConnectionStrings.
6747	// This is used during restore with overwrite connection strings options.
6748	ConnectionStringName *string `json:"connectionStringName,omitempty"`
6749	// ConnectionString - Contains a connection string to a database which is being backed up or restored. If the restore should happen to a new database, the database name inside is the new one.
6750	ConnectionString *string `json:"connectionString,omitempty"`
6751}
6752
6753// DataSource class representing data source used by the detectors
6754type DataSource struct {
6755	// Instructions - Instructions if any for the data source
6756	Instructions *[]string `json:"instructions,omitempty"`
6757	// DataSourceURI - Datasource Uri Links
6758	DataSourceURI *[]NameValuePair `json:"dataSourceUri,omitempty"`
6759}
6760
6761// DataTableResponseColumn column definition
6762type DataTableResponseColumn struct {
6763	// ColumnName - Name of the column
6764	ColumnName *string `json:"columnName,omitempty"`
6765	// DataType - Data type which looks like 'String' or 'Int32'.
6766	DataType *string `json:"dataType,omitempty"`
6767	// ColumnType - Column Type
6768	ColumnType *string `json:"columnType,omitempty"`
6769}
6770
6771// DataTableResponseObject data Table which defines columns and raw row values
6772type DataTableResponseObject struct {
6773	// TableName - Name of the table
6774	TableName *string `json:"tableName,omitempty"`
6775	// Columns - List of columns with data types
6776	Columns *[]DataTableResponseColumn `json:"columns,omitempty"`
6777	// Rows - Raw row values
6778	Rows *[][]string `json:"rows,omitempty"`
6779}
6780
6781// DefaultErrorResponse app Service error response.
6782type DefaultErrorResponse struct {
6783	// Error - READ-ONLY; Error model.
6784	Error *DefaultErrorResponseError `json:"error,omitempty"`
6785}
6786
6787// DefaultErrorResponseError error model.
6788type DefaultErrorResponseError struct {
6789	// Code - READ-ONLY; Standardized string to programmatically identify the error.
6790	Code *string `json:"code,omitempty"`
6791	// Message - READ-ONLY; Detailed error description and debugging information.
6792	Message *string `json:"message,omitempty"`
6793	// Target - READ-ONLY; Detailed error description and debugging information.
6794	Target  *string                                 `json:"target,omitempty"`
6795	Details *[]DefaultErrorResponseErrorDetailsItem `json:"details,omitempty"`
6796	// Innererror - READ-ONLY; More information to debug error.
6797	Innererror *string `json:"innererror,omitempty"`
6798}
6799
6800// DefaultErrorResponseErrorDetailsItem detailed errors.
6801type DefaultErrorResponseErrorDetailsItem struct {
6802	// Code - READ-ONLY; Standardized string to programmatically identify the error.
6803	Code *string `json:"code,omitempty"`
6804	// Message - READ-ONLY; Detailed error description and debugging information.
6805	Message *string `json:"message,omitempty"`
6806	// Target - READ-ONLY; Detailed error description and debugging information.
6807	Target *string `json:"target,omitempty"`
6808}
6809
6810// DeletedSite a deleted app.
6811type DeletedSite struct {
6812	// ID - Numeric id for the deleted site
6813	ID *int32 `json:"id,omitempty"`
6814	// DeletedTimestamp - READ-ONLY; Time in UTC when the app was deleted.
6815	DeletedTimestamp *string `json:"deletedTimestamp,omitempty"`
6816	// Subscription - READ-ONLY; Subscription containing the deleted site
6817	Subscription *string `json:"subscription,omitempty"`
6818	// ResourceGroup - READ-ONLY; ResourceGroup that contained the deleted site
6819	ResourceGroup *string `json:"resourceGroup,omitempty"`
6820	// Name - READ-ONLY; Name of the deleted site
6821	Name *string `json:"name,omitempty"`
6822	// Slot - READ-ONLY; Slot of the deleted site
6823	Slot *string `json:"slot,omitempty"`
6824}
6825
6826// DeletedWebAppCollection collection of deleted apps.
6827type DeletedWebAppCollection struct {
6828	autorest.Response `json:"-"`
6829	// Value - Collection of resources.
6830	Value *[]DeletedSite `json:"value,omitempty"`
6831	// NextLink - READ-ONLY; Link to next page of resources.
6832	NextLink *string `json:"nextLink,omitempty"`
6833}
6834
6835// DeletedWebAppCollectionIterator provides access to a complete listing of DeletedSite values.
6836type DeletedWebAppCollectionIterator struct {
6837	i    int
6838	page DeletedWebAppCollectionPage
6839}
6840
6841// NextWithContext advances to the next value.  If there was an error making
6842// the request the iterator does not advance and the error is returned.
6843func (iter *DeletedWebAppCollectionIterator) NextWithContext(ctx context.Context) (err error) {
6844	if tracing.IsEnabled() {
6845		ctx = tracing.StartSpan(ctx, fqdn+"/DeletedWebAppCollectionIterator.NextWithContext")
6846		defer func() {
6847			sc := -1
6848			if iter.Response().Response.Response != nil {
6849				sc = iter.Response().Response.Response.StatusCode
6850			}
6851			tracing.EndSpan(ctx, sc, err)
6852		}()
6853	}
6854	iter.i++
6855	if iter.i < len(iter.page.Values()) {
6856		return nil
6857	}
6858	err = iter.page.NextWithContext(ctx)
6859	if err != nil {
6860		iter.i--
6861		return err
6862	}
6863	iter.i = 0
6864	return nil
6865}
6866
6867// Next advances to the next value.  If there was an error making
6868// the request the iterator does not advance and the error is returned.
6869// Deprecated: Use NextWithContext() instead.
6870func (iter *DeletedWebAppCollectionIterator) Next() error {
6871	return iter.NextWithContext(context.Background())
6872}
6873
6874// NotDone returns true if the enumeration should be started or is not yet complete.
6875func (iter DeletedWebAppCollectionIterator) NotDone() bool {
6876	return iter.page.NotDone() && iter.i < len(iter.page.Values())
6877}
6878
6879// Response returns the raw server response from the last page request.
6880func (iter DeletedWebAppCollectionIterator) Response() DeletedWebAppCollection {
6881	return iter.page.Response()
6882}
6883
6884// Value returns the current value or a zero-initialized value if the
6885// iterator has advanced beyond the end of the collection.
6886func (iter DeletedWebAppCollectionIterator) Value() DeletedSite {
6887	if !iter.page.NotDone() {
6888		return DeletedSite{}
6889	}
6890	return iter.page.Values()[iter.i]
6891}
6892
6893// Creates a new instance of the DeletedWebAppCollectionIterator type.
6894func NewDeletedWebAppCollectionIterator(page DeletedWebAppCollectionPage) DeletedWebAppCollectionIterator {
6895	return DeletedWebAppCollectionIterator{page: page}
6896}
6897
6898// IsEmpty returns true if the ListResult contains no values.
6899func (dwac DeletedWebAppCollection) IsEmpty() bool {
6900	return dwac.Value == nil || len(*dwac.Value) == 0
6901}
6902
6903// deletedWebAppCollectionPreparer prepares a request to retrieve the next set of results.
6904// It returns nil if no more results exist.
6905func (dwac DeletedWebAppCollection) deletedWebAppCollectionPreparer(ctx context.Context) (*http.Request, error) {
6906	if dwac.NextLink == nil || len(to.String(dwac.NextLink)) < 1 {
6907		return nil, nil
6908	}
6909	return autorest.Prepare((&http.Request{}).WithContext(ctx),
6910		autorest.AsJSON(),
6911		autorest.AsGet(),
6912		autorest.WithBaseURL(to.String(dwac.NextLink)))
6913}
6914
6915// DeletedWebAppCollectionPage contains a page of DeletedSite values.
6916type DeletedWebAppCollectionPage struct {
6917	fn   func(context.Context, DeletedWebAppCollection) (DeletedWebAppCollection, error)
6918	dwac DeletedWebAppCollection
6919}
6920
6921// NextWithContext advances to the next page of values.  If there was an error making
6922// the request the page does not advance and the error is returned.
6923func (page *DeletedWebAppCollectionPage) NextWithContext(ctx context.Context) (err error) {
6924	if tracing.IsEnabled() {
6925		ctx = tracing.StartSpan(ctx, fqdn+"/DeletedWebAppCollectionPage.NextWithContext")
6926		defer func() {
6927			sc := -1
6928			if page.Response().Response.Response != nil {
6929				sc = page.Response().Response.Response.StatusCode
6930			}
6931			tracing.EndSpan(ctx, sc, err)
6932		}()
6933	}
6934	next, err := page.fn(ctx, page.dwac)
6935	if err != nil {
6936		return err
6937	}
6938	page.dwac = next
6939	return nil
6940}
6941
6942// Next advances to the next page of values.  If there was an error making
6943// the request the page does not advance and the error is returned.
6944// Deprecated: Use NextWithContext() instead.
6945func (page *DeletedWebAppCollectionPage) Next() error {
6946	return page.NextWithContext(context.Background())
6947}
6948
6949// NotDone returns true if the page enumeration should be started or is not yet complete.
6950func (page DeletedWebAppCollectionPage) NotDone() bool {
6951	return !page.dwac.IsEmpty()
6952}
6953
6954// Response returns the raw server response from the last page request.
6955func (page DeletedWebAppCollectionPage) Response() DeletedWebAppCollection {
6956	return page.dwac
6957}
6958
6959// Values returns the slice of values for the current page or nil if there are no values.
6960func (page DeletedWebAppCollectionPage) Values() []DeletedSite {
6961	if page.dwac.IsEmpty() {
6962		return nil
6963	}
6964	return *page.dwac.Value
6965}
6966
6967// Creates a new instance of the DeletedWebAppCollectionPage type.
6968func NewDeletedWebAppCollectionPage(getNextPage func(context.Context, DeletedWebAppCollection) (DeletedWebAppCollection, error)) DeletedWebAppCollectionPage {
6969	return DeletedWebAppCollectionPage{fn: getNextPage}
6970}
6971
6972// Deployment user credentials used for publishing activity.
6973type Deployment struct {
6974	autorest.Response `json:"-"`
6975	// DeploymentProperties - Deployment resource specific properties
6976	*DeploymentProperties `json:"properties,omitempty"`
6977	// ID - READ-ONLY; Resource Id.
6978	ID *string `json:"id,omitempty"`
6979	// Name - READ-ONLY; Resource Name.
6980	Name *string `json:"name,omitempty"`
6981	// Kind - Kind of resource.
6982	Kind *string `json:"kind,omitempty"`
6983	// Type - READ-ONLY; Resource type.
6984	Type *string `json:"type,omitempty"`
6985}
6986
6987// MarshalJSON is the custom marshaler for Deployment.
6988func (d Deployment) MarshalJSON() ([]byte, error) {
6989	objectMap := make(map[string]interface{})
6990	if d.DeploymentProperties != nil {
6991		objectMap["properties"] = d.DeploymentProperties
6992	}
6993	if d.Kind != nil {
6994		objectMap["kind"] = d.Kind
6995	}
6996	return json.Marshal(objectMap)
6997}
6998
6999// UnmarshalJSON is the custom unmarshaler for Deployment struct.
7000func (d *Deployment) UnmarshalJSON(body []byte) error {
7001	var m map[string]*json.RawMessage
7002	err := json.Unmarshal(body, &m)
7003	if err != nil {
7004		return err
7005	}
7006	for k, v := range m {
7007		switch k {
7008		case "properties":
7009			if v != nil {
7010				var deploymentProperties DeploymentProperties
7011				err = json.Unmarshal(*v, &deploymentProperties)
7012				if err != nil {
7013					return err
7014				}
7015				d.DeploymentProperties = &deploymentProperties
7016			}
7017		case "id":
7018			if v != nil {
7019				var ID string
7020				err = json.Unmarshal(*v, &ID)
7021				if err != nil {
7022					return err
7023				}
7024				d.ID = &ID
7025			}
7026		case "name":
7027			if v != nil {
7028				var name string
7029				err = json.Unmarshal(*v, &name)
7030				if err != nil {
7031					return err
7032				}
7033				d.Name = &name
7034			}
7035		case "kind":
7036			if v != nil {
7037				var kind string
7038				err = json.Unmarshal(*v, &kind)
7039				if err != nil {
7040					return err
7041				}
7042				d.Kind = &kind
7043			}
7044		case "type":
7045			if v != nil {
7046				var typeVar string
7047				err = json.Unmarshal(*v, &typeVar)
7048				if err != nil {
7049					return err
7050				}
7051				d.Type = &typeVar
7052			}
7053		}
7054	}
7055
7056	return nil
7057}
7058
7059// DeploymentCollection collection of app deployments.
7060type DeploymentCollection struct {
7061	autorest.Response `json:"-"`
7062	// Value - Collection of resources.
7063	Value *[]Deployment `json:"value,omitempty"`
7064	// NextLink - READ-ONLY; Link to next page of resources.
7065	NextLink *string `json:"nextLink,omitempty"`
7066}
7067
7068// DeploymentCollectionIterator provides access to a complete listing of Deployment values.
7069type DeploymentCollectionIterator struct {
7070	i    int
7071	page DeploymentCollectionPage
7072}
7073
7074// NextWithContext advances to the next value.  If there was an error making
7075// the request the iterator does not advance and the error is returned.
7076func (iter *DeploymentCollectionIterator) NextWithContext(ctx context.Context) (err error) {
7077	if tracing.IsEnabled() {
7078		ctx = tracing.StartSpan(ctx, fqdn+"/DeploymentCollectionIterator.NextWithContext")
7079		defer func() {
7080			sc := -1
7081			if iter.Response().Response.Response != nil {
7082				sc = iter.Response().Response.Response.StatusCode
7083			}
7084			tracing.EndSpan(ctx, sc, err)
7085		}()
7086	}
7087	iter.i++
7088	if iter.i < len(iter.page.Values()) {
7089		return nil
7090	}
7091	err = iter.page.NextWithContext(ctx)
7092	if err != nil {
7093		iter.i--
7094		return err
7095	}
7096	iter.i = 0
7097	return nil
7098}
7099
7100// Next advances to the next value.  If there was an error making
7101// the request the iterator does not advance and the error is returned.
7102// Deprecated: Use NextWithContext() instead.
7103func (iter *DeploymentCollectionIterator) Next() error {
7104	return iter.NextWithContext(context.Background())
7105}
7106
7107// NotDone returns true if the enumeration should be started or is not yet complete.
7108func (iter DeploymentCollectionIterator) NotDone() bool {
7109	return iter.page.NotDone() && iter.i < len(iter.page.Values())
7110}
7111
7112// Response returns the raw server response from the last page request.
7113func (iter DeploymentCollectionIterator) Response() DeploymentCollection {
7114	return iter.page.Response()
7115}
7116
7117// Value returns the current value or a zero-initialized value if the
7118// iterator has advanced beyond the end of the collection.
7119func (iter DeploymentCollectionIterator) Value() Deployment {
7120	if !iter.page.NotDone() {
7121		return Deployment{}
7122	}
7123	return iter.page.Values()[iter.i]
7124}
7125
7126// Creates a new instance of the DeploymentCollectionIterator type.
7127func NewDeploymentCollectionIterator(page DeploymentCollectionPage) DeploymentCollectionIterator {
7128	return DeploymentCollectionIterator{page: page}
7129}
7130
7131// IsEmpty returns true if the ListResult contains no values.
7132func (dc DeploymentCollection) IsEmpty() bool {
7133	return dc.Value == nil || len(*dc.Value) == 0
7134}
7135
7136// deploymentCollectionPreparer prepares a request to retrieve the next set of results.
7137// It returns nil if no more results exist.
7138func (dc DeploymentCollection) deploymentCollectionPreparer(ctx context.Context) (*http.Request, error) {
7139	if dc.NextLink == nil || len(to.String(dc.NextLink)) < 1 {
7140		return nil, nil
7141	}
7142	return autorest.Prepare((&http.Request{}).WithContext(ctx),
7143		autorest.AsJSON(),
7144		autorest.AsGet(),
7145		autorest.WithBaseURL(to.String(dc.NextLink)))
7146}
7147
7148// DeploymentCollectionPage contains a page of Deployment values.
7149type DeploymentCollectionPage struct {
7150	fn func(context.Context, DeploymentCollection) (DeploymentCollection, error)
7151	dc DeploymentCollection
7152}
7153
7154// NextWithContext advances to the next page of values.  If there was an error making
7155// the request the page does not advance and the error is returned.
7156func (page *DeploymentCollectionPage) NextWithContext(ctx context.Context) (err error) {
7157	if tracing.IsEnabled() {
7158		ctx = tracing.StartSpan(ctx, fqdn+"/DeploymentCollectionPage.NextWithContext")
7159		defer func() {
7160			sc := -1
7161			if page.Response().Response.Response != nil {
7162				sc = page.Response().Response.Response.StatusCode
7163			}
7164			tracing.EndSpan(ctx, sc, err)
7165		}()
7166	}
7167	next, err := page.fn(ctx, page.dc)
7168	if err != nil {
7169		return err
7170	}
7171	page.dc = next
7172	return nil
7173}
7174
7175// Next advances to the next page of values.  If there was an error making
7176// the request the page does not advance and the error is returned.
7177// Deprecated: Use NextWithContext() instead.
7178func (page *DeploymentCollectionPage) Next() error {
7179	return page.NextWithContext(context.Background())
7180}
7181
7182// NotDone returns true if the page enumeration should be started or is not yet complete.
7183func (page DeploymentCollectionPage) NotDone() bool {
7184	return !page.dc.IsEmpty()
7185}
7186
7187// Response returns the raw server response from the last page request.
7188func (page DeploymentCollectionPage) Response() DeploymentCollection {
7189	return page.dc
7190}
7191
7192// Values returns the slice of values for the current page or nil if there are no values.
7193func (page DeploymentCollectionPage) Values() []Deployment {
7194	if page.dc.IsEmpty() {
7195		return nil
7196	}
7197	return *page.dc.Value
7198}
7199
7200// Creates a new instance of the DeploymentCollectionPage type.
7201func NewDeploymentCollectionPage(getNextPage func(context.Context, DeploymentCollection) (DeploymentCollection, error)) DeploymentCollectionPage {
7202	return DeploymentCollectionPage{fn: getNextPage}
7203}
7204
7205// DeploymentLocations list of available locations (regions or App Service Environments) for
7206// deployment of App Service resources.
7207type DeploymentLocations struct {
7208	autorest.Response `json:"-"`
7209	// Locations - Available regions.
7210	Locations *[]GeoRegion `json:"locations,omitempty"`
7211	// HostingEnvironments - Available App Service Environments with full descriptions of the environments.
7212	HostingEnvironments *[]AppServiceEnvironment `json:"hostingEnvironments,omitempty"`
7213	// HostingEnvironmentDeploymentInfos - Available App Service Environments with basic information.
7214	HostingEnvironmentDeploymentInfos *[]HostingEnvironmentDeploymentInfo `json:"hostingEnvironmentDeploymentInfos,omitempty"`
7215}
7216
7217// DeploymentProperties deployment resource specific properties
7218type DeploymentProperties struct {
7219	// ID - Identifier for deployment.
7220	ID *string `json:"id,omitempty"`
7221	// Status - Deployment status.
7222	Status *int32 `json:"status,omitempty"`
7223	// Message - Details about deployment status.
7224	Message *string `json:"message,omitempty"`
7225	// Author - Who authored the deployment.
7226	Author *string `json:"author,omitempty"`
7227	// Deployer - Who performed the deployment.
7228	Deployer *string `json:"deployer,omitempty"`
7229	// AuthorEmail - Author email.
7230	AuthorEmail *string `json:"authorEmail,omitempty"`
7231	// StartTime - Start time.
7232	StartTime *date.Time `json:"startTime,omitempty"`
7233	// EndTime - End time.
7234	EndTime *date.Time `json:"endTime,omitempty"`
7235	// Active - True if deployment is currently active, false if completed and null if not started.
7236	Active *bool `json:"active,omitempty"`
7237	// Details - Details on deployment.
7238	Details *string `json:"details,omitempty"`
7239}
7240
7241// DetectorAbnormalTimePeriod class representing Abnormal Time Period detected.
7242type DetectorAbnormalTimePeriod struct {
7243	// StartTime - Start time of the correlated event
7244	StartTime *date.Time `json:"startTime,omitempty"`
7245	// EndTime - End time of the correlated event
7246	EndTime *date.Time `json:"endTime,omitempty"`
7247	// Message - Message describing the event
7248	Message *string `json:"message,omitempty"`
7249	// Source - Represents the name of the Detector
7250	Source *string `json:"source,omitempty"`
7251	// Priority - Represents the rank of the Detector
7252	Priority *float64 `json:"priority,omitempty"`
7253	// MetaData - Downtime metadata
7254	MetaData *[][]NameValuePair `json:"metaData,omitempty"`
7255	// Type - Represents the type of the Detector. Possible values include: 'ServiceIncident', 'AppDeployment', 'AppCrash', 'RuntimeIssueDetected', 'AseDeployment', 'UserIssue', 'PlatformIssue', 'Other'
7256	Type IssueType `json:"type,omitempty"`
7257	// Solutions - List of proposed solutions
7258	Solutions *[]Solution `json:"solutions,omitempty"`
7259}
7260
7261// DetectorDefinition class representing detector definition
7262type DetectorDefinition struct {
7263	// DetectorDefinitionProperties - DetectorDefinition resource specific properties
7264	*DetectorDefinitionProperties `json:"properties,omitempty"`
7265	// ID - READ-ONLY; Resource Id.
7266	ID *string `json:"id,omitempty"`
7267	// Name - READ-ONLY; Resource Name.
7268	Name *string `json:"name,omitempty"`
7269	// Kind - Kind of resource.
7270	Kind *string `json:"kind,omitempty"`
7271	// Type - READ-ONLY; Resource type.
7272	Type *string `json:"type,omitempty"`
7273}
7274
7275// MarshalJSON is the custom marshaler for DetectorDefinition.
7276func (dd DetectorDefinition) MarshalJSON() ([]byte, error) {
7277	objectMap := make(map[string]interface{})
7278	if dd.DetectorDefinitionProperties != nil {
7279		objectMap["properties"] = dd.DetectorDefinitionProperties
7280	}
7281	if dd.Kind != nil {
7282		objectMap["kind"] = dd.Kind
7283	}
7284	return json.Marshal(objectMap)
7285}
7286
7287// UnmarshalJSON is the custom unmarshaler for DetectorDefinition struct.
7288func (dd *DetectorDefinition) UnmarshalJSON(body []byte) error {
7289	var m map[string]*json.RawMessage
7290	err := json.Unmarshal(body, &m)
7291	if err != nil {
7292		return err
7293	}
7294	for k, v := range m {
7295		switch k {
7296		case "properties":
7297			if v != nil {
7298				var detectorDefinitionProperties DetectorDefinitionProperties
7299				err = json.Unmarshal(*v, &detectorDefinitionProperties)
7300				if err != nil {
7301					return err
7302				}
7303				dd.DetectorDefinitionProperties = &detectorDefinitionProperties
7304			}
7305		case "id":
7306			if v != nil {
7307				var ID string
7308				err = json.Unmarshal(*v, &ID)
7309				if err != nil {
7310					return err
7311				}
7312				dd.ID = &ID
7313			}
7314		case "name":
7315			if v != nil {
7316				var name string
7317				err = json.Unmarshal(*v, &name)
7318				if err != nil {
7319					return err
7320				}
7321				dd.Name = &name
7322			}
7323		case "kind":
7324			if v != nil {
7325				var kind string
7326				err = json.Unmarshal(*v, &kind)
7327				if err != nil {
7328					return err
7329				}
7330				dd.Kind = &kind
7331			}
7332		case "type":
7333			if v != nil {
7334				var typeVar string
7335				err = json.Unmarshal(*v, &typeVar)
7336				if err != nil {
7337					return err
7338				}
7339				dd.Type = &typeVar
7340			}
7341		}
7342	}
7343
7344	return nil
7345}
7346
7347// DetectorDefinitionProperties detectorDefinition resource specific properties
7348type DetectorDefinitionProperties struct {
7349	// DisplayName - READ-ONLY; Display name of the detector
7350	DisplayName *string `json:"displayName,omitempty"`
7351	// Description - READ-ONLY; Description of the detector
7352	Description *string `json:"description,omitempty"`
7353	// Rank - READ-ONLY; Detector Rank
7354	Rank *float64 `json:"rank,omitempty"`
7355	// IsEnabled - READ-ONLY; Flag representing whether detector is enabled or not.
7356	IsEnabled *bool `json:"isEnabled,omitempty"`
7357}
7358
7359// DetectorInfo definition of Detector
7360type DetectorInfo struct {
7361	// Description - READ-ONLY; Short description of the detector and its purpose
7362	Description *string `json:"description,omitempty"`
7363	// Category - READ-ONLY; Support Category
7364	Category *string `json:"category,omitempty"`
7365	// SubCategory - READ-ONLY; Support Sub Category
7366	SubCategory *string `json:"subCategory,omitempty"`
7367	// SupportTopicID - READ-ONLY; Support Topic Id
7368	SupportTopicID *string `json:"supportTopicId,omitempty"`
7369}
7370
7371// DetectorResponse class representing Response from Detector
7372type DetectorResponse struct {
7373	autorest.Response `json:"-"`
7374	// DetectorResponseProperties - DetectorResponse resource specific properties
7375	*DetectorResponseProperties `json:"properties,omitempty"`
7376	// ID - READ-ONLY; Resource Id.
7377	ID *string `json:"id,omitempty"`
7378	// Name - READ-ONLY; Resource Name.
7379	Name *string `json:"name,omitempty"`
7380	// Kind - Kind of resource.
7381	Kind *string `json:"kind,omitempty"`
7382	// Type - READ-ONLY; Resource type.
7383	Type *string `json:"type,omitempty"`
7384}
7385
7386// MarshalJSON is the custom marshaler for DetectorResponse.
7387func (dr DetectorResponse) MarshalJSON() ([]byte, error) {
7388	objectMap := make(map[string]interface{})
7389	if dr.DetectorResponseProperties != nil {
7390		objectMap["properties"] = dr.DetectorResponseProperties
7391	}
7392	if dr.Kind != nil {
7393		objectMap["kind"] = dr.Kind
7394	}
7395	return json.Marshal(objectMap)
7396}
7397
7398// UnmarshalJSON is the custom unmarshaler for DetectorResponse struct.
7399func (dr *DetectorResponse) UnmarshalJSON(body []byte) error {
7400	var m map[string]*json.RawMessage
7401	err := json.Unmarshal(body, &m)
7402	if err != nil {
7403		return err
7404	}
7405	for k, v := range m {
7406		switch k {
7407		case "properties":
7408			if v != nil {
7409				var detectorResponseProperties DetectorResponseProperties
7410				err = json.Unmarshal(*v, &detectorResponseProperties)
7411				if err != nil {
7412					return err
7413				}
7414				dr.DetectorResponseProperties = &detectorResponseProperties
7415			}
7416		case "id":
7417			if v != nil {
7418				var ID string
7419				err = json.Unmarshal(*v, &ID)
7420				if err != nil {
7421					return err
7422				}
7423				dr.ID = &ID
7424			}
7425		case "name":
7426			if v != nil {
7427				var name string
7428				err = json.Unmarshal(*v, &name)
7429				if err != nil {
7430					return err
7431				}
7432				dr.Name = &name
7433			}
7434		case "kind":
7435			if v != nil {
7436				var kind string
7437				err = json.Unmarshal(*v, &kind)
7438				if err != nil {
7439					return err
7440				}
7441				dr.Kind = &kind
7442			}
7443		case "type":
7444			if v != nil {
7445				var typeVar string
7446				err = json.Unmarshal(*v, &typeVar)
7447				if err != nil {
7448					return err
7449				}
7450				dr.Type = &typeVar
7451			}
7452		}
7453	}
7454
7455	return nil
7456}
7457
7458// DetectorResponseCollection collection of detector responses
7459type DetectorResponseCollection struct {
7460	autorest.Response `json:"-"`
7461	// Value - Collection of resources.
7462	Value *[]DetectorResponse `json:"value,omitempty"`
7463	// NextLink - READ-ONLY; Link to next page of resources.
7464	NextLink *string `json:"nextLink,omitempty"`
7465}
7466
7467// DetectorResponseCollectionIterator provides access to a complete listing of DetectorResponse values.
7468type DetectorResponseCollectionIterator struct {
7469	i    int
7470	page DetectorResponseCollectionPage
7471}
7472
7473// NextWithContext advances to the next value.  If there was an error making
7474// the request the iterator does not advance and the error is returned.
7475func (iter *DetectorResponseCollectionIterator) NextWithContext(ctx context.Context) (err error) {
7476	if tracing.IsEnabled() {
7477		ctx = tracing.StartSpan(ctx, fqdn+"/DetectorResponseCollectionIterator.NextWithContext")
7478		defer func() {
7479			sc := -1
7480			if iter.Response().Response.Response != nil {
7481				sc = iter.Response().Response.Response.StatusCode
7482			}
7483			tracing.EndSpan(ctx, sc, err)
7484		}()
7485	}
7486	iter.i++
7487	if iter.i < len(iter.page.Values()) {
7488		return nil
7489	}
7490	err = iter.page.NextWithContext(ctx)
7491	if err != nil {
7492		iter.i--
7493		return err
7494	}
7495	iter.i = 0
7496	return nil
7497}
7498
7499// Next advances to the next value.  If there was an error making
7500// the request the iterator does not advance and the error is returned.
7501// Deprecated: Use NextWithContext() instead.
7502func (iter *DetectorResponseCollectionIterator) Next() error {
7503	return iter.NextWithContext(context.Background())
7504}
7505
7506// NotDone returns true if the enumeration should be started or is not yet complete.
7507func (iter DetectorResponseCollectionIterator) NotDone() bool {
7508	return iter.page.NotDone() && iter.i < len(iter.page.Values())
7509}
7510
7511// Response returns the raw server response from the last page request.
7512func (iter DetectorResponseCollectionIterator) Response() DetectorResponseCollection {
7513	return iter.page.Response()
7514}
7515
7516// Value returns the current value or a zero-initialized value if the
7517// iterator has advanced beyond the end of the collection.
7518func (iter DetectorResponseCollectionIterator) Value() DetectorResponse {
7519	if !iter.page.NotDone() {
7520		return DetectorResponse{}
7521	}
7522	return iter.page.Values()[iter.i]
7523}
7524
7525// Creates a new instance of the DetectorResponseCollectionIterator type.
7526func NewDetectorResponseCollectionIterator(page DetectorResponseCollectionPage) DetectorResponseCollectionIterator {
7527	return DetectorResponseCollectionIterator{page: page}
7528}
7529
7530// IsEmpty returns true if the ListResult contains no values.
7531func (drc DetectorResponseCollection) IsEmpty() bool {
7532	return drc.Value == nil || len(*drc.Value) == 0
7533}
7534
7535// detectorResponseCollectionPreparer prepares a request to retrieve the next set of results.
7536// It returns nil if no more results exist.
7537func (drc DetectorResponseCollection) detectorResponseCollectionPreparer(ctx context.Context) (*http.Request, error) {
7538	if drc.NextLink == nil || len(to.String(drc.NextLink)) < 1 {
7539		return nil, nil
7540	}
7541	return autorest.Prepare((&http.Request{}).WithContext(ctx),
7542		autorest.AsJSON(),
7543		autorest.AsGet(),
7544		autorest.WithBaseURL(to.String(drc.NextLink)))
7545}
7546
7547// DetectorResponseCollectionPage contains a page of DetectorResponse values.
7548type DetectorResponseCollectionPage struct {
7549	fn  func(context.Context, DetectorResponseCollection) (DetectorResponseCollection, error)
7550	drc DetectorResponseCollection
7551}
7552
7553// NextWithContext advances to the next page of values.  If there was an error making
7554// the request the page does not advance and the error is returned.
7555func (page *DetectorResponseCollectionPage) NextWithContext(ctx context.Context) (err error) {
7556	if tracing.IsEnabled() {
7557		ctx = tracing.StartSpan(ctx, fqdn+"/DetectorResponseCollectionPage.NextWithContext")
7558		defer func() {
7559			sc := -1
7560			if page.Response().Response.Response != nil {
7561				sc = page.Response().Response.Response.StatusCode
7562			}
7563			tracing.EndSpan(ctx, sc, err)
7564		}()
7565	}
7566	next, err := page.fn(ctx, page.drc)
7567	if err != nil {
7568		return err
7569	}
7570	page.drc = next
7571	return nil
7572}
7573
7574// Next advances to the next page of values.  If there was an error making
7575// the request the page does not advance and the error is returned.
7576// Deprecated: Use NextWithContext() instead.
7577func (page *DetectorResponseCollectionPage) Next() error {
7578	return page.NextWithContext(context.Background())
7579}
7580
7581// NotDone returns true if the page enumeration should be started or is not yet complete.
7582func (page DetectorResponseCollectionPage) NotDone() bool {
7583	return !page.drc.IsEmpty()
7584}
7585
7586// Response returns the raw server response from the last page request.
7587func (page DetectorResponseCollectionPage) Response() DetectorResponseCollection {
7588	return page.drc
7589}
7590
7591// Values returns the slice of values for the current page or nil if there are no values.
7592func (page DetectorResponseCollectionPage) Values() []DetectorResponse {
7593	if page.drc.IsEmpty() {
7594		return nil
7595	}
7596	return *page.drc.Value
7597}
7598
7599// Creates a new instance of the DetectorResponseCollectionPage type.
7600func NewDetectorResponseCollectionPage(getNextPage func(context.Context, DetectorResponseCollection) (DetectorResponseCollection, error)) DetectorResponseCollectionPage {
7601	return DetectorResponseCollectionPage{fn: getNextPage}
7602}
7603
7604// DetectorResponseProperties detectorResponse resource specific properties
7605type DetectorResponseProperties struct {
7606	// Metadata - metadata for the detector
7607	Metadata *DetectorInfo `json:"metadata,omitempty"`
7608	// Dataset - Data Set
7609	Dataset *[]DiagnosticData `json:"dataset,omitempty"`
7610}
7611
7612// DiagnosticAnalysis class representing a diagnostic analysis done on an application
7613type DiagnosticAnalysis struct {
7614	autorest.Response `json:"-"`
7615	// DiagnosticAnalysisProperties - DiagnosticAnalysis resource specific properties
7616	*DiagnosticAnalysisProperties `json:"properties,omitempty"`
7617	// ID - READ-ONLY; Resource Id.
7618	ID *string `json:"id,omitempty"`
7619	// Name - READ-ONLY; Resource Name.
7620	Name *string `json:"name,omitempty"`
7621	// Kind - Kind of resource.
7622	Kind *string `json:"kind,omitempty"`
7623	// Type - READ-ONLY; Resource type.
7624	Type *string `json:"type,omitempty"`
7625}
7626
7627// MarshalJSON is the custom marshaler for DiagnosticAnalysis.
7628func (da DiagnosticAnalysis) MarshalJSON() ([]byte, error) {
7629	objectMap := make(map[string]interface{})
7630	if da.DiagnosticAnalysisProperties != nil {
7631		objectMap["properties"] = da.DiagnosticAnalysisProperties
7632	}
7633	if da.Kind != nil {
7634		objectMap["kind"] = da.Kind
7635	}
7636	return json.Marshal(objectMap)
7637}
7638
7639// UnmarshalJSON is the custom unmarshaler for DiagnosticAnalysis struct.
7640func (da *DiagnosticAnalysis) UnmarshalJSON(body []byte) error {
7641	var m map[string]*json.RawMessage
7642	err := json.Unmarshal(body, &m)
7643	if err != nil {
7644		return err
7645	}
7646	for k, v := range m {
7647		switch k {
7648		case "properties":
7649			if v != nil {
7650				var diagnosticAnalysisProperties DiagnosticAnalysisProperties
7651				err = json.Unmarshal(*v, &diagnosticAnalysisProperties)
7652				if err != nil {
7653					return err
7654				}
7655				da.DiagnosticAnalysisProperties = &diagnosticAnalysisProperties
7656			}
7657		case "id":
7658			if v != nil {
7659				var ID string
7660				err = json.Unmarshal(*v, &ID)
7661				if err != nil {
7662					return err
7663				}
7664				da.ID = &ID
7665			}
7666		case "name":
7667			if v != nil {
7668				var name string
7669				err = json.Unmarshal(*v, &name)
7670				if err != nil {
7671					return err
7672				}
7673				da.Name = &name
7674			}
7675		case "kind":
7676			if v != nil {
7677				var kind string
7678				err = json.Unmarshal(*v, &kind)
7679				if err != nil {
7680					return err
7681				}
7682				da.Kind = &kind
7683			}
7684		case "type":
7685			if v != nil {
7686				var typeVar string
7687				err = json.Unmarshal(*v, &typeVar)
7688				if err != nil {
7689					return err
7690				}
7691				da.Type = &typeVar
7692			}
7693		}
7694	}
7695
7696	return nil
7697}
7698
7699// DiagnosticAnalysisCollection collection of Diagnostic Analyses
7700type DiagnosticAnalysisCollection struct {
7701	autorest.Response `json:"-"`
7702	// Value - Collection of resources.
7703	Value *[]AnalysisDefinition `json:"value,omitempty"`
7704	// NextLink - READ-ONLY; Link to next page of resources.
7705	NextLink *string `json:"nextLink,omitempty"`
7706}
7707
7708// DiagnosticAnalysisCollectionIterator provides access to a complete listing of AnalysisDefinition values.
7709type DiagnosticAnalysisCollectionIterator struct {
7710	i    int
7711	page DiagnosticAnalysisCollectionPage
7712}
7713
7714// NextWithContext advances to the next value.  If there was an error making
7715// the request the iterator does not advance and the error is returned.
7716func (iter *DiagnosticAnalysisCollectionIterator) NextWithContext(ctx context.Context) (err error) {
7717	if tracing.IsEnabled() {
7718		ctx = tracing.StartSpan(ctx, fqdn+"/DiagnosticAnalysisCollectionIterator.NextWithContext")
7719		defer func() {
7720			sc := -1
7721			if iter.Response().Response.Response != nil {
7722				sc = iter.Response().Response.Response.StatusCode
7723			}
7724			tracing.EndSpan(ctx, sc, err)
7725		}()
7726	}
7727	iter.i++
7728	if iter.i < len(iter.page.Values()) {
7729		return nil
7730	}
7731	err = iter.page.NextWithContext(ctx)
7732	if err != nil {
7733		iter.i--
7734		return err
7735	}
7736	iter.i = 0
7737	return nil
7738}
7739
7740// Next advances to the next value.  If there was an error making
7741// the request the iterator does not advance and the error is returned.
7742// Deprecated: Use NextWithContext() instead.
7743func (iter *DiagnosticAnalysisCollectionIterator) Next() error {
7744	return iter.NextWithContext(context.Background())
7745}
7746
7747// NotDone returns true if the enumeration should be started or is not yet complete.
7748func (iter DiagnosticAnalysisCollectionIterator) NotDone() bool {
7749	return iter.page.NotDone() && iter.i < len(iter.page.Values())
7750}
7751
7752// Response returns the raw server response from the last page request.
7753func (iter DiagnosticAnalysisCollectionIterator) Response() DiagnosticAnalysisCollection {
7754	return iter.page.Response()
7755}
7756
7757// Value returns the current value or a zero-initialized value if the
7758// iterator has advanced beyond the end of the collection.
7759func (iter DiagnosticAnalysisCollectionIterator) Value() AnalysisDefinition {
7760	if !iter.page.NotDone() {
7761		return AnalysisDefinition{}
7762	}
7763	return iter.page.Values()[iter.i]
7764}
7765
7766// Creates a new instance of the DiagnosticAnalysisCollectionIterator type.
7767func NewDiagnosticAnalysisCollectionIterator(page DiagnosticAnalysisCollectionPage) DiagnosticAnalysisCollectionIterator {
7768	return DiagnosticAnalysisCollectionIterator{page: page}
7769}
7770
7771// IsEmpty returns true if the ListResult contains no values.
7772func (dac DiagnosticAnalysisCollection) IsEmpty() bool {
7773	return dac.Value == nil || len(*dac.Value) == 0
7774}
7775
7776// diagnosticAnalysisCollectionPreparer prepares a request to retrieve the next set of results.
7777// It returns nil if no more results exist.
7778func (dac DiagnosticAnalysisCollection) diagnosticAnalysisCollectionPreparer(ctx context.Context) (*http.Request, error) {
7779	if dac.NextLink == nil || len(to.String(dac.NextLink)) < 1 {
7780		return nil, nil
7781	}
7782	return autorest.Prepare((&http.Request{}).WithContext(ctx),
7783		autorest.AsJSON(),
7784		autorest.AsGet(),
7785		autorest.WithBaseURL(to.String(dac.NextLink)))
7786}
7787
7788// DiagnosticAnalysisCollectionPage contains a page of AnalysisDefinition values.
7789type DiagnosticAnalysisCollectionPage struct {
7790	fn  func(context.Context, DiagnosticAnalysisCollection) (DiagnosticAnalysisCollection, error)
7791	dac DiagnosticAnalysisCollection
7792}
7793
7794// NextWithContext advances to the next page of values.  If there was an error making
7795// the request the page does not advance and the error is returned.
7796func (page *DiagnosticAnalysisCollectionPage) NextWithContext(ctx context.Context) (err error) {
7797	if tracing.IsEnabled() {
7798		ctx = tracing.StartSpan(ctx, fqdn+"/DiagnosticAnalysisCollectionPage.NextWithContext")
7799		defer func() {
7800			sc := -1
7801			if page.Response().Response.Response != nil {
7802				sc = page.Response().Response.Response.StatusCode
7803			}
7804			tracing.EndSpan(ctx, sc, err)
7805		}()
7806	}
7807	next, err := page.fn(ctx, page.dac)
7808	if err != nil {
7809		return err
7810	}
7811	page.dac = next
7812	return nil
7813}
7814
7815// Next advances to the next page of values.  If there was an error making
7816// the request the page does not advance and the error is returned.
7817// Deprecated: Use NextWithContext() instead.
7818func (page *DiagnosticAnalysisCollectionPage) Next() error {
7819	return page.NextWithContext(context.Background())
7820}
7821
7822// NotDone returns true if the page enumeration should be started or is not yet complete.
7823func (page DiagnosticAnalysisCollectionPage) NotDone() bool {
7824	return !page.dac.IsEmpty()
7825}
7826
7827// Response returns the raw server response from the last page request.
7828func (page DiagnosticAnalysisCollectionPage) Response() DiagnosticAnalysisCollection {
7829	return page.dac
7830}
7831
7832// Values returns the slice of values for the current page or nil if there are no values.
7833func (page DiagnosticAnalysisCollectionPage) Values() []AnalysisDefinition {
7834	if page.dac.IsEmpty() {
7835		return nil
7836	}
7837	return *page.dac.Value
7838}
7839
7840// Creates a new instance of the DiagnosticAnalysisCollectionPage type.
7841func NewDiagnosticAnalysisCollectionPage(getNextPage func(context.Context, DiagnosticAnalysisCollection) (DiagnosticAnalysisCollection, error)) DiagnosticAnalysisCollectionPage {
7842	return DiagnosticAnalysisCollectionPage{fn: getNextPage}
7843}
7844
7845// DiagnosticAnalysisProperties diagnosticAnalysis resource specific properties
7846type DiagnosticAnalysisProperties struct {
7847	// StartTime - Start time of the period
7848	StartTime *date.Time `json:"startTime,omitempty"`
7849	// EndTime - End time of the period
7850	EndTime *date.Time `json:"endTime,omitempty"`
7851	// AbnormalTimePeriods - List of time periods.
7852	AbnormalTimePeriods *[]AbnormalTimePeriod `json:"abnormalTimePeriods,omitempty"`
7853	// Payload - Data by each detector
7854	Payload *[]AnalysisData `json:"payload,omitempty"`
7855	// NonCorrelatedDetectors - Data by each detector for detectors that did not corelate
7856	NonCorrelatedDetectors *[]DetectorDefinition `json:"nonCorrelatedDetectors,omitempty"`
7857}
7858
7859// DiagnosticCategory class representing detector definition
7860type DiagnosticCategory struct {
7861	autorest.Response `json:"-"`
7862	// DiagnosticCategoryProperties - DiagnosticCategory resource specific properties
7863	*DiagnosticCategoryProperties `json:"properties,omitempty"`
7864	// ID - READ-ONLY; Resource Id.
7865	ID *string `json:"id,omitempty"`
7866	// Name - READ-ONLY; Resource Name.
7867	Name *string `json:"name,omitempty"`
7868	// Kind - Kind of resource.
7869	Kind *string `json:"kind,omitempty"`
7870	// Type - READ-ONLY; Resource type.
7871	Type *string `json:"type,omitempty"`
7872}
7873
7874// MarshalJSON is the custom marshaler for DiagnosticCategory.
7875func (dc DiagnosticCategory) MarshalJSON() ([]byte, error) {
7876	objectMap := make(map[string]interface{})
7877	if dc.DiagnosticCategoryProperties != nil {
7878		objectMap["properties"] = dc.DiagnosticCategoryProperties
7879	}
7880	if dc.Kind != nil {
7881		objectMap["kind"] = dc.Kind
7882	}
7883	return json.Marshal(objectMap)
7884}
7885
7886// UnmarshalJSON is the custom unmarshaler for DiagnosticCategory struct.
7887func (dc *DiagnosticCategory) UnmarshalJSON(body []byte) error {
7888	var m map[string]*json.RawMessage
7889	err := json.Unmarshal(body, &m)
7890	if err != nil {
7891		return err
7892	}
7893	for k, v := range m {
7894		switch k {
7895		case "properties":
7896			if v != nil {
7897				var diagnosticCategoryProperties DiagnosticCategoryProperties
7898				err = json.Unmarshal(*v, &diagnosticCategoryProperties)
7899				if err != nil {
7900					return err
7901				}
7902				dc.DiagnosticCategoryProperties = &diagnosticCategoryProperties
7903			}
7904		case "id":
7905			if v != nil {
7906				var ID string
7907				err = json.Unmarshal(*v, &ID)
7908				if err != nil {
7909					return err
7910				}
7911				dc.ID = &ID
7912			}
7913		case "name":
7914			if v != nil {
7915				var name string
7916				err = json.Unmarshal(*v, &name)
7917				if err != nil {
7918					return err
7919				}
7920				dc.Name = &name
7921			}
7922		case "kind":
7923			if v != nil {
7924				var kind string
7925				err = json.Unmarshal(*v, &kind)
7926				if err != nil {
7927					return err
7928				}
7929				dc.Kind = &kind
7930			}
7931		case "type":
7932			if v != nil {
7933				var typeVar string
7934				err = json.Unmarshal(*v, &typeVar)
7935				if err != nil {
7936					return err
7937				}
7938				dc.Type = &typeVar
7939			}
7940		}
7941	}
7942
7943	return nil
7944}
7945
7946// DiagnosticCategoryCollection collection of Diagnostic Categories
7947type DiagnosticCategoryCollection struct {
7948	autorest.Response `json:"-"`
7949	// Value - Collection of resources.
7950	Value *[]DiagnosticCategory `json:"value,omitempty"`
7951	// NextLink - READ-ONLY; Link to next page of resources.
7952	NextLink *string `json:"nextLink,omitempty"`
7953}
7954
7955// DiagnosticCategoryCollectionIterator provides access to a complete listing of DiagnosticCategory values.
7956type DiagnosticCategoryCollectionIterator struct {
7957	i    int
7958	page DiagnosticCategoryCollectionPage
7959}
7960
7961// NextWithContext advances to the next value.  If there was an error making
7962// the request the iterator does not advance and the error is returned.
7963func (iter *DiagnosticCategoryCollectionIterator) NextWithContext(ctx context.Context) (err error) {
7964	if tracing.IsEnabled() {
7965		ctx = tracing.StartSpan(ctx, fqdn+"/DiagnosticCategoryCollectionIterator.NextWithContext")
7966		defer func() {
7967			sc := -1
7968			if iter.Response().Response.Response != nil {
7969				sc = iter.Response().Response.Response.StatusCode
7970			}
7971			tracing.EndSpan(ctx, sc, err)
7972		}()
7973	}
7974	iter.i++
7975	if iter.i < len(iter.page.Values()) {
7976		return nil
7977	}
7978	err = iter.page.NextWithContext(ctx)
7979	if err != nil {
7980		iter.i--
7981		return err
7982	}
7983	iter.i = 0
7984	return nil
7985}
7986
7987// Next advances to the next value.  If there was an error making
7988// the request the iterator does not advance and the error is returned.
7989// Deprecated: Use NextWithContext() instead.
7990func (iter *DiagnosticCategoryCollectionIterator) Next() error {
7991	return iter.NextWithContext(context.Background())
7992}
7993
7994// NotDone returns true if the enumeration should be started or is not yet complete.
7995func (iter DiagnosticCategoryCollectionIterator) NotDone() bool {
7996	return iter.page.NotDone() && iter.i < len(iter.page.Values())
7997}
7998
7999// Response returns the raw server response from the last page request.
8000func (iter DiagnosticCategoryCollectionIterator) Response() DiagnosticCategoryCollection {
8001	return iter.page.Response()
8002}
8003
8004// Value returns the current value or a zero-initialized value if the
8005// iterator has advanced beyond the end of the collection.
8006func (iter DiagnosticCategoryCollectionIterator) Value() DiagnosticCategory {
8007	if !iter.page.NotDone() {
8008		return DiagnosticCategory{}
8009	}
8010	return iter.page.Values()[iter.i]
8011}
8012
8013// Creates a new instance of the DiagnosticCategoryCollectionIterator type.
8014func NewDiagnosticCategoryCollectionIterator(page DiagnosticCategoryCollectionPage) DiagnosticCategoryCollectionIterator {
8015	return DiagnosticCategoryCollectionIterator{page: page}
8016}
8017
8018// IsEmpty returns true if the ListResult contains no values.
8019func (dcc DiagnosticCategoryCollection) IsEmpty() bool {
8020	return dcc.Value == nil || len(*dcc.Value) == 0
8021}
8022
8023// diagnosticCategoryCollectionPreparer prepares a request to retrieve the next set of results.
8024// It returns nil if no more results exist.
8025func (dcc DiagnosticCategoryCollection) diagnosticCategoryCollectionPreparer(ctx context.Context) (*http.Request, error) {
8026	if dcc.NextLink == nil || len(to.String(dcc.NextLink)) < 1 {
8027		return nil, nil
8028	}
8029	return autorest.Prepare((&http.Request{}).WithContext(ctx),
8030		autorest.AsJSON(),
8031		autorest.AsGet(),
8032		autorest.WithBaseURL(to.String(dcc.NextLink)))
8033}
8034
8035// DiagnosticCategoryCollectionPage contains a page of DiagnosticCategory values.
8036type DiagnosticCategoryCollectionPage struct {
8037	fn  func(context.Context, DiagnosticCategoryCollection) (DiagnosticCategoryCollection, error)
8038	dcc DiagnosticCategoryCollection
8039}
8040
8041// NextWithContext advances to the next page of values.  If there was an error making
8042// the request the page does not advance and the error is returned.
8043func (page *DiagnosticCategoryCollectionPage) NextWithContext(ctx context.Context) (err error) {
8044	if tracing.IsEnabled() {
8045		ctx = tracing.StartSpan(ctx, fqdn+"/DiagnosticCategoryCollectionPage.NextWithContext")
8046		defer func() {
8047			sc := -1
8048			if page.Response().Response.Response != nil {
8049				sc = page.Response().Response.Response.StatusCode
8050			}
8051			tracing.EndSpan(ctx, sc, err)
8052		}()
8053	}
8054	next, err := page.fn(ctx, page.dcc)
8055	if err != nil {
8056		return err
8057	}
8058	page.dcc = next
8059	return nil
8060}
8061
8062// Next advances to the next page of values.  If there was an error making
8063// the request the page does not advance and the error is returned.
8064// Deprecated: Use NextWithContext() instead.
8065func (page *DiagnosticCategoryCollectionPage) Next() error {
8066	return page.NextWithContext(context.Background())
8067}
8068
8069// NotDone returns true if the page enumeration should be started or is not yet complete.
8070func (page DiagnosticCategoryCollectionPage) NotDone() bool {
8071	return !page.dcc.IsEmpty()
8072}
8073
8074// Response returns the raw server response from the last page request.
8075func (page DiagnosticCategoryCollectionPage) Response() DiagnosticCategoryCollection {
8076	return page.dcc
8077}
8078
8079// Values returns the slice of values for the current page or nil if there are no values.
8080func (page DiagnosticCategoryCollectionPage) Values() []DiagnosticCategory {
8081	if page.dcc.IsEmpty() {
8082		return nil
8083	}
8084	return *page.dcc.Value
8085}
8086
8087// Creates a new instance of the DiagnosticCategoryCollectionPage type.
8088func NewDiagnosticCategoryCollectionPage(getNextPage func(context.Context, DiagnosticCategoryCollection) (DiagnosticCategoryCollection, error)) DiagnosticCategoryCollectionPage {
8089	return DiagnosticCategoryCollectionPage{fn: getNextPage}
8090}
8091
8092// DiagnosticCategoryProperties diagnosticCategory resource specific properties
8093type DiagnosticCategoryProperties struct {
8094	// Description - READ-ONLY; Description of the diagnostic category
8095	Description *string `json:"description,omitempty"`
8096}
8097
8098// DiagnosticData set of data with rendering instructions
8099type DiagnosticData struct {
8100	// Table - Data in table form
8101	Table *DataTableResponseObject `json:"table,omitempty"`
8102	// RenderingProperties - Properties that describe how the table should be rendered
8103	RenderingProperties *Rendering `json:"renderingProperties,omitempty"`
8104}
8105
8106// DiagnosticDetectorCollection collection of Diagnostic Detectors
8107type DiagnosticDetectorCollection struct {
8108	autorest.Response `json:"-"`
8109	// Value - Collection of resources.
8110	Value *[]DetectorDefinition `json:"value,omitempty"`
8111	// NextLink - READ-ONLY; Link to next page of resources.
8112	NextLink *string `json:"nextLink,omitempty"`
8113}
8114
8115// DiagnosticDetectorCollectionIterator provides access to a complete listing of DetectorDefinition values.
8116type DiagnosticDetectorCollectionIterator struct {
8117	i    int
8118	page DiagnosticDetectorCollectionPage
8119}
8120
8121// NextWithContext advances to the next value.  If there was an error making
8122// the request the iterator does not advance and the error is returned.
8123func (iter *DiagnosticDetectorCollectionIterator) NextWithContext(ctx context.Context) (err error) {
8124	if tracing.IsEnabled() {
8125		ctx = tracing.StartSpan(ctx, fqdn+"/DiagnosticDetectorCollectionIterator.NextWithContext")
8126		defer func() {
8127			sc := -1
8128			if iter.Response().Response.Response != nil {
8129				sc = iter.Response().Response.Response.StatusCode
8130			}
8131			tracing.EndSpan(ctx, sc, err)
8132		}()
8133	}
8134	iter.i++
8135	if iter.i < len(iter.page.Values()) {
8136		return nil
8137	}
8138	err = iter.page.NextWithContext(ctx)
8139	if err != nil {
8140		iter.i--
8141		return err
8142	}
8143	iter.i = 0
8144	return nil
8145}
8146
8147// Next advances to the next value.  If there was an error making
8148// the request the iterator does not advance and the error is returned.
8149// Deprecated: Use NextWithContext() instead.
8150func (iter *DiagnosticDetectorCollectionIterator) Next() error {
8151	return iter.NextWithContext(context.Background())
8152}
8153
8154// NotDone returns true if the enumeration should be started or is not yet complete.
8155func (iter DiagnosticDetectorCollectionIterator) NotDone() bool {
8156	return iter.page.NotDone() && iter.i < len(iter.page.Values())
8157}
8158
8159// Response returns the raw server response from the last page request.
8160func (iter DiagnosticDetectorCollectionIterator) Response() DiagnosticDetectorCollection {
8161	return iter.page.Response()
8162}
8163
8164// Value returns the current value or a zero-initialized value if the
8165// iterator has advanced beyond the end of the collection.
8166func (iter DiagnosticDetectorCollectionIterator) Value() DetectorDefinition {
8167	if !iter.page.NotDone() {
8168		return DetectorDefinition{}
8169	}
8170	return iter.page.Values()[iter.i]
8171}
8172
8173// Creates a new instance of the DiagnosticDetectorCollectionIterator type.
8174func NewDiagnosticDetectorCollectionIterator(page DiagnosticDetectorCollectionPage) DiagnosticDetectorCollectionIterator {
8175	return DiagnosticDetectorCollectionIterator{page: page}
8176}
8177
8178// IsEmpty returns true if the ListResult contains no values.
8179func (ddc DiagnosticDetectorCollection) IsEmpty() bool {
8180	return ddc.Value == nil || len(*ddc.Value) == 0
8181}
8182
8183// diagnosticDetectorCollectionPreparer prepares a request to retrieve the next set of results.
8184// It returns nil if no more results exist.
8185func (ddc DiagnosticDetectorCollection) diagnosticDetectorCollectionPreparer(ctx context.Context) (*http.Request, error) {
8186	if ddc.NextLink == nil || len(to.String(ddc.NextLink)) < 1 {
8187		return nil, nil
8188	}
8189	return autorest.Prepare((&http.Request{}).WithContext(ctx),
8190		autorest.AsJSON(),
8191		autorest.AsGet(),
8192		autorest.WithBaseURL(to.String(ddc.NextLink)))
8193}
8194
8195// DiagnosticDetectorCollectionPage contains a page of DetectorDefinition values.
8196type DiagnosticDetectorCollectionPage struct {
8197	fn  func(context.Context, DiagnosticDetectorCollection) (DiagnosticDetectorCollection, error)
8198	ddc DiagnosticDetectorCollection
8199}
8200
8201// NextWithContext advances to the next page of values.  If there was an error making
8202// the request the page does not advance and the error is returned.
8203func (page *DiagnosticDetectorCollectionPage) NextWithContext(ctx context.Context) (err error) {
8204	if tracing.IsEnabled() {
8205		ctx = tracing.StartSpan(ctx, fqdn+"/DiagnosticDetectorCollectionPage.NextWithContext")
8206		defer func() {
8207			sc := -1
8208			if page.Response().Response.Response != nil {
8209				sc = page.Response().Response.Response.StatusCode
8210			}
8211			tracing.EndSpan(ctx, sc, err)
8212		}()
8213	}
8214	next, err := page.fn(ctx, page.ddc)
8215	if err != nil {
8216		return err
8217	}
8218	page.ddc = next
8219	return nil
8220}
8221
8222// Next advances to the next page of values.  If there was an error making
8223// the request the page does not advance and the error is returned.
8224// Deprecated: Use NextWithContext() instead.
8225func (page *DiagnosticDetectorCollectionPage) Next() error {
8226	return page.NextWithContext(context.Background())
8227}
8228
8229// NotDone returns true if the page enumeration should be started or is not yet complete.
8230func (page DiagnosticDetectorCollectionPage) NotDone() bool {
8231	return !page.ddc.IsEmpty()
8232}
8233
8234// Response returns the raw server response from the last page request.
8235func (page DiagnosticDetectorCollectionPage) Response() DiagnosticDetectorCollection {
8236	return page.ddc
8237}
8238
8239// Values returns the slice of values for the current page or nil if there are no values.
8240func (page DiagnosticDetectorCollectionPage) Values() []DetectorDefinition {
8241	if page.ddc.IsEmpty() {
8242		return nil
8243	}
8244	return *page.ddc.Value
8245}
8246
8247// Creates a new instance of the DiagnosticDetectorCollectionPage type.
8248func NewDiagnosticDetectorCollectionPage(getNextPage func(context.Context, DiagnosticDetectorCollection) (DiagnosticDetectorCollection, error)) DiagnosticDetectorCollectionPage {
8249	return DiagnosticDetectorCollectionPage{fn: getNextPage}
8250}
8251
8252// DiagnosticDetectorResponse class representing Response from Diagnostic Detectors
8253type DiagnosticDetectorResponse struct {
8254	autorest.Response `json:"-"`
8255	// DiagnosticDetectorResponseProperties - DiagnosticDetectorResponse resource specific properties
8256	*DiagnosticDetectorResponseProperties `json:"properties,omitempty"`
8257	// ID - READ-ONLY; Resource Id.
8258	ID *string `json:"id,omitempty"`
8259	// Name - READ-ONLY; Resource Name.
8260	Name *string `json:"name,omitempty"`
8261	// Kind - Kind of resource.
8262	Kind *string `json:"kind,omitempty"`
8263	// Type - READ-ONLY; Resource type.
8264	Type *string `json:"type,omitempty"`
8265}
8266
8267// MarshalJSON is the custom marshaler for DiagnosticDetectorResponse.
8268func (ddr DiagnosticDetectorResponse) MarshalJSON() ([]byte, error) {
8269	objectMap := make(map[string]interface{})
8270	if ddr.DiagnosticDetectorResponseProperties != nil {
8271		objectMap["properties"] = ddr.DiagnosticDetectorResponseProperties
8272	}
8273	if ddr.Kind != nil {
8274		objectMap["kind"] = ddr.Kind
8275	}
8276	return json.Marshal(objectMap)
8277}
8278
8279// UnmarshalJSON is the custom unmarshaler for DiagnosticDetectorResponse struct.
8280func (ddr *DiagnosticDetectorResponse) UnmarshalJSON(body []byte) error {
8281	var m map[string]*json.RawMessage
8282	err := json.Unmarshal(body, &m)
8283	if err != nil {
8284		return err
8285	}
8286	for k, v := range m {
8287		switch k {
8288		case "properties":
8289			if v != nil {
8290				var diagnosticDetectorResponseProperties DiagnosticDetectorResponseProperties
8291				err = json.Unmarshal(*v, &diagnosticDetectorResponseProperties)
8292				if err != nil {
8293					return err
8294				}
8295				ddr.DiagnosticDetectorResponseProperties = &diagnosticDetectorResponseProperties
8296			}
8297		case "id":
8298			if v != nil {
8299				var ID string
8300				err = json.Unmarshal(*v, &ID)
8301				if err != nil {
8302					return err
8303				}
8304				ddr.ID = &ID
8305			}
8306		case "name":
8307			if v != nil {
8308				var name string
8309				err = json.Unmarshal(*v, &name)
8310				if err != nil {
8311					return err
8312				}
8313				ddr.Name = &name
8314			}
8315		case "kind":
8316			if v != nil {
8317				var kind string
8318				err = json.Unmarshal(*v, &kind)
8319				if err != nil {
8320					return err
8321				}
8322				ddr.Kind = &kind
8323			}
8324		case "type":
8325			if v != nil {
8326				var typeVar string
8327				err = json.Unmarshal(*v, &typeVar)
8328				if err != nil {
8329					return err
8330				}
8331				ddr.Type = &typeVar
8332			}
8333		}
8334	}
8335
8336	return nil
8337}
8338
8339// DiagnosticDetectorResponseProperties diagnosticDetectorResponse resource specific properties
8340type DiagnosticDetectorResponseProperties struct {
8341	// StartTime - Start time of the period
8342	StartTime *date.Time `json:"startTime,omitempty"`
8343	// EndTime - End time of the period
8344	EndTime *date.Time `json:"endTime,omitempty"`
8345	// IssueDetected - Flag representing Issue was detected.
8346	IssueDetected *bool `json:"issueDetected,omitempty"`
8347	// DetectorDefinition - Detector's definition
8348	DetectorDefinition *DetectorDefinition `json:"detectorDefinition,omitempty"`
8349	// Metrics - Metrics provided by the detector
8350	Metrics *[]DiagnosticMetricSet `json:"metrics,omitempty"`
8351	// AbnormalTimePeriods - List of Correlated events found by the detector
8352	AbnormalTimePeriods *[]DetectorAbnormalTimePeriod `json:"abnormalTimePeriods,omitempty"`
8353	// Data - Additional Data that detector wants to send.
8354	Data *[][]NameValuePair `json:"data,omitempty"`
8355	// ResponseMetaData - Meta Data
8356	ResponseMetaData *ResponseMetaData `json:"responseMetaData,omitempty"`
8357}
8358
8359// DiagnosticMetricSample class representing Diagnostic Metric
8360type DiagnosticMetricSample struct {
8361	// Timestamp - Time at which metric is measured
8362	Timestamp *date.Time `json:"timestamp,omitempty"`
8363	// RoleInstance - Role Instance. Null if this counter is not per instance
8364	// This is returned and should be whichever instance name we desire to be returned
8365	// i.e. CPU and Memory return RDWORKERNAME (LargeDed..._IN_0)
8366	// where RDWORKERNAME is Machine name below and RoleInstance name in parenthesis
8367	RoleInstance *string `json:"roleInstance,omitempty"`
8368	// Total - Total value of the metric. If multiple measurements are made this will have sum of all.
8369	Total *float64 `json:"total,omitempty"`
8370	// Maximum - Maximum of the metric sampled during the time period
8371	Maximum *float64 `json:"maximum,omitempty"`
8372	// Minimum - Minimum of the metric sampled during the time period
8373	Minimum *float64 `json:"minimum,omitempty"`
8374	// IsAggregated - Whether the values are aggregates across all workers or not
8375	IsAggregated *bool `json:"isAggregated,omitempty"`
8376}
8377
8378// DiagnosticMetricSet class representing Diagnostic Metric information
8379type DiagnosticMetricSet struct {
8380	// Name - Name of the metric
8381	Name *string `json:"name,omitempty"`
8382	// Unit - Metric's unit
8383	Unit *string `json:"unit,omitempty"`
8384	// StartTime - Start time of the period
8385	StartTime *date.Time `json:"startTime,omitempty"`
8386	// EndTime - End time of the period
8387	EndTime *date.Time `json:"endTime,omitempty"`
8388	// TimeGrain - Presented time grain. Supported grains at the moment are PT1M, PT1H, P1D
8389	TimeGrain *string `json:"timeGrain,omitempty"`
8390	// Values - Collection of metric values for the selected period based on the {Microsoft.Web.Hosting.Administration.DiagnosticMetricSet.TimeGrain}
8391	Values *[]DiagnosticMetricSample `json:"values,omitempty"`
8392}
8393
8394// Dimension dimension of a resource metric. For e.g. instance specific HTTP requests for a web app,
8395// where instance name is dimension of the metric HTTP request
8396type Dimension struct {
8397	Name                   *string `json:"name,omitempty"`
8398	DisplayName            *string `json:"displayName,omitempty"`
8399	InternalName           *string `json:"internalName,omitempty"`
8400	ToBeExportedForShoebox *bool   `json:"toBeExportedForShoebox,omitempty"`
8401}
8402
8403// Domain information about a domain.
8404type Domain struct {
8405	autorest.Response `json:"-"`
8406	// DomainProperties - Domain resource specific properties
8407	*DomainProperties `json:"properties,omitempty"`
8408	// ID - READ-ONLY; Resource Id.
8409	ID *string `json:"id,omitempty"`
8410	// Name - READ-ONLY; Resource Name.
8411	Name *string `json:"name,omitempty"`
8412	// Kind - Kind of resource.
8413	Kind *string `json:"kind,omitempty"`
8414	// Location - Resource Location.
8415	Location *string `json:"location,omitempty"`
8416	// Type - READ-ONLY; Resource type.
8417	Type *string `json:"type,omitempty"`
8418	// Tags - Resource tags.
8419	Tags map[string]*string `json:"tags"`
8420}
8421
8422// MarshalJSON is the custom marshaler for Domain.
8423func (d Domain) MarshalJSON() ([]byte, error) {
8424	objectMap := make(map[string]interface{})
8425	if d.DomainProperties != nil {
8426		objectMap["properties"] = d.DomainProperties
8427	}
8428	if d.Kind != nil {
8429		objectMap["kind"] = d.Kind
8430	}
8431	if d.Location != nil {
8432		objectMap["location"] = d.Location
8433	}
8434	if d.Tags != nil {
8435		objectMap["tags"] = d.Tags
8436	}
8437	return json.Marshal(objectMap)
8438}
8439
8440// UnmarshalJSON is the custom unmarshaler for Domain struct.
8441func (d *Domain) UnmarshalJSON(body []byte) error {
8442	var m map[string]*json.RawMessage
8443	err := json.Unmarshal(body, &m)
8444	if err != nil {
8445		return err
8446	}
8447	for k, v := range m {
8448		switch k {
8449		case "properties":
8450			if v != nil {
8451				var domainProperties DomainProperties
8452				err = json.Unmarshal(*v, &domainProperties)
8453				if err != nil {
8454					return err
8455				}
8456				d.DomainProperties = &domainProperties
8457			}
8458		case "id":
8459			if v != nil {
8460				var ID string
8461				err = json.Unmarshal(*v, &ID)
8462				if err != nil {
8463					return err
8464				}
8465				d.ID = &ID
8466			}
8467		case "name":
8468			if v != nil {
8469				var name string
8470				err = json.Unmarshal(*v, &name)
8471				if err != nil {
8472					return err
8473				}
8474				d.Name = &name
8475			}
8476		case "kind":
8477			if v != nil {
8478				var kind string
8479				err = json.Unmarshal(*v, &kind)
8480				if err != nil {
8481					return err
8482				}
8483				d.Kind = &kind
8484			}
8485		case "location":
8486			if v != nil {
8487				var location string
8488				err = json.Unmarshal(*v, &location)
8489				if err != nil {
8490					return err
8491				}
8492				d.Location = &location
8493			}
8494		case "type":
8495			if v != nil {
8496				var typeVar string
8497				err = json.Unmarshal(*v, &typeVar)
8498				if err != nil {
8499					return err
8500				}
8501				d.Type = &typeVar
8502			}
8503		case "tags":
8504			if v != nil {
8505				var tags map[string]*string
8506				err = json.Unmarshal(*v, &tags)
8507				if err != nil {
8508					return err
8509				}
8510				d.Tags = tags
8511			}
8512		}
8513	}
8514
8515	return nil
8516}
8517
8518// DomainAvailablilityCheckResult domain availability check result.
8519type DomainAvailablilityCheckResult struct {
8520	autorest.Response `json:"-"`
8521	// Name - Name of the domain.
8522	Name *string `json:"name,omitempty"`
8523	// Available - <code>true</code> if domain can be purchased using CreateDomain API; otherwise, <code>false</code>.
8524	Available *bool `json:"available,omitempty"`
8525	// DomainType - Valid values are Regular domain: Azure will charge the full price of domain registration, SoftDeleted: Purchasing this domain will simply restore it and this operation will not cost anything. Possible values include: 'Regular', 'SoftDeleted'
8526	DomainType DomainType `json:"domainType,omitempty"`
8527}
8528
8529// DomainCollection collection of domains.
8530type DomainCollection struct {
8531	autorest.Response `json:"-"`
8532	// Value - Collection of resources.
8533	Value *[]Domain `json:"value,omitempty"`
8534	// NextLink - READ-ONLY; Link to next page of resources.
8535	NextLink *string `json:"nextLink,omitempty"`
8536}
8537
8538// DomainCollectionIterator provides access to a complete listing of Domain values.
8539type DomainCollectionIterator struct {
8540	i    int
8541	page DomainCollectionPage
8542}
8543
8544// NextWithContext advances to the next value.  If there was an error making
8545// the request the iterator does not advance and the error is returned.
8546func (iter *DomainCollectionIterator) NextWithContext(ctx context.Context) (err error) {
8547	if tracing.IsEnabled() {
8548		ctx = tracing.StartSpan(ctx, fqdn+"/DomainCollectionIterator.NextWithContext")
8549		defer func() {
8550			sc := -1
8551			if iter.Response().Response.Response != nil {
8552				sc = iter.Response().Response.Response.StatusCode
8553			}
8554			tracing.EndSpan(ctx, sc, err)
8555		}()
8556	}
8557	iter.i++
8558	if iter.i < len(iter.page.Values()) {
8559		return nil
8560	}
8561	err = iter.page.NextWithContext(ctx)
8562	if err != nil {
8563		iter.i--
8564		return err
8565	}
8566	iter.i = 0
8567	return nil
8568}
8569
8570// Next advances to the next value.  If there was an error making
8571// the request the iterator does not advance and the error is returned.
8572// Deprecated: Use NextWithContext() instead.
8573func (iter *DomainCollectionIterator) Next() error {
8574	return iter.NextWithContext(context.Background())
8575}
8576
8577// NotDone returns true if the enumeration should be started or is not yet complete.
8578func (iter DomainCollectionIterator) NotDone() bool {
8579	return iter.page.NotDone() && iter.i < len(iter.page.Values())
8580}
8581
8582// Response returns the raw server response from the last page request.
8583func (iter DomainCollectionIterator) Response() DomainCollection {
8584	return iter.page.Response()
8585}
8586
8587// Value returns the current value or a zero-initialized value if the
8588// iterator has advanced beyond the end of the collection.
8589func (iter DomainCollectionIterator) Value() Domain {
8590	if !iter.page.NotDone() {
8591		return Domain{}
8592	}
8593	return iter.page.Values()[iter.i]
8594}
8595
8596// Creates a new instance of the DomainCollectionIterator type.
8597func NewDomainCollectionIterator(page DomainCollectionPage) DomainCollectionIterator {
8598	return DomainCollectionIterator{page: page}
8599}
8600
8601// IsEmpty returns true if the ListResult contains no values.
8602func (dc DomainCollection) IsEmpty() bool {
8603	return dc.Value == nil || len(*dc.Value) == 0
8604}
8605
8606// domainCollectionPreparer prepares a request to retrieve the next set of results.
8607// It returns nil if no more results exist.
8608func (dc DomainCollection) domainCollectionPreparer(ctx context.Context) (*http.Request, error) {
8609	if dc.NextLink == nil || len(to.String(dc.NextLink)) < 1 {
8610		return nil, nil
8611	}
8612	return autorest.Prepare((&http.Request{}).WithContext(ctx),
8613		autorest.AsJSON(),
8614		autorest.AsGet(),
8615		autorest.WithBaseURL(to.String(dc.NextLink)))
8616}
8617
8618// DomainCollectionPage contains a page of Domain values.
8619type DomainCollectionPage struct {
8620	fn func(context.Context, DomainCollection) (DomainCollection, error)
8621	dc DomainCollection
8622}
8623
8624// NextWithContext advances to the next page of values.  If there was an error making
8625// the request the page does not advance and the error is returned.
8626func (page *DomainCollectionPage) NextWithContext(ctx context.Context) (err error) {
8627	if tracing.IsEnabled() {
8628		ctx = tracing.StartSpan(ctx, fqdn+"/DomainCollectionPage.NextWithContext")
8629		defer func() {
8630			sc := -1
8631			if page.Response().Response.Response != nil {
8632				sc = page.Response().Response.Response.StatusCode
8633			}
8634			tracing.EndSpan(ctx, sc, err)
8635		}()
8636	}
8637	next, err := page.fn(ctx, page.dc)
8638	if err != nil {
8639		return err
8640	}
8641	page.dc = next
8642	return nil
8643}
8644
8645// Next advances to the next page of values.  If there was an error making
8646// the request the page does not advance and the error is returned.
8647// Deprecated: Use NextWithContext() instead.
8648func (page *DomainCollectionPage) Next() error {
8649	return page.NextWithContext(context.Background())
8650}
8651
8652// NotDone returns true if the page enumeration should be started or is not yet complete.
8653func (page DomainCollectionPage) NotDone() bool {
8654	return !page.dc.IsEmpty()
8655}
8656
8657// Response returns the raw server response from the last page request.
8658func (page DomainCollectionPage) Response() DomainCollection {
8659	return page.dc
8660}
8661
8662// Values returns the slice of values for the current page or nil if there are no values.
8663func (page DomainCollectionPage) Values() []Domain {
8664	if page.dc.IsEmpty() {
8665		return nil
8666	}
8667	return *page.dc.Value
8668}
8669
8670// Creates a new instance of the DomainCollectionPage type.
8671func NewDomainCollectionPage(getNextPage func(context.Context, DomainCollection) (DomainCollection, error)) DomainCollectionPage {
8672	return DomainCollectionPage{fn: getNextPage}
8673}
8674
8675// DomainControlCenterSsoRequest single sign-on request information for domain management.
8676type DomainControlCenterSsoRequest struct {
8677	autorest.Response `json:"-"`
8678	// URL - READ-ONLY; URL where the single sign-on request is to be made.
8679	URL *string `json:"url,omitempty"`
8680	// PostParameterKey - READ-ONLY; Post parameter key.
8681	PostParameterKey *string `json:"postParameterKey,omitempty"`
8682	// PostParameterValue - READ-ONLY; Post parameter value. Client should use 'application/x-www-form-urlencoded' encoding for this value.
8683	PostParameterValue *string `json:"postParameterValue,omitempty"`
8684}
8685
8686// DomainOwnershipIdentifier domain ownership Identifier.
8687type DomainOwnershipIdentifier struct {
8688	autorest.Response `json:"-"`
8689	// DomainOwnershipIdentifierProperties - DomainOwnershipIdentifier resource specific properties
8690	*DomainOwnershipIdentifierProperties `json:"properties,omitempty"`
8691	// ID - READ-ONLY; Resource Id.
8692	ID *string `json:"id,omitempty"`
8693	// Name - READ-ONLY; Resource Name.
8694	Name *string `json:"name,omitempty"`
8695	// Kind - Kind of resource.
8696	Kind *string `json:"kind,omitempty"`
8697	// Type - READ-ONLY; Resource type.
8698	Type *string `json:"type,omitempty"`
8699}
8700
8701// MarshalJSON is the custom marshaler for DomainOwnershipIdentifier.
8702func (doi DomainOwnershipIdentifier) MarshalJSON() ([]byte, error) {
8703	objectMap := make(map[string]interface{})
8704	if doi.DomainOwnershipIdentifierProperties != nil {
8705		objectMap["properties"] = doi.DomainOwnershipIdentifierProperties
8706	}
8707	if doi.Kind != nil {
8708		objectMap["kind"] = doi.Kind
8709	}
8710	return json.Marshal(objectMap)
8711}
8712
8713// UnmarshalJSON is the custom unmarshaler for DomainOwnershipIdentifier struct.
8714func (doi *DomainOwnershipIdentifier) UnmarshalJSON(body []byte) error {
8715	var m map[string]*json.RawMessage
8716	err := json.Unmarshal(body, &m)
8717	if err != nil {
8718		return err
8719	}
8720	for k, v := range m {
8721		switch k {
8722		case "properties":
8723			if v != nil {
8724				var domainOwnershipIdentifierProperties DomainOwnershipIdentifierProperties
8725				err = json.Unmarshal(*v, &domainOwnershipIdentifierProperties)
8726				if err != nil {
8727					return err
8728				}
8729				doi.DomainOwnershipIdentifierProperties = &domainOwnershipIdentifierProperties
8730			}
8731		case "id":
8732			if v != nil {
8733				var ID string
8734				err = json.Unmarshal(*v, &ID)
8735				if err != nil {
8736					return err
8737				}
8738				doi.ID = &ID
8739			}
8740		case "name":
8741			if v != nil {
8742				var name string
8743				err = json.Unmarshal(*v, &name)
8744				if err != nil {
8745					return err
8746				}
8747				doi.Name = &name
8748			}
8749		case "kind":
8750			if v != nil {
8751				var kind string
8752				err = json.Unmarshal(*v, &kind)
8753				if err != nil {
8754					return err
8755				}
8756				doi.Kind = &kind
8757			}
8758		case "type":
8759			if v != nil {
8760				var typeVar string
8761				err = json.Unmarshal(*v, &typeVar)
8762				if err != nil {
8763					return err
8764				}
8765				doi.Type = &typeVar
8766			}
8767		}
8768	}
8769
8770	return nil
8771}
8772
8773// DomainOwnershipIdentifierCollection collection of domain ownership identifiers.
8774type DomainOwnershipIdentifierCollection struct {
8775	autorest.Response `json:"-"`
8776	// Value - Collection of resources.
8777	Value *[]DomainOwnershipIdentifier `json:"value,omitempty"`
8778	// NextLink - READ-ONLY; Link to next page of resources.
8779	NextLink *string `json:"nextLink,omitempty"`
8780}
8781
8782// DomainOwnershipIdentifierCollectionIterator provides access to a complete listing of
8783// DomainOwnershipIdentifier values.
8784type DomainOwnershipIdentifierCollectionIterator struct {
8785	i    int
8786	page DomainOwnershipIdentifierCollectionPage
8787}
8788
8789// NextWithContext advances to the next value.  If there was an error making
8790// the request the iterator does not advance and the error is returned.
8791func (iter *DomainOwnershipIdentifierCollectionIterator) NextWithContext(ctx context.Context) (err error) {
8792	if tracing.IsEnabled() {
8793		ctx = tracing.StartSpan(ctx, fqdn+"/DomainOwnershipIdentifierCollectionIterator.NextWithContext")
8794		defer func() {
8795			sc := -1
8796			if iter.Response().Response.Response != nil {
8797				sc = iter.Response().Response.Response.StatusCode
8798			}
8799			tracing.EndSpan(ctx, sc, err)
8800		}()
8801	}
8802	iter.i++
8803	if iter.i < len(iter.page.Values()) {
8804		return nil
8805	}
8806	err = iter.page.NextWithContext(ctx)
8807	if err != nil {
8808		iter.i--
8809		return err
8810	}
8811	iter.i = 0
8812	return nil
8813}
8814
8815// Next advances to the next value.  If there was an error making
8816// the request the iterator does not advance and the error is returned.
8817// Deprecated: Use NextWithContext() instead.
8818func (iter *DomainOwnershipIdentifierCollectionIterator) Next() error {
8819	return iter.NextWithContext(context.Background())
8820}
8821
8822// NotDone returns true if the enumeration should be started or is not yet complete.
8823func (iter DomainOwnershipIdentifierCollectionIterator) NotDone() bool {
8824	return iter.page.NotDone() && iter.i < len(iter.page.Values())
8825}
8826
8827// Response returns the raw server response from the last page request.
8828func (iter DomainOwnershipIdentifierCollectionIterator) Response() DomainOwnershipIdentifierCollection {
8829	return iter.page.Response()
8830}
8831
8832// Value returns the current value or a zero-initialized value if the
8833// iterator has advanced beyond the end of the collection.
8834func (iter DomainOwnershipIdentifierCollectionIterator) Value() DomainOwnershipIdentifier {
8835	if !iter.page.NotDone() {
8836		return DomainOwnershipIdentifier{}
8837	}
8838	return iter.page.Values()[iter.i]
8839}
8840
8841// Creates a new instance of the DomainOwnershipIdentifierCollectionIterator type.
8842func NewDomainOwnershipIdentifierCollectionIterator(page DomainOwnershipIdentifierCollectionPage) DomainOwnershipIdentifierCollectionIterator {
8843	return DomainOwnershipIdentifierCollectionIterator{page: page}
8844}
8845
8846// IsEmpty returns true if the ListResult contains no values.
8847func (doic DomainOwnershipIdentifierCollection) IsEmpty() bool {
8848	return doic.Value == nil || len(*doic.Value) == 0
8849}
8850
8851// domainOwnershipIdentifierCollectionPreparer prepares a request to retrieve the next set of results.
8852// It returns nil if no more results exist.
8853func (doic DomainOwnershipIdentifierCollection) domainOwnershipIdentifierCollectionPreparer(ctx context.Context) (*http.Request, error) {
8854	if doic.NextLink == nil || len(to.String(doic.NextLink)) < 1 {
8855		return nil, nil
8856	}
8857	return autorest.Prepare((&http.Request{}).WithContext(ctx),
8858		autorest.AsJSON(),
8859		autorest.AsGet(),
8860		autorest.WithBaseURL(to.String(doic.NextLink)))
8861}
8862
8863// DomainOwnershipIdentifierCollectionPage contains a page of DomainOwnershipIdentifier values.
8864type DomainOwnershipIdentifierCollectionPage struct {
8865	fn   func(context.Context, DomainOwnershipIdentifierCollection) (DomainOwnershipIdentifierCollection, error)
8866	doic DomainOwnershipIdentifierCollection
8867}
8868
8869// NextWithContext advances to the next page of values.  If there was an error making
8870// the request the page does not advance and the error is returned.
8871func (page *DomainOwnershipIdentifierCollectionPage) NextWithContext(ctx context.Context) (err error) {
8872	if tracing.IsEnabled() {
8873		ctx = tracing.StartSpan(ctx, fqdn+"/DomainOwnershipIdentifierCollectionPage.NextWithContext")
8874		defer func() {
8875			sc := -1
8876			if page.Response().Response.Response != nil {
8877				sc = page.Response().Response.Response.StatusCode
8878			}
8879			tracing.EndSpan(ctx, sc, err)
8880		}()
8881	}
8882	next, err := page.fn(ctx, page.doic)
8883	if err != nil {
8884		return err
8885	}
8886	page.doic = next
8887	return nil
8888}
8889
8890// Next advances to the next page of values.  If there was an error making
8891// the request the page does not advance and the error is returned.
8892// Deprecated: Use NextWithContext() instead.
8893func (page *DomainOwnershipIdentifierCollectionPage) Next() error {
8894	return page.NextWithContext(context.Background())
8895}
8896
8897// NotDone returns true if the page enumeration should be started or is not yet complete.
8898func (page DomainOwnershipIdentifierCollectionPage) NotDone() bool {
8899	return !page.doic.IsEmpty()
8900}
8901
8902// Response returns the raw server response from the last page request.
8903func (page DomainOwnershipIdentifierCollectionPage) Response() DomainOwnershipIdentifierCollection {
8904	return page.doic
8905}
8906
8907// Values returns the slice of values for the current page or nil if there are no values.
8908func (page DomainOwnershipIdentifierCollectionPage) Values() []DomainOwnershipIdentifier {
8909	if page.doic.IsEmpty() {
8910		return nil
8911	}
8912	return *page.doic.Value
8913}
8914
8915// Creates a new instance of the DomainOwnershipIdentifierCollectionPage type.
8916func NewDomainOwnershipIdentifierCollectionPage(getNextPage func(context.Context, DomainOwnershipIdentifierCollection) (DomainOwnershipIdentifierCollection, error)) DomainOwnershipIdentifierCollectionPage {
8917	return DomainOwnershipIdentifierCollectionPage{fn: getNextPage}
8918}
8919
8920// DomainOwnershipIdentifierProperties domainOwnershipIdentifier resource specific properties
8921type DomainOwnershipIdentifierProperties struct {
8922	// OwnershipID - Ownership Id.
8923	OwnershipID *string `json:"ownershipId,omitempty"`
8924}
8925
8926// DomainPatchResource ARM resource for a domain.
8927type DomainPatchResource struct {
8928	// DomainPatchResourceProperties - DomainPatchResource resource specific properties
8929	*DomainPatchResourceProperties `json:"properties,omitempty"`
8930	// ID - READ-ONLY; Resource Id.
8931	ID *string `json:"id,omitempty"`
8932	// Name - READ-ONLY; Resource Name.
8933	Name *string `json:"name,omitempty"`
8934	// Kind - Kind of resource.
8935	Kind *string `json:"kind,omitempty"`
8936	// Type - READ-ONLY; Resource type.
8937	Type *string `json:"type,omitempty"`
8938}
8939
8940// MarshalJSON is the custom marshaler for DomainPatchResource.
8941func (dpr DomainPatchResource) MarshalJSON() ([]byte, error) {
8942	objectMap := make(map[string]interface{})
8943	if dpr.DomainPatchResourceProperties != nil {
8944		objectMap["properties"] = dpr.DomainPatchResourceProperties
8945	}
8946	if dpr.Kind != nil {
8947		objectMap["kind"] = dpr.Kind
8948	}
8949	return json.Marshal(objectMap)
8950}
8951
8952// UnmarshalJSON is the custom unmarshaler for DomainPatchResource struct.
8953func (dpr *DomainPatchResource) UnmarshalJSON(body []byte) error {
8954	var m map[string]*json.RawMessage
8955	err := json.Unmarshal(body, &m)
8956	if err != nil {
8957		return err
8958	}
8959	for k, v := range m {
8960		switch k {
8961		case "properties":
8962			if v != nil {
8963				var domainPatchResourceProperties DomainPatchResourceProperties
8964				err = json.Unmarshal(*v, &domainPatchResourceProperties)
8965				if err != nil {
8966					return err
8967				}
8968				dpr.DomainPatchResourceProperties = &domainPatchResourceProperties
8969			}
8970		case "id":
8971			if v != nil {
8972				var ID string
8973				err = json.Unmarshal(*v, &ID)
8974				if err != nil {
8975					return err
8976				}
8977				dpr.ID = &ID
8978			}
8979		case "name":
8980			if v != nil {
8981				var name string
8982				err = json.Unmarshal(*v, &name)
8983				if err != nil {
8984					return err
8985				}
8986				dpr.Name = &name
8987			}
8988		case "kind":
8989			if v != nil {
8990				var kind string
8991				err = json.Unmarshal(*v, &kind)
8992				if err != nil {
8993					return err
8994				}
8995				dpr.Kind = &kind
8996			}
8997		case "type":
8998			if v != nil {
8999				var typeVar string
9000				err = json.Unmarshal(*v, &typeVar)
9001				if err != nil {
9002					return err
9003				}
9004				dpr.Type = &typeVar
9005			}
9006		}
9007	}
9008
9009	return nil
9010}
9011
9012// DomainPatchResourceProperties domainPatchResource resource specific properties
9013type DomainPatchResourceProperties struct {
9014	// ContactAdmin - Administrative contact.
9015	ContactAdmin *Contact `json:"contactAdmin,omitempty"`
9016	// ContactBilling - Billing contact.
9017	ContactBilling *Contact `json:"contactBilling,omitempty"`
9018	// ContactRegistrant - Registrant contact.
9019	ContactRegistrant *Contact `json:"contactRegistrant,omitempty"`
9020	// ContactTech - Technical contact.
9021	ContactTech *Contact `json:"contactTech,omitempty"`
9022	// RegistrationStatus - READ-ONLY; Domain registration status. Possible values include: 'DomainStatusActive', 'DomainStatusAwaiting', 'DomainStatusCancelled', 'DomainStatusConfiscated', 'DomainStatusDisabled', 'DomainStatusExcluded', 'DomainStatusExpired', 'DomainStatusFailed', 'DomainStatusHeld', 'DomainStatusLocked', 'DomainStatusParked', 'DomainStatusPending', 'DomainStatusReserved', 'DomainStatusReverted', 'DomainStatusSuspended', 'DomainStatusTransferred', 'DomainStatusUnknown', 'DomainStatusUnlocked', 'DomainStatusUnparked', 'DomainStatusUpdated', 'DomainStatusJSONConverterFailed'
9023	RegistrationStatus DomainStatus `json:"registrationStatus,omitempty"`
9024	// ProvisioningState - READ-ONLY; Domain provisioning state. Possible values include: 'ProvisioningStateSucceeded', 'ProvisioningStateFailed', 'ProvisioningStateCanceled', 'ProvisioningStateInProgress', 'ProvisioningStateDeleting'
9025	ProvisioningState ProvisioningState `json:"provisioningState,omitempty"`
9026	// NameServers - READ-ONLY; Name servers.
9027	NameServers *[]string `json:"nameServers,omitempty"`
9028	// Privacy - <code>true</code> if domain privacy is enabled for this domain; otherwise, <code>false</code>.
9029	Privacy *bool `json:"privacy,omitempty"`
9030	// CreatedTime - READ-ONLY; Domain creation timestamp.
9031	CreatedTime *date.Time `json:"createdTime,omitempty"`
9032	// ExpirationTime - READ-ONLY; Domain expiration timestamp.
9033	ExpirationTime *date.Time `json:"expirationTime,omitempty"`
9034	// LastRenewedTime - READ-ONLY; Timestamp when the domain was renewed last time.
9035	LastRenewedTime *date.Time `json:"lastRenewedTime,omitempty"`
9036	// AutoRenew - <code>true</code> if the domain should be automatically renewed; otherwise, <code>false</code>.
9037	AutoRenew *bool `json:"autoRenew,omitempty"`
9038	// ReadyForDNSRecordManagement - READ-ONLY; <code>true</code> if Azure can assign this domain to App Service apps; otherwise, <code>false</code>. This value will be <code>true</code> if domain registration status is active and
9039	//  it is hosted on name servers Azure has programmatic access to.
9040	ReadyForDNSRecordManagement *bool `json:"readyForDnsRecordManagement,omitempty"`
9041	// ManagedHostNames - READ-ONLY; All hostnames derived from the domain and assigned to Azure resources.
9042	ManagedHostNames *[]HostName `json:"managedHostNames,omitempty"`
9043	// Consent - Legal agreement consent.
9044	Consent *DomainPurchaseConsent `json:"consent,omitempty"`
9045	// DomainNotRenewableReasons - READ-ONLY; Reasons why domain is not renewable.
9046	DomainNotRenewableReasons *[]string `json:"domainNotRenewableReasons,omitempty"`
9047	// DNSType - Current DNS type. Possible values include: 'AzureDNS', 'DefaultDomainRegistrarDNS'
9048	DNSType DNSType `json:"dnsType,omitempty"`
9049	// DNSZoneID - Azure DNS Zone to use
9050	DNSZoneID *string `json:"dnsZoneId,omitempty"`
9051	// TargetDNSType - Target DNS type (would be used for migration). Possible values include: 'AzureDNS', 'DefaultDomainRegistrarDNS'
9052	TargetDNSType DNSType `json:"targetDnsType,omitempty"`
9053	AuthCode      *string `json:"authCode,omitempty"`
9054}
9055
9056// DomainProperties domain resource specific properties
9057type DomainProperties struct {
9058	// ContactAdmin - Administrative contact.
9059	ContactAdmin *Contact `json:"contactAdmin,omitempty"`
9060	// ContactBilling - Billing contact.
9061	ContactBilling *Contact `json:"contactBilling,omitempty"`
9062	// ContactRegistrant - Registrant contact.
9063	ContactRegistrant *Contact `json:"contactRegistrant,omitempty"`
9064	// ContactTech - Technical contact.
9065	ContactTech *Contact `json:"contactTech,omitempty"`
9066	// RegistrationStatus - READ-ONLY; Domain registration status. Possible values include: 'DomainStatusActive', 'DomainStatusAwaiting', 'DomainStatusCancelled', 'DomainStatusConfiscated', 'DomainStatusDisabled', 'DomainStatusExcluded', 'DomainStatusExpired', 'DomainStatusFailed', 'DomainStatusHeld', 'DomainStatusLocked', 'DomainStatusParked', 'DomainStatusPending', 'DomainStatusReserved', 'DomainStatusReverted', 'DomainStatusSuspended', 'DomainStatusTransferred', 'DomainStatusUnknown', 'DomainStatusUnlocked', 'DomainStatusUnparked', 'DomainStatusUpdated', 'DomainStatusJSONConverterFailed'
9067	RegistrationStatus DomainStatus `json:"registrationStatus,omitempty"`
9068	// ProvisioningState - READ-ONLY; Domain provisioning state. Possible values include: 'ProvisioningStateSucceeded', 'ProvisioningStateFailed', 'ProvisioningStateCanceled', 'ProvisioningStateInProgress', 'ProvisioningStateDeleting'
9069	ProvisioningState ProvisioningState `json:"provisioningState,omitempty"`
9070	// NameServers - READ-ONLY; Name servers.
9071	NameServers *[]string `json:"nameServers,omitempty"`
9072	// Privacy - <code>true</code> if domain privacy is enabled for this domain; otherwise, <code>false</code>.
9073	Privacy *bool `json:"privacy,omitempty"`
9074	// CreatedTime - READ-ONLY; Domain creation timestamp.
9075	CreatedTime *date.Time `json:"createdTime,omitempty"`
9076	// ExpirationTime - READ-ONLY; Domain expiration timestamp.
9077	ExpirationTime *date.Time `json:"expirationTime,omitempty"`
9078	// LastRenewedTime - READ-ONLY; Timestamp when the domain was renewed last time.
9079	LastRenewedTime *date.Time `json:"lastRenewedTime,omitempty"`
9080	// AutoRenew - <code>true</code> if the domain should be automatically renewed; otherwise, <code>false</code>.
9081	AutoRenew *bool `json:"autoRenew,omitempty"`
9082	// ReadyForDNSRecordManagement - READ-ONLY; <code>true</code> if Azure can assign this domain to App Service apps; otherwise, <code>false</code>. This value will be <code>true</code> if domain registration status is active and
9083	//  it is hosted on name servers Azure has programmatic access to.
9084	ReadyForDNSRecordManagement *bool `json:"readyForDnsRecordManagement,omitempty"`
9085	// ManagedHostNames - READ-ONLY; All hostnames derived from the domain and assigned to Azure resources.
9086	ManagedHostNames *[]HostName `json:"managedHostNames,omitempty"`
9087	// Consent - Legal agreement consent.
9088	Consent *DomainPurchaseConsent `json:"consent,omitempty"`
9089	// DomainNotRenewableReasons - READ-ONLY; Reasons why domain is not renewable.
9090	DomainNotRenewableReasons *[]string `json:"domainNotRenewableReasons,omitempty"`
9091	// DNSType - Current DNS type. Possible values include: 'AzureDNS', 'DefaultDomainRegistrarDNS'
9092	DNSType DNSType `json:"dnsType,omitempty"`
9093	// DNSZoneID - Azure DNS Zone to use
9094	DNSZoneID *string `json:"dnsZoneId,omitempty"`
9095	// TargetDNSType - Target DNS type (would be used for migration). Possible values include: 'AzureDNS', 'DefaultDomainRegistrarDNS'
9096	TargetDNSType DNSType `json:"targetDnsType,omitempty"`
9097	AuthCode      *string `json:"authCode,omitempty"`
9098}
9099
9100// DomainPurchaseConsent domain purchase consent object, representing acceptance of applicable legal
9101// agreements.
9102type DomainPurchaseConsent struct {
9103	// AgreementKeys - List of applicable legal agreement keys. This list can be retrieved using ListLegalAgreements API under <code>TopLevelDomain</code> resource.
9104	AgreementKeys *[]string `json:"agreementKeys,omitempty"`
9105	// AgreedBy - Client IP address.
9106	AgreedBy *string `json:"agreedBy,omitempty"`
9107	// AgreedAt - Timestamp when the agreements were accepted.
9108	AgreedAt *date.Time `json:"agreedAt,omitempty"`
9109}
9110
9111// DomainRecommendationSearchParameters domain recommendation search parameters.
9112type DomainRecommendationSearchParameters struct {
9113	// Keywords - Keywords to be used for generating domain recommendations.
9114	Keywords *string `json:"keywords,omitempty"`
9115	// MaxDomainRecommendations - Maximum number of recommendations.
9116	MaxDomainRecommendations *int32 `json:"maxDomainRecommendations,omitempty"`
9117}
9118
9119// DomainsCreateOrUpdateFuture an abstraction for monitoring and retrieving the results of a long-running
9120// operation.
9121type DomainsCreateOrUpdateFuture struct {
9122	azure.Future
9123}
9124
9125// Result returns the result of the asynchronous operation.
9126// If the operation has not completed it will return an error.
9127func (future *DomainsCreateOrUpdateFuture) Result(client DomainsClient) (d Domain, err error) {
9128	var done bool
9129	done, err = future.DoneWithContext(context.Background(), client)
9130	if err != nil {
9131		err = autorest.NewErrorWithError(err, "web.DomainsCreateOrUpdateFuture", "Result", future.Response(), "Polling failure")
9132		return
9133	}
9134	if !done {
9135		err = azure.NewAsyncOpIncompleteError("web.DomainsCreateOrUpdateFuture")
9136		return
9137	}
9138	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
9139	if d.Response.Response, err = future.GetResult(sender); err == nil && d.Response.Response.StatusCode != http.StatusNoContent {
9140		d, err = client.CreateOrUpdateResponder(d.Response.Response)
9141		if err != nil {
9142			err = autorest.NewErrorWithError(err, "web.DomainsCreateOrUpdateFuture", "Result", d.Response.Response, "Failure responding to request")
9143		}
9144	}
9145	return
9146}
9147
9148// EnabledConfig enabled configuration.
9149type EnabledConfig struct {
9150	// Enabled - True if configuration is enabled, false if it is disabled and null if configuration is not set.
9151	Enabled *bool `json:"enabled,omitempty"`
9152}
9153
9154// ErrorEntity body of the error response returned from the API.
9155type ErrorEntity struct {
9156	// ExtendedCode - Type of error.
9157	ExtendedCode *string `json:"extendedCode,omitempty"`
9158	// MessageTemplate - Message template.
9159	MessageTemplate *string `json:"messageTemplate,omitempty"`
9160	// Parameters - Parameters for the template.
9161	Parameters *[]string `json:"parameters,omitempty"`
9162	// InnerErrors - Inner errors.
9163	InnerErrors *[]ErrorEntity `json:"innerErrors,omitempty"`
9164	// Code - Basic error code.
9165	Code *string `json:"code,omitempty"`
9166	// Message - Any details of the error.
9167	Message *string `json:"message,omitempty"`
9168}
9169
9170// ErrorResponse error Response.
9171type ErrorResponse struct {
9172	// Code - Error code.
9173	Code *string `json:"code,omitempty"`
9174	// Message - Error message indicating why the operation failed.
9175	Message *string `json:"message,omitempty"`
9176}
9177
9178// Experiments routing rules in production experiments.
9179type Experiments struct {
9180	// RampUpRules - List of ramp-up rules.
9181	RampUpRules *[]RampUpRule `json:"rampUpRules,omitempty"`
9182}
9183
9184// FileSystemApplicationLogsConfig application logs to file system configuration.
9185type FileSystemApplicationLogsConfig struct {
9186	// Level - Log level. Possible values include: 'Off', 'Verbose', 'Information', 'Warning', 'Error'
9187	Level LogLevel `json:"level,omitempty"`
9188}
9189
9190// FileSystemHTTPLogsConfig http logs to file system configuration.
9191type FileSystemHTTPLogsConfig struct {
9192	// RetentionInMb - Maximum size in megabytes that http log files can use.
9193	// When reached old log files will be removed to make space for new ones.
9194	// Value can range between 25 and 100.
9195	RetentionInMb *int32 `json:"retentionInMb,omitempty"`
9196	// RetentionInDays - Retention in days.
9197	// Remove files older than X days.
9198	// 0 or lower means no retention.
9199	RetentionInDays *int32 `json:"retentionInDays,omitempty"`
9200	// Enabled - True if configuration is enabled, false if it is disabled and null if configuration is not set.
9201	Enabled *bool `json:"enabled,omitempty"`
9202}
9203
9204// FunctionEnvelope web Job Information.
9205type FunctionEnvelope struct {
9206	autorest.Response `json:"-"`
9207	// FunctionEnvelopeProperties - FunctionEnvelope resource specific properties
9208	*FunctionEnvelopeProperties `json:"properties,omitempty"`
9209	// ID - READ-ONLY; Resource Id.
9210	ID *string `json:"id,omitempty"`
9211	// Name - READ-ONLY; Resource Name.
9212	Name *string `json:"name,omitempty"`
9213	// Kind - Kind of resource.
9214	Kind *string `json:"kind,omitempty"`
9215	// Type - READ-ONLY; Resource type.
9216	Type *string `json:"type,omitempty"`
9217}
9218
9219// MarshalJSON is the custom marshaler for FunctionEnvelope.
9220func (fe FunctionEnvelope) MarshalJSON() ([]byte, error) {
9221	objectMap := make(map[string]interface{})
9222	if fe.FunctionEnvelopeProperties != nil {
9223		objectMap["properties"] = fe.FunctionEnvelopeProperties
9224	}
9225	if fe.Kind != nil {
9226		objectMap["kind"] = fe.Kind
9227	}
9228	return json.Marshal(objectMap)
9229}
9230
9231// UnmarshalJSON is the custom unmarshaler for FunctionEnvelope struct.
9232func (fe *FunctionEnvelope) UnmarshalJSON(body []byte) error {
9233	var m map[string]*json.RawMessage
9234	err := json.Unmarshal(body, &m)
9235	if err != nil {
9236		return err
9237	}
9238	for k, v := range m {
9239		switch k {
9240		case "properties":
9241			if v != nil {
9242				var functionEnvelopeProperties FunctionEnvelopeProperties
9243				err = json.Unmarshal(*v, &functionEnvelopeProperties)
9244				if err != nil {
9245					return err
9246				}
9247				fe.FunctionEnvelopeProperties = &functionEnvelopeProperties
9248			}
9249		case "id":
9250			if v != nil {
9251				var ID string
9252				err = json.Unmarshal(*v, &ID)
9253				if err != nil {
9254					return err
9255				}
9256				fe.ID = &ID
9257			}
9258		case "name":
9259			if v != nil {
9260				var name string
9261				err = json.Unmarshal(*v, &name)
9262				if err != nil {
9263					return err
9264				}
9265				fe.Name = &name
9266			}
9267		case "kind":
9268			if v != nil {
9269				var kind string
9270				err = json.Unmarshal(*v, &kind)
9271				if err != nil {
9272					return err
9273				}
9274				fe.Kind = &kind
9275			}
9276		case "type":
9277			if v != nil {
9278				var typeVar string
9279				err = json.Unmarshal(*v, &typeVar)
9280				if err != nil {
9281					return err
9282				}
9283				fe.Type = &typeVar
9284			}
9285		}
9286	}
9287
9288	return nil
9289}
9290
9291// FunctionEnvelopeCollection collection of Kudu function information elements.
9292type FunctionEnvelopeCollection struct {
9293	autorest.Response `json:"-"`
9294	// Value - Collection of resources.
9295	Value *[]FunctionEnvelope `json:"value,omitempty"`
9296	// NextLink - READ-ONLY; Link to next page of resources.
9297	NextLink *string `json:"nextLink,omitempty"`
9298}
9299
9300// FunctionEnvelopeCollectionIterator provides access to a complete listing of FunctionEnvelope values.
9301type FunctionEnvelopeCollectionIterator struct {
9302	i    int
9303	page FunctionEnvelopeCollectionPage
9304}
9305
9306// NextWithContext advances to the next value.  If there was an error making
9307// the request the iterator does not advance and the error is returned.
9308func (iter *FunctionEnvelopeCollectionIterator) NextWithContext(ctx context.Context) (err error) {
9309	if tracing.IsEnabled() {
9310		ctx = tracing.StartSpan(ctx, fqdn+"/FunctionEnvelopeCollectionIterator.NextWithContext")
9311		defer func() {
9312			sc := -1
9313			if iter.Response().Response.Response != nil {
9314				sc = iter.Response().Response.Response.StatusCode
9315			}
9316			tracing.EndSpan(ctx, sc, err)
9317		}()
9318	}
9319	iter.i++
9320	if iter.i < len(iter.page.Values()) {
9321		return nil
9322	}
9323	err = iter.page.NextWithContext(ctx)
9324	if err != nil {
9325		iter.i--
9326		return err
9327	}
9328	iter.i = 0
9329	return nil
9330}
9331
9332// Next advances to the next value.  If there was an error making
9333// the request the iterator does not advance and the error is returned.
9334// Deprecated: Use NextWithContext() instead.
9335func (iter *FunctionEnvelopeCollectionIterator) Next() error {
9336	return iter.NextWithContext(context.Background())
9337}
9338
9339// NotDone returns true if the enumeration should be started or is not yet complete.
9340func (iter FunctionEnvelopeCollectionIterator) NotDone() bool {
9341	return iter.page.NotDone() && iter.i < len(iter.page.Values())
9342}
9343
9344// Response returns the raw server response from the last page request.
9345func (iter FunctionEnvelopeCollectionIterator) Response() FunctionEnvelopeCollection {
9346	return iter.page.Response()
9347}
9348
9349// Value returns the current value or a zero-initialized value if the
9350// iterator has advanced beyond the end of the collection.
9351func (iter FunctionEnvelopeCollectionIterator) Value() FunctionEnvelope {
9352	if !iter.page.NotDone() {
9353		return FunctionEnvelope{}
9354	}
9355	return iter.page.Values()[iter.i]
9356}
9357
9358// Creates a new instance of the FunctionEnvelopeCollectionIterator type.
9359func NewFunctionEnvelopeCollectionIterator(page FunctionEnvelopeCollectionPage) FunctionEnvelopeCollectionIterator {
9360	return FunctionEnvelopeCollectionIterator{page: page}
9361}
9362
9363// IsEmpty returns true if the ListResult contains no values.
9364func (fec FunctionEnvelopeCollection) IsEmpty() bool {
9365	return fec.Value == nil || len(*fec.Value) == 0
9366}
9367
9368// functionEnvelopeCollectionPreparer prepares a request to retrieve the next set of results.
9369// It returns nil if no more results exist.
9370func (fec FunctionEnvelopeCollection) functionEnvelopeCollectionPreparer(ctx context.Context) (*http.Request, error) {
9371	if fec.NextLink == nil || len(to.String(fec.NextLink)) < 1 {
9372		return nil, nil
9373	}
9374	return autorest.Prepare((&http.Request{}).WithContext(ctx),
9375		autorest.AsJSON(),
9376		autorest.AsGet(),
9377		autorest.WithBaseURL(to.String(fec.NextLink)))
9378}
9379
9380// FunctionEnvelopeCollectionPage contains a page of FunctionEnvelope values.
9381type FunctionEnvelopeCollectionPage struct {
9382	fn  func(context.Context, FunctionEnvelopeCollection) (FunctionEnvelopeCollection, error)
9383	fec FunctionEnvelopeCollection
9384}
9385
9386// NextWithContext advances to the next page of values.  If there was an error making
9387// the request the page does not advance and the error is returned.
9388func (page *FunctionEnvelopeCollectionPage) NextWithContext(ctx context.Context) (err error) {
9389	if tracing.IsEnabled() {
9390		ctx = tracing.StartSpan(ctx, fqdn+"/FunctionEnvelopeCollectionPage.NextWithContext")
9391		defer func() {
9392			sc := -1
9393			if page.Response().Response.Response != nil {
9394				sc = page.Response().Response.Response.StatusCode
9395			}
9396			tracing.EndSpan(ctx, sc, err)
9397		}()
9398	}
9399	next, err := page.fn(ctx, page.fec)
9400	if err != nil {
9401		return err
9402	}
9403	page.fec = next
9404	return nil
9405}
9406
9407// Next advances to the next page of values.  If there was an error making
9408// the request the page does not advance and the error is returned.
9409// Deprecated: Use NextWithContext() instead.
9410func (page *FunctionEnvelopeCollectionPage) Next() error {
9411	return page.NextWithContext(context.Background())
9412}
9413
9414// NotDone returns true if the page enumeration should be started or is not yet complete.
9415func (page FunctionEnvelopeCollectionPage) NotDone() bool {
9416	return !page.fec.IsEmpty()
9417}
9418
9419// Response returns the raw server response from the last page request.
9420func (page FunctionEnvelopeCollectionPage) Response() FunctionEnvelopeCollection {
9421	return page.fec
9422}
9423
9424// Values returns the slice of values for the current page or nil if there are no values.
9425func (page FunctionEnvelopeCollectionPage) Values() []FunctionEnvelope {
9426	if page.fec.IsEmpty() {
9427		return nil
9428	}
9429	return *page.fec.Value
9430}
9431
9432// Creates a new instance of the FunctionEnvelopeCollectionPage type.
9433func NewFunctionEnvelopeCollectionPage(getNextPage func(context.Context, FunctionEnvelopeCollection) (FunctionEnvelopeCollection, error)) FunctionEnvelopeCollectionPage {
9434	return FunctionEnvelopeCollectionPage{fn: getNextPage}
9435}
9436
9437// FunctionEnvelopeProperties functionEnvelope resource specific properties
9438type FunctionEnvelopeProperties struct {
9439	// Name - READ-ONLY; Function name.
9440	Name *string `json:"name,omitempty"`
9441	// FunctionAppID - READ-ONLY; Function App ID.
9442	FunctionAppID *string `json:"functionAppId,omitempty"`
9443	// ScriptRootPathHref - Script root path URI.
9444	ScriptRootPathHref *string `json:"scriptRootPathHref,omitempty"`
9445	// ScriptHref - Script URI.
9446	ScriptHref *string `json:"scriptHref,omitempty"`
9447	// ConfigHref - Config URI.
9448	ConfigHref *string `json:"configHref,omitempty"`
9449	// SecretsFileHref - Secrets file URI.
9450	SecretsFileHref *string `json:"secretsFileHref,omitempty"`
9451	// Href - Function URI.
9452	Href *string `json:"href,omitempty"`
9453	// Config - Config information.
9454	Config interface{} `json:"config,omitempty"`
9455	// Files - File list.
9456	Files map[string]*string `json:"files"`
9457	// TestData - Test data used when testing via the Azure Portal.
9458	TestData *string `json:"testData,omitempty"`
9459}
9460
9461// MarshalJSON is the custom marshaler for FunctionEnvelopeProperties.
9462func (fe FunctionEnvelopeProperties) MarshalJSON() ([]byte, error) {
9463	objectMap := make(map[string]interface{})
9464	if fe.ScriptRootPathHref != nil {
9465		objectMap["scriptRootPathHref"] = fe.ScriptRootPathHref
9466	}
9467	if fe.ScriptHref != nil {
9468		objectMap["scriptHref"] = fe.ScriptHref
9469	}
9470	if fe.ConfigHref != nil {
9471		objectMap["configHref"] = fe.ConfigHref
9472	}
9473	if fe.SecretsFileHref != nil {
9474		objectMap["secretsFileHref"] = fe.SecretsFileHref
9475	}
9476	if fe.Href != nil {
9477		objectMap["href"] = fe.Href
9478	}
9479	if fe.Config != nil {
9480		objectMap["config"] = fe.Config
9481	}
9482	if fe.Files != nil {
9483		objectMap["files"] = fe.Files
9484	}
9485	if fe.TestData != nil {
9486		objectMap["testData"] = fe.TestData
9487	}
9488	return json.Marshal(objectMap)
9489}
9490
9491// FunctionSecrets function secrets.
9492type FunctionSecrets struct {
9493	autorest.Response `json:"-"`
9494	// FunctionSecretsProperties - FunctionSecrets resource specific properties
9495	*FunctionSecretsProperties `json:"properties,omitempty"`
9496	// ID - READ-ONLY; Resource Id.
9497	ID *string `json:"id,omitempty"`
9498	// Name - READ-ONLY; Resource Name.
9499	Name *string `json:"name,omitempty"`
9500	// Kind - Kind of resource.
9501	Kind *string `json:"kind,omitempty"`
9502	// Type - READ-ONLY; Resource type.
9503	Type *string `json:"type,omitempty"`
9504}
9505
9506// MarshalJSON is the custom marshaler for FunctionSecrets.
9507func (fs FunctionSecrets) MarshalJSON() ([]byte, error) {
9508	objectMap := make(map[string]interface{})
9509	if fs.FunctionSecretsProperties != nil {
9510		objectMap["properties"] = fs.FunctionSecretsProperties
9511	}
9512	if fs.Kind != nil {
9513		objectMap["kind"] = fs.Kind
9514	}
9515	return json.Marshal(objectMap)
9516}
9517
9518// UnmarshalJSON is the custom unmarshaler for FunctionSecrets struct.
9519func (fs *FunctionSecrets) UnmarshalJSON(body []byte) error {
9520	var m map[string]*json.RawMessage
9521	err := json.Unmarshal(body, &m)
9522	if err != nil {
9523		return err
9524	}
9525	for k, v := range m {
9526		switch k {
9527		case "properties":
9528			if v != nil {
9529				var functionSecretsProperties FunctionSecretsProperties
9530				err = json.Unmarshal(*v, &functionSecretsProperties)
9531				if err != nil {
9532					return err
9533				}
9534				fs.FunctionSecretsProperties = &functionSecretsProperties
9535			}
9536		case "id":
9537			if v != nil {
9538				var ID string
9539				err = json.Unmarshal(*v, &ID)
9540				if err != nil {
9541					return err
9542				}
9543				fs.ID = &ID
9544			}
9545		case "name":
9546			if v != nil {
9547				var name string
9548				err = json.Unmarshal(*v, &name)
9549				if err != nil {
9550					return err
9551				}
9552				fs.Name = &name
9553			}
9554		case "kind":
9555			if v != nil {
9556				var kind string
9557				err = json.Unmarshal(*v, &kind)
9558				if err != nil {
9559					return err
9560				}
9561				fs.Kind = &kind
9562			}
9563		case "type":
9564			if v != nil {
9565				var typeVar string
9566				err = json.Unmarshal(*v, &typeVar)
9567				if err != nil {
9568					return err
9569				}
9570				fs.Type = &typeVar
9571			}
9572		}
9573	}
9574
9575	return nil
9576}
9577
9578// FunctionSecretsProperties functionSecrets resource specific properties
9579type FunctionSecretsProperties struct {
9580	// Key - Secret key.
9581	Key *string `json:"key,omitempty"`
9582	// TriggerURL - Trigger URL.
9583	TriggerURL *string `json:"triggerUrl,omitempty"`
9584}
9585
9586// GeoRegion geographical region.
9587type GeoRegion struct {
9588	// GeoRegionProperties - GeoRegion resource specific properties
9589	*GeoRegionProperties `json:"properties,omitempty"`
9590	// ID - READ-ONLY; Resource Id.
9591	ID *string `json:"id,omitempty"`
9592	// Name - READ-ONLY; Resource Name.
9593	Name *string `json:"name,omitempty"`
9594	// Kind - Kind of resource.
9595	Kind *string `json:"kind,omitempty"`
9596	// Type - READ-ONLY; Resource type.
9597	Type *string `json:"type,omitempty"`
9598}
9599
9600// MarshalJSON is the custom marshaler for GeoRegion.
9601func (gr GeoRegion) MarshalJSON() ([]byte, error) {
9602	objectMap := make(map[string]interface{})
9603	if gr.GeoRegionProperties != nil {
9604		objectMap["properties"] = gr.GeoRegionProperties
9605	}
9606	if gr.Kind != nil {
9607		objectMap["kind"] = gr.Kind
9608	}
9609	return json.Marshal(objectMap)
9610}
9611
9612// UnmarshalJSON is the custom unmarshaler for GeoRegion struct.
9613func (gr *GeoRegion) UnmarshalJSON(body []byte) error {
9614	var m map[string]*json.RawMessage
9615	err := json.Unmarshal(body, &m)
9616	if err != nil {
9617		return err
9618	}
9619	for k, v := range m {
9620		switch k {
9621		case "properties":
9622			if v != nil {
9623				var geoRegionProperties GeoRegionProperties
9624				err = json.Unmarshal(*v, &geoRegionProperties)
9625				if err != nil {
9626					return err
9627				}
9628				gr.GeoRegionProperties = &geoRegionProperties
9629			}
9630		case "id":
9631			if v != nil {
9632				var ID string
9633				err = json.Unmarshal(*v, &ID)
9634				if err != nil {
9635					return err
9636				}
9637				gr.ID = &ID
9638			}
9639		case "name":
9640			if v != nil {
9641				var name string
9642				err = json.Unmarshal(*v, &name)
9643				if err != nil {
9644					return err
9645				}
9646				gr.Name = &name
9647			}
9648		case "kind":
9649			if v != nil {
9650				var kind string
9651				err = json.Unmarshal(*v, &kind)
9652				if err != nil {
9653					return err
9654				}
9655				gr.Kind = &kind
9656			}
9657		case "type":
9658			if v != nil {
9659				var typeVar string
9660				err = json.Unmarshal(*v, &typeVar)
9661				if err != nil {
9662					return err
9663				}
9664				gr.Type = &typeVar
9665			}
9666		}
9667	}
9668
9669	return nil
9670}
9671
9672// GeoRegionCollection collection of geographical regions.
9673type GeoRegionCollection struct {
9674	autorest.Response `json:"-"`
9675	// Value - Collection of resources.
9676	Value *[]GeoRegion `json:"value,omitempty"`
9677	// NextLink - READ-ONLY; Link to next page of resources.
9678	NextLink *string `json:"nextLink,omitempty"`
9679}
9680
9681// GeoRegionCollectionIterator provides access to a complete listing of GeoRegion values.
9682type GeoRegionCollectionIterator struct {
9683	i    int
9684	page GeoRegionCollectionPage
9685}
9686
9687// NextWithContext advances to the next value.  If there was an error making
9688// the request the iterator does not advance and the error is returned.
9689func (iter *GeoRegionCollectionIterator) NextWithContext(ctx context.Context) (err error) {
9690	if tracing.IsEnabled() {
9691		ctx = tracing.StartSpan(ctx, fqdn+"/GeoRegionCollectionIterator.NextWithContext")
9692		defer func() {
9693			sc := -1
9694			if iter.Response().Response.Response != nil {
9695				sc = iter.Response().Response.Response.StatusCode
9696			}
9697			tracing.EndSpan(ctx, sc, err)
9698		}()
9699	}
9700	iter.i++
9701	if iter.i < len(iter.page.Values()) {
9702		return nil
9703	}
9704	err = iter.page.NextWithContext(ctx)
9705	if err != nil {
9706		iter.i--
9707		return err
9708	}
9709	iter.i = 0
9710	return nil
9711}
9712
9713// Next advances to the next value.  If there was an error making
9714// the request the iterator does not advance and the error is returned.
9715// Deprecated: Use NextWithContext() instead.
9716func (iter *GeoRegionCollectionIterator) Next() error {
9717	return iter.NextWithContext(context.Background())
9718}
9719
9720// NotDone returns true if the enumeration should be started or is not yet complete.
9721func (iter GeoRegionCollectionIterator) NotDone() bool {
9722	return iter.page.NotDone() && iter.i < len(iter.page.Values())
9723}
9724
9725// Response returns the raw server response from the last page request.
9726func (iter GeoRegionCollectionIterator) Response() GeoRegionCollection {
9727	return iter.page.Response()
9728}
9729
9730// Value returns the current value or a zero-initialized value if the
9731// iterator has advanced beyond the end of the collection.
9732func (iter GeoRegionCollectionIterator) Value() GeoRegion {
9733	if !iter.page.NotDone() {
9734		return GeoRegion{}
9735	}
9736	return iter.page.Values()[iter.i]
9737}
9738
9739// Creates a new instance of the GeoRegionCollectionIterator type.
9740func NewGeoRegionCollectionIterator(page GeoRegionCollectionPage) GeoRegionCollectionIterator {
9741	return GeoRegionCollectionIterator{page: page}
9742}
9743
9744// IsEmpty returns true if the ListResult contains no values.
9745func (grc GeoRegionCollection) IsEmpty() bool {
9746	return grc.Value == nil || len(*grc.Value) == 0
9747}
9748
9749// geoRegionCollectionPreparer prepares a request to retrieve the next set of results.
9750// It returns nil if no more results exist.
9751func (grc GeoRegionCollection) geoRegionCollectionPreparer(ctx context.Context) (*http.Request, error) {
9752	if grc.NextLink == nil || len(to.String(grc.NextLink)) < 1 {
9753		return nil, nil
9754	}
9755	return autorest.Prepare((&http.Request{}).WithContext(ctx),
9756		autorest.AsJSON(),
9757		autorest.AsGet(),
9758		autorest.WithBaseURL(to.String(grc.NextLink)))
9759}
9760
9761// GeoRegionCollectionPage contains a page of GeoRegion values.
9762type GeoRegionCollectionPage struct {
9763	fn  func(context.Context, GeoRegionCollection) (GeoRegionCollection, error)
9764	grc GeoRegionCollection
9765}
9766
9767// NextWithContext advances to the next page of values.  If there was an error making
9768// the request the page does not advance and the error is returned.
9769func (page *GeoRegionCollectionPage) NextWithContext(ctx context.Context) (err error) {
9770	if tracing.IsEnabled() {
9771		ctx = tracing.StartSpan(ctx, fqdn+"/GeoRegionCollectionPage.NextWithContext")
9772		defer func() {
9773			sc := -1
9774			if page.Response().Response.Response != nil {
9775				sc = page.Response().Response.Response.StatusCode
9776			}
9777			tracing.EndSpan(ctx, sc, err)
9778		}()
9779	}
9780	next, err := page.fn(ctx, page.grc)
9781	if err != nil {
9782		return err
9783	}
9784	page.grc = next
9785	return nil
9786}
9787
9788// Next advances to the next page of values.  If there was an error making
9789// the request the page does not advance and the error is returned.
9790// Deprecated: Use NextWithContext() instead.
9791func (page *GeoRegionCollectionPage) Next() error {
9792	return page.NextWithContext(context.Background())
9793}
9794
9795// NotDone returns true if the page enumeration should be started or is not yet complete.
9796func (page GeoRegionCollectionPage) NotDone() bool {
9797	return !page.grc.IsEmpty()
9798}
9799
9800// Response returns the raw server response from the last page request.
9801func (page GeoRegionCollectionPage) Response() GeoRegionCollection {
9802	return page.grc
9803}
9804
9805// Values returns the slice of values for the current page or nil if there are no values.
9806func (page GeoRegionCollectionPage) Values() []GeoRegion {
9807	if page.grc.IsEmpty() {
9808		return nil
9809	}
9810	return *page.grc.Value
9811}
9812
9813// Creates a new instance of the GeoRegionCollectionPage type.
9814func NewGeoRegionCollectionPage(getNextPage func(context.Context, GeoRegionCollection) (GeoRegionCollection, error)) GeoRegionCollectionPage {
9815	return GeoRegionCollectionPage{fn: getNextPage}
9816}
9817
9818// GeoRegionProperties geoRegion resource specific properties
9819type GeoRegionProperties struct {
9820	// Name - READ-ONLY; Region name.
9821	Name *string `json:"name,omitempty"`
9822	// Description - READ-ONLY; Region description.
9823	Description *string `json:"description,omitempty"`
9824	// DisplayName - READ-ONLY; Display name for region.
9825	DisplayName *string `json:"displayName,omitempty"`
9826}
9827
9828// GlobalCsmSkuDescription a Global SKU Description.
9829type GlobalCsmSkuDescription struct {
9830	// Name - Name of the resource SKU.
9831	Name *string `json:"name,omitempty"`
9832	// Tier - Service Tier of the resource SKU.
9833	Tier *string `json:"tier,omitempty"`
9834	// Size - Size specifier of the resource SKU.
9835	Size *string `json:"size,omitempty"`
9836	// Family - Family code of the resource SKU.
9837	Family *string `json:"family,omitempty"`
9838	// Capacity - Min, max, and default scale values of the SKU.
9839	Capacity *SkuCapacity `json:"capacity,omitempty"`
9840	// Locations - Locations of the SKU.
9841	Locations *[]string `json:"locations,omitempty"`
9842	// Capabilities - Capabilities of the SKU, e.g., is traffic manager enabled?
9843	Capabilities *[]Capability `json:"capabilities,omitempty"`
9844}
9845
9846// HandlerMapping the IIS handler mappings used to define which handler processes HTTP requests with
9847// certain extension.
9848// For example, it is used to configure php-cgi.exe process to handle all HTTP requests with *.php
9849// extension.
9850type HandlerMapping struct {
9851	// Extension - Requests with this extension will be handled using the specified FastCGI application.
9852	Extension *string `json:"extension,omitempty"`
9853	// ScriptProcessor - The absolute path to the FastCGI application.
9854	ScriptProcessor *string `json:"scriptProcessor,omitempty"`
9855	// Arguments - Command-line arguments to be passed to the script processor.
9856	Arguments *string `json:"arguments,omitempty"`
9857}
9858
9859// HostingEnvironmentDeploymentInfo information needed to create resources on an App Service Environment.
9860type HostingEnvironmentDeploymentInfo struct {
9861	// Name - Name of the App Service Environment.
9862	Name *string `json:"name,omitempty"`
9863	// Location - Location of the App Service Environment.
9864	Location *string `json:"location,omitempty"`
9865}
9866
9867// HostingEnvironmentDiagnostics diagnostics for an App Service Environment.
9868type HostingEnvironmentDiagnostics struct {
9869	autorest.Response `json:"-"`
9870	// Name - Name/identifier of the diagnostics.
9871	Name *string `json:"name,omitempty"`
9872	// DiagnosicsOutput - Diagnostics output.
9873	DiagnosicsOutput *string `json:"diagnosicsOutput,omitempty"`
9874}
9875
9876// HostingEnvironmentProfile specification for an App Service Environment to use for this resource.
9877type HostingEnvironmentProfile struct {
9878	// ID - Resource ID of the App Service Environment.
9879	ID *string `json:"id,omitempty"`
9880	// Name - READ-ONLY; Name of the App Service Environment.
9881	Name *string `json:"name,omitempty"`
9882	// Type - READ-ONLY; Resource type of the App Service Environment.
9883	Type *string `json:"type,omitempty"`
9884}
9885
9886// HostName details of a hostname derived from a domain.
9887type HostName struct {
9888	// Name - Name of the hostname.
9889	Name *string `json:"name,omitempty"`
9890	// SiteNames - List of apps the hostname is assigned to. This list will have more than one app only if the hostname is pointing to a Traffic Manager.
9891	SiteNames *[]string `json:"siteNames,omitempty"`
9892	// AzureResourceName - Name of the Azure resource the hostname is assigned to. If it is assigned to a Traffic Manager then it will be the Traffic Manager name otherwise it will be the app name.
9893	AzureResourceName *string `json:"azureResourceName,omitempty"`
9894	// AzureResourceType - Type of the Azure resource the hostname is assigned to. Possible values include: 'Website', 'TrafficManager'
9895	AzureResourceType AzureResourceType `json:"azureResourceType,omitempty"`
9896	// CustomHostNameDNSRecordType - Type of the DNS record. Possible values include: 'CName', 'A'
9897	CustomHostNameDNSRecordType CustomHostNameDNSRecordType `json:"customHostNameDnsRecordType,omitempty"`
9898	// HostNameType - Type of the hostname. Possible values include: 'Verified', 'Managed'
9899	HostNameType HostNameType `json:"hostNameType,omitempty"`
9900}
9901
9902// HostNameBinding a hostname binding object.
9903type HostNameBinding struct {
9904	autorest.Response `json:"-"`
9905	// HostNameBindingProperties - HostNameBinding resource specific properties
9906	*HostNameBindingProperties `json:"properties,omitempty"`
9907	// ID - READ-ONLY; Resource Id.
9908	ID *string `json:"id,omitempty"`
9909	// Name - READ-ONLY; Resource Name.
9910	Name *string `json:"name,omitempty"`
9911	// Kind - Kind of resource.
9912	Kind *string `json:"kind,omitempty"`
9913	// Type - READ-ONLY; Resource type.
9914	Type *string `json:"type,omitempty"`
9915}
9916
9917// MarshalJSON is the custom marshaler for HostNameBinding.
9918func (hnb HostNameBinding) MarshalJSON() ([]byte, error) {
9919	objectMap := make(map[string]interface{})
9920	if hnb.HostNameBindingProperties != nil {
9921		objectMap["properties"] = hnb.HostNameBindingProperties
9922	}
9923	if hnb.Kind != nil {
9924		objectMap["kind"] = hnb.Kind
9925	}
9926	return json.Marshal(objectMap)
9927}
9928
9929// UnmarshalJSON is the custom unmarshaler for HostNameBinding struct.
9930func (hnb *HostNameBinding) UnmarshalJSON(body []byte) error {
9931	var m map[string]*json.RawMessage
9932	err := json.Unmarshal(body, &m)
9933	if err != nil {
9934		return err
9935	}
9936	for k, v := range m {
9937		switch k {
9938		case "properties":
9939			if v != nil {
9940				var hostNameBindingProperties HostNameBindingProperties
9941				err = json.Unmarshal(*v, &hostNameBindingProperties)
9942				if err != nil {
9943					return err
9944				}
9945				hnb.HostNameBindingProperties = &hostNameBindingProperties
9946			}
9947		case "id":
9948			if v != nil {
9949				var ID string
9950				err = json.Unmarshal(*v, &ID)
9951				if err != nil {
9952					return err
9953				}
9954				hnb.ID = &ID
9955			}
9956		case "name":
9957			if v != nil {
9958				var name string
9959				err = json.Unmarshal(*v, &name)
9960				if err != nil {
9961					return err
9962				}
9963				hnb.Name = &name
9964			}
9965		case "kind":
9966			if v != nil {
9967				var kind string
9968				err = json.Unmarshal(*v, &kind)
9969				if err != nil {
9970					return err
9971				}
9972				hnb.Kind = &kind
9973			}
9974		case "type":
9975			if v != nil {
9976				var typeVar string
9977				err = json.Unmarshal(*v, &typeVar)
9978				if err != nil {
9979					return err
9980				}
9981				hnb.Type = &typeVar
9982			}
9983		}
9984	}
9985
9986	return nil
9987}
9988
9989// HostNameBindingCollection collection of hostname bindings.
9990type HostNameBindingCollection struct {
9991	autorest.Response `json:"-"`
9992	// Value - Collection of resources.
9993	Value *[]HostNameBinding `json:"value,omitempty"`
9994	// NextLink - READ-ONLY; Link to next page of resources.
9995	NextLink *string `json:"nextLink,omitempty"`
9996}
9997
9998// HostNameBindingCollectionIterator provides access to a complete listing of HostNameBinding values.
9999type HostNameBindingCollectionIterator struct {
10000	i    int
10001	page HostNameBindingCollectionPage
10002}
10003
10004// NextWithContext advances to the next value.  If there was an error making
10005// the request the iterator does not advance and the error is returned.
10006func (iter *HostNameBindingCollectionIterator) NextWithContext(ctx context.Context) (err error) {
10007	if tracing.IsEnabled() {
10008		ctx = tracing.StartSpan(ctx, fqdn+"/HostNameBindingCollectionIterator.NextWithContext")
10009		defer func() {
10010			sc := -1
10011			if iter.Response().Response.Response != nil {
10012				sc = iter.Response().Response.Response.StatusCode
10013			}
10014			tracing.EndSpan(ctx, sc, err)
10015		}()
10016	}
10017	iter.i++
10018	if iter.i < len(iter.page.Values()) {
10019		return nil
10020	}
10021	err = iter.page.NextWithContext(ctx)
10022	if err != nil {
10023		iter.i--
10024		return err
10025	}
10026	iter.i = 0
10027	return nil
10028}
10029
10030// Next advances to the next value.  If there was an error making
10031// the request the iterator does not advance and the error is returned.
10032// Deprecated: Use NextWithContext() instead.
10033func (iter *HostNameBindingCollectionIterator) Next() error {
10034	return iter.NextWithContext(context.Background())
10035}
10036
10037// NotDone returns true if the enumeration should be started or is not yet complete.
10038func (iter HostNameBindingCollectionIterator) NotDone() bool {
10039	return iter.page.NotDone() && iter.i < len(iter.page.Values())
10040}
10041
10042// Response returns the raw server response from the last page request.
10043func (iter HostNameBindingCollectionIterator) Response() HostNameBindingCollection {
10044	return iter.page.Response()
10045}
10046
10047// Value returns the current value or a zero-initialized value if the
10048// iterator has advanced beyond the end of the collection.
10049func (iter HostNameBindingCollectionIterator) Value() HostNameBinding {
10050	if !iter.page.NotDone() {
10051		return HostNameBinding{}
10052	}
10053	return iter.page.Values()[iter.i]
10054}
10055
10056// Creates a new instance of the HostNameBindingCollectionIterator type.
10057func NewHostNameBindingCollectionIterator(page HostNameBindingCollectionPage) HostNameBindingCollectionIterator {
10058	return HostNameBindingCollectionIterator{page: page}
10059}
10060
10061// IsEmpty returns true if the ListResult contains no values.
10062func (hnbc HostNameBindingCollection) IsEmpty() bool {
10063	return hnbc.Value == nil || len(*hnbc.Value) == 0
10064}
10065
10066// hostNameBindingCollectionPreparer prepares a request to retrieve the next set of results.
10067// It returns nil if no more results exist.
10068func (hnbc HostNameBindingCollection) hostNameBindingCollectionPreparer(ctx context.Context) (*http.Request, error) {
10069	if hnbc.NextLink == nil || len(to.String(hnbc.NextLink)) < 1 {
10070		return nil, nil
10071	}
10072	return autorest.Prepare((&http.Request{}).WithContext(ctx),
10073		autorest.AsJSON(),
10074		autorest.AsGet(),
10075		autorest.WithBaseURL(to.String(hnbc.NextLink)))
10076}
10077
10078// HostNameBindingCollectionPage contains a page of HostNameBinding values.
10079type HostNameBindingCollectionPage struct {
10080	fn   func(context.Context, HostNameBindingCollection) (HostNameBindingCollection, error)
10081	hnbc HostNameBindingCollection
10082}
10083
10084// NextWithContext advances to the next page of values.  If there was an error making
10085// the request the page does not advance and the error is returned.
10086func (page *HostNameBindingCollectionPage) NextWithContext(ctx context.Context) (err error) {
10087	if tracing.IsEnabled() {
10088		ctx = tracing.StartSpan(ctx, fqdn+"/HostNameBindingCollectionPage.NextWithContext")
10089		defer func() {
10090			sc := -1
10091			if page.Response().Response.Response != nil {
10092				sc = page.Response().Response.Response.StatusCode
10093			}
10094			tracing.EndSpan(ctx, sc, err)
10095		}()
10096	}
10097	next, err := page.fn(ctx, page.hnbc)
10098	if err != nil {
10099		return err
10100	}
10101	page.hnbc = next
10102	return nil
10103}
10104
10105// Next advances to the next page of values.  If there was an error making
10106// the request the page does not advance and the error is returned.
10107// Deprecated: Use NextWithContext() instead.
10108func (page *HostNameBindingCollectionPage) Next() error {
10109	return page.NextWithContext(context.Background())
10110}
10111
10112// NotDone returns true if the page enumeration should be started or is not yet complete.
10113func (page HostNameBindingCollectionPage) NotDone() bool {
10114	return !page.hnbc.IsEmpty()
10115}
10116
10117// Response returns the raw server response from the last page request.
10118func (page HostNameBindingCollectionPage) Response() HostNameBindingCollection {
10119	return page.hnbc
10120}
10121
10122// Values returns the slice of values for the current page or nil if there are no values.
10123func (page HostNameBindingCollectionPage) Values() []HostNameBinding {
10124	if page.hnbc.IsEmpty() {
10125		return nil
10126	}
10127	return *page.hnbc.Value
10128}
10129
10130// Creates a new instance of the HostNameBindingCollectionPage type.
10131func NewHostNameBindingCollectionPage(getNextPage func(context.Context, HostNameBindingCollection) (HostNameBindingCollection, error)) HostNameBindingCollectionPage {
10132	return HostNameBindingCollectionPage{fn: getNextPage}
10133}
10134
10135// HostNameBindingProperties hostNameBinding resource specific properties
10136type HostNameBindingProperties struct {
10137	// SiteName - App Service app name.
10138	SiteName *string `json:"siteName,omitempty"`
10139	// DomainID - Fully qualified ARM domain resource URI.
10140	DomainID *string `json:"domainId,omitempty"`
10141	// AzureResourceName - Azure resource name.
10142	AzureResourceName *string `json:"azureResourceName,omitempty"`
10143	// AzureResourceType - Azure resource type. Possible values include: 'Website', 'TrafficManager'
10144	AzureResourceType AzureResourceType `json:"azureResourceType,omitempty"`
10145	// CustomHostNameDNSRecordType - Custom DNS record type. Possible values include: 'CName', 'A'
10146	CustomHostNameDNSRecordType CustomHostNameDNSRecordType `json:"customHostNameDnsRecordType,omitempty"`
10147	// HostNameType - Hostname type. Possible values include: 'Verified', 'Managed'
10148	HostNameType HostNameType `json:"hostNameType,omitempty"`
10149	// SslState - SSL type. Possible values include: 'Disabled', 'SniEnabled', 'IPBasedEnabled'
10150	SslState SslState `json:"sslState,omitempty"`
10151	// Thumbprint - SSL certificate thumbprint
10152	Thumbprint *string `json:"thumbprint,omitempty"`
10153	// VirtualIP - READ-ONLY; Virtual IP address assigned to the hostname if IP based SSL is enabled.
10154	VirtualIP *string `json:"virtualIP,omitempty"`
10155}
10156
10157// HostNameSslState SSL-enabled hostname.
10158type HostNameSslState struct {
10159	// Name - Hostname.
10160	Name *string `json:"name,omitempty"`
10161	// SslState - SSL type. Possible values include: 'Disabled', 'SniEnabled', 'IPBasedEnabled'
10162	SslState SslState `json:"sslState,omitempty"`
10163	// VirtualIP - Virtual IP address assigned to the hostname if IP based SSL is enabled.
10164	VirtualIP *string `json:"virtualIP,omitempty"`
10165	// Thumbprint - SSL certificate thumbprint.
10166	Thumbprint *string `json:"thumbprint,omitempty"`
10167	// ToUpdate - Set to <code>true</code> to update existing hostname.
10168	ToUpdate *bool `json:"toUpdate,omitempty"`
10169	// HostType - Indicates whether the hostname is a standard or repository hostname. Possible values include: 'HostTypeStandard', 'HostTypeRepository'
10170	HostType HostType `json:"hostType,omitempty"`
10171}
10172
10173// HTTPLogsConfig http logs configuration.
10174type HTTPLogsConfig struct {
10175	// FileSystem - Http logs to file system configuration.
10176	FileSystem *FileSystemHTTPLogsConfig `json:"fileSystem,omitempty"`
10177	// AzureBlobStorage - Http logs to azure blob storage configuration.
10178	AzureBlobStorage *AzureBlobStorageHTTPLogsConfig `json:"azureBlobStorage,omitempty"`
10179}
10180
10181// HybridConnection hybrid Connection contract. This is used to configure a Hybrid Connection.
10182type HybridConnection struct {
10183	autorest.Response `json:"-"`
10184	// HybridConnectionProperties - HybridConnection resource specific properties
10185	*HybridConnectionProperties `json:"properties,omitempty"`
10186	// ID - READ-ONLY; Resource Id.
10187	ID *string `json:"id,omitempty"`
10188	// Name - READ-ONLY; Resource Name.
10189	Name *string `json:"name,omitempty"`
10190	// Kind - Kind of resource.
10191	Kind *string `json:"kind,omitempty"`
10192	// Type - READ-ONLY; Resource type.
10193	Type *string `json:"type,omitempty"`
10194}
10195
10196// MarshalJSON is the custom marshaler for HybridConnection.
10197func (hc HybridConnection) MarshalJSON() ([]byte, error) {
10198	objectMap := make(map[string]interface{})
10199	if hc.HybridConnectionProperties != nil {
10200		objectMap["properties"] = hc.HybridConnectionProperties
10201	}
10202	if hc.Kind != nil {
10203		objectMap["kind"] = hc.Kind
10204	}
10205	return json.Marshal(objectMap)
10206}
10207
10208// UnmarshalJSON is the custom unmarshaler for HybridConnection struct.
10209func (hc *HybridConnection) UnmarshalJSON(body []byte) error {
10210	var m map[string]*json.RawMessage
10211	err := json.Unmarshal(body, &m)
10212	if err != nil {
10213		return err
10214	}
10215	for k, v := range m {
10216		switch k {
10217		case "properties":
10218			if v != nil {
10219				var hybridConnectionProperties HybridConnectionProperties
10220				err = json.Unmarshal(*v, &hybridConnectionProperties)
10221				if err != nil {
10222					return err
10223				}
10224				hc.HybridConnectionProperties = &hybridConnectionProperties
10225			}
10226		case "id":
10227			if v != nil {
10228				var ID string
10229				err = json.Unmarshal(*v, &ID)
10230				if err != nil {
10231					return err
10232				}
10233				hc.ID = &ID
10234			}
10235		case "name":
10236			if v != nil {
10237				var name string
10238				err = json.Unmarshal(*v, &name)
10239				if err != nil {
10240					return err
10241				}
10242				hc.Name = &name
10243			}
10244		case "kind":
10245			if v != nil {
10246				var kind string
10247				err = json.Unmarshal(*v, &kind)
10248				if err != nil {
10249					return err
10250				}
10251				hc.Kind = &kind
10252			}
10253		case "type":
10254			if v != nil {
10255				var typeVar string
10256				err = json.Unmarshal(*v, &typeVar)
10257				if err != nil {
10258					return err
10259				}
10260				hc.Type = &typeVar
10261			}
10262		}
10263	}
10264
10265	return nil
10266}
10267
10268// HybridConnectionCollection collection of hostname bindings.
10269type HybridConnectionCollection struct {
10270	autorest.Response `json:"-"`
10271	// Value - Collection of resources.
10272	Value *[]HybridConnection `json:"value,omitempty"`
10273	// NextLink - READ-ONLY; Link to next page of resources.
10274	NextLink *string `json:"nextLink,omitempty"`
10275}
10276
10277// HybridConnectionCollectionIterator provides access to a complete listing of HybridConnection values.
10278type HybridConnectionCollectionIterator struct {
10279	i    int
10280	page HybridConnectionCollectionPage
10281}
10282
10283// NextWithContext advances to the next value.  If there was an error making
10284// the request the iterator does not advance and the error is returned.
10285func (iter *HybridConnectionCollectionIterator) NextWithContext(ctx context.Context) (err error) {
10286	if tracing.IsEnabled() {
10287		ctx = tracing.StartSpan(ctx, fqdn+"/HybridConnectionCollectionIterator.NextWithContext")
10288		defer func() {
10289			sc := -1
10290			if iter.Response().Response.Response != nil {
10291				sc = iter.Response().Response.Response.StatusCode
10292			}
10293			tracing.EndSpan(ctx, sc, err)
10294		}()
10295	}
10296	iter.i++
10297	if iter.i < len(iter.page.Values()) {
10298		return nil
10299	}
10300	err = iter.page.NextWithContext(ctx)
10301	if err != nil {
10302		iter.i--
10303		return err
10304	}
10305	iter.i = 0
10306	return nil
10307}
10308
10309// Next advances to the next value.  If there was an error making
10310// the request the iterator does not advance and the error is returned.
10311// Deprecated: Use NextWithContext() instead.
10312func (iter *HybridConnectionCollectionIterator) Next() error {
10313	return iter.NextWithContext(context.Background())
10314}
10315
10316// NotDone returns true if the enumeration should be started or is not yet complete.
10317func (iter HybridConnectionCollectionIterator) NotDone() bool {
10318	return iter.page.NotDone() && iter.i < len(iter.page.Values())
10319}
10320
10321// Response returns the raw server response from the last page request.
10322func (iter HybridConnectionCollectionIterator) Response() HybridConnectionCollection {
10323	return iter.page.Response()
10324}
10325
10326// Value returns the current value or a zero-initialized value if the
10327// iterator has advanced beyond the end of the collection.
10328func (iter HybridConnectionCollectionIterator) Value() HybridConnection {
10329	if !iter.page.NotDone() {
10330		return HybridConnection{}
10331	}
10332	return iter.page.Values()[iter.i]
10333}
10334
10335// Creates a new instance of the HybridConnectionCollectionIterator type.
10336func NewHybridConnectionCollectionIterator(page HybridConnectionCollectionPage) HybridConnectionCollectionIterator {
10337	return HybridConnectionCollectionIterator{page: page}
10338}
10339
10340// IsEmpty returns true if the ListResult contains no values.
10341func (hcc HybridConnectionCollection) IsEmpty() bool {
10342	return hcc.Value == nil || len(*hcc.Value) == 0
10343}
10344
10345// hybridConnectionCollectionPreparer prepares a request to retrieve the next set of results.
10346// It returns nil if no more results exist.
10347func (hcc HybridConnectionCollection) hybridConnectionCollectionPreparer(ctx context.Context) (*http.Request, error) {
10348	if hcc.NextLink == nil || len(to.String(hcc.NextLink)) < 1 {
10349		return nil, nil
10350	}
10351	return autorest.Prepare((&http.Request{}).WithContext(ctx),
10352		autorest.AsJSON(),
10353		autorest.AsGet(),
10354		autorest.WithBaseURL(to.String(hcc.NextLink)))
10355}
10356
10357// HybridConnectionCollectionPage contains a page of HybridConnection values.
10358type HybridConnectionCollectionPage struct {
10359	fn  func(context.Context, HybridConnectionCollection) (HybridConnectionCollection, error)
10360	hcc HybridConnectionCollection
10361}
10362
10363// NextWithContext advances to the next page of values.  If there was an error making
10364// the request the page does not advance and the error is returned.
10365func (page *HybridConnectionCollectionPage) NextWithContext(ctx context.Context) (err error) {
10366	if tracing.IsEnabled() {
10367		ctx = tracing.StartSpan(ctx, fqdn+"/HybridConnectionCollectionPage.NextWithContext")
10368		defer func() {
10369			sc := -1
10370			if page.Response().Response.Response != nil {
10371				sc = page.Response().Response.Response.StatusCode
10372			}
10373			tracing.EndSpan(ctx, sc, err)
10374		}()
10375	}
10376	next, err := page.fn(ctx, page.hcc)
10377	if err != nil {
10378		return err
10379	}
10380	page.hcc = next
10381	return nil
10382}
10383
10384// Next advances to the next page of values.  If there was an error making
10385// the request the page does not advance and the error is returned.
10386// Deprecated: Use NextWithContext() instead.
10387func (page *HybridConnectionCollectionPage) Next() error {
10388	return page.NextWithContext(context.Background())
10389}
10390
10391// NotDone returns true if the page enumeration should be started or is not yet complete.
10392func (page HybridConnectionCollectionPage) NotDone() bool {
10393	return !page.hcc.IsEmpty()
10394}
10395
10396// Response returns the raw server response from the last page request.
10397func (page HybridConnectionCollectionPage) Response() HybridConnectionCollection {
10398	return page.hcc
10399}
10400
10401// Values returns the slice of values for the current page or nil if there are no values.
10402func (page HybridConnectionCollectionPage) Values() []HybridConnection {
10403	if page.hcc.IsEmpty() {
10404		return nil
10405	}
10406	return *page.hcc.Value
10407}
10408
10409// Creates a new instance of the HybridConnectionCollectionPage type.
10410func NewHybridConnectionCollectionPage(getNextPage func(context.Context, HybridConnectionCollection) (HybridConnectionCollection, error)) HybridConnectionCollectionPage {
10411	return HybridConnectionCollectionPage{fn: getNextPage}
10412}
10413
10414// HybridConnectionKey hybrid Connection key contract. This has the send key name and value for a Hybrid
10415// Connection.
10416type HybridConnectionKey struct {
10417	autorest.Response `json:"-"`
10418	// HybridConnectionKeyProperties - HybridConnectionKey resource specific properties
10419	*HybridConnectionKeyProperties `json:"properties,omitempty"`
10420	// ID - READ-ONLY; Resource Id.
10421	ID *string `json:"id,omitempty"`
10422	// Name - READ-ONLY; Resource Name.
10423	Name *string `json:"name,omitempty"`
10424	// Kind - Kind of resource.
10425	Kind *string `json:"kind,omitempty"`
10426	// Type - READ-ONLY; Resource type.
10427	Type *string `json:"type,omitempty"`
10428}
10429
10430// MarshalJSON is the custom marshaler for HybridConnectionKey.
10431func (hck HybridConnectionKey) MarshalJSON() ([]byte, error) {
10432	objectMap := make(map[string]interface{})
10433	if hck.HybridConnectionKeyProperties != nil {
10434		objectMap["properties"] = hck.HybridConnectionKeyProperties
10435	}
10436	if hck.Kind != nil {
10437		objectMap["kind"] = hck.Kind
10438	}
10439	return json.Marshal(objectMap)
10440}
10441
10442// UnmarshalJSON is the custom unmarshaler for HybridConnectionKey struct.
10443func (hck *HybridConnectionKey) UnmarshalJSON(body []byte) error {
10444	var m map[string]*json.RawMessage
10445	err := json.Unmarshal(body, &m)
10446	if err != nil {
10447		return err
10448	}
10449	for k, v := range m {
10450		switch k {
10451		case "properties":
10452			if v != nil {
10453				var hybridConnectionKeyProperties HybridConnectionKeyProperties
10454				err = json.Unmarshal(*v, &hybridConnectionKeyProperties)
10455				if err != nil {
10456					return err
10457				}
10458				hck.HybridConnectionKeyProperties = &hybridConnectionKeyProperties
10459			}
10460		case "id":
10461			if v != nil {
10462				var ID string
10463				err = json.Unmarshal(*v, &ID)
10464				if err != nil {
10465					return err
10466				}
10467				hck.ID = &ID
10468			}
10469		case "name":
10470			if v != nil {
10471				var name string
10472				err = json.Unmarshal(*v, &name)
10473				if err != nil {
10474					return err
10475				}
10476				hck.Name = &name
10477			}
10478		case "kind":
10479			if v != nil {
10480				var kind string
10481				err = json.Unmarshal(*v, &kind)
10482				if err != nil {
10483					return err
10484				}
10485				hck.Kind = &kind
10486			}
10487		case "type":
10488			if v != nil {
10489				var typeVar string
10490				err = json.Unmarshal(*v, &typeVar)
10491				if err != nil {
10492					return err
10493				}
10494				hck.Type = &typeVar
10495			}
10496		}
10497	}
10498
10499	return nil
10500}
10501
10502// HybridConnectionKeyProperties hybridConnectionKey resource specific properties
10503type HybridConnectionKeyProperties struct {
10504	// SendKeyName - READ-ONLY; The name of the send key.
10505	SendKeyName *string `json:"sendKeyName,omitempty"`
10506	// SendKeyValue - READ-ONLY; The value of the send key.
10507	SendKeyValue *string `json:"sendKeyValue,omitempty"`
10508}
10509
10510// HybridConnectionLimits hybrid Connection limits contract. This is used to return the plan limits of
10511// Hybrid Connections.
10512type HybridConnectionLimits struct {
10513	autorest.Response `json:"-"`
10514	// HybridConnectionLimitsProperties - HybridConnectionLimits resource specific properties
10515	*HybridConnectionLimitsProperties `json:"properties,omitempty"`
10516	// ID - READ-ONLY; Resource Id.
10517	ID *string `json:"id,omitempty"`
10518	// Name - READ-ONLY; Resource Name.
10519	Name *string `json:"name,omitempty"`
10520	// Kind - Kind of resource.
10521	Kind *string `json:"kind,omitempty"`
10522	// Type - READ-ONLY; Resource type.
10523	Type *string `json:"type,omitempty"`
10524}
10525
10526// MarshalJSON is the custom marshaler for HybridConnectionLimits.
10527func (hcl HybridConnectionLimits) MarshalJSON() ([]byte, error) {
10528	objectMap := make(map[string]interface{})
10529	if hcl.HybridConnectionLimitsProperties != nil {
10530		objectMap["properties"] = hcl.HybridConnectionLimitsProperties
10531	}
10532	if hcl.Kind != nil {
10533		objectMap["kind"] = hcl.Kind
10534	}
10535	return json.Marshal(objectMap)
10536}
10537
10538// UnmarshalJSON is the custom unmarshaler for HybridConnectionLimits struct.
10539func (hcl *HybridConnectionLimits) UnmarshalJSON(body []byte) error {
10540	var m map[string]*json.RawMessage
10541	err := json.Unmarshal(body, &m)
10542	if err != nil {
10543		return err
10544	}
10545	for k, v := range m {
10546		switch k {
10547		case "properties":
10548			if v != nil {
10549				var hybridConnectionLimitsProperties HybridConnectionLimitsProperties
10550				err = json.Unmarshal(*v, &hybridConnectionLimitsProperties)
10551				if err != nil {
10552					return err
10553				}
10554				hcl.HybridConnectionLimitsProperties = &hybridConnectionLimitsProperties
10555			}
10556		case "id":
10557			if v != nil {
10558				var ID string
10559				err = json.Unmarshal(*v, &ID)
10560				if err != nil {
10561					return err
10562				}
10563				hcl.ID = &ID
10564			}
10565		case "name":
10566			if v != nil {
10567				var name string
10568				err = json.Unmarshal(*v, &name)
10569				if err != nil {
10570					return err
10571				}
10572				hcl.Name = &name
10573			}
10574		case "kind":
10575			if v != nil {
10576				var kind string
10577				err = json.Unmarshal(*v, &kind)
10578				if err != nil {
10579					return err
10580				}
10581				hcl.Kind = &kind
10582			}
10583		case "type":
10584			if v != nil {
10585				var typeVar string
10586				err = json.Unmarshal(*v, &typeVar)
10587				if err != nil {
10588					return err
10589				}
10590				hcl.Type = &typeVar
10591			}
10592		}
10593	}
10594
10595	return nil
10596}
10597
10598// HybridConnectionLimitsProperties hybridConnectionLimits resource specific properties
10599type HybridConnectionLimitsProperties struct {
10600	// Current - READ-ONLY; The current number of Hybrid Connections.
10601	Current *int32 `json:"current,omitempty"`
10602	// Maximum - READ-ONLY; The maximum number of Hybrid Connections allowed.
10603	Maximum *int32 `json:"maximum,omitempty"`
10604}
10605
10606// HybridConnectionProperties hybridConnection resource specific properties
10607type HybridConnectionProperties struct {
10608	// ServiceBusNamespace - The name of the Service Bus namespace.
10609	ServiceBusNamespace *string `json:"serviceBusNamespace,omitempty"`
10610	// RelayName - The name of the Service Bus relay.
10611	RelayName *string `json:"relayName,omitempty"`
10612	// RelayArmURI - The ARM URI to the Service Bus relay.
10613	RelayArmURI *string `json:"relayArmUri,omitempty"`
10614	// Hostname - The hostname of the endpoint.
10615	Hostname *string `json:"hostname,omitempty"`
10616	// Port - The port of the endpoint.
10617	Port *int32 `json:"port,omitempty"`
10618	// SendKeyName - The name of the Service Bus key which has Send permissions. This is used to authenticate to Service Bus.
10619	SendKeyName *string `json:"sendKeyName,omitempty"`
10620	// SendKeyValue - The value of the Service Bus key. This is used to authenticate to Service Bus. In ARM this key will not be returned
10621	// normally, use the POST /listKeys API instead.
10622	SendKeyValue *string `json:"sendKeyValue,omitempty"`
10623	// ServiceBusSuffix - The suffix for the service bus endpoint. By default this is .servicebus.windows.net
10624	ServiceBusSuffix *string `json:"serviceBusSuffix,omitempty"`
10625}
10626
10627// Identifier a domain specific resource identifier.
10628type Identifier struct {
10629	autorest.Response `json:"-"`
10630	// IdentifierProperties - Identifier resource specific properties
10631	*IdentifierProperties `json:"properties,omitempty"`
10632	// ID - READ-ONLY; Resource Id.
10633	ID *string `json:"id,omitempty"`
10634	// Name - READ-ONLY; Resource Name.
10635	Name *string `json:"name,omitempty"`
10636	// Kind - Kind of resource.
10637	Kind *string `json:"kind,omitempty"`
10638	// Type - READ-ONLY; Resource type.
10639	Type *string `json:"type,omitempty"`
10640}
10641
10642// MarshalJSON is the custom marshaler for Identifier.
10643func (i Identifier) MarshalJSON() ([]byte, error) {
10644	objectMap := make(map[string]interface{})
10645	if i.IdentifierProperties != nil {
10646		objectMap["properties"] = i.IdentifierProperties
10647	}
10648	if i.Kind != nil {
10649		objectMap["kind"] = i.Kind
10650	}
10651	return json.Marshal(objectMap)
10652}
10653
10654// UnmarshalJSON is the custom unmarshaler for Identifier struct.
10655func (i *Identifier) UnmarshalJSON(body []byte) error {
10656	var m map[string]*json.RawMessage
10657	err := json.Unmarshal(body, &m)
10658	if err != nil {
10659		return err
10660	}
10661	for k, v := range m {
10662		switch k {
10663		case "properties":
10664			if v != nil {
10665				var identifierProperties IdentifierProperties
10666				err = json.Unmarshal(*v, &identifierProperties)
10667				if err != nil {
10668					return err
10669				}
10670				i.IdentifierProperties = &identifierProperties
10671			}
10672		case "id":
10673			if v != nil {
10674				var ID string
10675				err = json.Unmarshal(*v, &ID)
10676				if err != nil {
10677					return err
10678				}
10679				i.ID = &ID
10680			}
10681		case "name":
10682			if v != nil {
10683				var name string
10684				err = json.Unmarshal(*v, &name)
10685				if err != nil {
10686					return err
10687				}
10688				i.Name = &name
10689			}
10690		case "kind":
10691			if v != nil {
10692				var kind string
10693				err = json.Unmarshal(*v, &kind)
10694				if err != nil {
10695					return err
10696				}
10697				i.Kind = &kind
10698			}
10699		case "type":
10700			if v != nil {
10701				var typeVar string
10702				err = json.Unmarshal(*v, &typeVar)
10703				if err != nil {
10704					return err
10705				}
10706				i.Type = &typeVar
10707			}
10708		}
10709	}
10710
10711	return nil
10712}
10713
10714// IdentifierCollection collection of identifiers.
10715type IdentifierCollection struct {
10716	autorest.Response `json:"-"`
10717	// Value - Collection of resources.
10718	Value *[]Identifier `json:"value,omitempty"`
10719	// NextLink - READ-ONLY; Link to next page of resources.
10720	NextLink *string `json:"nextLink,omitempty"`
10721}
10722
10723// IdentifierCollectionIterator provides access to a complete listing of Identifier values.
10724type IdentifierCollectionIterator struct {
10725	i    int
10726	page IdentifierCollectionPage
10727}
10728
10729// NextWithContext advances to the next value.  If there was an error making
10730// the request the iterator does not advance and the error is returned.
10731func (iter *IdentifierCollectionIterator) NextWithContext(ctx context.Context) (err error) {
10732	if tracing.IsEnabled() {
10733		ctx = tracing.StartSpan(ctx, fqdn+"/IdentifierCollectionIterator.NextWithContext")
10734		defer func() {
10735			sc := -1
10736			if iter.Response().Response.Response != nil {
10737				sc = iter.Response().Response.Response.StatusCode
10738			}
10739			tracing.EndSpan(ctx, sc, err)
10740		}()
10741	}
10742	iter.i++
10743	if iter.i < len(iter.page.Values()) {
10744		return nil
10745	}
10746	err = iter.page.NextWithContext(ctx)
10747	if err != nil {
10748		iter.i--
10749		return err
10750	}
10751	iter.i = 0
10752	return nil
10753}
10754
10755// Next advances to the next value.  If there was an error making
10756// the request the iterator does not advance and the error is returned.
10757// Deprecated: Use NextWithContext() instead.
10758func (iter *IdentifierCollectionIterator) Next() error {
10759	return iter.NextWithContext(context.Background())
10760}
10761
10762// NotDone returns true if the enumeration should be started or is not yet complete.
10763func (iter IdentifierCollectionIterator) NotDone() bool {
10764	return iter.page.NotDone() && iter.i < len(iter.page.Values())
10765}
10766
10767// Response returns the raw server response from the last page request.
10768func (iter IdentifierCollectionIterator) Response() IdentifierCollection {
10769	return iter.page.Response()
10770}
10771
10772// Value returns the current value or a zero-initialized value if the
10773// iterator has advanced beyond the end of the collection.
10774func (iter IdentifierCollectionIterator) Value() Identifier {
10775	if !iter.page.NotDone() {
10776		return Identifier{}
10777	}
10778	return iter.page.Values()[iter.i]
10779}
10780
10781// Creates a new instance of the IdentifierCollectionIterator type.
10782func NewIdentifierCollectionIterator(page IdentifierCollectionPage) IdentifierCollectionIterator {
10783	return IdentifierCollectionIterator{page: page}
10784}
10785
10786// IsEmpty returns true if the ListResult contains no values.
10787func (ic IdentifierCollection) IsEmpty() bool {
10788	return ic.Value == nil || len(*ic.Value) == 0
10789}
10790
10791// identifierCollectionPreparer prepares a request to retrieve the next set of results.
10792// It returns nil if no more results exist.
10793func (ic IdentifierCollection) identifierCollectionPreparer(ctx context.Context) (*http.Request, error) {
10794	if ic.NextLink == nil || len(to.String(ic.NextLink)) < 1 {
10795		return nil, nil
10796	}
10797	return autorest.Prepare((&http.Request{}).WithContext(ctx),
10798		autorest.AsJSON(),
10799		autorest.AsGet(),
10800		autorest.WithBaseURL(to.String(ic.NextLink)))
10801}
10802
10803// IdentifierCollectionPage contains a page of Identifier values.
10804type IdentifierCollectionPage struct {
10805	fn func(context.Context, IdentifierCollection) (IdentifierCollection, error)
10806	ic IdentifierCollection
10807}
10808
10809// NextWithContext advances to the next page of values.  If there was an error making
10810// the request the page does not advance and the error is returned.
10811func (page *IdentifierCollectionPage) NextWithContext(ctx context.Context) (err error) {
10812	if tracing.IsEnabled() {
10813		ctx = tracing.StartSpan(ctx, fqdn+"/IdentifierCollectionPage.NextWithContext")
10814		defer func() {
10815			sc := -1
10816			if page.Response().Response.Response != nil {
10817				sc = page.Response().Response.Response.StatusCode
10818			}
10819			tracing.EndSpan(ctx, sc, err)
10820		}()
10821	}
10822	next, err := page.fn(ctx, page.ic)
10823	if err != nil {
10824		return err
10825	}
10826	page.ic = next
10827	return nil
10828}
10829
10830// Next advances to the next page of values.  If there was an error making
10831// the request the page does not advance and the error is returned.
10832// Deprecated: Use NextWithContext() instead.
10833func (page *IdentifierCollectionPage) Next() error {
10834	return page.NextWithContext(context.Background())
10835}
10836
10837// NotDone returns true if the page enumeration should be started or is not yet complete.
10838func (page IdentifierCollectionPage) NotDone() bool {
10839	return !page.ic.IsEmpty()
10840}
10841
10842// Response returns the raw server response from the last page request.
10843func (page IdentifierCollectionPage) Response() IdentifierCollection {
10844	return page.ic
10845}
10846
10847// Values returns the slice of values for the current page or nil if there are no values.
10848func (page IdentifierCollectionPage) Values() []Identifier {
10849	if page.ic.IsEmpty() {
10850		return nil
10851	}
10852	return *page.ic.Value
10853}
10854
10855// Creates a new instance of the IdentifierCollectionPage type.
10856func NewIdentifierCollectionPage(getNextPage func(context.Context, IdentifierCollection) (IdentifierCollection, error)) IdentifierCollectionPage {
10857	return IdentifierCollectionPage{fn: getNextPage}
10858}
10859
10860// IdentifierProperties identifier resource specific properties
10861type IdentifierProperties struct {
10862	// ID - String representation of the identity.
10863	ID *string `json:"id,omitempty"`
10864}
10865
10866// IPSecurityRestriction IP security restriction on an app.
10867type IPSecurityRestriction struct {
10868	// IPAddress - IP address the security restriction is valid for.
10869	IPAddress *string `json:"ipAddress,omitempty"`
10870	// SubnetMask - Subnet mask for the range of IP addresses the restriction is valid for.
10871	SubnetMask *string `json:"subnetMask,omitempty"`
10872}
10873
10874// Job web Job Information.
10875type Job struct {
10876	autorest.Response `json:"-"`
10877	// JobProperties - WebJob resource specific properties
10878	*JobProperties `json:"properties,omitempty"`
10879	// ID - READ-ONLY; Resource Id.
10880	ID *string `json:"id,omitempty"`
10881	// Name - READ-ONLY; Resource Name.
10882	Name *string `json:"name,omitempty"`
10883	// Kind - Kind of resource.
10884	Kind *string `json:"kind,omitempty"`
10885	// Type - READ-ONLY; Resource type.
10886	Type *string `json:"type,omitempty"`
10887}
10888
10889// MarshalJSON is the custom marshaler for Job.
10890func (j Job) MarshalJSON() ([]byte, error) {
10891	objectMap := make(map[string]interface{})
10892	if j.JobProperties != nil {
10893		objectMap["properties"] = j.JobProperties
10894	}
10895	if j.Kind != nil {
10896		objectMap["kind"] = j.Kind
10897	}
10898	return json.Marshal(objectMap)
10899}
10900
10901// UnmarshalJSON is the custom unmarshaler for Job struct.
10902func (j *Job) UnmarshalJSON(body []byte) error {
10903	var m map[string]*json.RawMessage
10904	err := json.Unmarshal(body, &m)
10905	if err != nil {
10906		return err
10907	}
10908	for k, v := range m {
10909		switch k {
10910		case "properties":
10911			if v != nil {
10912				var jobProperties JobProperties
10913				err = json.Unmarshal(*v, &jobProperties)
10914				if err != nil {
10915					return err
10916				}
10917				j.JobProperties = &jobProperties
10918			}
10919		case "id":
10920			if v != nil {
10921				var ID string
10922				err = json.Unmarshal(*v, &ID)
10923				if err != nil {
10924					return err
10925				}
10926				j.ID = &ID
10927			}
10928		case "name":
10929			if v != nil {
10930				var name string
10931				err = json.Unmarshal(*v, &name)
10932				if err != nil {
10933					return err
10934				}
10935				j.Name = &name
10936			}
10937		case "kind":
10938			if v != nil {
10939				var kind string
10940				err = json.Unmarshal(*v, &kind)
10941				if err != nil {
10942					return err
10943				}
10944				j.Kind = &kind
10945			}
10946		case "type":
10947			if v != nil {
10948				var typeVar string
10949				err = json.Unmarshal(*v, &typeVar)
10950				if err != nil {
10951					return err
10952				}
10953				j.Type = &typeVar
10954			}
10955		}
10956	}
10957
10958	return nil
10959}
10960
10961// JobCollection collection of Kudu web job information elements.
10962type JobCollection struct {
10963	autorest.Response `json:"-"`
10964	// Value - Collection of resources.
10965	Value *[]Job `json:"value,omitempty"`
10966	// NextLink - READ-ONLY; Link to next page of resources.
10967	NextLink *string `json:"nextLink,omitempty"`
10968}
10969
10970// JobCollectionIterator provides access to a complete listing of Job values.
10971type JobCollectionIterator struct {
10972	i    int
10973	page JobCollectionPage
10974}
10975
10976// NextWithContext advances to the next value.  If there was an error making
10977// the request the iterator does not advance and the error is returned.
10978func (iter *JobCollectionIterator) NextWithContext(ctx context.Context) (err error) {
10979	if tracing.IsEnabled() {
10980		ctx = tracing.StartSpan(ctx, fqdn+"/JobCollectionIterator.NextWithContext")
10981		defer func() {
10982			sc := -1
10983			if iter.Response().Response.Response != nil {
10984				sc = iter.Response().Response.Response.StatusCode
10985			}
10986			tracing.EndSpan(ctx, sc, err)
10987		}()
10988	}
10989	iter.i++
10990	if iter.i < len(iter.page.Values()) {
10991		return nil
10992	}
10993	err = iter.page.NextWithContext(ctx)
10994	if err != nil {
10995		iter.i--
10996		return err
10997	}
10998	iter.i = 0
10999	return nil
11000}
11001
11002// Next advances to the next value.  If there was an error making
11003// the request the iterator does not advance and the error is returned.
11004// Deprecated: Use NextWithContext() instead.
11005func (iter *JobCollectionIterator) Next() error {
11006	return iter.NextWithContext(context.Background())
11007}
11008
11009// NotDone returns true if the enumeration should be started or is not yet complete.
11010func (iter JobCollectionIterator) NotDone() bool {
11011	return iter.page.NotDone() && iter.i < len(iter.page.Values())
11012}
11013
11014// Response returns the raw server response from the last page request.
11015func (iter JobCollectionIterator) Response() JobCollection {
11016	return iter.page.Response()
11017}
11018
11019// Value returns the current value or a zero-initialized value if the
11020// iterator has advanced beyond the end of the collection.
11021func (iter JobCollectionIterator) Value() Job {
11022	if !iter.page.NotDone() {
11023		return Job{}
11024	}
11025	return iter.page.Values()[iter.i]
11026}
11027
11028// Creates a new instance of the JobCollectionIterator type.
11029func NewJobCollectionIterator(page JobCollectionPage) JobCollectionIterator {
11030	return JobCollectionIterator{page: page}
11031}
11032
11033// IsEmpty returns true if the ListResult contains no values.
11034func (jc JobCollection) IsEmpty() bool {
11035	return jc.Value == nil || len(*jc.Value) == 0
11036}
11037
11038// jobCollectionPreparer prepares a request to retrieve the next set of results.
11039// It returns nil if no more results exist.
11040func (jc JobCollection) jobCollectionPreparer(ctx context.Context) (*http.Request, error) {
11041	if jc.NextLink == nil || len(to.String(jc.NextLink)) < 1 {
11042		return nil, nil
11043	}
11044	return autorest.Prepare((&http.Request{}).WithContext(ctx),
11045		autorest.AsJSON(),
11046		autorest.AsGet(),
11047		autorest.WithBaseURL(to.String(jc.NextLink)))
11048}
11049
11050// JobCollectionPage contains a page of Job values.
11051type JobCollectionPage struct {
11052	fn func(context.Context, JobCollection) (JobCollection, error)
11053	jc JobCollection
11054}
11055
11056// NextWithContext advances to the next page of values.  If there was an error making
11057// the request the page does not advance and the error is returned.
11058func (page *JobCollectionPage) NextWithContext(ctx context.Context) (err error) {
11059	if tracing.IsEnabled() {
11060		ctx = tracing.StartSpan(ctx, fqdn+"/JobCollectionPage.NextWithContext")
11061		defer func() {
11062			sc := -1
11063			if page.Response().Response.Response != nil {
11064				sc = page.Response().Response.Response.StatusCode
11065			}
11066			tracing.EndSpan(ctx, sc, err)
11067		}()
11068	}
11069	next, err := page.fn(ctx, page.jc)
11070	if err != nil {
11071		return err
11072	}
11073	page.jc = next
11074	return nil
11075}
11076
11077// Next advances to the next page of values.  If there was an error making
11078// the request the page does not advance and the error is returned.
11079// Deprecated: Use NextWithContext() instead.
11080func (page *JobCollectionPage) Next() error {
11081	return page.NextWithContext(context.Background())
11082}
11083
11084// NotDone returns true if the page enumeration should be started or is not yet complete.
11085func (page JobCollectionPage) NotDone() bool {
11086	return !page.jc.IsEmpty()
11087}
11088
11089// Response returns the raw server response from the last page request.
11090func (page JobCollectionPage) Response() JobCollection {
11091	return page.jc
11092}
11093
11094// Values returns the slice of values for the current page or nil if there are no values.
11095func (page JobCollectionPage) Values() []Job {
11096	if page.jc.IsEmpty() {
11097		return nil
11098	}
11099	return *page.jc.Value
11100}
11101
11102// Creates a new instance of the JobCollectionPage type.
11103func NewJobCollectionPage(getNextPage func(context.Context, JobCollection) (JobCollection, error)) JobCollectionPage {
11104	return JobCollectionPage{fn: getNextPage}
11105}
11106
11107// JobProperties webJob resource specific properties
11108type JobProperties struct {
11109	// Name - READ-ONLY; Job name. Used as job identifier in ARM resource URI.
11110	Name *string `json:"name,omitempty"`
11111	// RunCommand - Run command.
11112	RunCommand *string `json:"runCommand,omitempty"`
11113	// URL - Job URL.
11114	URL *string `json:"url,omitempty"`
11115	// ExtraInfoURL - Extra Info URL.
11116	ExtraInfoURL *string `json:"extraInfoUrl,omitempty"`
11117	// JobType - Job type. Possible values include: 'Continuous', 'Triggered'
11118	JobType JobType `json:"jobType,omitempty"`
11119	// Error - Error information.
11120	Error *string `json:"error,omitempty"`
11121	// UsingSdk - Using SDK?
11122	UsingSdk *bool `json:"usingSdk,omitempty"`
11123	// Settings - Job settings.
11124	Settings map[string]interface{} `json:"settings"`
11125}
11126
11127// MarshalJSON is the custom marshaler for JobProperties.
11128func (j JobProperties) MarshalJSON() ([]byte, error) {
11129	objectMap := make(map[string]interface{})
11130	if j.RunCommand != nil {
11131		objectMap["runCommand"] = j.RunCommand
11132	}
11133	if j.URL != nil {
11134		objectMap["url"] = j.URL
11135	}
11136	if j.ExtraInfoURL != nil {
11137		objectMap["extraInfoUrl"] = j.ExtraInfoURL
11138	}
11139	if j.JobType != "" {
11140		objectMap["jobType"] = j.JobType
11141	}
11142	if j.Error != nil {
11143		objectMap["error"] = j.Error
11144	}
11145	if j.UsingSdk != nil {
11146		objectMap["usingSdk"] = j.UsingSdk
11147	}
11148	if j.Settings != nil {
11149		objectMap["settings"] = j.Settings
11150	}
11151	return json.Marshal(objectMap)
11152}
11153
11154// ListCapability ...
11155type ListCapability struct {
11156	autorest.Response `json:"-"`
11157	Value             *[]Capability `json:"value,omitempty"`
11158}
11159
11160// ListCertificateEmail ...
11161type ListCertificateEmail struct {
11162	autorest.Response `json:"-"`
11163	Value             *[]CertificateEmail `json:"value,omitempty"`
11164}
11165
11166// ListCertificateOrderAction ...
11167type ListCertificateOrderAction struct {
11168	autorest.Response `json:"-"`
11169	Value             *[]CertificateOrderAction `json:"value,omitempty"`
11170}
11171
11172// ListHostingEnvironmentDiagnostics ...
11173type ListHostingEnvironmentDiagnostics struct {
11174	autorest.Response `json:"-"`
11175	Value             *[]HostingEnvironmentDiagnostics `json:"value,omitempty"`
11176}
11177
11178// ListOperation ...
11179type ListOperation struct {
11180	autorest.Response `json:"-"`
11181	Value             *[]Operation `json:"value,omitempty"`
11182}
11183
11184// ListVnetInfo ...
11185type ListVnetInfo struct {
11186	autorest.Response `json:"-"`
11187	Value             *[]VnetInfo `json:"value,omitempty"`
11188}
11189
11190// ListVnetRoute ...
11191type ListVnetRoute struct {
11192	autorest.Response `json:"-"`
11193	Value             *[]VnetRoute `json:"value,omitempty"`
11194}
11195
11196// LocalizableString localizable string object containing the name and a localized value.
11197type LocalizableString struct {
11198	// Value - Non-localized name.
11199	Value *string `json:"value,omitempty"`
11200	// LocalizedValue - Localized name.
11201	LocalizedValue *string `json:"localizedValue,omitempty"`
11202}
11203
11204// ManagedServiceIdentity managed service identity.
11205type ManagedServiceIdentity struct {
11206	// Type - Type of managed service identity. Possible values include: 'SystemAssigned'
11207	Type ManagedServiceIdentityType `json:"type,omitempty"`
11208	// TenantID - READ-ONLY; Tenant of managed service identity.
11209	TenantID *string `json:"tenantId,omitempty"`
11210	// PrincipalID - READ-ONLY; Principal Id of managed service identity.
11211	PrincipalID *string `json:"principalId,omitempty"`
11212}
11213
11214// MetricAvailabilily metric availability and retention.
11215type MetricAvailabilily struct {
11216	// TimeGrain - Time grain.
11217	TimeGrain *string `json:"timeGrain,omitempty"`
11218	// Retention - Retention period for the current time grain.
11219	Retention *string `json:"retention,omitempty"`
11220}
11221
11222// MetricAvailability retention policy of a resource metric.
11223type MetricAvailability struct {
11224	TimeGrain    *string `json:"timeGrain,omitempty"`
11225	BlobDuration *string `json:"blobDuration,omitempty"`
11226}
11227
11228// MetricDefinition metadata for a metric.
11229type MetricDefinition struct {
11230	autorest.Response `json:"-"`
11231	// MetricDefinitionProperties - MetricDefinition resource specific properties
11232	*MetricDefinitionProperties `json:"properties,omitempty"`
11233	// ID - READ-ONLY; Resource Id.
11234	ID *string `json:"id,omitempty"`
11235	// Name - READ-ONLY; Resource Name.
11236	Name *string `json:"name,omitempty"`
11237	// Kind - Kind of resource.
11238	Kind *string `json:"kind,omitempty"`
11239	// Type - READ-ONLY; Resource type.
11240	Type *string `json:"type,omitempty"`
11241}
11242
11243// MarshalJSON is the custom marshaler for MetricDefinition.
11244func (md MetricDefinition) MarshalJSON() ([]byte, error) {
11245	objectMap := make(map[string]interface{})
11246	if md.MetricDefinitionProperties != nil {
11247		objectMap["properties"] = md.MetricDefinitionProperties
11248	}
11249	if md.Kind != nil {
11250		objectMap["kind"] = md.Kind
11251	}
11252	return json.Marshal(objectMap)
11253}
11254
11255// UnmarshalJSON is the custom unmarshaler for MetricDefinition struct.
11256func (md *MetricDefinition) UnmarshalJSON(body []byte) error {
11257	var m map[string]*json.RawMessage
11258	err := json.Unmarshal(body, &m)
11259	if err != nil {
11260		return err
11261	}
11262	for k, v := range m {
11263		switch k {
11264		case "properties":
11265			if v != nil {
11266				var metricDefinitionProperties MetricDefinitionProperties
11267				err = json.Unmarshal(*v, &metricDefinitionProperties)
11268				if err != nil {
11269					return err
11270				}
11271				md.MetricDefinitionProperties = &metricDefinitionProperties
11272			}
11273		case "id":
11274			if v != nil {
11275				var ID string
11276				err = json.Unmarshal(*v, &ID)
11277				if err != nil {
11278					return err
11279				}
11280				md.ID = &ID
11281			}
11282		case "name":
11283			if v != nil {
11284				var name string
11285				err = json.Unmarshal(*v, &name)
11286				if err != nil {
11287					return err
11288				}
11289				md.Name = &name
11290			}
11291		case "kind":
11292			if v != nil {
11293				var kind string
11294				err = json.Unmarshal(*v, &kind)
11295				if err != nil {
11296					return err
11297				}
11298				md.Kind = &kind
11299			}
11300		case "type":
11301			if v != nil {
11302				var typeVar string
11303				err = json.Unmarshal(*v, &typeVar)
11304				if err != nil {
11305					return err
11306				}
11307				md.Type = &typeVar
11308			}
11309		}
11310	}
11311
11312	return nil
11313}
11314
11315// MetricDefinitionProperties metricDefinition resource specific properties
11316type MetricDefinitionProperties struct {
11317	// Name - READ-ONLY; Name of the metric.
11318	Name *string `json:"name,omitempty"`
11319	// Unit - READ-ONLY; Unit of the metric.
11320	Unit *string `json:"unit,omitempty"`
11321	// PrimaryAggregationType - READ-ONLY; Primary aggregation type.
11322	PrimaryAggregationType *string `json:"primaryAggregationType,omitempty"`
11323	// MetricAvailabilities - READ-ONLY; List of time grains supported for the metric together with retention period.
11324	MetricAvailabilities *[]MetricAvailabilily `json:"metricAvailabilities,omitempty"`
11325	// DisplayName - READ-ONLY; Friendly name shown in the UI.
11326	DisplayName *string `json:"displayName,omitempty"`
11327}
11328
11329// MetricSpecification definition of a single resource metric.
11330type MetricSpecification struct {
11331	Name                             *string               `json:"name,omitempty"`
11332	DisplayName                      *string               `json:"displayName,omitempty"`
11333	DisplayDescription               *string               `json:"displayDescription,omitempty"`
11334	Unit                             *string               `json:"unit,omitempty"`
11335	AggregationType                  *string               `json:"aggregationType,omitempty"`
11336	SupportsInstanceLevelAggregation *bool                 `json:"supportsInstanceLevelAggregation,omitempty"`
11337	EnableRegionalMdmAccount         *bool                 `json:"enableRegionalMdmAccount,omitempty"`
11338	SourceMdmAccount                 *string               `json:"sourceMdmAccount,omitempty"`
11339	SourceMdmNamespace               *string               `json:"sourceMdmNamespace,omitempty"`
11340	MetricFilterPattern              *string               `json:"metricFilterPattern,omitempty"`
11341	FillGapWithZero                  *bool                 `json:"fillGapWithZero,omitempty"`
11342	IsInternal                       *bool                 `json:"isInternal,omitempty"`
11343	Dimensions                       *[]Dimension          `json:"dimensions,omitempty"`
11344	Category                         *string               `json:"category,omitempty"`
11345	Availabilities                   *[]MetricAvailability `json:"availabilities,omitempty"`
11346}
11347
11348// MigrateMySQLRequest mySQL migration request.
11349type MigrateMySQLRequest struct {
11350	// MigrateMySQLRequestProperties - MigrateMySqlRequest resource specific properties
11351	*MigrateMySQLRequestProperties `json:"properties,omitempty"`
11352	// ID - READ-ONLY; Resource Id.
11353	ID *string `json:"id,omitempty"`
11354	// Name - READ-ONLY; Resource Name.
11355	Name *string `json:"name,omitempty"`
11356	// Kind - Kind of resource.
11357	Kind *string `json:"kind,omitempty"`
11358	// Type - READ-ONLY; Resource type.
11359	Type *string `json:"type,omitempty"`
11360}
11361
11362// MarshalJSON is the custom marshaler for MigrateMySQLRequest.
11363func (mmsr MigrateMySQLRequest) MarshalJSON() ([]byte, error) {
11364	objectMap := make(map[string]interface{})
11365	if mmsr.MigrateMySQLRequestProperties != nil {
11366		objectMap["properties"] = mmsr.MigrateMySQLRequestProperties
11367	}
11368	if mmsr.Kind != nil {
11369		objectMap["kind"] = mmsr.Kind
11370	}
11371	return json.Marshal(objectMap)
11372}
11373
11374// UnmarshalJSON is the custom unmarshaler for MigrateMySQLRequest struct.
11375func (mmsr *MigrateMySQLRequest) UnmarshalJSON(body []byte) error {
11376	var m map[string]*json.RawMessage
11377	err := json.Unmarshal(body, &m)
11378	if err != nil {
11379		return err
11380	}
11381	for k, v := range m {
11382		switch k {
11383		case "properties":
11384			if v != nil {
11385				var migrateMySQLRequestProperties MigrateMySQLRequestProperties
11386				err = json.Unmarshal(*v, &migrateMySQLRequestProperties)
11387				if err != nil {
11388					return err
11389				}
11390				mmsr.MigrateMySQLRequestProperties = &migrateMySQLRequestProperties
11391			}
11392		case "id":
11393			if v != nil {
11394				var ID string
11395				err = json.Unmarshal(*v, &ID)
11396				if err != nil {
11397					return err
11398				}
11399				mmsr.ID = &ID
11400			}
11401		case "name":
11402			if v != nil {
11403				var name string
11404				err = json.Unmarshal(*v, &name)
11405				if err != nil {
11406					return err
11407				}
11408				mmsr.Name = &name
11409			}
11410		case "kind":
11411			if v != nil {
11412				var kind string
11413				err = json.Unmarshal(*v, &kind)
11414				if err != nil {
11415					return err
11416				}
11417				mmsr.Kind = &kind
11418			}
11419		case "type":
11420			if v != nil {
11421				var typeVar string
11422				err = json.Unmarshal(*v, &typeVar)
11423				if err != nil {
11424					return err
11425				}
11426				mmsr.Type = &typeVar
11427			}
11428		}
11429	}
11430
11431	return nil
11432}
11433
11434// MigrateMySQLRequestProperties migrateMySqlRequest resource specific properties
11435type MigrateMySQLRequestProperties struct {
11436	// ConnectionString - Connection string to the remote MySQL database.
11437	ConnectionString *string `json:"connectionString,omitempty"`
11438	// MigrationType - The type of migration operation to be done. Possible values include: 'LocalToRemote', 'RemoteToLocal'
11439	MigrationType MySQLMigrationType `json:"migrationType,omitempty"`
11440}
11441
11442// MigrateMySQLStatus mySQL migration status.
11443type MigrateMySQLStatus struct {
11444	autorest.Response `json:"-"`
11445	// MigrateMySQLStatusProperties - MigrateMySqlStatus resource specific properties
11446	*MigrateMySQLStatusProperties `json:"properties,omitempty"`
11447	// ID - READ-ONLY; Resource Id.
11448	ID *string `json:"id,omitempty"`
11449	// Name - READ-ONLY; Resource Name.
11450	Name *string `json:"name,omitempty"`
11451	// Kind - Kind of resource.
11452	Kind *string `json:"kind,omitempty"`
11453	// Type - READ-ONLY; Resource type.
11454	Type *string `json:"type,omitempty"`
11455}
11456
11457// MarshalJSON is the custom marshaler for MigrateMySQLStatus.
11458func (mmss MigrateMySQLStatus) MarshalJSON() ([]byte, error) {
11459	objectMap := make(map[string]interface{})
11460	if mmss.MigrateMySQLStatusProperties != nil {
11461		objectMap["properties"] = mmss.MigrateMySQLStatusProperties
11462	}
11463	if mmss.Kind != nil {
11464		objectMap["kind"] = mmss.Kind
11465	}
11466	return json.Marshal(objectMap)
11467}
11468
11469// UnmarshalJSON is the custom unmarshaler for MigrateMySQLStatus struct.
11470func (mmss *MigrateMySQLStatus) UnmarshalJSON(body []byte) error {
11471	var m map[string]*json.RawMessage
11472	err := json.Unmarshal(body, &m)
11473	if err != nil {
11474		return err
11475	}
11476	for k, v := range m {
11477		switch k {
11478		case "properties":
11479			if v != nil {
11480				var migrateMySQLStatusProperties MigrateMySQLStatusProperties
11481				err = json.Unmarshal(*v, &migrateMySQLStatusProperties)
11482				if err != nil {
11483					return err
11484				}
11485				mmss.MigrateMySQLStatusProperties = &migrateMySQLStatusProperties
11486			}
11487		case "id":
11488			if v != nil {
11489				var ID string
11490				err = json.Unmarshal(*v, &ID)
11491				if err != nil {
11492					return err
11493				}
11494				mmss.ID = &ID
11495			}
11496		case "name":
11497			if v != nil {
11498				var name string
11499				err = json.Unmarshal(*v, &name)
11500				if err != nil {
11501					return err
11502				}
11503				mmss.Name = &name
11504			}
11505		case "kind":
11506			if v != nil {
11507				var kind string
11508				err = json.Unmarshal(*v, &kind)
11509				if err != nil {
11510					return err
11511				}
11512				mmss.Kind = &kind
11513			}
11514		case "type":
11515			if v != nil {
11516				var typeVar string
11517				err = json.Unmarshal(*v, &typeVar)
11518				if err != nil {
11519					return err
11520				}
11521				mmss.Type = &typeVar
11522			}
11523		}
11524	}
11525
11526	return nil
11527}
11528
11529// MigrateMySQLStatusProperties migrateMySqlStatus resource specific properties
11530type MigrateMySQLStatusProperties struct {
11531	// MigrationOperationStatus - READ-ONLY; Status of the migration task. Possible values include: 'OperationStatusInProgress', 'OperationStatusFailed', 'OperationStatusSucceeded', 'OperationStatusTimedOut', 'OperationStatusCreated'
11532	MigrationOperationStatus OperationStatus `json:"migrationOperationStatus,omitempty"`
11533	// OperationID - READ-ONLY; Operation ID for the migration task.
11534	OperationID *string `json:"operationId,omitempty"`
11535	// LocalMySQLEnabled - READ-ONLY; True if the web app has in app MySql enabled
11536	LocalMySQLEnabled *bool `json:"localMySqlEnabled,omitempty"`
11537}
11538
11539// MSDeploy mSDeploy ARM PUT information
11540type MSDeploy struct {
11541	// MSDeployCore - Core resource properties
11542	*MSDeployCore `json:"properties,omitempty"`
11543	// ID - READ-ONLY; Resource Id.
11544	ID *string `json:"id,omitempty"`
11545	// Name - READ-ONLY; Resource Name.
11546	Name *string `json:"name,omitempty"`
11547	// Kind - Kind of resource.
11548	Kind *string `json:"kind,omitempty"`
11549	// Type - READ-ONLY; Resource type.
11550	Type *string `json:"type,omitempty"`
11551}
11552
11553// MarshalJSON is the custom marshaler for MSDeploy.
11554func (md MSDeploy) MarshalJSON() ([]byte, error) {
11555	objectMap := make(map[string]interface{})
11556	if md.MSDeployCore != nil {
11557		objectMap["properties"] = md.MSDeployCore
11558	}
11559	if md.Kind != nil {
11560		objectMap["kind"] = md.Kind
11561	}
11562	return json.Marshal(objectMap)
11563}
11564
11565// UnmarshalJSON is the custom unmarshaler for MSDeploy struct.
11566func (md *MSDeploy) UnmarshalJSON(body []byte) error {
11567	var m map[string]*json.RawMessage
11568	err := json.Unmarshal(body, &m)
11569	if err != nil {
11570		return err
11571	}
11572	for k, v := range m {
11573		switch k {
11574		case "properties":
11575			if v != nil {
11576				var mSDeployCore MSDeployCore
11577				err = json.Unmarshal(*v, &mSDeployCore)
11578				if err != nil {
11579					return err
11580				}
11581				md.MSDeployCore = &mSDeployCore
11582			}
11583		case "id":
11584			if v != nil {
11585				var ID string
11586				err = json.Unmarshal(*v, &ID)
11587				if err != nil {
11588					return err
11589				}
11590				md.ID = &ID
11591			}
11592		case "name":
11593			if v != nil {
11594				var name string
11595				err = json.Unmarshal(*v, &name)
11596				if err != nil {
11597					return err
11598				}
11599				md.Name = &name
11600			}
11601		case "kind":
11602			if v != nil {
11603				var kind string
11604				err = json.Unmarshal(*v, &kind)
11605				if err != nil {
11606					return err
11607				}
11608				md.Kind = &kind
11609			}
11610		case "type":
11611			if v != nil {
11612				var typeVar string
11613				err = json.Unmarshal(*v, &typeVar)
11614				if err != nil {
11615					return err
11616				}
11617				md.Type = &typeVar
11618			}
11619		}
11620	}
11621
11622	return nil
11623}
11624
11625// MSDeployCore mSDeploy ARM PUT core information
11626type MSDeployCore struct {
11627	// PackageURI - Package URI
11628	PackageURI *string `json:"packageUri,omitempty"`
11629	// ConnectionString - SQL Connection String
11630	ConnectionString *string `json:"connectionString,omitempty"`
11631	// DbType - Database Type
11632	DbType *string `json:"dbType,omitempty"`
11633	// SetParametersXMLFileURI - URI of MSDeploy Parameters file. Must not be set if SetParameters is used.
11634	SetParametersXMLFileURI *string `json:"setParametersXmlFileUri,omitempty"`
11635	// SetParameters - MSDeploy Parameters. Must not be set if SetParametersXmlFileUri is used.
11636	SetParameters map[string]*string `json:"setParameters"`
11637	// SkipAppData - Controls whether the MSDeploy operation skips the App_Data directory.
11638	// If set to <code>true</code>, the existing App_Data directory on the destination
11639	// will not be deleted, and any App_Data directory in the source will be ignored.
11640	// Setting is <code>false</code> by default.
11641	SkipAppData *bool `json:"skipAppData,omitempty"`
11642	// AppOffline - Sets the AppOffline rule while the MSDeploy operation executes.
11643	// Setting is <code>false</code> by default.
11644	AppOffline *bool `json:"appOffline,omitempty"`
11645}
11646
11647// MarshalJSON is the custom marshaler for MSDeployCore.
11648func (mdc MSDeployCore) MarshalJSON() ([]byte, error) {
11649	objectMap := make(map[string]interface{})
11650	if mdc.PackageURI != nil {
11651		objectMap["packageUri"] = mdc.PackageURI
11652	}
11653	if mdc.ConnectionString != nil {
11654		objectMap["connectionString"] = mdc.ConnectionString
11655	}
11656	if mdc.DbType != nil {
11657		objectMap["dbType"] = mdc.DbType
11658	}
11659	if mdc.SetParametersXMLFileURI != nil {
11660		objectMap["setParametersXmlFileUri"] = mdc.SetParametersXMLFileURI
11661	}
11662	if mdc.SetParameters != nil {
11663		objectMap["setParameters"] = mdc.SetParameters
11664	}
11665	if mdc.SkipAppData != nil {
11666		objectMap["skipAppData"] = mdc.SkipAppData
11667	}
11668	if mdc.AppOffline != nil {
11669		objectMap["appOffline"] = mdc.AppOffline
11670	}
11671	return json.Marshal(objectMap)
11672}
11673
11674// MSDeployLog mSDeploy log
11675type MSDeployLog struct {
11676	autorest.Response `json:"-"`
11677	// MSDeployLogProperties - MSDeployLog resource specific properties
11678	*MSDeployLogProperties `json:"properties,omitempty"`
11679	// ID - READ-ONLY; Resource Id.
11680	ID *string `json:"id,omitempty"`
11681	// Name - READ-ONLY; Resource Name.
11682	Name *string `json:"name,omitempty"`
11683	// Kind - Kind of resource.
11684	Kind *string `json:"kind,omitempty"`
11685	// Type - READ-ONLY; Resource type.
11686	Type *string `json:"type,omitempty"`
11687}
11688
11689// MarshalJSON is the custom marshaler for MSDeployLog.
11690func (mdl MSDeployLog) MarshalJSON() ([]byte, error) {
11691	objectMap := make(map[string]interface{})
11692	if mdl.MSDeployLogProperties != nil {
11693		objectMap["properties"] = mdl.MSDeployLogProperties
11694	}
11695	if mdl.Kind != nil {
11696		objectMap["kind"] = mdl.Kind
11697	}
11698	return json.Marshal(objectMap)
11699}
11700
11701// UnmarshalJSON is the custom unmarshaler for MSDeployLog struct.
11702func (mdl *MSDeployLog) UnmarshalJSON(body []byte) error {
11703	var m map[string]*json.RawMessage
11704	err := json.Unmarshal(body, &m)
11705	if err != nil {
11706		return err
11707	}
11708	for k, v := range m {
11709		switch k {
11710		case "properties":
11711			if v != nil {
11712				var mSDeployLogProperties MSDeployLogProperties
11713				err = json.Unmarshal(*v, &mSDeployLogProperties)
11714				if err != nil {
11715					return err
11716				}
11717				mdl.MSDeployLogProperties = &mSDeployLogProperties
11718			}
11719		case "id":
11720			if v != nil {
11721				var ID string
11722				err = json.Unmarshal(*v, &ID)
11723				if err != nil {
11724					return err
11725				}
11726				mdl.ID = &ID
11727			}
11728		case "name":
11729			if v != nil {
11730				var name string
11731				err = json.Unmarshal(*v, &name)
11732				if err != nil {
11733					return err
11734				}
11735				mdl.Name = &name
11736			}
11737		case "kind":
11738			if v != nil {
11739				var kind string
11740				err = json.Unmarshal(*v, &kind)
11741				if err != nil {
11742					return err
11743				}
11744				mdl.Kind = &kind
11745			}
11746		case "type":
11747			if v != nil {
11748				var typeVar string
11749				err = json.Unmarshal(*v, &typeVar)
11750				if err != nil {
11751					return err
11752				}
11753				mdl.Type = &typeVar
11754			}
11755		}
11756	}
11757
11758	return nil
11759}
11760
11761// MSDeployLogEntry mSDeploy log entry
11762type MSDeployLogEntry struct {
11763	// Time - READ-ONLY; Timestamp of log entry
11764	Time *date.Time `json:"time,omitempty"`
11765	// Type - READ-ONLY; Log entry type. Possible values include: 'MSDeployLogEntryTypeMessage', 'MSDeployLogEntryTypeWarning', 'MSDeployLogEntryTypeError'
11766	Type MSDeployLogEntryType `json:"type,omitempty"`
11767	// Message - READ-ONLY; Log entry message
11768	Message *string `json:"message,omitempty"`
11769}
11770
11771// MSDeployLogProperties mSDeployLog resource specific properties
11772type MSDeployLogProperties struct {
11773	// Entries - READ-ONLY; List of log entry messages
11774	Entries *[]MSDeployLogEntry `json:"entries,omitempty"`
11775}
11776
11777// MSDeployStatus mSDeploy ARM response
11778type MSDeployStatus struct {
11779	autorest.Response `json:"-"`
11780	// MSDeployStatusProperties - MSDeployStatus resource specific properties
11781	*MSDeployStatusProperties `json:"properties,omitempty"`
11782	// ID - READ-ONLY; Resource Id.
11783	ID *string `json:"id,omitempty"`
11784	// Name - READ-ONLY; Resource Name.
11785	Name *string `json:"name,omitempty"`
11786	// Kind - Kind of resource.
11787	Kind *string `json:"kind,omitempty"`
11788	// Type - READ-ONLY; Resource type.
11789	Type *string `json:"type,omitempty"`
11790}
11791
11792// MarshalJSON is the custom marshaler for MSDeployStatus.
11793func (mds MSDeployStatus) MarshalJSON() ([]byte, error) {
11794	objectMap := make(map[string]interface{})
11795	if mds.MSDeployStatusProperties != nil {
11796		objectMap["properties"] = mds.MSDeployStatusProperties
11797	}
11798	if mds.Kind != nil {
11799		objectMap["kind"] = mds.Kind
11800	}
11801	return json.Marshal(objectMap)
11802}
11803
11804// UnmarshalJSON is the custom unmarshaler for MSDeployStatus struct.
11805func (mds *MSDeployStatus) UnmarshalJSON(body []byte) error {
11806	var m map[string]*json.RawMessage
11807	err := json.Unmarshal(body, &m)
11808	if err != nil {
11809		return err
11810	}
11811	for k, v := range m {
11812		switch k {
11813		case "properties":
11814			if v != nil {
11815				var mSDeployStatusProperties MSDeployStatusProperties
11816				err = json.Unmarshal(*v, &mSDeployStatusProperties)
11817				if err != nil {
11818					return err
11819				}
11820				mds.MSDeployStatusProperties = &mSDeployStatusProperties
11821			}
11822		case "id":
11823			if v != nil {
11824				var ID string
11825				err = json.Unmarshal(*v, &ID)
11826				if err != nil {
11827					return err
11828				}
11829				mds.ID = &ID
11830			}
11831		case "name":
11832			if v != nil {
11833				var name string
11834				err = json.Unmarshal(*v, &name)
11835				if err != nil {
11836					return err
11837				}
11838				mds.Name = &name
11839			}
11840		case "kind":
11841			if v != nil {
11842				var kind string
11843				err = json.Unmarshal(*v, &kind)
11844				if err != nil {
11845					return err
11846				}
11847				mds.Kind = &kind
11848			}
11849		case "type":
11850			if v != nil {
11851				var typeVar string
11852				err = json.Unmarshal(*v, &typeVar)
11853				if err != nil {
11854					return err
11855				}
11856				mds.Type = &typeVar
11857			}
11858		}
11859	}
11860
11861	return nil
11862}
11863
11864// MSDeployStatusProperties mSDeployStatus resource specific properties
11865type MSDeployStatusProperties struct {
11866	// Deployer - READ-ONLY; Username of deployer
11867	Deployer *string `json:"deployer,omitempty"`
11868	// ProvisioningState - READ-ONLY; Provisioning state. Possible values include: 'MSDeployProvisioningStateAccepted', 'MSDeployProvisioningStateRunning', 'MSDeployProvisioningStateSucceeded', 'MSDeployProvisioningStateFailed', 'MSDeployProvisioningStateCanceled'
11869	ProvisioningState MSDeployProvisioningState `json:"provisioningState,omitempty"`
11870	// StartTime - READ-ONLY; Start time of deploy operation
11871	StartTime *date.Time `json:"startTime,omitempty"`
11872	// EndTime - READ-ONLY; End time of deploy operation
11873	EndTime *date.Time `json:"endTime,omitempty"`
11874	// Complete - READ-ONLY; Whether the deployment operation has completed
11875	Complete *bool `json:"complete,omitempty"`
11876}
11877
11878// NameIdentifier identifies an object.
11879type NameIdentifier struct {
11880	// Name - Name of the object.
11881	Name *string `json:"name,omitempty"`
11882}
11883
11884// NameIdentifierCollection collection of domain name identifiers.
11885type NameIdentifierCollection struct {
11886	autorest.Response `json:"-"`
11887	// Value - Collection of resources.
11888	Value *[]NameIdentifier `json:"value,omitempty"`
11889	// NextLink - READ-ONLY; Link to next page of resources.
11890	NextLink *string `json:"nextLink,omitempty"`
11891}
11892
11893// NameIdentifierCollectionIterator provides access to a complete listing of NameIdentifier values.
11894type NameIdentifierCollectionIterator struct {
11895	i    int
11896	page NameIdentifierCollectionPage
11897}
11898
11899// NextWithContext advances to the next value.  If there was an error making
11900// the request the iterator does not advance and the error is returned.
11901func (iter *NameIdentifierCollectionIterator) NextWithContext(ctx context.Context) (err error) {
11902	if tracing.IsEnabled() {
11903		ctx = tracing.StartSpan(ctx, fqdn+"/NameIdentifierCollectionIterator.NextWithContext")
11904		defer func() {
11905			sc := -1
11906			if iter.Response().Response.Response != nil {
11907				sc = iter.Response().Response.Response.StatusCode
11908			}
11909			tracing.EndSpan(ctx, sc, err)
11910		}()
11911	}
11912	iter.i++
11913	if iter.i < len(iter.page.Values()) {
11914		return nil
11915	}
11916	err = iter.page.NextWithContext(ctx)
11917	if err != nil {
11918		iter.i--
11919		return err
11920	}
11921	iter.i = 0
11922	return nil
11923}
11924
11925// Next advances to the next value.  If there was an error making
11926// the request the iterator does not advance and the error is returned.
11927// Deprecated: Use NextWithContext() instead.
11928func (iter *NameIdentifierCollectionIterator) Next() error {
11929	return iter.NextWithContext(context.Background())
11930}
11931
11932// NotDone returns true if the enumeration should be started or is not yet complete.
11933func (iter NameIdentifierCollectionIterator) NotDone() bool {
11934	return iter.page.NotDone() && iter.i < len(iter.page.Values())
11935}
11936
11937// Response returns the raw server response from the last page request.
11938func (iter NameIdentifierCollectionIterator) Response() NameIdentifierCollection {
11939	return iter.page.Response()
11940}
11941
11942// Value returns the current value or a zero-initialized value if the
11943// iterator has advanced beyond the end of the collection.
11944func (iter NameIdentifierCollectionIterator) Value() NameIdentifier {
11945	if !iter.page.NotDone() {
11946		return NameIdentifier{}
11947	}
11948	return iter.page.Values()[iter.i]
11949}
11950
11951// Creates a new instance of the NameIdentifierCollectionIterator type.
11952func NewNameIdentifierCollectionIterator(page NameIdentifierCollectionPage) NameIdentifierCollectionIterator {
11953	return NameIdentifierCollectionIterator{page: page}
11954}
11955
11956// IsEmpty returns true if the ListResult contains no values.
11957func (nic NameIdentifierCollection) IsEmpty() bool {
11958	return nic.Value == nil || len(*nic.Value) == 0
11959}
11960
11961// nameIdentifierCollectionPreparer prepares a request to retrieve the next set of results.
11962// It returns nil if no more results exist.
11963func (nic NameIdentifierCollection) nameIdentifierCollectionPreparer(ctx context.Context) (*http.Request, error) {
11964	if nic.NextLink == nil || len(to.String(nic.NextLink)) < 1 {
11965		return nil, nil
11966	}
11967	return autorest.Prepare((&http.Request{}).WithContext(ctx),
11968		autorest.AsJSON(),
11969		autorest.AsGet(),
11970		autorest.WithBaseURL(to.String(nic.NextLink)))
11971}
11972
11973// NameIdentifierCollectionPage contains a page of NameIdentifier values.
11974type NameIdentifierCollectionPage struct {
11975	fn  func(context.Context, NameIdentifierCollection) (NameIdentifierCollection, error)
11976	nic NameIdentifierCollection
11977}
11978
11979// NextWithContext advances to the next page of values.  If there was an error making
11980// the request the page does not advance and the error is returned.
11981func (page *NameIdentifierCollectionPage) NextWithContext(ctx context.Context) (err error) {
11982	if tracing.IsEnabled() {
11983		ctx = tracing.StartSpan(ctx, fqdn+"/NameIdentifierCollectionPage.NextWithContext")
11984		defer func() {
11985			sc := -1
11986			if page.Response().Response.Response != nil {
11987				sc = page.Response().Response.Response.StatusCode
11988			}
11989			tracing.EndSpan(ctx, sc, err)
11990		}()
11991	}
11992	next, err := page.fn(ctx, page.nic)
11993	if err != nil {
11994		return err
11995	}
11996	page.nic = next
11997	return nil
11998}
11999
12000// Next advances to the next page of values.  If there was an error making
12001// the request the page does not advance and the error is returned.
12002// Deprecated: Use NextWithContext() instead.
12003func (page *NameIdentifierCollectionPage) Next() error {
12004	return page.NextWithContext(context.Background())
12005}
12006
12007// NotDone returns true if the page enumeration should be started or is not yet complete.
12008func (page NameIdentifierCollectionPage) NotDone() bool {
12009	return !page.nic.IsEmpty()
12010}
12011
12012// Response returns the raw server response from the last page request.
12013func (page NameIdentifierCollectionPage) Response() NameIdentifierCollection {
12014	return page.nic
12015}
12016
12017// Values returns the slice of values for the current page or nil if there are no values.
12018func (page NameIdentifierCollectionPage) Values() []NameIdentifier {
12019	if page.nic.IsEmpty() {
12020		return nil
12021	}
12022	return *page.nic.Value
12023}
12024
12025// Creates a new instance of the NameIdentifierCollectionPage type.
12026func NewNameIdentifierCollectionPage(getNextPage func(context.Context, NameIdentifierCollection) (NameIdentifierCollection, error)) NameIdentifierCollectionPage {
12027	return NameIdentifierCollectionPage{fn: getNextPage}
12028}
12029
12030// NameValuePair name value pair.
12031type NameValuePair struct {
12032	// Name - Pair name.
12033	Name *string `json:"name,omitempty"`
12034	// Value - Pair value.
12035	Value *string `json:"value,omitempty"`
12036}
12037
12038// NetworkAccessControlEntry network access control entry.
12039type NetworkAccessControlEntry struct {
12040	// Action - Action object. Possible values include: 'Permit', 'Deny'
12041	Action AccessControlEntryAction `json:"action,omitempty"`
12042	// Description - Description of network access control entry.
12043	Description *string `json:"description,omitempty"`
12044	// Order - Order of precedence.
12045	Order *int32 `json:"order,omitempty"`
12046	// RemoteSubnet - Remote subnet.
12047	RemoteSubnet *string `json:"remoteSubnet,omitempty"`
12048}
12049
12050// NetworkFeatures full view of network features for an app (presently VNET integration and Hybrid
12051// Connections).
12052type NetworkFeatures struct {
12053	autorest.Response `json:"-"`
12054	// NetworkFeaturesProperties - NetworkFeatures resource specific properties
12055	*NetworkFeaturesProperties `json:"properties,omitempty"`
12056	// ID - READ-ONLY; Resource Id.
12057	ID *string `json:"id,omitempty"`
12058	// Name - READ-ONLY; Resource Name.
12059	Name *string `json:"name,omitempty"`
12060	// Kind - Kind of resource.
12061	Kind *string `json:"kind,omitempty"`
12062	// Type - READ-ONLY; Resource type.
12063	Type *string `json:"type,omitempty"`
12064}
12065
12066// MarshalJSON is the custom marshaler for NetworkFeatures.
12067func (nf NetworkFeatures) MarshalJSON() ([]byte, error) {
12068	objectMap := make(map[string]interface{})
12069	if nf.NetworkFeaturesProperties != nil {
12070		objectMap["properties"] = nf.NetworkFeaturesProperties
12071	}
12072	if nf.Kind != nil {
12073		objectMap["kind"] = nf.Kind
12074	}
12075	return json.Marshal(objectMap)
12076}
12077
12078// UnmarshalJSON is the custom unmarshaler for NetworkFeatures struct.
12079func (nf *NetworkFeatures) UnmarshalJSON(body []byte) error {
12080	var m map[string]*json.RawMessage
12081	err := json.Unmarshal(body, &m)
12082	if err != nil {
12083		return err
12084	}
12085	for k, v := range m {
12086		switch k {
12087		case "properties":
12088			if v != nil {
12089				var networkFeaturesProperties NetworkFeaturesProperties
12090				err = json.Unmarshal(*v, &networkFeaturesProperties)
12091				if err != nil {
12092					return err
12093				}
12094				nf.NetworkFeaturesProperties = &networkFeaturesProperties
12095			}
12096		case "id":
12097			if v != nil {
12098				var ID string
12099				err = json.Unmarshal(*v, &ID)
12100				if err != nil {
12101					return err
12102				}
12103				nf.ID = &ID
12104			}
12105		case "name":
12106			if v != nil {
12107				var name string
12108				err = json.Unmarshal(*v, &name)
12109				if err != nil {
12110					return err
12111				}
12112				nf.Name = &name
12113			}
12114		case "kind":
12115			if v != nil {
12116				var kind string
12117				err = json.Unmarshal(*v, &kind)
12118				if err != nil {
12119					return err
12120				}
12121				nf.Kind = &kind
12122			}
12123		case "type":
12124			if v != nil {
12125				var typeVar string
12126				err = json.Unmarshal(*v, &typeVar)
12127				if err != nil {
12128					return err
12129				}
12130				nf.Type = &typeVar
12131			}
12132		}
12133	}
12134
12135	return nil
12136}
12137
12138// NetworkFeaturesProperties networkFeatures resource specific properties
12139type NetworkFeaturesProperties struct {
12140	// VirtualNetworkName - READ-ONLY; The Virtual Network name.
12141	VirtualNetworkName *string `json:"virtualNetworkName,omitempty"`
12142	// VirtualNetworkConnection - READ-ONLY; The Virtual Network summary view.
12143	VirtualNetworkConnection *VnetInfo `json:"virtualNetworkConnection,omitempty"`
12144	// HybridConnections - READ-ONLY; The Hybrid Connections summary view.
12145	HybridConnections *[]RelayServiceConnectionEntity `json:"hybridConnections,omitempty"`
12146	// HybridConnectionsV2 - READ-ONLY; The Hybrid Connection V2 (Service Bus) view.
12147	HybridConnectionsV2 *[]HybridConnection `json:"hybridConnectionsV2,omitempty"`
12148}
12149
12150// Operation an operation on a resource.
12151type Operation struct {
12152	autorest.Response `json:"-"`
12153	// ID - Operation ID.
12154	ID *string `json:"id,omitempty"`
12155	// Name - Operation name.
12156	Name *string `json:"name,omitempty"`
12157	// Status - The current status of the operation. Possible values include: 'OperationStatusInProgress', 'OperationStatusFailed', 'OperationStatusSucceeded', 'OperationStatusTimedOut', 'OperationStatusCreated'
12158	Status OperationStatus `json:"status,omitempty"`
12159	// Errors - Any errors associate with the operation.
12160	Errors *[]ErrorEntity `json:"errors,omitempty"`
12161	// CreatedTime - Time when operation has started.
12162	CreatedTime *date.Time `json:"createdTime,omitempty"`
12163	// ModifiedTime - Time when operation has been updated.
12164	ModifiedTime *date.Time `json:"modifiedTime,omitempty"`
12165	// ExpirationTime - Time when operation will expire.
12166	ExpirationTime *date.Time `json:"expirationTime,omitempty"`
12167	// GeoMasterOperationID - Applicable only for stamp operation ids.
12168	GeoMasterOperationID *uuid.UUID `json:"geoMasterOperationId,omitempty"`
12169}
12170
12171// PerfMonCounterCollection collection of performance monitor counters.
12172type PerfMonCounterCollection struct {
12173	autorest.Response `json:"-"`
12174	// Value - Collection of resources.
12175	Value *[]PerfMonResponse `json:"value,omitempty"`
12176	// NextLink - READ-ONLY; Link to next page of resources.
12177	NextLink *string `json:"nextLink,omitempty"`
12178}
12179
12180// PerfMonCounterCollectionIterator provides access to a complete listing of PerfMonResponse values.
12181type PerfMonCounterCollectionIterator struct {
12182	i    int
12183	page PerfMonCounterCollectionPage
12184}
12185
12186// NextWithContext advances to the next value.  If there was an error making
12187// the request the iterator does not advance and the error is returned.
12188func (iter *PerfMonCounterCollectionIterator) NextWithContext(ctx context.Context) (err error) {
12189	if tracing.IsEnabled() {
12190		ctx = tracing.StartSpan(ctx, fqdn+"/PerfMonCounterCollectionIterator.NextWithContext")
12191		defer func() {
12192			sc := -1
12193			if iter.Response().Response.Response != nil {
12194				sc = iter.Response().Response.Response.StatusCode
12195			}
12196			tracing.EndSpan(ctx, sc, err)
12197		}()
12198	}
12199	iter.i++
12200	if iter.i < len(iter.page.Values()) {
12201		return nil
12202	}
12203	err = iter.page.NextWithContext(ctx)
12204	if err != nil {
12205		iter.i--
12206		return err
12207	}
12208	iter.i = 0
12209	return nil
12210}
12211
12212// Next advances to the next value.  If there was an error making
12213// the request the iterator does not advance and the error is returned.
12214// Deprecated: Use NextWithContext() instead.
12215func (iter *PerfMonCounterCollectionIterator) Next() error {
12216	return iter.NextWithContext(context.Background())
12217}
12218
12219// NotDone returns true if the enumeration should be started or is not yet complete.
12220func (iter PerfMonCounterCollectionIterator) NotDone() bool {
12221	return iter.page.NotDone() && iter.i < len(iter.page.Values())
12222}
12223
12224// Response returns the raw server response from the last page request.
12225func (iter PerfMonCounterCollectionIterator) Response() PerfMonCounterCollection {
12226	return iter.page.Response()
12227}
12228
12229// Value returns the current value or a zero-initialized value if the
12230// iterator has advanced beyond the end of the collection.
12231func (iter PerfMonCounterCollectionIterator) Value() PerfMonResponse {
12232	if !iter.page.NotDone() {
12233		return PerfMonResponse{}
12234	}
12235	return iter.page.Values()[iter.i]
12236}
12237
12238// Creates a new instance of the PerfMonCounterCollectionIterator type.
12239func NewPerfMonCounterCollectionIterator(page PerfMonCounterCollectionPage) PerfMonCounterCollectionIterator {
12240	return PerfMonCounterCollectionIterator{page: page}
12241}
12242
12243// IsEmpty returns true if the ListResult contains no values.
12244func (pmcc PerfMonCounterCollection) IsEmpty() bool {
12245	return pmcc.Value == nil || len(*pmcc.Value) == 0
12246}
12247
12248// perfMonCounterCollectionPreparer prepares a request to retrieve the next set of results.
12249// It returns nil if no more results exist.
12250func (pmcc PerfMonCounterCollection) perfMonCounterCollectionPreparer(ctx context.Context) (*http.Request, error) {
12251	if pmcc.NextLink == nil || len(to.String(pmcc.NextLink)) < 1 {
12252		return nil, nil
12253	}
12254	return autorest.Prepare((&http.Request{}).WithContext(ctx),
12255		autorest.AsJSON(),
12256		autorest.AsGet(),
12257		autorest.WithBaseURL(to.String(pmcc.NextLink)))
12258}
12259
12260// PerfMonCounterCollectionPage contains a page of PerfMonResponse values.
12261type PerfMonCounterCollectionPage struct {
12262	fn   func(context.Context, PerfMonCounterCollection) (PerfMonCounterCollection, error)
12263	pmcc PerfMonCounterCollection
12264}
12265
12266// NextWithContext advances to the next page of values.  If there was an error making
12267// the request the page does not advance and the error is returned.
12268func (page *PerfMonCounterCollectionPage) NextWithContext(ctx context.Context) (err error) {
12269	if tracing.IsEnabled() {
12270		ctx = tracing.StartSpan(ctx, fqdn+"/PerfMonCounterCollectionPage.NextWithContext")
12271		defer func() {
12272			sc := -1
12273			if page.Response().Response.Response != nil {
12274				sc = page.Response().Response.Response.StatusCode
12275			}
12276			tracing.EndSpan(ctx, sc, err)
12277		}()
12278	}
12279	next, err := page.fn(ctx, page.pmcc)
12280	if err != nil {
12281		return err
12282	}
12283	page.pmcc = next
12284	return nil
12285}
12286
12287// Next advances to the next page of values.  If there was an error making
12288// the request the page does not advance and the error is returned.
12289// Deprecated: Use NextWithContext() instead.
12290func (page *PerfMonCounterCollectionPage) Next() error {
12291	return page.NextWithContext(context.Background())
12292}
12293
12294// NotDone returns true if the page enumeration should be started or is not yet complete.
12295func (page PerfMonCounterCollectionPage) NotDone() bool {
12296	return !page.pmcc.IsEmpty()
12297}
12298
12299// Response returns the raw server response from the last page request.
12300func (page PerfMonCounterCollectionPage) Response() PerfMonCounterCollection {
12301	return page.pmcc
12302}
12303
12304// Values returns the slice of values for the current page or nil if there are no values.
12305func (page PerfMonCounterCollectionPage) Values() []PerfMonResponse {
12306	if page.pmcc.IsEmpty() {
12307		return nil
12308	}
12309	return *page.pmcc.Value
12310}
12311
12312// Creates a new instance of the PerfMonCounterCollectionPage type.
12313func NewPerfMonCounterCollectionPage(getNextPage func(context.Context, PerfMonCounterCollection) (PerfMonCounterCollection, error)) PerfMonCounterCollectionPage {
12314	return PerfMonCounterCollectionPage{fn: getNextPage}
12315}
12316
12317// PerfMonResponse performance monitor API response.
12318type PerfMonResponse struct {
12319	// Code - The response code.
12320	Code *string `json:"code,omitempty"`
12321	// Message - The message.
12322	Message *string `json:"message,omitempty"`
12323	// Data - The performance monitor counters.
12324	Data *PerfMonSet `json:"data,omitempty"`
12325}
12326
12327// PerfMonSample performance monitor sample in a set.
12328type PerfMonSample struct {
12329	// Time - Point in time for which counter was measured.
12330	Time *date.Time `json:"time,omitempty"`
12331	// InstanceName - Name of the server on which the measurement is made.
12332	InstanceName *string `json:"instanceName,omitempty"`
12333	// Value - Value of counter at a certain time.
12334	Value *float64 `json:"value,omitempty"`
12335	// CoreCount - Core Count of worker. Not a data member
12336	CoreCount *int32 `json:"coreCount,omitempty"`
12337}
12338
12339// PerfMonSet metric information.
12340type PerfMonSet struct {
12341	// Name - Unique key name of the counter.
12342	Name *string `json:"name,omitempty"`
12343	// StartTime - Start time of the period.
12344	StartTime *date.Time `json:"startTime,omitempty"`
12345	// EndTime - End time of the period.
12346	EndTime *date.Time `json:"endTime,omitempty"`
12347	// TimeGrain - Presented time grain.
12348	TimeGrain *string `json:"timeGrain,omitempty"`
12349	// Values - Collection of workers that are active during this time.
12350	Values *[]PerfMonSample `json:"values,omitempty"`
12351}
12352
12353// PremierAddOn premier add-on.
12354type PremierAddOn struct {
12355	autorest.Response `json:"-"`
12356	// PremierAddOnProperties - PremierAddOn resource specific properties
12357	*PremierAddOnProperties `json:"properties,omitempty"`
12358	// ID - READ-ONLY; Resource Id.
12359	ID *string `json:"id,omitempty"`
12360	// Name - READ-ONLY; Resource Name.
12361	Name *string `json:"name,omitempty"`
12362	// Kind - Kind of resource.
12363	Kind *string `json:"kind,omitempty"`
12364	// Location - Resource Location.
12365	Location *string `json:"location,omitempty"`
12366	// Type - READ-ONLY; Resource type.
12367	Type *string `json:"type,omitempty"`
12368	// Tags - Resource tags.
12369	Tags map[string]*string `json:"tags"`
12370}
12371
12372// MarshalJSON is the custom marshaler for PremierAddOn.
12373func (pao PremierAddOn) MarshalJSON() ([]byte, error) {
12374	objectMap := make(map[string]interface{})
12375	if pao.PremierAddOnProperties != nil {
12376		objectMap["properties"] = pao.PremierAddOnProperties
12377	}
12378	if pao.Kind != nil {
12379		objectMap["kind"] = pao.Kind
12380	}
12381	if pao.Location != nil {
12382		objectMap["location"] = pao.Location
12383	}
12384	if pao.Tags != nil {
12385		objectMap["tags"] = pao.Tags
12386	}
12387	return json.Marshal(objectMap)
12388}
12389
12390// UnmarshalJSON is the custom unmarshaler for PremierAddOn struct.
12391func (pao *PremierAddOn) UnmarshalJSON(body []byte) error {
12392	var m map[string]*json.RawMessage
12393	err := json.Unmarshal(body, &m)
12394	if err != nil {
12395		return err
12396	}
12397	for k, v := range m {
12398		switch k {
12399		case "properties":
12400			if v != nil {
12401				var premierAddOnProperties PremierAddOnProperties
12402				err = json.Unmarshal(*v, &premierAddOnProperties)
12403				if err != nil {
12404					return err
12405				}
12406				pao.PremierAddOnProperties = &premierAddOnProperties
12407			}
12408		case "id":
12409			if v != nil {
12410				var ID string
12411				err = json.Unmarshal(*v, &ID)
12412				if err != nil {
12413					return err
12414				}
12415				pao.ID = &ID
12416			}
12417		case "name":
12418			if v != nil {
12419				var name string
12420				err = json.Unmarshal(*v, &name)
12421				if err != nil {
12422					return err
12423				}
12424				pao.Name = &name
12425			}
12426		case "kind":
12427			if v != nil {
12428				var kind string
12429				err = json.Unmarshal(*v, &kind)
12430				if err != nil {
12431					return err
12432				}
12433				pao.Kind = &kind
12434			}
12435		case "location":
12436			if v != nil {
12437				var location string
12438				err = json.Unmarshal(*v, &location)
12439				if err != nil {
12440					return err
12441				}
12442				pao.Location = &location
12443			}
12444		case "type":
12445			if v != nil {
12446				var typeVar string
12447				err = json.Unmarshal(*v, &typeVar)
12448				if err != nil {
12449					return err
12450				}
12451				pao.Type = &typeVar
12452			}
12453		case "tags":
12454			if v != nil {
12455				var tags map[string]*string
12456				err = json.Unmarshal(*v, &tags)
12457				if err != nil {
12458					return err
12459				}
12460				pao.Tags = tags
12461			}
12462		}
12463	}
12464
12465	return nil
12466}
12467
12468// PremierAddOnOffer premier add-on offer.
12469type PremierAddOnOffer struct {
12470	// PremierAddOnOfferProperties - PremierAddOnOffer resource specific properties
12471	*PremierAddOnOfferProperties `json:"properties,omitempty"`
12472	// ID - READ-ONLY; Resource Id.
12473	ID *string `json:"id,omitempty"`
12474	// Name - READ-ONLY; Resource Name.
12475	Name *string `json:"name,omitempty"`
12476	// Kind - Kind of resource.
12477	Kind *string `json:"kind,omitempty"`
12478	// Type - READ-ONLY; Resource type.
12479	Type *string `json:"type,omitempty"`
12480}
12481
12482// MarshalJSON is the custom marshaler for PremierAddOnOffer.
12483func (paoo PremierAddOnOffer) MarshalJSON() ([]byte, error) {
12484	objectMap := make(map[string]interface{})
12485	if paoo.PremierAddOnOfferProperties != nil {
12486		objectMap["properties"] = paoo.PremierAddOnOfferProperties
12487	}
12488	if paoo.Kind != nil {
12489		objectMap["kind"] = paoo.Kind
12490	}
12491	return json.Marshal(objectMap)
12492}
12493
12494// UnmarshalJSON is the custom unmarshaler for PremierAddOnOffer struct.
12495func (paoo *PremierAddOnOffer) UnmarshalJSON(body []byte) error {
12496	var m map[string]*json.RawMessage
12497	err := json.Unmarshal(body, &m)
12498	if err != nil {
12499		return err
12500	}
12501	for k, v := range m {
12502		switch k {
12503		case "properties":
12504			if v != nil {
12505				var premierAddOnOfferProperties PremierAddOnOfferProperties
12506				err = json.Unmarshal(*v, &premierAddOnOfferProperties)
12507				if err != nil {
12508					return err
12509				}
12510				paoo.PremierAddOnOfferProperties = &premierAddOnOfferProperties
12511			}
12512		case "id":
12513			if v != nil {
12514				var ID string
12515				err = json.Unmarshal(*v, &ID)
12516				if err != nil {
12517					return err
12518				}
12519				paoo.ID = &ID
12520			}
12521		case "name":
12522			if v != nil {
12523				var name string
12524				err = json.Unmarshal(*v, &name)
12525				if err != nil {
12526					return err
12527				}
12528				paoo.Name = &name
12529			}
12530		case "kind":
12531			if v != nil {
12532				var kind string
12533				err = json.Unmarshal(*v, &kind)
12534				if err != nil {
12535					return err
12536				}
12537				paoo.Kind = &kind
12538			}
12539		case "type":
12540			if v != nil {
12541				var typeVar string
12542				err = json.Unmarshal(*v, &typeVar)
12543				if err != nil {
12544					return err
12545				}
12546				paoo.Type = &typeVar
12547			}
12548		}
12549	}
12550
12551	return nil
12552}
12553
12554// PremierAddOnOfferCollection collection of premier add-on offers.
12555type PremierAddOnOfferCollection struct {
12556	autorest.Response `json:"-"`
12557	// Value - Collection of resources.
12558	Value *[]PremierAddOnOffer `json:"value,omitempty"`
12559	// NextLink - READ-ONLY; Link to next page of resources.
12560	NextLink *string `json:"nextLink,omitempty"`
12561}
12562
12563// PremierAddOnOfferCollectionIterator provides access to a complete listing of PremierAddOnOffer values.
12564type PremierAddOnOfferCollectionIterator struct {
12565	i    int
12566	page PremierAddOnOfferCollectionPage
12567}
12568
12569// NextWithContext advances to the next value.  If there was an error making
12570// the request the iterator does not advance and the error is returned.
12571func (iter *PremierAddOnOfferCollectionIterator) NextWithContext(ctx context.Context) (err error) {
12572	if tracing.IsEnabled() {
12573		ctx = tracing.StartSpan(ctx, fqdn+"/PremierAddOnOfferCollectionIterator.NextWithContext")
12574		defer func() {
12575			sc := -1
12576			if iter.Response().Response.Response != nil {
12577				sc = iter.Response().Response.Response.StatusCode
12578			}
12579			tracing.EndSpan(ctx, sc, err)
12580		}()
12581	}
12582	iter.i++
12583	if iter.i < len(iter.page.Values()) {
12584		return nil
12585	}
12586	err = iter.page.NextWithContext(ctx)
12587	if err != nil {
12588		iter.i--
12589		return err
12590	}
12591	iter.i = 0
12592	return nil
12593}
12594
12595// Next advances to the next value.  If there was an error making
12596// the request the iterator does not advance and the error is returned.
12597// Deprecated: Use NextWithContext() instead.
12598func (iter *PremierAddOnOfferCollectionIterator) Next() error {
12599	return iter.NextWithContext(context.Background())
12600}
12601
12602// NotDone returns true if the enumeration should be started or is not yet complete.
12603func (iter PremierAddOnOfferCollectionIterator) NotDone() bool {
12604	return iter.page.NotDone() && iter.i < len(iter.page.Values())
12605}
12606
12607// Response returns the raw server response from the last page request.
12608func (iter PremierAddOnOfferCollectionIterator) Response() PremierAddOnOfferCollection {
12609	return iter.page.Response()
12610}
12611
12612// Value returns the current value or a zero-initialized value if the
12613// iterator has advanced beyond the end of the collection.
12614func (iter PremierAddOnOfferCollectionIterator) Value() PremierAddOnOffer {
12615	if !iter.page.NotDone() {
12616		return PremierAddOnOffer{}
12617	}
12618	return iter.page.Values()[iter.i]
12619}
12620
12621// Creates a new instance of the PremierAddOnOfferCollectionIterator type.
12622func NewPremierAddOnOfferCollectionIterator(page PremierAddOnOfferCollectionPage) PremierAddOnOfferCollectionIterator {
12623	return PremierAddOnOfferCollectionIterator{page: page}
12624}
12625
12626// IsEmpty returns true if the ListResult contains no values.
12627func (paooc PremierAddOnOfferCollection) IsEmpty() bool {
12628	return paooc.Value == nil || len(*paooc.Value) == 0
12629}
12630
12631// premierAddOnOfferCollectionPreparer prepares a request to retrieve the next set of results.
12632// It returns nil if no more results exist.
12633func (paooc PremierAddOnOfferCollection) premierAddOnOfferCollectionPreparer(ctx context.Context) (*http.Request, error) {
12634	if paooc.NextLink == nil || len(to.String(paooc.NextLink)) < 1 {
12635		return nil, nil
12636	}
12637	return autorest.Prepare((&http.Request{}).WithContext(ctx),
12638		autorest.AsJSON(),
12639		autorest.AsGet(),
12640		autorest.WithBaseURL(to.String(paooc.NextLink)))
12641}
12642
12643// PremierAddOnOfferCollectionPage contains a page of PremierAddOnOffer values.
12644type PremierAddOnOfferCollectionPage struct {
12645	fn    func(context.Context, PremierAddOnOfferCollection) (PremierAddOnOfferCollection, error)
12646	paooc PremierAddOnOfferCollection
12647}
12648
12649// NextWithContext advances to the next page of values.  If there was an error making
12650// the request the page does not advance and the error is returned.
12651func (page *PremierAddOnOfferCollectionPage) NextWithContext(ctx context.Context) (err error) {
12652	if tracing.IsEnabled() {
12653		ctx = tracing.StartSpan(ctx, fqdn+"/PremierAddOnOfferCollectionPage.NextWithContext")
12654		defer func() {
12655			sc := -1
12656			if page.Response().Response.Response != nil {
12657				sc = page.Response().Response.Response.StatusCode
12658			}
12659			tracing.EndSpan(ctx, sc, err)
12660		}()
12661	}
12662	next, err := page.fn(ctx, page.paooc)
12663	if err != nil {
12664		return err
12665	}
12666	page.paooc = next
12667	return nil
12668}
12669
12670// Next advances to the next page of values.  If there was an error making
12671// the request the page does not advance and the error is returned.
12672// Deprecated: Use NextWithContext() instead.
12673func (page *PremierAddOnOfferCollectionPage) Next() error {
12674	return page.NextWithContext(context.Background())
12675}
12676
12677// NotDone returns true if the page enumeration should be started or is not yet complete.
12678func (page PremierAddOnOfferCollectionPage) NotDone() bool {
12679	return !page.paooc.IsEmpty()
12680}
12681
12682// Response returns the raw server response from the last page request.
12683func (page PremierAddOnOfferCollectionPage) Response() PremierAddOnOfferCollection {
12684	return page.paooc
12685}
12686
12687// Values returns the slice of values for the current page or nil if there are no values.
12688func (page PremierAddOnOfferCollectionPage) Values() []PremierAddOnOffer {
12689	if page.paooc.IsEmpty() {
12690		return nil
12691	}
12692	return *page.paooc.Value
12693}
12694
12695// Creates a new instance of the PremierAddOnOfferCollectionPage type.
12696func NewPremierAddOnOfferCollectionPage(getNextPage func(context.Context, PremierAddOnOfferCollection) (PremierAddOnOfferCollection, error)) PremierAddOnOfferCollectionPage {
12697	return PremierAddOnOfferCollectionPage{fn: getNextPage}
12698}
12699
12700// PremierAddOnOfferProperties premierAddOnOffer resource specific properties
12701type PremierAddOnOfferProperties struct {
12702	// Sku - Premier add on SKU.
12703	Sku *string `json:"sku,omitempty"`
12704	// Product - Premier add on offer Product.
12705	Product *string `json:"product,omitempty"`
12706	// Vendor - Premier add on offer Vendor.
12707	Vendor *string `json:"vendor,omitempty"`
12708	// Name - Premier add on offer Name.
12709	Name *string `json:"name,omitempty"`
12710	// PromoCodeRequired - <code>true</code> if promotion code is required; otherwise, <code>false</code>.
12711	PromoCodeRequired *bool `json:"promoCodeRequired,omitempty"`
12712	// Quota - Premier add on offer Quota.
12713	Quota *int32 `json:"quota,omitempty"`
12714	// WebHostingPlanRestrictions - App Service plans this offer is restricted to. Possible values include: 'None', 'Free', 'Shared', 'Basic', 'Standard', 'Premium'
12715	WebHostingPlanRestrictions AppServicePlanRestrictions `json:"webHostingPlanRestrictions,omitempty"`
12716	// PrivacyPolicyURL - Privacy policy URL.
12717	PrivacyPolicyURL *string `json:"privacyPolicyUrl,omitempty"`
12718	// LegalTermsURL - Legal terms URL.
12719	LegalTermsURL *string `json:"legalTermsUrl,omitempty"`
12720	// MarketplacePublisher - Marketplace publisher.
12721	MarketplacePublisher *string `json:"marketplacePublisher,omitempty"`
12722	// MarketplaceOffer - Marketplace offer.
12723	MarketplaceOffer *string `json:"marketplaceOffer,omitempty"`
12724}
12725
12726// PremierAddOnProperties premierAddOn resource specific properties
12727type PremierAddOnProperties struct {
12728	// Sku - Premier add on SKU.
12729	Sku *string `json:"sku,omitempty"`
12730	// Product - Premier add on Product.
12731	Product *string `json:"product,omitempty"`
12732	// Vendor - Premier add on Vendor.
12733	Vendor *string `json:"vendor,omitempty"`
12734	// PremierAddOnName - Premier add on Name.
12735	PremierAddOnName *string `json:"name,omitempty"`
12736	// Location - Premier add on Location.
12737	Location *string `json:"location,omitempty"`
12738	// Tags - Premier add on Tags.
12739	Tags map[string]*string `json:"tags"`
12740	// MarketplacePublisher - Premier add on Marketplace publisher.
12741	MarketplacePublisher *string `json:"marketplacePublisher,omitempty"`
12742	// MarketplaceOffer - Premier add on Marketplace offer.
12743	MarketplaceOffer *string `json:"marketplaceOffer,omitempty"`
12744}
12745
12746// MarshalJSON is the custom marshaler for PremierAddOnProperties.
12747func (pao PremierAddOnProperties) MarshalJSON() ([]byte, error) {
12748	objectMap := make(map[string]interface{})
12749	if pao.Sku != nil {
12750		objectMap["sku"] = pao.Sku
12751	}
12752	if pao.Product != nil {
12753		objectMap["product"] = pao.Product
12754	}
12755	if pao.Vendor != nil {
12756		objectMap["vendor"] = pao.Vendor
12757	}
12758	if pao.PremierAddOnName != nil {
12759		objectMap["name"] = pao.PremierAddOnName
12760	}
12761	if pao.Location != nil {
12762		objectMap["location"] = pao.Location
12763	}
12764	if pao.Tags != nil {
12765		objectMap["tags"] = pao.Tags
12766	}
12767	if pao.MarketplacePublisher != nil {
12768		objectMap["marketplacePublisher"] = pao.MarketplacePublisher
12769	}
12770	if pao.MarketplaceOffer != nil {
12771		objectMap["marketplaceOffer"] = pao.MarketplaceOffer
12772	}
12773	return json.Marshal(objectMap)
12774}
12775
12776// ProcessInfo process Information.
12777type ProcessInfo struct {
12778	autorest.Response `json:"-"`
12779	// ProcessInfoProperties - ProcessInfo resource specific properties
12780	*ProcessInfoProperties `json:"properties,omitempty"`
12781	// ID - READ-ONLY; Resource Id.
12782	ID *string `json:"id,omitempty"`
12783	// Name - READ-ONLY; Resource Name.
12784	Name *string `json:"name,omitempty"`
12785	// Kind - Kind of resource.
12786	Kind *string `json:"kind,omitempty"`
12787	// Type - READ-ONLY; Resource type.
12788	Type *string `json:"type,omitempty"`
12789}
12790
12791// MarshalJSON is the custom marshaler for ProcessInfo.
12792func (pi ProcessInfo) MarshalJSON() ([]byte, error) {
12793	objectMap := make(map[string]interface{})
12794	if pi.ProcessInfoProperties != nil {
12795		objectMap["properties"] = pi.ProcessInfoProperties
12796	}
12797	if pi.Kind != nil {
12798		objectMap["kind"] = pi.Kind
12799	}
12800	return json.Marshal(objectMap)
12801}
12802
12803// UnmarshalJSON is the custom unmarshaler for ProcessInfo struct.
12804func (pi *ProcessInfo) UnmarshalJSON(body []byte) error {
12805	var m map[string]*json.RawMessage
12806	err := json.Unmarshal(body, &m)
12807	if err != nil {
12808		return err
12809	}
12810	for k, v := range m {
12811		switch k {
12812		case "properties":
12813			if v != nil {
12814				var processInfoProperties ProcessInfoProperties
12815				err = json.Unmarshal(*v, &processInfoProperties)
12816				if err != nil {
12817					return err
12818				}
12819				pi.ProcessInfoProperties = &processInfoProperties
12820			}
12821		case "id":
12822			if v != nil {
12823				var ID string
12824				err = json.Unmarshal(*v, &ID)
12825				if err != nil {
12826					return err
12827				}
12828				pi.ID = &ID
12829			}
12830		case "name":
12831			if v != nil {
12832				var name string
12833				err = json.Unmarshal(*v, &name)
12834				if err != nil {
12835					return err
12836				}
12837				pi.Name = &name
12838			}
12839		case "kind":
12840			if v != nil {
12841				var kind string
12842				err = json.Unmarshal(*v, &kind)
12843				if err != nil {
12844					return err
12845				}
12846				pi.Kind = &kind
12847			}
12848		case "type":
12849			if v != nil {
12850				var typeVar string
12851				err = json.Unmarshal(*v, &typeVar)
12852				if err != nil {
12853					return err
12854				}
12855				pi.Type = &typeVar
12856			}
12857		}
12858	}
12859
12860	return nil
12861}
12862
12863// ProcessInfoCollection collection of Kudu process information elements.
12864type ProcessInfoCollection struct {
12865	autorest.Response `json:"-"`
12866	// Value - Collection of resources.
12867	Value *[]ProcessInfo `json:"value,omitempty"`
12868	// NextLink - READ-ONLY; Link to next page of resources.
12869	NextLink *string `json:"nextLink,omitempty"`
12870}
12871
12872// ProcessInfoCollectionIterator provides access to a complete listing of ProcessInfo values.
12873type ProcessInfoCollectionIterator struct {
12874	i    int
12875	page ProcessInfoCollectionPage
12876}
12877
12878// NextWithContext advances to the next value.  If there was an error making
12879// the request the iterator does not advance and the error is returned.
12880func (iter *ProcessInfoCollectionIterator) NextWithContext(ctx context.Context) (err error) {
12881	if tracing.IsEnabled() {
12882		ctx = tracing.StartSpan(ctx, fqdn+"/ProcessInfoCollectionIterator.NextWithContext")
12883		defer func() {
12884			sc := -1
12885			if iter.Response().Response.Response != nil {
12886				sc = iter.Response().Response.Response.StatusCode
12887			}
12888			tracing.EndSpan(ctx, sc, err)
12889		}()
12890	}
12891	iter.i++
12892	if iter.i < len(iter.page.Values()) {
12893		return nil
12894	}
12895	err = iter.page.NextWithContext(ctx)
12896	if err != nil {
12897		iter.i--
12898		return err
12899	}
12900	iter.i = 0
12901	return nil
12902}
12903
12904// Next advances to the next value.  If there was an error making
12905// the request the iterator does not advance and the error is returned.
12906// Deprecated: Use NextWithContext() instead.
12907func (iter *ProcessInfoCollectionIterator) Next() error {
12908	return iter.NextWithContext(context.Background())
12909}
12910
12911// NotDone returns true if the enumeration should be started or is not yet complete.
12912func (iter ProcessInfoCollectionIterator) NotDone() bool {
12913	return iter.page.NotDone() && iter.i < len(iter.page.Values())
12914}
12915
12916// Response returns the raw server response from the last page request.
12917func (iter ProcessInfoCollectionIterator) Response() ProcessInfoCollection {
12918	return iter.page.Response()
12919}
12920
12921// Value returns the current value or a zero-initialized value if the
12922// iterator has advanced beyond the end of the collection.
12923func (iter ProcessInfoCollectionIterator) Value() ProcessInfo {
12924	if !iter.page.NotDone() {
12925		return ProcessInfo{}
12926	}
12927	return iter.page.Values()[iter.i]
12928}
12929
12930// Creates a new instance of the ProcessInfoCollectionIterator type.
12931func NewProcessInfoCollectionIterator(page ProcessInfoCollectionPage) ProcessInfoCollectionIterator {
12932	return ProcessInfoCollectionIterator{page: page}
12933}
12934
12935// IsEmpty returns true if the ListResult contains no values.
12936func (pic ProcessInfoCollection) IsEmpty() bool {
12937	return pic.Value == nil || len(*pic.Value) == 0
12938}
12939
12940// processInfoCollectionPreparer prepares a request to retrieve the next set of results.
12941// It returns nil if no more results exist.
12942func (pic ProcessInfoCollection) processInfoCollectionPreparer(ctx context.Context) (*http.Request, error) {
12943	if pic.NextLink == nil || len(to.String(pic.NextLink)) < 1 {
12944		return nil, nil
12945	}
12946	return autorest.Prepare((&http.Request{}).WithContext(ctx),
12947		autorest.AsJSON(),
12948		autorest.AsGet(),
12949		autorest.WithBaseURL(to.String(pic.NextLink)))
12950}
12951
12952// ProcessInfoCollectionPage contains a page of ProcessInfo values.
12953type ProcessInfoCollectionPage struct {
12954	fn  func(context.Context, ProcessInfoCollection) (ProcessInfoCollection, error)
12955	pic ProcessInfoCollection
12956}
12957
12958// NextWithContext advances to the next page of values.  If there was an error making
12959// the request the page does not advance and the error is returned.
12960func (page *ProcessInfoCollectionPage) NextWithContext(ctx context.Context) (err error) {
12961	if tracing.IsEnabled() {
12962		ctx = tracing.StartSpan(ctx, fqdn+"/ProcessInfoCollectionPage.NextWithContext")
12963		defer func() {
12964			sc := -1
12965			if page.Response().Response.Response != nil {
12966				sc = page.Response().Response.Response.StatusCode
12967			}
12968			tracing.EndSpan(ctx, sc, err)
12969		}()
12970	}
12971	next, err := page.fn(ctx, page.pic)
12972	if err != nil {
12973		return err
12974	}
12975	page.pic = next
12976	return nil
12977}
12978
12979// Next advances to the next page of values.  If there was an error making
12980// the request the page does not advance and the error is returned.
12981// Deprecated: Use NextWithContext() instead.
12982func (page *ProcessInfoCollectionPage) Next() error {
12983	return page.NextWithContext(context.Background())
12984}
12985
12986// NotDone returns true if the page enumeration should be started or is not yet complete.
12987func (page ProcessInfoCollectionPage) NotDone() bool {
12988	return !page.pic.IsEmpty()
12989}
12990
12991// Response returns the raw server response from the last page request.
12992func (page ProcessInfoCollectionPage) Response() ProcessInfoCollection {
12993	return page.pic
12994}
12995
12996// Values returns the slice of values for the current page or nil if there are no values.
12997func (page ProcessInfoCollectionPage) Values() []ProcessInfo {
12998	if page.pic.IsEmpty() {
12999		return nil
13000	}
13001	return *page.pic.Value
13002}
13003
13004// Creates a new instance of the ProcessInfoCollectionPage type.
13005func NewProcessInfoCollectionPage(getNextPage func(context.Context, ProcessInfoCollection) (ProcessInfoCollection, error)) ProcessInfoCollectionPage {
13006	return ProcessInfoCollectionPage{fn: getNextPage}
13007}
13008
13009// ProcessInfoProperties processInfo resource specific properties
13010type ProcessInfoProperties struct {
13011	// ID - ARM Identifier for deployment.
13012	ID *int32 `json:"id,omitempty"`
13013	// Name - Deployment name.
13014	Name *string `json:"name,omitempty"`
13015	// Href - HRef URI.
13016	Href *string `json:"href,omitempty"`
13017	// MiniDump - Minidump URI.
13018	MiniDump *string `json:"miniDump,omitempty"`
13019	// IsProfileRunning - Is profile running?
13020	IsProfileRunning *bool `json:"isProfileRunning,omitempty"`
13021	// IsIisProfileRunning - Is the IIS Profile running?
13022	IsIisProfileRunning *bool `json:"isIisProfileRunning,omitempty"`
13023	// IisProfileTimeoutInSeconds - IIS Profile timeout (seconds).
13024	IisProfileTimeoutInSeconds *float64 `json:"iisProfileTimeoutInSeconds,omitempty"`
13025	// Parent - Parent process.
13026	Parent *string `json:"parent,omitempty"`
13027	// Children - Child process list.
13028	Children *[]string `json:"children,omitempty"`
13029	// Threads - Thread list.
13030	Threads *[]ProcessThreadInfo `json:"threads,omitempty"`
13031	// OpenFileHandles - List of open files.
13032	OpenFileHandles *[]string `json:"openFileHandles,omitempty"`
13033	// Modules - List of modules.
13034	Modules *[]ProcessModuleInfo `json:"modules,omitempty"`
13035	// FileName - File name of this process.
13036	FileName *string `json:"fileName,omitempty"`
13037	// CommandLine - Command line.
13038	CommandLine *string `json:"commandLine,omitempty"`
13039	// UserName - User name.
13040	UserName *string `json:"userName,omitempty"`
13041	// HandleCount - Handle count.
13042	HandleCount *int32 `json:"handleCount,omitempty"`
13043	// ModuleCount - Module count.
13044	ModuleCount *int32 `json:"moduleCount,omitempty"`
13045	// ThreadCount - Thread count.
13046	ThreadCount *int32 `json:"threadCount,omitempty"`
13047	// StartTime - Start time.
13048	StartTime *date.Time `json:"startTime,omitempty"`
13049	// TotalProcessorTime - Total CPU time.
13050	TotalProcessorTime *string `json:"totalProcessorTime,omitempty"`
13051	// UserProcessorTime - User CPU time.
13052	UserProcessorTime *string `json:"userProcessorTime,omitempty"`
13053	// PrivilegedProcessorTime - Privileged CPU time.
13054	PrivilegedProcessorTime *string `json:"privilegedProcessorTime,omitempty"`
13055	// WorkingSet64 - Working set.
13056	WorkingSet64 *int64 `json:"workingSet64,omitempty"`
13057	// PeakWorkingSet64 - Peak working set.
13058	PeakWorkingSet64 *int64 `json:"peakWorkingSet64,omitempty"`
13059	// PrivateMemorySize64 - Private memory size.
13060	PrivateMemorySize64 *int64 `json:"privateMemorySize64,omitempty"`
13061	// VirtualMemorySize64 - Virtual memory size.
13062	VirtualMemorySize64 *int64 `json:"virtualMemorySize64,omitempty"`
13063	// PeakVirtualMemorySize64 - Peak virtual memory usage.
13064	PeakVirtualMemorySize64 *int64 `json:"peakVirtualMemorySize64,omitempty"`
13065	// PagedSystemMemorySize64 - Paged system memory.
13066	PagedSystemMemorySize64 *int64 `json:"pagedSystemMemorySize64,omitempty"`
13067	// NonpagedSystemMemorySize64 - Non-paged system memory.
13068	NonpagedSystemMemorySize64 *int64 `json:"nonpagedSystemMemorySize64,omitempty"`
13069	// PagedMemorySize64 - Paged memory.
13070	PagedMemorySize64 *int64 `json:"pagedMemorySize64,omitempty"`
13071	// PeakPagedMemorySize64 - Peak paged memory.
13072	PeakPagedMemorySize64 *int64 `json:"peakPagedMemorySize64,omitempty"`
13073	// TimeStamp - Time stamp.
13074	TimeStamp *date.Time `json:"timeStamp,omitempty"`
13075	// EnvironmentVariables - List of environment variables.
13076	EnvironmentVariables map[string]*string `json:"environmentVariables"`
13077	// IsScmSite - Is this the SCM site?
13078	IsScmSite *bool `json:"isScmSite,omitempty"`
13079	// IsWebJob - Is this a Web Job?
13080	IsWebJob *bool `json:"isWebJob,omitempty"`
13081	// Description - Description of process.
13082	Description *string `json:"description,omitempty"`
13083}
13084
13085// MarshalJSON is the custom marshaler for ProcessInfoProperties.
13086func (pi ProcessInfoProperties) MarshalJSON() ([]byte, error) {
13087	objectMap := make(map[string]interface{})
13088	if pi.ID != nil {
13089		objectMap["id"] = pi.ID
13090	}
13091	if pi.Name != nil {
13092		objectMap["name"] = pi.Name
13093	}
13094	if pi.Href != nil {
13095		objectMap["href"] = pi.Href
13096	}
13097	if pi.MiniDump != nil {
13098		objectMap["miniDump"] = pi.MiniDump
13099	}
13100	if pi.IsProfileRunning != nil {
13101		objectMap["isProfileRunning"] = pi.IsProfileRunning
13102	}
13103	if pi.IsIisProfileRunning != nil {
13104		objectMap["isIisProfileRunning"] = pi.IsIisProfileRunning
13105	}
13106	if pi.IisProfileTimeoutInSeconds != nil {
13107		objectMap["iisProfileTimeoutInSeconds"] = pi.IisProfileTimeoutInSeconds
13108	}
13109	if pi.Parent != nil {
13110		objectMap["parent"] = pi.Parent
13111	}
13112	if pi.Children != nil {
13113		objectMap["children"] = pi.Children
13114	}
13115	if pi.Threads != nil {
13116		objectMap["threads"] = pi.Threads
13117	}
13118	if pi.OpenFileHandles != nil {
13119		objectMap["openFileHandles"] = pi.OpenFileHandles
13120	}
13121	if pi.Modules != nil {
13122		objectMap["modules"] = pi.Modules
13123	}
13124	if pi.FileName != nil {
13125		objectMap["fileName"] = pi.FileName
13126	}
13127	if pi.CommandLine != nil {
13128		objectMap["commandLine"] = pi.CommandLine
13129	}
13130	if pi.UserName != nil {
13131		objectMap["userName"] = pi.UserName
13132	}
13133	if pi.HandleCount != nil {
13134		objectMap["handleCount"] = pi.HandleCount
13135	}
13136	if pi.ModuleCount != nil {
13137		objectMap["moduleCount"] = pi.ModuleCount
13138	}
13139	if pi.ThreadCount != nil {
13140		objectMap["threadCount"] = pi.ThreadCount
13141	}
13142	if pi.StartTime != nil {
13143		objectMap["startTime"] = pi.StartTime
13144	}
13145	if pi.TotalProcessorTime != nil {
13146		objectMap["totalProcessorTime"] = pi.TotalProcessorTime
13147	}
13148	if pi.UserProcessorTime != nil {
13149		objectMap["userProcessorTime"] = pi.UserProcessorTime
13150	}
13151	if pi.PrivilegedProcessorTime != nil {
13152		objectMap["privilegedProcessorTime"] = pi.PrivilegedProcessorTime
13153	}
13154	if pi.WorkingSet64 != nil {
13155		objectMap["workingSet64"] = pi.WorkingSet64
13156	}
13157	if pi.PeakWorkingSet64 != nil {
13158		objectMap["peakWorkingSet64"] = pi.PeakWorkingSet64
13159	}
13160	if pi.PrivateMemorySize64 != nil {
13161		objectMap["privateMemorySize64"] = pi.PrivateMemorySize64
13162	}
13163	if pi.VirtualMemorySize64 != nil {
13164		objectMap["virtualMemorySize64"] = pi.VirtualMemorySize64
13165	}
13166	if pi.PeakVirtualMemorySize64 != nil {
13167		objectMap["peakVirtualMemorySize64"] = pi.PeakVirtualMemorySize64
13168	}
13169	if pi.PagedSystemMemorySize64 != nil {
13170		objectMap["pagedSystemMemorySize64"] = pi.PagedSystemMemorySize64
13171	}
13172	if pi.NonpagedSystemMemorySize64 != nil {
13173		objectMap["nonpagedSystemMemorySize64"] = pi.NonpagedSystemMemorySize64
13174	}
13175	if pi.PagedMemorySize64 != nil {
13176		objectMap["pagedMemorySize64"] = pi.PagedMemorySize64
13177	}
13178	if pi.PeakPagedMemorySize64 != nil {
13179		objectMap["peakPagedMemorySize64"] = pi.PeakPagedMemorySize64
13180	}
13181	if pi.TimeStamp != nil {
13182		objectMap["timeStamp"] = pi.TimeStamp
13183	}
13184	if pi.EnvironmentVariables != nil {
13185		objectMap["environmentVariables"] = pi.EnvironmentVariables
13186	}
13187	if pi.IsScmSite != nil {
13188		objectMap["isScmSite"] = pi.IsScmSite
13189	}
13190	if pi.IsWebJob != nil {
13191		objectMap["isWebJob"] = pi.IsWebJob
13192	}
13193	if pi.Description != nil {
13194		objectMap["description"] = pi.Description
13195	}
13196	return json.Marshal(objectMap)
13197}
13198
13199// ProcessModuleInfo process Module Information.
13200type ProcessModuleInfo struct {
13201	autorest.Response `json:"-"`
13202	// ProcessModuleInfoProperties - ProcessModuleInfo resource specific properties
13203	*ProcessModuleInfoProperties `json:"properties,omitempty"`
13204	// ID - READ-ONLY; Resource Id.
13205	ID *string `json:"id,omitempty"`
13206	// Name - READ-ONLY; Resource Name.
13207	Name *string `json:"name,omitempty"`
13208	// Kind - Kind of resource.
13209	Kind *string `json:"kind,omitempty"`
13210	// Type - READ-ONLY; Resource type.
13211	Type *string `json:"type,omitempty"`
13212}
13213
13214// MarshalJSON is the custom marshaler for ProcessModuleInfo.
13215func (pmi ProcessModuleInfo) MarshalJSON() ([]byte, error) {
13216	objectMap := make(map[string]interface{})
13217	if pmi.ProcessModuleInfoProperties != nil {
13218		objectMap["properties"] = pmi.ProcessModuleInfoProperties
13219	}
13220	if pmi.Kind != nil {
13221		objectMap["kind"] = pmi.Kind
13222	}
13223	return json.Marshal(objectMap)
13224}
13225
13226// UnmarshalJSON is the custom unmarshaler for ProcessModuleInfo struct.
13227func (pmi *ProcessModuleInfo) UnmarshalJSON(body []byte) error {
13228	var m map[string]*json.RawMessage
13229	err := json.Unmarshal(body, &m)
13230	if err != nil {
13231		return err
13232	}
13233	for k, v := range m {
13234		switch k {
13235		case "properties":
13236			if v != nil {
13237				var processModuleInfoProperties ProcessModuleInfoProperties
13238				err = json.Unmarshal(*v, &processModuleInfoProperties)
13239				if err != nil {
13240					return err
13241				}
13242				pmi.ProcessModuleInfoProperties = &processModuleInfoProperties
13243			}
13244		case "id":
13245			if v != nil {
13246				var ID string
13247				err = json.Unmarshal(*v, &ID)
13248				if err != nil {
13249					return err
13250				}
13251				pmi.ID = &ID
13252			}
13253		case "name":
13254			if v != nil {
13255				var name string
13256				err = json.Unmarshal(*v, &name)
13257				if err != nil {
13258					return err
13259				}
13260				pmi.Name = &name
13261			}
13262		case "kind":
13263			if v != nil {
13264				var kind string
13265				err = json.Unmarshal(*v, &kind)
13266				if err != nil {
13267					return err
13268				}
13269				pmi.Kind = &kind
13270			}
13271		case "type":
13272			if v != nil {
13273				var typeVar string
13274				err = json.Unmarshal(*v, &typeVar)
13275				if err != nil {
13276					return err
13277				}
13278				pmi.Type = &typeVar
13279			}
13280		}
13281	}
13282
13283	return nil
13284}
13285
13286// ProcessModuleInfoCollection collection of Kudu thread information elements.
13287type ProcessModuleInfoCollection struct {
13288	autorest.Response `json:"-"`
13289	// Value - Collection of resources.
13290	Value *[]ProcessModuleInfo `json:"value,omitempty"`
13291	// NextLink - READ-ONLY; Link to next page of resources.
13292	NextLink *string `json:"nextLink,omitempty"`
13293}
13294
13295// ProcessModuleInfoCollectionIterator provides access to a complete listing of ProcessModuleInfo values.
13296type ProcessModuleInfoCollectionIterator struct {
13297	i    int
13298	page ProcessModuleInfoCollectionPage
13299}
13300
13301// NextWithContext advances to the next value.  If there was an error making
13302// the request the iterator does not advance and the error is returned.
13303func (iter *ProcessModuleInfoCollectionIterator) NextWithContext(ctx context.Context) (err error) {
13304	if tracing.IsEnabled() {
13305		ctx = tracing.StartSpan(ctx, fqdn+"/ProcessModuleInfoCollectionIterator.NextWithContext")
13306		defer func() {
13307			sc := -1
13308			if iter.Response().Response.Response != nil {
13309				sc = iter.Response().Response.Response.StatusCode
13310			}
13311			tracing.EndSpan(ctx, sc, err)
13312		}()
13313	}
13314	iter.i++
13315	if iter.i < len(iter.page.Values()) {
13316		return nil
13317	}
13318	err = iter.page.NextWithContext(ctx)
13319	if err != nil {
13320		iter.i--
13321		return err
13322	}
13323	iter.i = 0
13324	return nil
13325}
13326
13327// Next advances to the next value.  If there was an error making
13328// the request the iterator does not advance and the error is returned.
13329// Deprecated: Use NextWithContext() instead.
13330func (iter *ProcessModuleInfoCollectionIterator) Next() error {
13331	return iter.NextWithContext(context.Background())
13332}
13333
13334// NotDone returns true if the enumeration should be started or is not yet complete.
13335func (iter ProcessModuleInfoCollectionIterator) NotDone() bool {
13336	return iter.page.NotDone() && iter.i < len(iter.page.Values())
13337}
13338
13339// Response returns the raw server response from the last page request.
13340func (iter ProcessModuleInfoCollectionIterator) Response() ProcessModuleInfoCollection {
13341	return iter.page.Response()
13342}
13343
13344// Value returns the current value or a zero-initialized value if the
13345// iterator has advanced beyond the end of the collection.
13346func (iter ProcessModuleInfoCollectionIterator) Value() ProcessModuleInfo {
13347	if !iter.page.NotDone() {
13348		return ProcessModuleInfo{}
13349	}
13350	return iter.page.Values()[iter.i]
13351}
13352
13353// Creates a new instance of the ProcessModuleInfoCollectionIterator type.
13354func NewProcessModuleInfoCollectionIterator(page ProcessModuleInfoCollectionPage) ProcessModuleInfoCollectionIterator {
13355	return ProcessModuleInfoCollectionIterator{page: page}
13356}
13357
13358// IsEmpty returns true if the ListResult contains no values.
13359func (pmic ProcessModuleInfoCollection) IsEmpty() bool {
13360	return pmic.Value == nil || len(*pmic.Value) == 0
13361}
13362
13363// processModuleInfoCollectionPreparer prepares a request to retrieve the next set of results.
13364// It returns nil if no more results exist.
13365func (pmic ProcessModuleInfoCollection) processModuleInfoCollectionPreparer(ctx context.Context) (*http.Request, error) {
13366	if pmic.NextLink == nil || len(to.String(pmic.NextLink)) < 1 {
13367		return nil, nil
13368	}
13369	return autorest.Prepare((&http.Request{}).WithContext(ctx),
13370		autorest.AsJSON(),
13371		autorest.AsGet(),
13372		autorest.WithBaseURL(to.String(pmic.NextLink)))
13373}
13374
13375// ProcessModuleInfoCollectionPage contains a page of ProcessModuleInfo values.
13376type ProcessModuleInfoCollectionPage struct {
13377	fn   func(context.Context, ProcessModuleInfoCollection) (ProcessModuleInfoCollection, error)
13378	pmic ProcessModuleInfoCollection
13379}
13380
13381// NextWithContext advances to the next page of values.  If there was an error making
13382// the request the page does not advance and the error is returned.
13383func (page *ProcessModuleInfoCollectionPage) NextWithContext(ctx context.Context) (err error) {
13384	if tracing.IsEnabled() {
13385		ctx = tracing.StartSpan(ctx, fqdn+"/ProcessModuleInfoCollectionPage.NextWithContext")
13386		defer func() {
13387			sc := -1
13388			if page.Response().Response.Response != nil {
13389				sc = page.Response().Response.Response.StatusCode
13390			}
13391			tracing.EndSpan(ctx, sc, err)
13392		}()
13393	}
13394	next, err := page.fn(ctx, page.pmic)
13395	if err != nil {
13396		return err
13397	}
13398	page.pmic = next
13399	return nil
13400}
13401
13402// Next advances to the next page of values.  If there was an error making
13403// the request the page does not advance and the error is returned.
13404// Deprecated: Use NextWithContext() instead.
13405func (page *ProcessModuleInfoCollectionPage) Next() error {
13406	return page.NextWithContext(context.Background())
13407}
13408
13409// NotDone returns true if the page enumeration should be started or is not yet complete.
13410func (page ProcessModuleInfoCollectionPage) NotDone() bool {
13411	return !page.pmic.IsEmpty()
13412}
13413
13414// Response returns the raw server response from the last page request.
13415func (page ProcessModuleInfoCollectionPage) Response() ProcessModuleInfoCollection {
13416	return page.pmic
13417}
13418
13419// Values returns the slice of values for the current page or nil if there are no values.
13420func (page ProcessModuleInfoCollectionPage) Values() []ProcessModuleInfo {
13421	if page.pmic.IsEmpty() {
13422		return nil
13423	}
13424	return *page.pmic.Value
13425}
13426
13427// Creates a new instance of the ProcessModuleInfoCollectionPage type.
13428func NewProcessModuleInfoCollectionPage(getNextPage func(context.Context, ProcessModuleInfoCollection) (ProcessModuleInfoCollection, error)) ProcessModuleInfoCollectionPage {
13429	return ProcessModuleInfoCollectionPage{fn: getNextPage}
13430}
13431
13432// ProcessModuleInfoProperties processModuleInfo resource specific properties
13433type ProcessModuleInfoProperties struct {
13434	// BaseAddress - Base address. Used as module identifier in ARM resource URI.
13435	BaseAddress *string `json:"baseAddress,omitempty"`
13436	// FileName - File name.
13437	FileName *string `json:"fileName,omitempty"`
13438	// Href - HRef URI.
13439	Href *string `json:"href,omitempty"`
13440	// FilePath - File path.
13441	FilePath *string `json:"filePath,omitempty"`
13442	// ModuleMemorySize - Module memory size.
13443	ModuleMemorySize *int32 `json:"moduleMemorySize,omitempty"`
13444	// FileVersion - File version.
13445	FileVersion *string `json:"fileVersion,omitempty"`
13446	// FileDescription - File description.
13447	FileDescription *string `json:"fileDescription,omitempty"`
13448	// Product - Product name.
13449	Product *string `json:"product,omitempty"`
13450	// ProductVersion - Product version.
13451	ProductVersion *string `json:"productVersion,omitempty"`
13452	// IsDebug - Is debug?
13453	IsDebug *bool `json:"isDebug,omitempty"`
13454	// Language - Module language (locale).
13455	Language *string `json:"language,omitempty"`
13456}
13457
13458// ProcessThreadInfo process Thread Information.
13459type ProcessThreadInfo struct {
13460	autorest.Response `json:"-"`
13461	// ProcessThreadInfoProperties - ProcessThreadInfo resource specific properties
13462	*ProcessThreadInfoProperties `json:"properties,omitempty"`
13463	// ID - READ-ONLY; Resource Id.
13464	ID *string `json:"id,omitempty"`
13465	// Name - READ-ONLY; Resource Name.
13466	Name *string `json:"name,omitempty"`
13467	// Kind - Kind of resource.
13468	Kind *string `json:"kind,omitempty"`
13469	// Type - READ-ONLY; Resource type.
13470	Type *string `json:"type,omitempty"`
13471}
13472
13473// MarshalJSON is the custom marshaler for ProcessThreadInfo.
13474func (pti ProcessThreadInfo) MarshalJSON() ([]byte, error) {
13475	objectMap := make(map[string]interface{})
13476	if pti.ProcessThreadInfoProperties != nil {
13477		objectMap["properties"] = pti.ProcessThreadInfoProperties
13478	}
13479	if pti.Kind != nil {
13480		objectMap["kind"] = pti.Kind
13481	}
13482	return json.Marshal(objectMap)
13483}
13484
13485// UnmarshalJSON is the custom unmarshaler for ProcessThreadInfo struct.
13486func (pti *ProcessThreadInfo) UnmarshalJSON(body []byte) error {
13487	var m map[string]*json.RawMessage
13488	err := json.Unmarshal(body, &m)
13489	if err != nil {
13490		return err
13491	}
13492	for k, v := range m {
13493		switch k {
13494		case "properties":
13495			if v != nil {
13496				var processThreadInfoProperties ProcessThreadInfoProperties
13497				err = json.Unmarshal(*v, &processThreadInfoProperties)
13498				if err != nil {
13499					return err
13500				}
13501				pti.ProcessThreadInfoProperties = &processThreadInfoProperties
13502			}
13503		case "id":
13504			if v != nil {
13505				var ID string
13506				err = json.Unmarshal(*v, &ID)
13507				if err != nil {
13508					return err
13509				}
13510				pti.ID = &ID
13511			}
13512		case "name":
13513			if v != nil {
13514				var name string
13515				err = json.Unmarshal(*v, &name)
13516				if err != nil {
13517					return err
13518				}
13519				pti.Name = &name
13520			}
13521		case "kind":
13522			if v != nil {
13523				var kind string
13524				err = json.Unmarshal(*v, &kind)
13525				if err != nil {
13526					return err
13527				}
13528				pti.Kind = &kind
13529			}
13530		case "type":
13531			if v != nil {
13532				var typeVar string
13533				err = json.Unmarshal(*v, &typeVar)
13534				if err != nil {
13535					return err
13536				}
13537				pti.Type = &typeVar
13538			}
13539		}
13540	}
13541
13542	return nil
13543}
13544
13545// ProcessThreadInfoCollection collection of Kudu thread information elements.
13546type ProcessThreadInfoCollection struct {
13547	autorest.Response `json:"-"`
13548	// Value - Collection of resources.
13549	Value *[]ProcessThreadInfo `json:"value,omitempty"`
13550	// NextLink - READ-ONLY; Link to next page of resources.
13551	NextLink *string `json:"nextLink,omitempty"`
13552}
13553
13554// ProcessThreadInfoCollectionIterator provides access to a complete listing of ProcessThreadInfo values.
13555type ProcessThreadInfoCollectionIterator struct {
13556	i    int
13557	page ProcessThreadInfoCollectionPage
13558}
13559
13560// NextWithContext advances to the next value.  If there was an error making
13561// the request the iterator does not advance and the error is returned.
13562func (iter *ProcessThreadInfoCollectionIterator) NextWithContext(ctx context.Context) (err error) {
13563	if tracing.IsEnabled() {
13564		ctx = tracing.StartSpan(ctx, fqdn+"/ProcessThreadInfoCollectionIterator.NextWithContext")
13565		defer func() {
13566			sc := -1
13567			if iter.Response().Response.Response != nil {
13568				sc = iter.Response().Response.Response.StatusCode
13569			}
13570			tracing.EndSpan(ctx, sc, err)
13571		}()
13572	}
13573	iter.i++
13574	if iter.i < len(iter.page.Values()) {
13575		return nil
13576	}
13577	err = iter.page.NextWithContext(ctx)
13578	if err != nil {
13579		iter.i--
13580		return err
13581	}
13582	iter.i = 0
13583	return nil
13584}
13585
13586// Next advances to the next value.  If there was an error making
13587// the request the iterator does not advance and the error is returned.
13588// Deprecated: Use NextWithContext() instead.
13589func (iter *ProcessThreadInfoCollectionIterator) Next() error {
13590	return iter.NextWithContext(context.Background())
13591}
13592
13593// NotDone returns true if the enumeration should be started or is not yet complete.
13594func (iter ProcessThreadInfoCollectionIterator) NotDone() bool {
13595	return iter.page.NotDone() && iter.i < len(iter.page.Values())
13596}
13597
13598// Response returns the raw server response from the last page request.
13599func (iter ProcessThreadInfoCollectionIterator) Response() ProcessThreadInfoCollection {
13600	return iter.page.Response()
13601}
13602
13603// Value returns the current value or a zero-initialized value if the
13604// iterator has advanced beyond the end of the collection.
13605func (iter ProcessThreadInfoCollectionIterator) Value() ProcessThreadInfo {
13606	if !iter.page.NotDone() {
13607		return ProcessThreadInfo{}
13608	}
13609	return iter.page.Values()[iter.i]
13610}
13611
13612// Creates a new instance of the ProcessThreadInfoCollectionIterator type.
13613func NewProcessThreadInfoCollectionIterator(page ProcessThreadInfoCollectionPage) ProcessThreadInfoCollectionIterator {
13614	return ProcessThreadInfoCollectionIterator{page: page}
13615}
13616
13617// IsEmpty returns true if the ListResult contains no values.
13618func (ptic ProcessThreadInfoCollection) IsEmpty() bool {
13619	return ptic.Value == nil || len(*ptic.Value) == 0
13620}
13621
13622// processThreadInfoCollectionPreparer prepares a request to retrieve the next set of results.
13623// It returns nil if no more results exist.
13624func (ptic ProcessThreadInfoCollection) processThreadInfoCollectionPreparer(ctx context.Context) (*http.Request, error) {
13625	if ptic.NextLink == nil || len(to.String(ptic.NextLink)) < 1 {
13626		return nil, nil
13627	}
13628	return autorest.Prepare((&http.Request{}).WithContext(ctx),
13629		autorest.AsJSON(),
13630		autorest.AsGet(),
13631		autorest.WithBaseURL(to.String(ptic.NextLink)))
13632}
13633
13634// ProcessThreadInfoCollectionPage contains a page of ProcessThreadInfo values.
13635type ProcessThreadInfoCollectionPage struct {
13636	fn   func(context.Context, ProcessThreadInfoCollection) (ProcessThreadInfoCollection, error)
13637	ptic ProcessThreadInfoCollection
13638}
13639
13640// NextWithContext advances to the next page of values.  If there was an error making
13641// the request the page does not advance and the error is returned.
13642func (page *ProcessThreadInfoCollectionPage) NextWithContext(ctx context.Context) (err error) {
13643	if tracing.IsEnabled() {
13644		ctx = tracing.StartSpan(ctx, fqdn+"/ProcessThreadInfoCollectionPage.NextWithContext")
13645		defer func() {
13646			sc := -1
13647			if page.Response().Response.Response != nil {
13648				sc = page.Response().Response.Response.StatusCode
13649			}
13650			tracing.EndSpan(ctx, sc, err)
13651		}()
13652	}
13653	next, err := page.fn(ctx, page.ptic)
13654	if err != nil {
13655		return err
13656	}
13657	page.ptic = next
13658	return nil
13659}
13660
13661// Next advances to the next page of values.  If there was an error making
13662// the request the page does not advance and the error is returned.
13663// Deprecated: Use NextWithContext() instead.
13664func (page *ProcessThreadInfoCollectionPage) Next() error {
13665	return page.NextWithContext(context.Background())
13666}
13667
13668// NotDone returns true if the page enumeration should be started or is not yet complete.
13669func (page ProcessThreadInfoCollectionPage) NotDone() bool {
13670	return !page.ptic.IsEmpty()
13671}
13672
13673// Response returns the raw server response from the last page request.
13674func (page ProcessThreadInfoCollectionPage) Response() ProcessThreadInfoCollection {
13675	return page.ptic
13676}
13677
13678// Values returns the slice of values for the current page or nil if there are no values.
13679func (page ProcessThreadInfoCollectionPage) Values() []ProcessThreadInfo {
13680	if page.ptic.IsEmpty() {
13681		return nil
13682	}
13683	return *page.ptic.Value
13684}
13685
13686// Creates a new instance of the ProcessThreadInfoCollectionPage type.
13687func NewProcessThreadInfoCollectionPage(getNextPage func(context.Context, ProcessThreadInfoCollection) (ProcessThreadInfoCollection, error)) ProcessThreadInfoCollectionPage {
13688	return ProcessThreadInfoCollectionPage{fn: getNextPage}
13689}
13690
13691// ProcessThreadInfoProperties processThreadInfo resource specific properties
13692type ProcessThreadInfoProperties struct {
13693	// ID - ARM Identifier for deployment.
13694	ID *int32 `json:"id,omitempty"`
13695	// Href - HRef URI.
13696	Href *string `json:"href,omitempty"`
13697	// Process - Process URI.
13698	Process *string `json:"process,omitempty"`
13699	// StartAddress - Start address.
13700	StartAddress *string `json:"startAddress,omitempty"`
13701	// CurrentPriority - Current thread priority.
13702	CurrentPriority *int32 `json:"currentPriority,omitempty"`
13703	// PriorityLevel - Thread priority level.
13704	PriorityLevel *string `json:"priorityLevel,omitempty"`
13705	// BasePriority - Base priority.
13706	BasePriority *int32 `json:"basePriority,omitempty"`
13707	// StartTime - Start time.
13708	StartTime *date.Time `json:"startTime,omitempty"`
13709	// TotalProcessorTime - Total processor time.
13710	TotalProcessorTime *string `json:"totalProcessorTime,omitempty"`
13711	// UserProcessorTime - User processor time.
13712	UserProcessorTime *string `json:"userProcessorTime,omitempty"`
13713	// PriviledgedProcessorTime - Privileged processor time.
13714	PriviledgedProcessorTime *string `json:"priviledgedProcessorTime,omitempty"`
13715	// State - Thread state.
13716	State *string `json:"state,omitempty"`
13717	// WaitReason - Wait reason.
13718	WaitReason *string `json:"waitReason,omitempty"`
13719}
13720
13721// ProxyOnlyResource azure proxy only resource. This resource is not tracked by Azure Resource Manager.
13722type ProxyOnlyResource struct {
13723	// ID - READ-ONLY; Resource Id.
13724	ID *string `json:"id,omitempty"`
13725	// Name - READ-ONLY; Resource Name.
13726	Name *string `json:"name,omitempty"`
13727	// Kind - Kind of resource.
13728	Kind *string `json:"kind,omitempty"`
13729	// Type - READ-ONLY; Resource type.
13730	Type *string `json:"type,omitempty"`
13731}
13732
13733// PublicCertificate public certificate object
13734type PublicCertificate struct {
13735	autorest.Response `json:"-"`
13736	// PublicCertificateProperties - PublicCertificate resource specific properties
13737	*PublicCertificateProperties `json:"properties,omitempty"`
13738	// ID - READ-ONLY; Resource Id.
13739	ID *string `json:"id,omitempty"`
13740	// Name - READ-ONLY; Resource Name.
13741	Name *string `json:"name,omitempty"`
13742	// Kind - Kind of resource.
13743	Kind *string `json:"kind,omitempty"`
13744	// Type - READ-ONLY; Resource type.
13745	Type *string `json:"type,omitempty"`
13746}
13747
13748// MarshalJSON is the custom marshaler for PublicCertificate.
13749func (pc PublicCertificate) MarshalJSON() ([]byte, error) {
13750	objectMap := make(map[string]interface{})
13751	if pc.PublicCertificateProperties != nil {
13752		objectMap["properties"] = pc.PublicCertificateProperties
13753	}
13754	if pc.Kind != nil {
13755		objectMap["kind"] = pc.Kind
13756	}
13757	return json.Marshal(objectMap)
13758}
13759
13760// UnmarshalJSON is the custom unmarshaler for PublicCertificate struct.
13761func (pc *PublicCertificate) UnmarshalJSON(body []byte) error {
13762	var m map[string]*json.RawMessage
13763	err := json.Unmarshal(body, &m)
13764	if err != nil {
13765		return err
13766	}
13767	for k, v := range m {
13768		switch k {
13769		case "properties":
13770			if v != nil {
13771				var publicCertificateProperties PublicCertificateProperties
13772				err = json.Unmarshal(*v, &publicCertificateProperties)
13773				if err != nil {
13774					return err
13775				}
13776				pc.PublicCertificateProperties = &publicCertificateProperties
13777			}
13778		case "id":
13779			if v != nil {
13780				var ID string
13781				err = json.Unmarshal(*v, &ID)
13782				if err != nil {
13783					return err
13784				}
13785				pc.ID = &ID
13786			}
13787		case "name":
13788			if v != nil {
13789				var name string
13790				err = json.Unmarshal(*v, &name)
13791				if err != nil {
13792					return err
13793				}
13794				pc.Name = &name
13795			}
13796		case "kind":
13797			if v != nil {
13798				var kind string
13799				err = json.Unmarshal(*v, &kind)
13800				if err != nil {
13801					return err
13802				}
13803				pc.Kind = &kind
13804			}
13805		case "type":
13806			if v != nil {
13807				var typeVar string
13808				err = json.Unmarshal(*v, &typeVar)
13809				if err != nil {
13810					return err
13811				}
13812				pc.Type = &typeVar
13813			}
13814		}
13815	}
13816
13817	return nil
13818}
13819
13820// PublicCertificateCollection collection of public certificates
13821type PublicCertificateCollection struct {
13822	autorest.Response `json:"-"`
13823	// Value - Collection of resources.
13824	Value *[]PublicCertificate `json:"value,omitempty"`
13825	// NextLink - READ-ONLY; Link to next page of resources.
13826	NextLink *string `json:"nextLink,omitempty"`
13827}
13828
13829// PublicCertificateCollectionIterator provides access to a complete listing of PublicCertificate values.
13830type PublicCertificateCollectionIterator struct {
13831	i    int
13832	page PublicCertificateCollectionPage
13833}
13834
13835// NextWithContext advances to the next value.  If there was an error making
13836// the request the iterator does not advance and the error is returned.
13837func (iter *PublicCertificateCollectionIterator) NextWithContext(ctx context.Context) (err error) {
13838	if tracing.IsEnabled() {
13839		ctx = tracing.StartSpan(ctx, fqdn+"/PublicCertificateCollectionIterator.NextWithContext")
13840		defer func() {
13841			sc := -1
13842			if iter.Response().Response.Response != nil {
13843				sc = iter.Response().Response.Response.StatusCode
13844			}
13845			tracing.EndSpan(ctx, sc, err)
13846		}()
13847	}
13848	iter.i++
13849	if iter.i < len(iter.page.Values()) {
13850		return nil
13851	}
13852	err = iter.page.NextWithContext(ctx)
13853	if err != nil {
13854		iter.i--
13855		return err
13856	}
13857	iter.i = 0
13858	return nil
13859}
13860
13861// Next advances to the next value.  If there was an error making
13862// the request the iterator does not advance and the error is returned.
13863// Deprecated: Use NextWithContext() instead.
13864func (iter *PublicCertificateCollectionIterator) Next() error {
13865	return iter.NextWithContext(context.Background())
13866}
13867
13868// NotDone returns true if the enumeration should be started or is not yet complete.
13869func (iter PublicCertificateCollectionIterator) NotDone() bool {
13870	return iter.page.NotDone() && iter.i < len(iter.page.Values())
13871}
13872
13873// Response returns the raw server response from the last page request.
13874func (iter PublicCertificateCollectionIterator) Response() PublicCertificateCollection {
13875	return iter.page.Response()
13876}
13877
13878// Value returns the current value or a zero-initialized value if the
13879// iterator has advanced beyond the end of the collection.
13880func (iter PublicCertificateCollectionIterator) Value() PublicCertificate {
13881	if !iter.page.NotDone() {
13882		return PublicCertificate{}
13883	}
13884	return iter.page.Values()[iter.i]
13885}
13886
13887// Creates a new instance of the PublicCertificateCollectionIterator type.
13888func NewPublicCertificateCollectionIterator(page PublicCertificateCollectionPage) PublicCertificateCollectionIterator {
13889	return PublicCertificateCollectionIterator{page: page}
13890}
13891
13892// IsEmpty returns true if the ListResult contains no values.
13893func (pcc PublicCertificateCollection) IsEmpty() bool {
13894	return pcc.Value == nil || len(*pcc.Value) == 0
13895}
13896
13897// publicCertificateCollectionPreparer prepares a request to retrieve the next set of results.
13898// It returns nil if no more results exist.
13899func (pcc PublicCertificateCollection) publicCertificateCollectionPreparer(ctx context.Context) (*http.Request, error) {
13900	if pcc.NextLink == nil || len(to.String(pcc.NextLink)) < 1 {
13901		return nil, nil
13902	}
13903	return autorest.Prepare((&http.Request{}).WithContext(ctx),
13904		autorest.AsJSON(),
13905		autorest.AsGet(),
13906		autorest.WithBaseURL(to.String(pcc.NextLink)))
13907}
13908
13909// PublicCertificateCollectionPage contains a page of PublicCertificate values.
13910type PublicCertificateCollectionPage struct {
13911	fn  func(context.Context, PublicCertificateCollection) (PublicCertificateCollection, error)
13912	pcc PublicCertificateCollection
13913}
13914
13915// NextWithContext advances to the next page of values.  If there was an error making
13916// the request the page does not advance and the error is returned.
13917func (page *PublicCertificateCollectionPage) NextWithContext(ctx context.Context) (err error) {
13918	if tracing.IsEnabled() {
13919		ctx = tracing.StartSpan(ctx, fqdn+"/PublicCertificateCollectionPage.NextWithContext")
13920		defer func() {
13921			sc := -1
13922			if page.Response().Response.Response != nil {
13923				sc = page.Response().Response.Response.StatusCode
13924			}
13925			tracing.EndSpan(ctx, sc, err)
13926		}()
13927	}
13928	next, err := page.fn(ctx, page.pcc)
13929	if err != nil {
13930		return err
13931	}
13932	page.pcc = next
13933	return nil
13934}
13935
13936// Next advances to the next page of values.  If there was an error making
13937// the request the page does not advance and the error is returned.
13938// Deprecated: Use NextWithContext() instead.
13939func (page *PublicCertificateCollectionPage) Next() error {
13940	return page.NextWithContext(context.Background())
13941}
13942
13943// NotDone returns true if the page enumeration should be started or is not yet complete.
13944func (page PublicCertificateCollectionPage) NotDone() bool {
13945	return !page.pcc.IsEmpty()
13946}
13947
13948// Response returns the raw server response from the last page request.
13949func (page PublicCertificateCollectionPage) Response() PublicCertificateCollection {
13950	return page.pcc
13951}
13952
13953// Values returns the slice of values for the current page or nil if there are no values.
13954func (page PublicCertificateCollectionPage) Values() []PublicCertificate {
13955	if page.pcc.IsEmpty() {
13956		return nil
13957	}
13958	return *page.pcc.Value
13959}
13960
13961// Creates a new instance of the PublicCertificateCollectionPage type.
13962func NewPublicCertificateCollectionPage(getNextPage func(context.Context, PublicCertificateCollection) (PublicCertificateCollection, error)) PublicCertificateCollectionPage {
13963	return PublicCertificateCollectionPage{fn: getNextPage}
13964}
13965
13966// PublicCertificateProperties publicCertificate resource specific properties
13967type PublicCertificateProperties struct {
13968	// Blob - Public Certificate byte array
13969	Blob *[]byte `json:"blob,omitempty"`
13970	// PublicCertificateLocation - Public Certificate Location. Possible values include: 'PublicCertificateLocationCurrentUserMy', 'PublicCertificateLocationLocalMachineMy', 'PublicCertificateLocationUnknown'
13971	PublicCertificateLocation PublicCertificateLocation `json:"publicCertificateLocation,omitempty"`
13972	// Thumbprint - READ-ONLY; Certificate Thumbprint
13973	Thumbprint *string `json:"thumbprint,omitempty"`
13974}
13975
13976// PushSettings push settings for the App.
13977type PushSettings struct {
13978	autorest.Response `json:"-"`
13979	// PushSettingsProperties - PushSettings resource specific properties
13980	*PushSettingsProperties `json:"properties,omitempty"`
13981	// ID - READ-ONLY; Resource Id.
13982	ID *string `json:"id,omitempty"`
13983	// Name - READ-ONLY; Resource Name.
13984	Name *string `json:"name,omitempty"`
13985	// Kind - Kind of resource.
13986	Kind *string `json:"kind,omitempty"`
13987	// Type - READ-ONLY; Resource type.
13988	Type *string `json:"type,omitempty"`
13989}
13990
13991// MarshalJSON is the custom marshaler for PushSettings.
13992func (ps PushSettings) MarshalJSON() ([]byte, error) {
13993	objectMap := make(map[string]interface{})
13994	if ps.PushSettingsProperties != nil {
13995		objectMap["properties"] = ps.PushSettingsProperties
13996	}
13997	if ps.Kind != nil {
13998		objectMap["kind"] = ps.Kind
13999	}
14000	return json.Marshal(objectMap)
14001}
14002
14003// UnmarshalJSON is the custom unmarshaler for PushSettings struct.
14004func (ps *PushSettings) UnmarshalJSON(body []byte) error {
14005	var m map[string]*json.RawMessage
14006	err := json.Unmarshal(body, &m)
14007	if err != nil {
14008		return err
14009	}
14010	for k, v := range m {
14011		switch k {
14012		case "properties":
14013			if v != nil {
14014				var pushSettingsProperties PushSettingsProperties
14015				err = json.Unmarshal(*v, &pushSettingsProperties)
14016				if err != nil {
14017					return err
14018				}
14019				ps.PushSettingsProperties = &pushSettingsProperties
14020			}
14021		case "id":
14022			if v != nil {
14023				var ID string
14024				err = json.Unmarshal(*v, &ID)
14025				if err != nil {
14026					return err
14027				}
14028				ps.ID = &ID
14029			}
14030		case "name":
14031			if v != nil {
14032				var name string
14033				err = json.Unmarshal(*v, &name)
14034				if err != nil {
14035					return err
14036				}
14037				ps.Name = &name
14038			}
14039		case "kind":
14040			if v != nil {
14041				var kind string
14042				err = json.Unmarshal(*v, &kind)
14043				if err != nil {
14044					return err
14045				}
14046				ps.Kind = &kind
14047			}
14048		case "type":
14049			if v != nil {
14050				var typeVar string
14051				err = json.Unmarshal(*v, &typeVar)
14052				if err != nil {
14053					return err
14054				}
14055				ps.Type = &typeVar
14056			}
14057		}
14058	}
14059
14060	return nil
14061}
14062
14063// PushSettingsProperties pushSettings resource specific properties
14064type PushSettingsProperties struct {
14065	// IsPushEnabled - Gets or sets a flag indicating whether the Push endpoint is enabled.
14066	IsPushEnabled *bool `json:"isPushEnabled,omitempty"`
14067	// TagWhitelistJSON - Gets or sets a JSON string containing a list of tags that are whitelisted for use by the push registration endpoint.
14068	TagWhitelistJSON *string `json:"tagWhitelistJson,omitempty"`
14069	// TagsRequiringAuth - Gets or sets a JSON string containing a list of tags that require user authentication to be used in the push registration endpoint.
14070	// Tags can consist of alphanumeric characters and the following:
14071	// '_', '@', '#', '.', ':', '-'.
14072	// Validation should be performed at the PushRequestHandler.
14073	TagsRequiringAuth *string `json:"tagsRequiringAuth,omitempty"`
14074	// DynamicTagsJSON - Gets or sets a JSON string containing a list of dynamic tags that will be evaluated from user claims in the push registration endpoint.
14075	DynamicTagsJSON *string `json:"dynamicTagsJson,omitempty"`
14076}
14077
14078// RampUpRule routing rules for ramp up testing. This rule allows to redirect static traffic % to a slot or
14079// to gradually change routing % based on performance.
14080type RampUpRule struct {
14081	// ActionHostName - Hostname of a slot to which the traffic will be redirected if decided to. E.g. myapp-stage.azurewebsites.net.
14082	ActionHostName *string `json:"actionHostName,omitempty"`
14083	// ReroutePercentage - Percentage of the traffic which will be redirected to <code>ActionHostName</code>.
14084	ReroutePercentage *float64 `json:"reroutePercentage,omitempty"`
14085	// ChangeStep - In auto ramp up scenario this is the step to add/remove from <code>ReroutePercentage</code> until it reaches
14086	// <code>MinReroutePercentage</code> or <code>MaxReroutePercentage</code>. Site metrics are checked every N minutes specified in <code>ChangeIntervalInMinutes</code>.
14087	// Custom decision algorithm can be provided in TiPCallback site extension which URL can be specified in <code>ChangeDecisionCallbackUrl</code>.
14088	ChangeStep *float64 `json:"changeStep,omitempty"`
14089	// ChangeIntervalInMinutes - Specifies interval in minutes to reevaluate ReroutePercentage.
14090	ChangeIntervalInMinutes *int32 `json:"changeIntervalInMinutes,omitempty"`
14091	// MinReroutePercentage - Specifies lower boundary above which ReroutePercentage will stay.
14092	MinReroutePercentage *float64 `json:"minReroutePercentage,omitempty"`
14093	// MaxReroutePercentage - Specifies upper boundary below which ReroutePercentage will stay.
14094	MaxReroutePercentage *float64 `json:"maxReroutePercentage,omitempty"`
14095	// ChangeDecisionCallbackURL - Custom decision algorithm can be provided in TiPCallback site extension which URL can be specified. See TiPCallback site extension for the scaffold and contracts.
14096	// https://www.siteextensions.net/packages/TiPCallback/
14097	ChangeDecisionCallbackURL *string `json:"changeDecisionCallbackUrl,omitempty"`
14098	// Name - Name of the routing rule. The recommended name would be to point to the slot which will receive the traffic in the experiment.
14099	Name *string `json:"name,omitempty"`
14100}
14101
14102// ReadCloser ...
14103type ReadCloser struct {
14104	autorest.Response `json:"-"`
14105	Value             *io.ReadCloser `json:"value,omitempty"`
14106}
14107
14108// Recommendation represents a recommendation result generated by the recommendation engine.
14109type Recommendation struct {
14110	// RecommendationProperties - Recommendation resource specific properties
14111	*RecommendationProperties `json:"properties,omitempty"`
14112	// ID - READ-ONLY; Resource Id.
14113	ID *string `json:"id,omitempty"`
14114	// Name - READ-ONLY; Resource Name.
14115	Name *string `json:"name,omitempty"`
14116	// Kind - Kind of resource.
14117	Kind *string `json:"kind,omitempty"`
14118	// Type - READ-ONLY; Resource type.
14119	Type *string `json:"type,omitempty"`
14120}
14121
14122// MarshalJSON is the custom marshaler for Recommendation.
14123func (r Recommendation) MarshalJSON() ([]byte, error) {
14124	objectMap := make(map[string]interface{})
14125	if r.RecommendationProperties != nil {
14126		objectMap["properties"] = r.RecommendationProperties
14127	}
14128	if r.Kind != nil {
14129		objectMap["kind"] = r.Kind
14130	}
14131	return json.Marshal(objectMap)
14132}
14133
14134// UnmarshalJSON is the custom unmarshaler for Recommendation struct.
14135func (r *Recommendation) UnmarshalJSON(body []byte) error {
14136	var m map[string]*json.RawMessage
14137	err := json.Unmarshal(body, &m)
14138	if err != nil {
14139		return err
14140	}
14141	for k, v := range m {
14142		switch k {
14143		case "properties":
14144			if v != nil {
14145				var recommendationProperties RecommendationProperties
14146				err = json.Unmarshal(*v, &recommendationProperties)
14147				if err != nil {
14148					return err
14149				}
14150				r.RecommendationProperties = &recommendationProperties
14151			}
14152		case "id":
14153			if v != nil {
14154				var ID string
14155				err = json.Unmarshal(*v, &ID)
14156				if err != nil {
14157					return err
14158				}
14159				r.ID = &ID
14160			}
14161		case "name":
14162			if v != nil {
14163				var name string
14164				err = json.Unmarshal(*v, &name)
14165				if err != nil {
14166					return err
14167				}
14168				r.Name = &name
14169			}
14170		case "kind":
14171			if v != nil {
14172				var kind string
14173				err = json.Unmarshal(*v, &kind)
14174				if err != nil {
14175					return err
14176				}
14177				r.Kind = &kind
14178			}
14179		case "type":
14180			if v != nil {
14181				var typeVar string
14182				err = json.Unmarshal(*v, &typeVar)
14183				if err != nil {
14184					return err
14185				}
14186				r.Type = &typeVar
14187			}
14188		}
14189	}
14190
14191	return nil
14192}
14193
14194// RecommendationCollection collection of recommendations.
14195type RecommendationCollection struct {
14196	autorest.Response `json:"-"`
14197	// Value - Collection of resources.
14198	Value *[]Recommendation `json:"value,omitempty"`
14199	// NextLink - READ-ONLY; Link to next page of resources.
14200	NextLink *string `json:"nextLink,omitempty"`
14201}
14202
14203// RecommendationCollectionIterator provides access to a complete listing of Recommendation values.
14204type RecommendationCollectionIterator struct {
14205	i    int
14206	page RecommendationCollectionPage
14207}
14208
14209// NextWithContext advances to the next value.  If there was an error making
14210// the request the iterator does not advance and the error is returned.
14211func (iter *RecommendationCollectionIterator) NextWithContext(ctx context.Context) (err error) {
14212	if tracing.IsEnabled() {
14213		ctx = tracing.StartSpan(ctx, fqdn+"/RecommendationCollectionIterator.NextWithContext")
14214		defer func() {
14215			sc := -1
14216			if iter.Response().Response.Response != nil {
14217				sc = iter.Response().Response.Response.StatusCode
14218			}
14219			tracing.EndSpan(ctx, sc, err)
14220		}()
14221	}
14222	iter.i++
14223	if iter.i < len(iter.page.Values()) {
14224		return nil
14225	}
14226	err = iter.page.NextWithContext(ctx)
14227	if err != nil {
14228		iter.i--
14229		return err
14230	}
14231	iter.i = 0
14232	return nil
14233}
14234
14235// Next advances to the next value.  If there was an error making
14236// the request the iterator does not advance and the error is returned.
14237// Deprecated: Use NextWithContext() instead.
14238func (iter *RecommendationCollectionIterator) Next() error {
14239	return iter.NextWithContext(context.Background())
14240}
14241
14242// NotDone returns true if the enumeration should be started or is not yet complete.
14243func (iter RecommendationCollectionIterator) NotDone() bool {
14244	return iter.page.NotDone() && iter.i < len(iter.page.Values())
14245}
14246
14247// Response returns the raw server response from the last page request.
14248func (iter RecommendationCollectionIterator) Response() RecommendationCollection {
14249	return iter.page.Response()
14250}
14251
14252// Value returns the current value or a zero-initialized value if the
14253// iterator has advanced beyond the end of the collection.
14254func (iter RecommendationCollectionIterator) Value() Recommendation {
14255	if !iter.page.NotDone() {
14256		return Recommendation{}
14257	}
14258	return iter.page.Values()[iter.i]
14259}
14260
14261// Creates a new instance of the RecommendationCollectionIterator type.
14262func NewRecommendationCollectionIterator(page RecommendationCollectionPage) RecommendationCollectionIterator {
14263	return RecommendationCollectionIterator{page: page}
14264}
14265
14266// IsEmpty returns true if the ListResult contains no values.
14267func (rc RecommendationCollection) IsEmpty() bool {
14268	return rc.Value == nil || len(*rc.Value) == 0
14269}
14270
14271// recommendationCollectionPreparer prepares a request to retrieve the next set of results.
14272// It returns nil if no more results exist.
14273func (rc RecommendationCollection) recommendationCollectionPreparer(ctx context.Context) (*http.Request, error) {
14274	if rc.NextLink == nil || len(to.String(rc.NextLink)) < 1 {
14275		return nil, nil
14276	}
14277	return autorest.Prepare((&http.Request{}).WithContext(ctx),
14278		autorest.AsJSON(),
14279		autorest.AsGet(),
14280		autorest.WithBaseURL(to.String(rc.NextLink)))
14281}
14282
14283// RecommendationCollectionPage contains a page of Recommendation values.
14284type RecommendationCollectionPage struct {
14285	fn func(context.Context, RecommendationCollection) (RecommendationCollection, error)
14286	rc RecommendationCollection
14287}
14288
14289// NextWithContext advances to the next page of values.  If there was an error making
14290// the request the page does not advance and the error is returned.
14291func (page *RecommendationCollectionPage) NextWithContext(ctx context.Context) (err error) {
14292	if tracing.IsEnabled() {
14293		ctx = tracing.StartSpan(ctx, fqdn+"/RecommendationCollectionPage.NextWithContext")
14294		defer func() {
14295			sc := -1
14296			if page.Response().Response.Response != nil {
14297				sc = page.Response().Response.Response.StatusCode
14298			}
14299			tracing.EndSpan(ctx, sc, err)
14300		}()
14301	}
14302	next, err := page.fn(ctx, page.rc)
14303	if err != nil {
14304		return err
14305	}
14306	page.rc = next
14307	return nil
14308}
14309
14310// Next advances to the next page of values.  If there was an error making
14311// the request the page does not advance and the error is returned.
14312// Deprecated: Use NextWithContext() instead.
14313func (page *RecommendationCollectionPage) Next() error {
14314	return page.NextWithContext(context.Background())
14315}
14316
14317// NotDone returns true if the page enumeration should be started or is not yet complete.
14318func (page RecommendationCollectionPage) NotDone() bool {
14319	return !page.rc.IsEmpty()
14320}
14321
14322// Response returns the raw server response from the last page request.
14323func (page RecommendationCollectionPage) Response() RecommendationCollection {
14324	return page.rc
14325}
14326
14327// Values returns the slice of values for the current page or nil if there are no values.
14328func (page RecommendationCollectionPage) Values() []Recommendation {
14329	if page.rc.IsEmpty() {
14330		return nil
14331	}
14332	return *page.rc.Value
14333}
14334
14335// Creates a new instance of the RecommendationCollectionPage type.
14336func NewRecommendationCollectionPage(getNextPage func(context.Context, RecommendationCollection) (RecommendationCollection, error)) RecommendationCollectionPage {
14337	return RecommendationCollectionPage{fn: getNextPage}
14338}
14339
14340// RecommendationProperties recommendation resource specific properties
14341type RecommendationProperties struct {
14342	// CreationTime - Timestamp when this instance was created.
14343	CreationTime *date.Time `json:"creationTime,omitempty"`
14344	// RecommendationID - A GUID value that each recommendation object is associated with.
14345	RecommendationID *uuid.UUID `json:"recommendationId,omitempty"`
14346	// ResourceID - Full ARM resource ID string that this recommendation object is associated with.
14347	ResourceID *string `json:"resourceId,omitempty"`
14348	// ResourceScope - Name of a resource type this recommendation applies, e.g. Subscription, ServerFarm, Site. Possible values include: 'ServerFarm', 'Subscription', 'WebSite'
14349	ResourceScope ResourceScopeType `json:"resourceScope,omitempty"`
14350	// RuleName - Unique name of the rule.
14351	RuleName *string `json:"ruleName,omitempty"`
14352	// DisplayName - UI friendly name of the rule (may not be unique).
14353	DisplayName *string `json:"displayName,omitempty"`
14354	// Message - Recommendation text.
14355	Message *string `json:"message,omitempty"`
14356	// Level - Level indicating how critical this recommendation can impact. Possible values include: 'NotificationLevelCritical', 'NotificationLevelWarning', 'NotificationLevelInformation', 'NotificationLevelNonUrgentSuggestion'
14357	Level NotificationLevel `json:"level,omitempty"`
14358	// Channels - List of channels that this recommendation can apply. Possible values include: 'Notification', 'API', 'Email', 'Webhook', 'All'
14359	Channels Channels `json:"channels,omitempty"`
14360	// Tags - The list of category tags that this recommendation belongs to.
14361	Tags *[]string `json:"tags,omitempty"`
14362	// ActionName - Name of action recommended by this object.
14363	ActionName *string `json:"actionName,omitempty"`
14364	// StartTime - The beginning time in UTC of a range that the recommendation refers to.
14365	StartTime *date.Time `json:"startTime,omitempty"`
14366	// EndTime - The end time in UTC of a range that the recommendation refers to.
14367	EndTime *date.Time `json:"endTime,omitempty"`
14368	// NextNotificationTime - When to notify this recommendation next in UTC. Null means that this will never be notified anymore.
14369	NextNotificationTime *date.Time `json:"nextNotificationTime,omitempty"`
14370	// NotificationExpirationTime - Date and time in UTC when this notification expires.
14371	NotificationExpirationTime *date.Time `json:"notificationExpirationTime,omitempty"`
14372	// NotifiedTime - Last timestamp in UTC this instance was actually notified. Null means that this recommendation hasn't been notified yet.
14373	NotifiedTime *date.Time `json:"notifiedTime,omitempty"`
14374	// Score - A metric value measured by the rule.
14375	Score *float64 `json:"score,omitempty"`
14376	// IsDynamic - True if this is associated with a dynamically added rule
14377	IsDynamic *bool `json:"isDynamic,omitempty"`
14378	// ExtensionName - Extension name of the portal if exists.
14379	ExtensionName *string `json:"extensionName,omitempty"`
14380	// BladeName - Deep link to a blade on the portal.
14381	BladeName *string `json:"bladeName,omitempty"`
14382	// ForwardLink - Forward link to an external document associated with the rule.
14383	ForwardLink *string `json:"forwardLink,omitempty"`
14384}
14385
14386// RecommendationRule represents a recommendation rule that the recommendation engine can perform.
14387type RecommendationRule struct {
14388	autorest.Response `json:"-"`
14389	// RecommendationRuleProperties - RecommendationRule resource specific properties
14390	*RecommendationRuleProperties `json:"properties,omitempty"`
14391	// ID - READ-ONLY; Resource Id.
14392	ID *string `json:"id,omitempty"`
14393	// Name - READ-ONLY; Resource Name.
14394	Name *string `json:"name,omitempty"`
14395	// Kind - Kind of resource.
14396	Kind *string `json:"kind,omitempty"`
14397	// Type - READ-ONLY; Resource type.
14398	Type *string `json:"type,omitempty"`
14399}
14400
14401// MarshalJSON is the custom marshaler for RecommendationRule.
14402func (rr RecommendationRule) MarshalJSON() ([]byte, error) {
14403	objectMap := make(map[string]interface{})
14404	if rr.RecommendationRuleProperties != nil {
14405		objectMap["properties"] = rr.RecommendationRuleProperties
14406	}
14407	if rr.Kind != nil {
14408		objectMap["kind"] = rr.Kind
14409	}
14410	return json.Marshal(objectMap)
14411}
14412
14413// UnmarshalJSON is the custom unmarshaler for RecommendationRule struct.
14414func (rr *RecommendationRule) UnmarshalJSON(body []byte) error {
14415	var m map[string]*json.RawMessage
14416	err := json.Unmarshal(body, &m)
14417	if err != nil {
14418		return err
14419	}
14420	for k, v := range m {
14421		switch k {
14422		case "properties":
14423			if v != nil {
14424				var recommendationRuleProperties RecommendationRuleProperties
14425				err = json.Unmarshal(*v, &recommendationRuleProperties)
14426				if err != nil {
14427					return err
14428				}
14429				rr.RecommendationRuleProperties = &recommendationRuleProperties
14430			}
14431		case "id":
14432			if v != nil {
14433				var ID string
14434				err = json.Unmarshal(*v, &ID)
14435				if err != nil {
14436					return err
14437				}
14438				rr.ID = &ID
14439			}
14440		case "name":
14441			if v != nil {
14442				var name string
14443				err = json.Unmarshal(*v, &name)
14444				if err != nil {
14445					return err
14446				}
14447				rr.Name = &name
14448			}
14449		case "kind":
14450			if v != nil {
14451				var kind string
14452				err = json.Unmarshal(*v, &kind)
14453				if err != nil {
14454					return err
14455				}
14456				rr.Kind = &kind
14457			}
14458		case "type":
14459			if v != nil {
14460				var typeVar string
14461				err = json.Unmarshal(*v, &typeVar)
14462				if err != nil {
14463					return err
14464				}
14465				rr.Type = &typeVar
14466			}
14467		}
14468	}
14469
14470	return nil
14471}
14472
14473// RecommendationRuleProperties recommendationRule resource specific properties
14474type RecommendationRuleProperties struct {
14475	// Name - Unique name of the rule.
14476	Name *string `json:"name,omitempty"`
14477	// DisplayName - UI friendly name of the rule.
14478	DisplayName *string `json:"displayName,omitempty"`
14479	// Message - Localized name of the rule (Good for UI).
14480	Message *string `json:"message,omitempty"`
14481	// RecommendationID - Recommendation ID of an associated recommendation object tied to the rule, if exists.
14482	// If such an object doesn't exist, it is set to null.
14483	RecommendationID *uuid.UUID `json:"recommendationId,omitempty"`
14484	// Description - Localized detailed description of the rule.
14485	Description *string `json:"description,omitempty"`
14486	// ActionName - Name of action that is recommended by this rule in string.
14487	ActionName *string `json:"actionName,omitempty"`
14488	// Level - Level of impact indicating how critical this rule is. Possible values include: 'NotificationLevelCritical', 'NotificationLevelWarning', 'NotificationLevelInformation', 'NotificationLevelNonUrgentSuggestion'
14489	Level NotificationLevel `json:"level,omitempty"`
14490	// Channels - List of available channels that this rule applies. Possible values include: 'Notification', 'API', 'Email', 'Webhook', 'All'
14491	Channels Channels `json:"channels,omitempty"`
14492	// Tags - An array of category tags that the rule contains.
14493	Tags *[]string `json:"tags,omitempty"`
14494	// IsDynamic - True if this is associated with a dynamically added rule
14495	IsDynamic *bool `json:"isDynamic,omitempty"`
14496	// ExtensionName - Extension name of the portal if exists. Applicable to dynamic rule only.
14497	ExtensionName *string `json:"extensionName,omitempty"`
14498	// BladeName - Deep link to a blade on the portal. Applicable to dynamic rule only.
14499	BladeName *string `json:"bladeName,omitempty"`
14500	// ForwardLink - Forward link to an external document associated with the rule. Applicable to dynamic rule only.
14501	ForwardLink *string `json:"forwardLink,omitempty"`
14502}
14503
14504// ReissueCertificateOrderRequest class representing certificate reissue request.
14505type ReissueCertificateOrderRequest struct {
14506	// ReissueCertificateOrderRequestProperties - ReissueCertificateOrderRequest resource specific properties
14507	*ReissueCertificateOrderRequestProperties `json:"properties,omitempty"`
14508	// ID - READ-ONLY; Resource Id.
14509	ID *string `json:"id,omitempty"`
14510	// Name - READ-ONLY; Resource Name.
14511	Name *string `json:"name,omitempty"`
14512	// Kind - Kind of resource.
14513	Kind *string `json:"kind,omitempty"`
14514	// Type - READ-ONLY; Resource type.
14515	Type *string `json:"type,omitempty"`
14516}
14517
14518// MarshalJSON is the custom marshaler for ReissueCertificateOrderRequest.
14519func (rcor ReissueCertificateOrderRequest) MarshalJSON() ([]byte, error) {
14520	objectMap := make(map[string]interface{})
14521	if rcor.ReissueCertificateOrderRequestProperties != nil {
14522		objectMap["properties"] = rcor.ReissueCertificateOrderRequestProperties
14523	}
14524	if rcor.Kind != nil {
14525		objectMap["kind"] = rcor.Kind
14526	}
14527	return json.Marshal(objectMap)
14528}
14529
14530// UnmarshalJSON is the custom unmarshaler for ReissueCertificateOrderRequest struct.
14531func (rcor *ReissueCertificateOrderRequest) UnmarshalJSON(body []byte) error {
14532	var m map[string]*json.RawMessage
14533	err := json.Unmarshal(body, &m)
14534	if err != nil {
14535		return err
14536	}
14537	for k, v := range m {
14538		switch k {
14539		case "properties":
14540			if v != nil {
14541				var reissueCertificateOrderRequestProperties ReissueCertificateOrderRequestProperties
14542				err = json.Unmarshal(*v, &reissueCertificateOrderRequestProperties)
14543				if err != nil {
14544					return err
14545				}
14546				rcor.ReissueCertificateOrderRequestProperties = &reissueCertificateOrderRequestProperties
14547			}
14548		case "id":
14549			if v != nil {
14550				var ID string
14551				err = json.Unmarshal(*v, &ID)
14552				if err != nil {
14553					return err
14554				}
14555				rcor.ID = &ID
14556			}
14557		case "name":
14558			if v != nil {
14559				var name string
14560				err = json.Unmarshal(*v, &name)
14561				if err != nil {
14562					return err
14563				}
14564				rcor.Name = &name
14565			}
14566		case "kind":
14567			if v != nil {
14568				var kind string
14569				err = json.Unmarshal(*v, &kind)
14570				if err != nil {
14571					return err
14572				}
14573				rcor.Kind = &kind
14574			}
14575		case "type":
14576			if v != nil {
14577				var typeVar string
14578				err = json.Unmarshal(*v, &typeVar)
14579				if err != nil {
14580					return err
14581				}
14582				rcor.Type = &typeVar
14583			}
14584		}
14585	}
14586
14587	return nil
14588}
14589
14590// ReissueCertificateOrderRequestProperties reissueCertificateOrderRequest resource specific properties
14591type ReissueCertificateOrderRequestProperties struct {
14592	// KeySize - Certificate Key Size.
14593	KeySize *int32 `json:"keySize,omitempty"`
14594	// DelayExistingRevokeInHours - Delay in hours to revoke existing certificate after the new certificate is issued.
14595	DelayExistingRevokeInHours *int32 `json:"delayExistingRevokeInHours,omitempty"`
14596	// Csr - Csr to be used for re-key operation.
14597	Csr *string `json:"csr,omitempty"`
14598	// IsPrivateKeyExternal - Should we change the ASC type (from managed private key to external private key and vice versa).
14599	IsPrivateKeyExternal *bool `json:"isPrivateKeyExternal,omitempty"`
14600}
14601
14602// RelayServiceConnectionEntity hybrid Connection for an App Service app.
14603type RelayServiceConnectionEntity struct {
14604	autorest.Response `json:"-"`
14605	// RelayServiceConnectionEntityProperties - RelayServiceConnectionEntity resource specific properties
14606	*RelayServiceConnectionEntityProperties `json:"properties,omitempty"`
14607	// ID - READ-ONLY; Resource Id.
14608	ID *string `json:"id,omitempty"`
14609	// Name - READ-ONLY; Resource Name.
14610	Name *string `json:"name,omitempty"`
14611	// Kind - Kind of resource.
14612	Kind *string `json:"kind,omitempty"`
14613	// Type - READ-ONLY; Resource type.
14614	Type *string `json:"type,omitempty"`
14615}
14616
14617// MarshalJSON is the custom marshaler for RelayServiceConnectionEntity.
14618func (rsce RelayServiceConnectionEntity) MarshalJSON() ([]byte, error) {
14619	objectMap := make(map[string]interface{})
14620	if rsce.RelayServiceConnectionEntityProperties != nil {
14621		objectMap["properties"] = rsce.RelayServiceConnectionEntityProperties
14622	}
14623	if rsce.Kind != nil {
14624		objectMap["kind"] = rsce.Kind
14625	}
14626	return json.Marshal(objectMap)
14627}
14628
14629// UnmarshalJSON is the custom unmarshaler for RelayServiceConnectionEntity struct.
14630func (rsce *RelayServiceConnectionEntity) UnmarshalJSON(body []byte) error {
14631	var m map[string]*json.RawMessage
14632	err := json.Unmarshal(body, &m)
14633	if err != nil {
14634		return err
14635	}
14636	for k, v := range m {
14637		switch k {
14638		case "properties":
14639			if v != nil {
14640				var relayServiceConnectionEntityProperties RelayServiceConnectionEntityProperties
14641				err = json.Unmarshal(*v, &relayServiceConnectionEntityProperties)
14642				if err != nil {
14643					return err
14644				}
14645				rsce.RelayServiceConnectionEntityProperties = &relayServiceConnectionEntityProperties
14646			}
14647		case "id":
14648			if v != nil {
14649				var ID string
14650				err = json.Unmarshal(*v, &ID)
14651				if err != nil {
14652					return err
14653				}
14654				rsce.ID = &ID
14655			}
14656		case "name":
14657			if v != nil {
14658				var name string
14659				err = json.Unmarshal(*v, &name)
14660				if err != nil {
14661					return err
14662				}
14663				rsce.Name = &name
14664			}
14665		case "kind":
14666			if v != nil {
14667				var kind string
14668				err = json.Unmarshal(*v, &kind)
14669				if err != nil {
14670					return err
14671				}
14672				rsce.Kind = &kind
14673			}
14674		case "type":
14675			if v != nil {
14676				var typeVar string
14677				err = json.Unmarshal(*v, &typeVar)
14678				if err != nil {
14679					return err
14680				}
14681				rsce.Type = &typeVar
14682			}
14683		}
14684	}
14685
14686	return nil
14687}
14688
14689// RelayServiceConnectionEntityProperties relayServiceConnectionEntity resource specific properties
14690type RelayServiceConnectionEntityProperties struct {
14691	EntityName               *string `json:"entityName,omitempty"`
14692	EntityConnectionString   *string `json:"entityConnectionString,omitempty"`
14693	ResourceType             *string `json:"resourceType,omitempty"`
14694	ResourceConnectionString *string `json:"resourceConnectionString,omitempty"`
14695	Hostname                 *string `json:"hostname,omitempty"`
14696	Port                     *int32  `json:"port,omitempty"`
14697	BiztalkURI               *string `json:"biztalkUri,omitempty"`
14698}
14699
14700// Rendering instructions for rendering the data
14701type Rendering struct {
14702	// RenderingType - Rendering Type. Possible values include: 'NoGraph', 'Table', 'TimeSeries', 'TimeSeriesPerInstance'
14703	RenderingType RenderingType `json:"renderingType,omitempty"`
14704	// Title - Title of data
14705	Title *string `json:"title,omitempty"`
14706	// Description - Description of the data that will help it be interpreted
14707	Description *string `json:"description,omitempty"`
14708}
14709
14710// RenewCertificateOrderRequest class representing certificate renew request.
14711type RenewCertificateOrderRequest struct {
14712	// RenewCertificateOrderRequestProperties - RenewCertificateOrderRequest resource specific properties
14713	*RenewCertificateOrderRequestProperties `json:"properties,omitempty"`
14714	// ID - READ-ONLY; Resource Id.
14715	ID *string `json:"id,omitempty"`
14716	// Name - READ-ONLY; Resource Name.
14717	Name *string `json:"name,omitempty"`
14718	// Kind - Kind of resource.
14719	Kind *string `json:"kind,omitempty"`
14720	// Type - READ-ONLY; Resource type.
14721	Type *string `json:"type,omitempty"`
14722}
14723
14724// MarshalJSON is the custom marshaler for RenewCertificateOrderRequest.
14725func (rcor RenewCertificateOrderRequest) MarshalJSON() ([]byte, error) {
14726	objectMap := make(map[string]interface{})
14727	if rcor.RenewCertificateOrderRequestProperties != nil {
14728		objectMap["properties"] = rcor.RenewCertificateOrderRequestProperties
14729	}
14730	if rcor.Kind != nil {
14731		objectMap["kind"] = rcor.Kind
14732	}
14733	return json.Marshal(objectMap)
14734}
14735
14736// UnmarshalJSON is the custom unmarshaler for RenewCertificateOrderRequest struct.
14737func (rcor *RenewCertificateOrderRequest) UnmarshalJSON(body []byte) error {
14738	var m map[string]*json.RawMessage
14739	err := json.Unmarshal(body, &m)
14740	if err != nil {
14741		return err
14742	}
14743	for k, v := range m {
14744		switch k {
14745		case "properties":
14746			if v != nil {
14747				var renewCertificateOrderRequestProperties RenewCertificateOrderRequestProperties
14748				err = json.Unmarshal(*v, &renewCertificateOrderRequestProperties)
14749				if err != nil {
14750					return err
14751				}
14752				rcor.RenewCertificateOrderRequestProperties = &renewCertificateOrderRequestProperties
14753			}
14754		case "id":
14755			if v != nil {
14756				var ID string
14757				err = json.Unmarshal(*v, &ID)
14758				if err != nil {
14759					return err
14760				}
14761				rcor.ID = &ID
14762			}
14763		case "name":
14764			if v != nil {
14765				var name string
14766				err = json.Unmarshal(*v, &name)
14767				if err != nil {
14768					return err
14769				}
14770				rcor.Name = &name
14771			}
14772		case "kind":
14773			if v != nil {
14774				var kind string
14775				err = json.Unmarshal(*v, &kind)
14776				if err != nil {
14777					return err
14778				}
14779				rcor.Kind = &kind
14780			}
14781		case "type":
14782			if v != nil {
14783				var typeVar string
14784				err = json.Unmarshal(*v, &typeVar)
14785				if err != nil {
14786					return err
14787				}
14788				rcor.Type = &typeVar
14789			}
14790		}
14791	}
14792
14793	return nil
14794}
14795
14796// RenewCertificateOrderRequestProperties renewCertificateOrderRequest resource specific properties
14797type RenewCertificateOrderRequestProperties struct {
14798	// KeySize - Certificate Key Size.
14799	KeySize *int32 `json:"keySize,omitempty"`
14800	// Csr - Csr to be used for re-key operation.
14801	Csr *string `json:"csr,omitempty"`
14802	// IsPrivateKeyExternal - Should we change the ASC type (from managed private key to external private key and vice versa).
14803	IsPrivateKeyExternal *bool `json:"isPrivateKeyExternal,omitempty"`
14804}
14805
14806// RequestsBasedTrigger trigger based on total requests.
14807type RequestsBasedTrigger struct {
14808	// Count - Request Count.
14809	Count *int32 `json:"count,omitempty"`
14810	// TimeInterval - Time interval.
14811	TimeInterval *string `json:"timeInterval,omitempty"`
14812}
14813
14814// Resource azure resource. This resource is tracked in Azure Resource Manager
14815type Resource struct {
14816	// ID - READ-ONLY; Resource Id.
14817	ID *string `json:"id,omitempty"`
14818	// Name - READ-ONLY; Resource Name.
14819	Name *string `json:"name,omitempty"`
14820	// Kind - Kind of resource.
14821	Kind *string `json:"kind,omitempty"`
14822	// Location - Resource Location.
14823	Location *string `json:"location,omitempty"`
14824	// Type - READ-ONLY; Resource type.
14825	Type *string `json:"type,omitempty"`
14826	// Tags - Resource tags.
14827	Tags map[string]*string `json:"tags"`
14828}
14829
14830// MarshalJSON is the custom marshaler for Resource.
14831func (r Resource) MarshalJSON() ([]byte, error) {
14832	objectMap := make(map[string]interface{})
14833	if r.Kind != nil {
14834		objectMap["kind"] = r.Kind
14835	}
14836	if r.Location != nil {
14837		objectMap["location"] = r.Location
14838	}
14839	if r.Tags != nil {
14840		objectMap["tags"] = r.Tags
14841	}
14842	return json.Marshal(objectMap)
14843}
14844
14845// ResourceCollection collection of resources.
14846type ResourceCollection struct {
14847	autorest.Response `json:"-"`
14848	// Value - Collection of resources.
14849	Value *[]string `json:"value,omitempty"`
14850	// NextLink - READ-ONLY; Link to next page of resources.
14851	NextLink *string `json:"nextLink,omitempty"`
14852}
14853
14854// ResourceCollectionIterator provides access to a complete listing of string values.
14855type ResourceCollectionIterator struct {
14856	i    int
14857	page ResourceCollectionPage
14858}
14859
14860// NextWithContext advances to the next value.  If there was an error making
14861// the request the iterator does not advance and the error is returned.
14862func (iter *ResourceCollectionIterator) NextWithContext(ctx context.Context) (err error) {
14863	if tracing.IsEnabled() {
14864		ctx = tracing.StartSpan(ctx, fqdn+"/ResourceCollectionIterator.NextWithContext")
14865		defer func() {
14866			sc := -1
14867			if iter.Response().Response.Response != nil {
14868				sc = iter.Response().Response.Response.StatusCode
14869			}
14870			tracing.EndSpan(ctx, sc, err)
14871		}()
14872	}
14873	iter.i++
14874	if iter.i < len(iter.page.Values()) {
14875		return nil
14876	}
14877	err = iter.page.NextWithContext(ctx)
14878	if err != nil {
14879		iter.i--
14880		return err
14881	}
14882	iter.i = 0
14883	return nil
14884}
14885
14886// Next advances to the next value.  If there was an error making
14887// the request the iterator does not advance and the error is returned.
14888// Deprecated: Use NextWithContext() instead.
14889func (iter *ResourceCollectionIterator) Next() error {
14890	return iter.NextWithContext(context.Background())
14891}
14892
14893// NotDone returns true if the enumeration should be started or is not yet complete.
14894func (iter ResourceCollectionIterator) NotDone() bool {
14895	return iter.page.NotDone() && iter.i < len(iter.page.Values())
14896}
14897
14898// Response returns the raw server response from the last page request.
14899func (iter ResourceCollectionIterator) Response() ResourceCollection {
14900	return iter.page.Response()
14901}
14902
14903// Value returns the current value or a zero-initialized value if the
14904// iterator has advanced beyond the end of the collection.
14905func (iter ResourceCollectionIterator) Value() string {
14906	if !iter.page.NotDone() {
14907		return ""
14908	}
14909	return iter.page.Values()[iter.i]
14910}
14911
14912// Creates a new instance of the ResourceCollectionIterator type.
14913func NewResourceCollectionIterator(page ResourceCollectionPage) ResourceCollectionIterator {
14914	return ResourceCollectionIterator{page: page}
14915}
14916
14917// IsEmpty returns true if the ListResult contains no values.
14918func (rc ResourceCollection) IsEmpty() bool {
14919	return rc.Value == nil || len(*rc.Value) == 0
14920}
14921
14922// resourceCollectionPreparer prepares a request to retrieve the next set of results.
14923// It returns nil if no more results exist.
14924func (rc ResourceCollection) resourceCollectionPreparer(ctx context.Context) (*http.Request, error) {
14925	if rc.NextLink == nil || len(to.String(rc.NextLink)) < 1 {
14926		return nil, nil
14927	}
14928	return autorest.Prepare((&http.Request{}).WithContext(ctx),
14929		autorest.AsJSON(),
14930		autorest.AsGet(),
14931		autorest.WithBaseURL(to.String(rc.NextLink)))
14932}
14933
14934// ResourceCollectionPage contains a page of string values.
14935type ResourceCollectionPage struct {
14936	fn func(context.Context, ResourceCollection) (ResourceCollection, error)
14937	rc ResourceCollection
14938}
14939
14940// NextWithContext advances to the next page of values.  If there was an error making
14941// the request the page does not advance and the error is returned.
14942func (page *ResourceCollectionPage) NextWithContext(ctx context.Context) (err error) {
14943	if tracing.IsEnabled() {
14944		ctx = tracing.StartSpan(ctx, fqdn+"/ResourceCollectionPage.NextWithContext")
14945		defer func() {
14946			sc := -1
14947			if page.Response().Response.Response != nil {
14948				sc = page.Response().Response.Response.StatusCode
14949			}
14950			tracing.EndSpan(ctx, sc, err)
14951		}()
14952	}
14953	next, err := page.fn(ctx, page.rc)
14954	if err != nil {
14955		return err
14956	}
14957	page.rc = next
14958	return nil
14959}
14960
14961// Next advances to the next page of values.  If there was an error making
14962// the request the page does not advance and the error is returned.
14963// Deprecated: Use NextWithContext() instead.
14964func (page *ResourceCollectionPage) Next() error {
14965	return page.NextWithContext(context.Background())
14966}
14967
14968// NotDone returns true if the page enumeration should be started or is not yet complete.
14969func (page ResourceCollectionPage) NotDone() bool {
14970	return !page.rc.IsEmpty()
14971}
14972
14973// Response returns the raw server response from the last page request.
14974func (page ResourceCollectionPage) Response() ResourceCollection {
14975	return page.rc
14976}
14977
14978// Values returns the slice of values for the current page or nil if there are no values.
14979func (page ResourceCollectionPage) Values() []string {
14980	if page.rc.IsEmpty() {
14981		return nil
14982	}
14983	return *page.rc.Value
14984}
14985
14986// Creates a new instance of the ResourceCollectionPage type.
14987func NewResourceCollectionPage(getNextPage func(context.Context, ResourceCollection) (ResourceCollection, error)) ResourceCollectionPage {
14988	return ResourceCollectionPage{fn: getNextPage}
14989}
14990
14991// ResourceHealthMetadata used for getting ResourceHealthCheck settings.
14992type ResourceHealthMetadata struct {
14993	autorest.Response `json:"-"`
14994	// ResourceHealthMetadataProperties - ResourceHealthMetadata resource specific properties
14995	*ResourceHealthMetadataProperties `json:"properties,omitempty"`
14996	// ID - READ-ONLY; Resource Id.
14997	ID *string `json:"id,omitempty"`
14998	// Name - READ-ONLY; Resource Name.
14999	Name *string `json:"name,omitempty"`
15000	// Kind - Kind of resource.
15001	Kind *string `json:"kind,omitempty"`
15002	// Type - READ-ONLY; Resource type.
15003	Type *string `json:"type,omitempty"`
15004}
15005
15006// MarshalJSON is the custom marshaler for ResourceHealthMetadata.
15007func (rhm ResourceHealthMetadata) MarshalJSON() ([]byte, error) {
15008	objectMap := make(map[string]interface{})
15009	if rhm.ResourceHealthMetadataProperties != nil {
15010		objectMap["properties"] = rhm.ResourceHealthMetadataProperties
15011	}
15012	if rhm.Kind != nil {
15013		objectMap["kind"] = rhm.Kind
15014	}
15015	return json.Marshal(objectMap)
15016}
15017
15018// UnmarshalJSON is the custom unmarshaler for ResourceHealthMetadata struct.
15019func (rhm *ResourceHealthMetadata) UnmarshalJSON(body []byte) error {
15020	var m map[string]*json.RawMessage
15021	err := json.Unmarshal(body, &m)
15022	if err != nil {
15023		return err
15024	}
15025	for k, v := range m {
15026		switch k {
15027		case "properties":
15028			if v != nil {
15029				var resourceHealthMetadataProperties ResourceHealthMetadataProperties
15030				err = json.Unmarshal(*v, &resourceHealthMetadataProperties)
15031				if err != nil {
15032					return err
15033				}
15034				rhm.ResourceHealthMetadataProperties = &resourceHealthMetadataProperties
15035			}
15036		case "id":
15037			if v != nil {
15038				var ID string
15039				err = json.Unmarshal(*v, &ID)
15040				if err != nil {
15041					return err
15042				}
15043				rhm.ID = &ID
15044			}
15045		case "name":
15046			if v != nil {
15047				var name string
15048				err = json.Unmarshal(*v, &name)
15049				if err != nil {
15050					return err
15051				}
15052				rhm.Name = &name
15053			}
15054		case "kind":
15055			if v != nil {
15056				var kind string
15057				err = json.Unmarshal(*v, &kind)
15058				if err != nil {
15059					return err
15060				}
15061				rhm.Kind = &kind
15062			}
15063		case "type":
15064			if v != nil {
15065				var typeVar string
15066				err = json.Unmarshal(*v, &typeVar)
15067				if err != nil {
15068					return err
15069				}
15070				rhm.Type = &typeVar
15071			}
15072		}
15073	}
15074
15075	return nil
15076}
15077
15078// ResourceHealthMetadataCollection collection of resource health metadata.
15079type ResourceHealthMetadataCollection struct {
15080	autorest.Response `json:"-"`
15081	// Value - Collection of resources.
15082	Value *[]ResourceHealthMetadata `json:"value,omitempty"`
15083	// NextLink - READ-ONLY; Link to next page of resources.
15084	NextLink *string `json:"nextLink,omitempty"`
15085}
15086
15087// ResourceHealthMetadataCollectionIterator provides access to a complete listing of ResourceHealthMetadata
15088// values.
15089type ResourceHealthMetadataCollectionIterator struct {
15090	i    int
15091	page ResourceHealthMetadataCollectionPage
15092}
15093
15094// NextWithContext advances to the next value.  If there was an error making
15095// the request the iterator does not advance and the error is returned.
15096func (iter *ResourceHealthMetadataCollectionIterator) NextWithContext(ctx context.Context) (err error) {
15097	if tracing.IsEnabled() {
15098		ctx = tracing.StartSpan(ctx, fqdn+"/ResourceHealthMetadataCollectionIterator.NextWithContext")
15099		defer func() {
15100			sc := -1
15101			if iter.Response().Response.Response != nil {
15102				sc = iter.Response().Response.Response.StatusCode
15103			}
15104			tracing.EndSpan(ctx, sc, err)
15105		}()
15106	}
15107	iter.i++
15108	if iter.i < len(iter.page.Values()) {
15109		return nil
15110	}
15111	err = iter.page.NextWithContext(ctx)
15112	if err != nil {
15113		iter.i--
15114		return err
15115	}
15116	iter.i = 0
15117	return nil
15118}
15119
15120// Next advances to the next value.  If there was an error making
15121// the request the iterator does not advance and the error is returned.
15122// Deprecated: Use NextWithContext() instead.
15123func (iter *ResourceHealthMetadataCollectionIterator) Next() error {
15124	return iter.NextWithContext(context.Background())
15125}
15126
15127// NotDone returns true if the enumeration should be started or is not yet complete.
15128func (iter ResourceHealthMetadataCollectionIterator) NotDone() bool {
15129	return iter.page.NotDone() && iter.i < len(iter.page.Values())
15130}
15131
15132// Response returns the raw server response from the last page request.
15133func (iter ResourceHealthMetadataCollectionIterator) Response() ResourceHealthMetadataCollection {
15134	return iter.page.Response()
15135}
15136
15137// Value returns the current value or a zero-initialized value if the
15138// iterator has advanced beyond the end of the collection.
15139func (iter ResourceHealthMetadataCollectionIterator) Value() ResourceHealthMetadata {
15140	if !iter.page.NotDone() {
15141		return ResourceHealthMetadata{}
15142	}
15143	return iter.page.Values()[iter.i]
15144}
15145
15146// Creates a new instance of the ResourceHealthMetadataCollectionIterator type.
15147func NewResourceHealthMetadataCollectionIterator(page ResourceHealthMetadataCollectionPage) ResourceHealthMetadataCollectionIterator {
15148	return ResourceHealthMetadataCollectionIterator{page: page}
15149}
15150
15151// IsEmpty returns true if the ListResult contains no values.
15152func (rhmc ResourceHealthMetadataCollection) IsEmpty() bool {
15153	return rhmc.Value == nil || len(*rhmc.Value) == 0
15154}
15155
15156// resourceHealthMetadataCollectionPreparer prepares a request to retrieve the next set of results.
15157// It returns nil if no more results exist.
15158func (rhmc ResourceHealthMetadataCollection) resourceHealthMetadataCollectionPreparer(ctx context.Context) (*http.Request, error) {
15159	if rhmc.NextLink == nil || len(to.String(rhmc.NextLink)) < 1 {
15160		return nil, nil
15161	}
15162	return autorest.Prepare((&http.Request{}).WithContext(ctx),
15163		autorest.AsJSON(),
15164		autorest.AsGet(),
15165		autorest.WithBaseURL(to.String(rhmc.NextLink)))
15166}
15167
15168// ResourceHealthMetadataCollectionPage contains a page of ResourceHealthMetadata values.
15169type ResourceHealthMetadataCollectionPage struct {
15170	fn   func(context.Context, ResourceHealthMetadataCollection) (ResourceHealthMetadataCollection, error)
15171	rhmc ResourceHealthMetadataCollection
15172}
15173
15174// NextWithContext advances to the next page of values.  If there was an error making
15175// the request the page does not advance and the error is returned.
15176func (page *ResourceHealthMetadataCollectionPage) NextWithContext(ctx context.Context) (err error) {
15177	if tracing.IsEnabled() {
15178		ctx = tracing.StartSpan(ctx, fqdn+"/ResourceHealthMetadataCollectionPage.NextWithContext")
15179		defer func() {
15180			sc := -1
15181			if page.Response().Response.Response != nil {
15182				sc = page.Response().Response.Response.StatusCode
15183			}
15184			tracing.EndSpan(ctx, sc, err)
15185		}()
15186	}
15187	next, err := page.fn(ctx, page.rhmc)
15188	if err != nil {
15189		return err
15190	}
15191	page.rhmc = next
15192	return nil
15193}
15194
15195// Next advances to the next page of values.  If there was an error making
15196// the request the page does not advance and the error is returned.
15197// Deprecated: Use NextWithContext() instead.
15198func (page *ResourceHealthMetadataCollectionPage) Next() error {
15199	return page.NextWithContext(context.Background())
15200}
15201
15202// NotDone returns true if the page enumeration should be started or is not yet complete.
15203func (page ResourceHealthMetadataCollectionPage) NotDone() bool {
15204	return !page.rhmc.IsEmpty()
15205}
15206
15207// Response returns the raw server response from the last page request.
15208func (page ResourceHealthMetadataCollectionPage) Response() ResourceHealthMetadataCollection {
15209	return page.rhmc
15210}
15211
15212// Values returns the slice of values for the current page or nil if there are no values.
15213func (page ResourceHealthMetadataCollectionPage) Values() []ResourceHealthMetadata {
15214	if page.rhmc.IsEmpty() {
15215		return nil
15216	}
15217	return *page.rhmc.Value
15218}
15219
15220// Creates a new instance of the ResourceHealthMetadataCollectionPage type.
15221func NewResourceHealthMetadataCollectionPage(getNextPage func(context.Context, ResourceHealthMetadataCollection) (ResourceHealthMetadataCollection, error)) ResourceHealthMetadataCollectionPage {
15222	return ResourceHealthMetadataCollectionPage{fn: getNextPage}
15223}
15224
15225// ResourceHealthMetadataProperties resourceHealthMetadata resource specific properties
15226type ResourceHealthMetadataProperties struct {
15227	// Category - The category that the resource matches in the RHC Policy File
15228	Category *string `json:"category,omitempty"`
15229	// SignalAvailability - Is there a health signal for the resource
15230	SignalAvailability *bool `json:"signalAvailability,omitempty"`
15231}
15232
15233// ResourceMetric object representing a metric for any resource .
15234type ResourceMetric struct {
15235	// Name - READ-ONLY; Name of metric.
15236	Name *ResourceMetricName `json:"name,omitempty"`
15237	// Unit - READ-ONLY; Metric unit.
15238	Unit *string `json:"unit,omitempty"`
15239	// TimeGrain - READ-ONLY; Metric granularity. E.g PT1H, PT5M, P1D
15240	TimeGrain *string `json:"timeGrain,omitempty"`
15241	// StartTime - READ-ONLY; Metric start time.
15242	StartTime *date.Time `json:"startTime,omitempty"`
15243	// EndTime - READ-ONLY; Metric end time.
15244	EndTime *date.Time `json:"endTime,omitempty"`
15245	// ResourceID - READ-ONLY; Metric resource Id.
15246	ResourceID *string `json:"resourceId,omitempty"`
15247	// ID - READ-ONLY; Resource Id.
15248	ID *string `json:"id,omitempty"`
15249	// MetricValues - READ-ONLY; Metric values.
15250	MetricValues *[]ResourceMetricValue `json:"metricValues,omitempty"`
15251	// Properties - READ-ONLY; Resource metric properties collection.
15252	Properties *[]ResourceMetricProperty `json:"properties,omitempty"`
15253}
15254
15255// ResourceMetricAvailability metrics availability and retention.
15256type ResourceMetricAvailability struct {
15257	// TimeGrain - READ-ONLY; Time grain .
15258	TimeGrain *string `json:"timeGrain,omitempty"`
15259	// Retention - READ-ONLY; Retention period for the current time grain.
15260	Retention *string `json:"retention,omitempty"`
15261}
15262
15263// ResourceMetricCollection collection of metric responses.
15264type ResourceMetricCollection struct {
15265	autorest.Response `json:"-"`
15266	// Value - Collection of resources.
15267	Value *[]ResourceMetric `json:"value,omitempty"`
15268	// NextLink - READ-ONLY; Link to next page of resources.
15269	NextLink *string `json:"nextLink,omitempty"`
15270}
15271
15272// ResourceMetricCollectionIterator provides access to a complete listing of ResourceMetric values.
15273type ResourceMetricCollectionIterator struct {
15274	i    int
15275	page ResourceMetricCollectionPage
15276}
15277
15278// NextWithContext advances to the next value.  If there was an error making
15279// the request the iterator does not advance and the error is returned.
15280func (iter *ResourceMetricCollectionIterator) NextWithContext(ctx context.Context) (err error) {
15281	if tracing.IsEnabled() {
15282		ctx = tracing.StartSpan(ctx, fqdn+"/ResourceMetricCollectionIterator.NextWithContext")
15283		defer func() {
15284			sc := -1
15285			if iter.Response().Response.Response != nil {
15286				sc = iter.Response().Response.Response.StatusCode
15287			}
15288			tracing.EndSpan(ctx, sc, err)
15289		}()
15290	}
15291	iter.i++
15292	if iter.i < len(iter.page.Values()) {
15293		return nil
15294	}
15295	err = iter.page.NextWithContext(ctx)
15296	if err != nil {
15297		iter.i--
15298		return err
15299	}
15300	iter.i = 0
15301	return nil
15302}
15303
15304// Next advances to the next value.  If there was an error making
15305// the request the iterator does not advance and the error is returned.
15306// Deprecated: Use NextWithContext() instead.
15307func (iter *ResourceMetricCollectionIterator) Next() error {
15308	return iter.NextWithContext(context.Background())
15309}
15310
15311// NotDone returns true if the enumeration should be started or is not yet complete.
15312func (iter ResourceMetricCollectionIterator) NotDone() bool {
15313	return iter.page.NotDone() && iter.i < len(iter.page.Values())
15314}
15315
15316// Response returns the raw server response from the last page request.
15317func (iter ResourceMetricCollectionIterator) Response() ResourceMetricCollection {
15318	return iter.page.Response()
15319}
15320
15321// Value returns the current value or a zero-initialized value if the
15322// iterator has advanced beyond the end of the collection.
15323func (iter ResourceMetricCollectionIterator) Value() ResourceMetric {
15324	if !iter.page.NotDone() {
15325		return ResourceMetric{}
15326	}
15327	return iter.page.Values()[iter.i]
15328}
15329
15330// Creates a new instance of the ResourceMetricCollectionIterator type.
15331func NewResourceMetricCollectionIterator(page ResourceMetricCollectionPage) ResourceMetricCollectionIterator {
15332	return ResourceMetricCollectionIterator{page: page}
15333}
15334
15335// IsEmpty returns true if the ListResult contains no values.
15336func (rmc ResourceMetricCollection) IsEmpty() bool {
15337	return rmc.Value == nil || len(*rmc.Value) == 0
15338}
15339
15340// resourceMetricCollectionPreparer prepares a request to retrieve the next set of results.
15341// It returns nil if no more results exist.
15342func (rmc ResourceMetricCollection) resourceMetricCollectionPreparer(ctx context.Context) (*http.Request, error) {
15343	if rmc.NextLink == nil || len(to.String(rmc.NextLink)) < 1 {
15344		return nil, nil
15345	}
15346	return autorest.Prepare((&http.Request{}).WithContext(ctx),
15347		autorest.AsJSON(),
15348		autorest.AsGet(),
15349		autorest.WithBaseURL(to.String(rmc.NextLink)))
15350}
15351
15352// ResourceMetricCollectionPage contains a page of ResourceMetric values.
15353type ResourceMetricCollectionPage struct {
15354	fn  func(context.Context, ResourceMetricCollection) (ResourceMetricCollection, error)
15355	rmc ResourceMetricCollection
15356}
15357
15358// NextWithContext advances to the next page of values.  If there was an error making
15359// the request the page does not advance and the error is returned.
15360func (page *ResourceMetricCollectionPage) NextWithContext(ctx context.Context) (err error) {
15361	if tracing.IsEnabled() {
15362		ctx = tracing.StartSpan(ctx, fqdn+"/ResourceMetricCollectionPage.NextWithContext")
15363		defer func() {
15364			sc := -1
15365			if page.Response().Response.Response != nil {
15366				sc = page.Response().Response.Response.StatusCode
15367			}
15368			tracing.EndSpan(ctx, sc, err)
15369		}()
15370	}
15371	next, err := page.fn(ctx, page.rmc)
15372	if err != nil {
15373		return err
15374	}
15375	page.rmc = next
15376	return nil
15377}
15378
15379// Next advances to the next page of values.  If there was an error making
15380// the request the page does not advance and the error is returned.
15381// Deprecated: Use NextWithContext() instead.
15382func (page *ResourceMetricCollectionPage) Next() error {
15383	return page.NextWithContext(context.Background())
15384}
15385
15386// NotDone returns true if the page enumeration should be started or is not yet complete.
15387func (page ResourceMetricCollectionPage) NotDone() bool {
15388	return !page.rmc.IsEmpty()
15389}
15390
15391// Response returns the raw server response from the last page request.
15392func (page ResourceMetricCollectionPage) Response() ResourceMetricCollection {
15393	return page.rmc
15394}
15395
15396// Values returns the slice of values for the current page or nil if there are no values.
15397func (page ResourceMetricCollectionPage) Values() []ResourceMetric {
15398	if page.rmc.IsEmpty() {
15399		return nil
15400	}
15401	return *page.rmc.Value
15402}
15403
15404// Creates a new instance of the ResourceMetricCollectionPage type.
15405func NewResourceMetricCollectionPage(getNextPage func(context.Context, ResourceMetricCollection) (ResourceMetricCollection, error)) ResourceMetricCollectionPage {
15406	return ResourceMetricCollectionPage{fn: getNextPage}
15407}
15408
15409// ResourceMetricDefinition metadata for the metrics.
15410type ResourceMetricDefinition struct {
15411	// ResourceMetricDefinitionProperties - ResourceMetricDefinition resource specific properties
15412	*ResourceMetricDefinitionProperties `json:"properties,omitempty"`
15413	// ID - READ-ONLY; Resource Id.
15414	ID *string `json:"id,omitempty"`
15415	// Name - READ-ONLY; Resource Name.
15416	Name *string `json:"name,omitempty"`
15417	// Kind - Kind of resource.
15418	Kind *string `json:"kind,omitempty"`
15419	// Type - READ-ONLY; Resource type.
15420	Type *string `json:"type,omitempty"`
15421}
15422
15423// MarshalJSON is the custom marshaler for ResourceMetricDefinition.
15424func (rmd ResourceMetricDefinition) MarshalJSON() ([]byte, error) {
15425	objectMap := make(map[string]interface{})
15426	if rmd.ResourceMetricDefinitionProperties != nil {
15427		objectMap["properties"] = rmd.ResourceMetricDefinitionProperties
15428	}
15429	if rmd.Kind != nil {
15430		objectMap["kind"] = rmd.Kind
15431	}
15432	return json.Marshal(objectMap)
15433}
15434
15435// UnmarshalJSON is the custom unmarshaler for ResourceMetricDefinition struct.
15436func (rmd *ResourceMetricDefinition) UnmarshalJSON(body []byte) error {
15437	var m map[string]*json.RawMessage
15438	err := json.Unmarshal(body, &m)
15439	if err != nil {
15440		return err
15441	}
15442	for k, v := range m {
15443		switch k {
15444		case "properties":
15445			if v != nil {
15446				var resourceMetricDefinitionProperties ResourceMetricDefinitionProperties
15447				err = json.Unmarshal(*v, &resourceMetricDefinitionProperties)
15448				if err != nil {
15449					return err
15450				}
15451				rmd.ResourceMetricDefinitionProperties = &resourceMetricDefinitionProperties
15452			}
15453		case "id":
15454			if v != nil {
15455				var ID string
15456				err = json.Unmarshal(*v, &ID)
15457				if err != nil {
15458					return err
15459				}
15460				rmd.ID = &ID
15461			}
15462		case "name":
15463			if v != nil {
15464				var name string
15465				err = json.Unmarshal(*v, &name)
15466				if err != nil {
15467					return err
15468				}
15469				rmd.Name = &name
15470			}
15471		case "kind":
15472			if v != nil {
15473				var kind string
15474				err = json.Unmarshal(*v, &kind)
15475				if err != nil {
15476					return err
15477				}
15478				rmd.Kind = &kind
15479			}
15480		case "type":
15481			if v != nil {
15482				var typeVar string
15483				err = json.Unmarshal(*v, &typeVar)
15484				if err != nil {
15485					return err
15486				}
15487				rmd.Type = &typeVar
15488			}
15489		}
15490	}
15491
15492	return nil
15493}
15494
15495// ResourceMetricDefinitionCollection collection of metric definitions.
15496type ResourceMetricDefinitionCollection struct {
15497	autorest.Response `json:"-"`
15498	// Value - Collection of resources.
15499	Value *[]ResourceMetricDefinition `json:"value,omitempty"`
15500	// NextLink - READ-ONLY; Link to next page of resources.
15501	NextLink *string `json:"nextLink,omitempty"`
15502}
15503
15504// ResourceMetricDefinitionCollectionIterator provides access to a complete listing of
15505// ResourceMetricDefinition values.
15506type ResourceMetricDefinitionCollectionIterator struct {
15507	i    int
15508	page ResourceMetricDefinitionCollectionPage
15509}
15510
15511// NextWithContext advances to the next value.  If there was an error making
15512// the request the iterator does not advance and the error is returned.
15513func (iter *ResourceMetricDefinitionCollectionIterator) NextWithContext(ctx context.Context) (err error) {
15514	if tracing.IsEnabled() {
15515		ctx = tracing.StartSpan(ctx, fqdn+"/ResourceMetricDefinitionCollectionIterator.NextWithContext")
15516		defer func() {
15517			sc := -1
15518			if iter.Response().Response.Response != nil {
15519				sc = iter.Response().Response.Response.StatusCode
15520			}
15521			tracing.EndSpan(ctx, sc, err)
15522		}()
15523	}
15524	iter.i++
15525	if iter.i < len(iter.page.Values()) {
15526		return nil
15527	}
15528	err = iter.page.NextWithContext(ctx)
15529	if err != nil {
15530		iter.i--
15531		return err
15532	}
15533	iter.i = 0
15534	return nil
15535}
15536
15537// Next advances to the next value.  If there was an error making
15538// the request the iterator does not advance and the error is returned.
15539// Deprecated: Use NextWithContext() instead.
15540func (iter *ResourceMetricDefinitionCollectionIterator) Next() error {
15541	return iter.NextWithContext(context.Background())
15542}
15543
15544// NotDone returns true if the enumeration should be started or is not yet complete.
15545func (iter ResourceMetricDefinitionCollectionIterator) NotDone() bool {
15546	return iter.page.NotDone() && iter.i < len(iter.page.Values())
15547}
15548
15549// Response returns the raw server response from the last page request.
15550func (iter ResourceMetricDefinitionCollectionIterator) Response() ResourceMetricDefinitionCollection {
15551	return iter.page.Response()
15552}
15553
15554// Value returns the current value or a zero-initialized value if the
15555// iterator has advanced beyond the end of the collection.
15556func (iter ResourceMetricDefinitionCollectionIterator) Value() ResourceMetricDefinition {
15557	if !iter.page.NotDone() {
15558		return ResourceMetricDefinition{}
15559	}
15560	return iter.page.Values()[iter.i]
15561}
15562
15563// Creates a new instance of the ResourceMetricDefinitionCollectionIterator type.
15564func NewResourceMetricDefinitionCollectionIterator(page ResourceMetricDefinitionCollectionPage) ResourceMetricDefinitionCollectionIterator {
15565	return ResourceMetricDefinitionCollectionIterator{page: page}
15566}
15567
15568// IsEmpty returns true if the ListResult contains no values.
15569func (rmdc ResourceMetricDefinitionCollection) IsEmpty() bool {
15570	return rmdc.Value == nil || len(*rmdc.Value) == 0
15571}
15572
15573// resourceMetricDefinitionCollectionPreparer prepares a request to retrieve the next set of results.
15574// It returns nil if no more results exist.
15575func (rmdc ResourceMetricDefinitionCollection) resourceMetricDefinitionCollectionPreparer(ctx context.Context) (*http.Request, error) {
15576	if rmdc.NextLink == nil || len(to.String(rmdc.NextLink)) < 1 {
15577		return nil, nil
15578	}
15579	return autorest.Prepare((&http.Request{}).WithContext(ctx),
15580		autorest.AsJSON(),
15581		autorest.AsGet(),
15582		autorest.WithBaseURL(to.String(rmdc.NextLink)))
15583}
15584
15585// ResourceMetricDefinitionCollectionPage contains a page of ResourceMetricDefinition values.
15586type ResourceMetricDefinitionCollectionPage struct {
15587	fn   func(context.Context, ResourceMetricDefinitionCollection) (ResourceMetricDefinitionCollection, error)
15588	rmdc ResourceMetricDefinitionCollection
15589}
15590
15591// NextWithContext advances to the next page of values.  If there was an error making
15592// the request the page does not advance and the error is returned.
15593func (page *ResourceMetricDefinitionCollectionPage) NextWithContext(ctx context.Context) (err error) {
15594	if tracing.IsEnabled() {
15595		ctx = tracing.StartSpan(ctx, fqdn+"/ResourceMetricDefinitionCollectionPage.NextWithContext")
15596		defer func() {
15597			sc := -1
15598			if page.Response().Response.Response != nil {
15599				sc = page.Response().Response.Response.StatusCode
15600			}
15601			tracing.EndSpan(ctx, sc, err)
15602		}()
15603	}
15604	next, err := page.fn(ctx, page.rmdc)
15605	if err != nil {
15606		return err
15607	}
15608	page.rmdc = next
15609	return nil
15610}
15611
15612// Next advances to the next page of values.  If there was an error making
15613// the request the page does not advance and the error is returned.
15614// Deprecated: Use NextWithContext() instead.
15615func (page *ResourceMetricDefinitionCollectionPage) Next() error {
15616	return page.NextWithContext(context.Background())
15617}
15618
15619// NotDone returns true if the page enumeration should be started or is not yet complete.
15620func (page ResourceMetricDefinitionCollectionPage) NotDone() bool {
15621	return !page.rmdc.IsEmpty()
15622}
15623
15624// Response returns the raw server response from the last page request.
15625func (page ResourceMetricDefinitionCollectionPage) Response() ResourceMetricDefinitionCollection {
15626	return page.rmdc
15627}
15628
15629// Values returns the slice of values for the current page or nil if there are no values.
15630func (page ResourceMetricDefinitionCollectionPage) Values() []ResourceMetricDefinition {
15631	if page.rmdc.IsEmpty() {
15632		return nil
15633	}
15634	return *page.rmdc.Value
15635}
15636
15637// Creates a new instance of the ResourceMetricDefinitionCollectionPage type.
15638func NewResourceMetricDefinitionCollectionPage(getNextPage func(context.Context, ResourceMetricDefinitionCollection) (ResourceMetricDefinitionCollection, error)) ResourceMetricDefinitionCollectionPage {
15639	return ResourceMetricDefinitionCollectionPage{fn: getNextPage}
15640}
15641
15642// ResourceMetricDefinitionProperties resourceMetricDefinition resource specific properties
15643type ResourceMetricDefinitionProperties struct {
15644	// Name - READ-ONLY; Name of the metric.
15645	Name *ResourceMetricName `json:"name,omitempty"`
15646	// Unit - READ-ONLY; Unit of the metric.
15647	Unit *string `json:"unit,omitempty"`
15648	// PrimaryAggregationType - READ-ONLY; Primary aggregation type.
15649	PrimaryAggregationType *string `json:"primaryAggregationType,omitempty"`
15650	// MetricAvailabilities - READ-ONLY; List of time grains supported for the metric together with retention period.
15651	MetricAvailabilities *[]ResourceMetricAvailability `json:"metricAvailabilities,omitempty"`
15652	// ResourceURI - READ-ONLY; Resource URI.
15653	ResourceURI *string `json:"resourceUri,omitempty"`
15654	// ID - READ-ONLY; Resource ID.
15655	ID *string `json:"id,omitempty"`
15656	// Properties - READ-ONLY; Resource metric definition properties.
15657	Properties map[string]*string `json:"properties"`
15658}
15659
15660// MarshalJSON is the custom marshaler for ResourceMetricDefinitionProperties.
15661func (rmd ResourceMetricDefinitionProperties) MarshalJSON() ([]byte, error) {
15662	objectMap := make(map[string]interface{})
15663	return json.Marshal(objectMap)
15664}
15665
15666// ResourceMetricName name of a metric for any resource .
15667type ResourceMetricName struct {
15668	// Value - READ-ONLY; metric name value.
15669	Value *string `json:"value,omitempty"`
15670	// LocalizedValue - READ-ONLY; Localized metric name value.
15671	LocalizedValue *string `json:"localizedValue,omitempty"`
15672}
15673
15674// ResourceMetricProperty resource metric property.
15675type ResourceMetricProperty struct {
15676	// Key - Key for resource metric property.
15677	Key *string `json:"key,omitempty"`
15678	// Value - Value of pair.
15679	Value *string `json:"value,omitempty"`
15680}
15681
15682// ResourceMetricValue value of resource metric.
15683type ResourceMetricValue struct {
15684	// Timestamp - READ-ONLY; Value timestamp.
15685	Timestamp *string `json:"timestamp,omitempty"`
15686	// Average - READ-ONLY; Value average.
15687	Average *float64 `json:"average,omitempty"`
15688	// Minimum - READ-ONLY; Value minimum.
15689	Minimum *float64 `json:"minimum,omitempty"`
15690	// Maximum - READ-ONLY; Value maximum.
15691	Maximum *float64 `json:"maximum,omitempty"`
15692	// Total - READ-ONLY; Value total.
15693	Total *float64 `json:"total,omitempty"`
15694	// Count - READ-ONLY; Value count.
15695	Count *float64 `json:"count,omitempty"`
15696	// Properties - READ-ONLY; Resource metric properties collection.
15697	Properties *[]ResourceMetricProperty `json:"properties,omitempty"`
15698}
15699
15700// ResourceNameAvailability information regarding availability of a resource name.
15701type ResourceNameAvailability struct {
15702	autorest.Response `json:"-"`
15703	// NameAvailable - <code>true</code> indicates name is valid and available. <code>false</code> indicates the name is invalid, unavailable, or both.
15704	NameAvailable *bool `json:"nameAvailable,omitempty"`
15705	// Reason - <code>Invalid</code> indicates the name provided does not match Azure App Service naming requirements. <code>AlreadyExists</code> indicates that the name is already in use and is therefore unavailable. Possible values include: 'Invalid', 'AlreadyExists'
15706	Reason InAvailabilityReasonType `json:"reason,omitempty"`
15707	// Message - If reason == invalid, provide the user with the reason why the given name is invalid, and provide the resource naming requirements so that the user can select a valid name. If reason == AlreadyExists, explain that resource name is already in use, and direct them to select a different name.
15708	Message *string `json:"message,omitempty"`
15709}
15710
15711// ResourceNameAvailabilityRequest resource name availability request content.
15712type ResourceNameAvailabilityRequest struct {
15713	// Name - Resource name to verify.
15714	Name *string `json:"name,omitempty"`
15715	// Type - Resource type used for verification. Possible values include: 'CheckNameResourceTypesSite', 'CheckNameResourceTypesSlot', 'CheckNameResourceTypesHostingEnvironment', 'CheckNameResourceTypesPublishingUser', 'CheckNameResourceTypesMicrosoftWebsites', 'CheckNameResourceTypesMicrosoftWebsitesslots', 'CheckNameResourceTypesMicrosoftWebhostingEnvironments', 'CheckNameResourceTypesMicrosoftWebpublishingUsers'
15716	Type CheckNameResourceTypes `json:"type,omitempty"`
15717	// IsFqdn - Is fully qualified domain name.
15718	IsFqdn *bool `json:"isFqdn,omitempty"`
15719}
15720
15721// ResponseMetaData ...
15722type ResponseMetaData struct {
15723	// DataSource - Source of the Data
15724	DataSource *DataSource `json:"dataSource,omitempty"`
15725}
15726
15727// RestoreRequest description of a restore request.
15728type RestoreRequest struct {
15729	autorest.Response `json:"-"`
15730	// RestoreRequestProperties - RestoreRequest resource specific properties
15731	*RestoreRequestProperties `json:"properties,omitempty"`
15732	// ID - READ-ONLY; Resource Id.
15733	ID *string `json:"id,omitempty"`
15734	// Name - READ-ONLY; Resource Name.
15735	Name *string `json:"name,omitempty"`
15736	// Kind - Kind of resource.
15737	Kind *string `json:"kind,omitempty"`
15738	// Type - READ-ONLY; Resource type.
15739	Type *string `json:"type,omitempty"`
15740}
15741
15742// MarshalJSON is the custom marshaler for RestoreRequest.
15743func (rr RestoreRequest) MarshalJSON() ([]byte, error) {
15744	objectMap := make(map[string]interface{})
15745	if rr.RestoreRequestProperties != nil {
15746		objectMap["properties"] = rr.RestoreRequestProperties
15747	}
15748	if rr.Kind != nil {
15749		objectMap["kind"] = rr.Kind
15750	}
15751	return json.Marshal(objectMap)
15752}
15753
15754// UnmarshalJSON is the custom unmarshaler for RestoreRequest struct.
15755func (rr *RestoreRequest) UnmarshalJSON(body []byte) error {
15756	var m map[string]*json.RawMessage
15757	err := json.Unmarshal(body, &m)
15758	if err != nil {
15759		return err
15760	}
15761	for k, v := range m {
15762		switch k {
15763		case "properties":
15764			if v != nil {
15765				var restoreRequestProperties RestoreRequestProperties
15766				err = json.Unmarshal(*v, &restoreRequestProperties)
15767				if err != nil {
15768					return err
15769				}
15770				rr.RestoreRequestProperties = &restoreRequestProperties
15771			}
15772		case "id":
15773			if v != nil {
15774				var ID string
15775				err = json.Unmarshal(*v, &ID)
15776				if err != nil {
15777					return err
15778				}
15779				rr.ID = &ID
15780			}
15781		case "name":
15782			if v != nil {
15783				var name string
15784				err = json.Unmarshal(*v, &name)
15785				if err != nil {
15786					return err
15787				}
15788				rr.Name = &name
15789			}
15790		case "kind":
15791			if v != nil {
15792				var kind string
15793				err = json.Unmarshal(*v, &kind)
15794				if err != nil {
15795					return err
15796				}
15797				rr.Kind = &kind
15798			}
15799		case "type":
15800			if v != nil {
15801				var typeVar string
15802				err = json.Unmarshal(*v, &typeVar)
15803				if err != nil {
15804					return err
15805				}
15806				rr.Type = &typeVar
15807			}
15808		}
15809	}
15810
15811	return nil
15812}
15813
15814// RestoreRequestProperties restoreRequest resource specific properties
15815type RestoreRequestProperties struct {
15816	// StorageAccountURL - SAS URL to the container.
15817	StorageAccountURL *string `json:"storageAccountUrl,omitempty"`
15818	// BlobName - Name of a blob which contains the backup.
15819	BlobName *string `json:"blobName,omitempty"`
15820	// Overwrite - <code>true</code> if the restore operation can overwrite target app; otherwise, <code>false</code>. <code>true</code> is needed if trying to restore over an existing app.
15821	Overwrite *bool `json:"overwrite,omitempty"`
15822	// SiteName - Name of an app.
15823	SiteName *string `json:"siteName,omitempty"`
15824	// Databases - Collection of databases which should be restored. This list has to match the list of databases included in the backup.
15825	Databases *[]DatabaseBackupSetting `json:"databases,omitempty"`
15826	// IgnoreConflictingHostNames - Changes a logic when restoring an app with custom domains. <code>true</code> to remove custom domains automatically. If <code>false</code>, custom domains are added to
15827	// the app's object when it is being restored, but that might fail due to conflicts during the operation.
15828	IgnoreConflictingHostNames *bool `json:"ignoreConflictingHostNames,omitempty"`
15829	// IgnoreDatabases - Ignore the databases and only restore the site content
15830	IgnoreDatabases *bool `json:"ignoreDatabases,omitempty"`
15831	// AppServicePlan - Specify app service plan that will own restored site.
15832	AppServicePlan *string `json:"appServicePlan,omitempty"`
15833	// OperationType - Operation type. Possible values include: 'BackupRestoreOperationTypeDefault', 'BackupRestoreOperationTypeClone', 'BackupRestoreOperationTypeRelocation', 'BackupRestoreOperationTypeSnapshot'
15834	OperationType BackupRestoreOperationType `json:"operationType,omitempty"`
15835	// AdjustConnectionStrings - <code>true</code> if SiteConfig.ConnectionStrings should be set in new app; otherwise, <code>false</code>.
15836	AdjustConnectionStrings *bool `json:"adjustConnectionStrings,omitempty"`
15837	// HostingEnvironment - App Service Environment name, if needed (only when restoring an app to an App Service Environment).
15838	HostingEnvironment *string `json:"hostingEnvironment,omitempty"`
15839}
15840
15841// RestoreResponse response for an app restore request.
15842type RestoreResponse struct {
15843	autorest.Response `json:"-"`
15844	// RestoreResponseProperties - RestoreResponse resource specific properties
15845	*RestoreResponseProperties `json:"properties,omitempty"`
15846	// ID - READ-ONLY; Resource Id.
15847	ID *string `json:"id,omitempty"`
15848	// Name - READ-ONLY; Resource Name.
15849	Name *string `json:"name,omitempty"`
15850	// Kind - Kind of resource.
15851	Kind *string `json:"kind,omitempty"`
15852	// Type - READ-ONLY; Resource type.
15853	Type *string `json:"type,omitempty"`
15854}
15855
15856// MarshalJSON is the custom marshaler for RestoreResponse.
15857func (rr RestoreResponse) MarshalJSON() ([]byte, error) {
15858	objectMap := make(map[string]interface{})
15859	if rr.RestoreResponseProperties != nil {
15860		objectMap["properties"] = rr.RestoreResponseProperties
15861	}
15862	if rr.Kind != nil {
15863		objectMap["kind"] = rr.Kind
15864	}
15865	return json.Marshal(objectMap)
15866}
15867
15868// UnmarshalJSON is the custom unmarshaler for RestoreResponse struct.
15869func (rr *RestoreResponse) UnmarshalJSON(body []byte) error {
15870	var m map[string]*json.RawMessage
15871	err := json.Unmarshal(body, &m)
15872	if err != nil {
15873		return err
15874	}
15875	for k, v := range m {
15876		switch k {
15877		case "properties":
15878			if v != nil {
15879				var restoreResponseProperties RestoreResponseProperties
15880				err = json.Unmarshal(*v, &restoreResponseProperties)
15881				if err != nil {
15882					return err
15883				}
15884				rr.RestoreResponseProperties = &restoreResponseProperties
15885			}
15886		case "id":
15887			if v != nil {
15888				var ID string
15889				err = json.Unmarshal(*v, &ID)
15890				if err != nil {
15891					return err
15892				}
15893				rr.ID = &ID
15894			}
15895		case "name":
15896			if v != nil {
15897				var name string
15898				err = json.Unmarshal(*v, &name)
15899				if err != nil {
15900					return err
15901				}
15902				rr.Name = &name
15903			}
15904		case "kind":
15905			if v != nil {
15906				var kind string
15907				err = json.Unmarshal(*v, &kind)
15908				if err != nil {
15909					return err
15910				}
15911				rr.Kind = &kind
15912			}
15913		case "type":
15914			if v != nil {
15915				var typeVar string
15916				err = json.Unmarshal(*v, &typeVar)
15917				if err != nil {
15918					return err
15919				}
15920				rr.Type = &typeVar
15921			}
15922		}
15923	}
15924
15925	return nil
15926}
15927
15928// RestoreResponseProperties restoreResponse resource specific properties
15929type RestoreResponseProperties struct {
15930	// OperationID - READ-ONLY; When server starts the restore process, it will return an operation ID identifying that particular restore operation.
15931	OperationID *string `json:"operationId,omitempty"`
15932}
15933
15934// ServiceSpecification resource metrics service provided by Microsoft.Insights resource provider.
15935type ServiceSpecification struct {
15936	MetricSpecifications *[]MetricSpecification `json:"metricSpecifications,omitempty"`
15937}
15938
15939// SetObject ...
15940type SetObject struct {
15941	autorest.Response `json:"-"`
15942	Value             interface{} `json:"value,omitempty"`
15943}
15944
15945// Site a web app, a mobile app backend, or an API app.
15946type Site struct {
15947	autorest.Response `json:"-"`
15948	// SiteProperties - Site resource specific properties
15949	*SiteProperties `json:"properties,omitempty"`
15950	Identity        *ManagedServiceIdentity `json:"identity,omitempty"`
15951	// ID - READ-ONLY; Resource Id.
15952	ID *string `json:"id,omitempty"`
15953	// Name - READ-ONLY; Resource Name.
15954	Name *string `json:"name,omitempty"`
15955	// Kind - Kind of resource.
15956	Kind *string `json:"kind,omitempty"`
15957	// Location - Resource Location.
15958	Location *string `json:"location,omitempty"`
15959	// Type - READ-ONLY; Resource type.
15960	Type *string `json:"type,omitempty"`
15961	// Tags - Resource tags.
15962	Tags map[string]*string `json:"tags"`
15963}
15964
15965// MarshalJSON is the custom marshaler for Site.
15966func (s Site) MarshalJSON() ([]byte, error) {
15967	objectMap := make(map[string]interface{})
15968	if s.SiteProperties != nil {
15969		objectMap["properties"] = s.SiteProperties
15970	}
15971	if s.Identity != nil {
15972		objectMap["identity"] = s.Identity
15973	}
15974	if s.Kind != nil {
15975		objectMap["kind"] = s.Kind
15976	}
15977	if s.Location != nil {
15978		objectMap["location"] = s.Location
15979	}
15980	if s.Tags != nil {
15981		objectMap["tags"] = s.Tags
15982	}
15983	return json.Marshal(objectMap)
15984}
15985
15986// UnmarshalJSON is the custom unmarshaler for Site struct.
15987func (s *Site) UnmarshalJSON(body []byte) error {
15988	var m map[string]*json.RawMessage
15989	err := json.Unmarshal(body, &m)
15990	if err != nil {
15991		return err
15992	}
15993	for k, v := range m {
15994		switch k {
15995		case "properties":
15996			if v != nil {
15997				var siteProperties SiteProperties
15998				err = json.Unmarshal(*v, &siteProperties)
15999				if err != nil {
16000					return err
16001				}
16002				s.SiteProperties = &siteProperties
16003			}
16004		case "identity":
16005			if v != nil {
16006				var identity ManagedServiceIdentity
16007				err = json.Unmarshal(*v, &identity)
16008				if err != nil {
16009					return err
16010				}
16011				s.Identity = &identity
16012			}
16013		case "id":
16014			if v != nil {
16015				var ID string
16016				err = json.Unmarshal(*v, &ID)
16017				if err != nil {
16018					return err
16019				}
16020				s.ID = &ID
16021			}
16022		case "name":
16023			if v != nil {
16024				var name string
16025				err = json.Unmarshal(*v, &name)
16026				if err != nil {
16027					return err
16028				}
16029				s.Name = &name
16030			}
16031		case "kind":
16032			if v != nil {
16033				var kind string
16034				err = json.Unmarshal(*v, &kind)
16035				if err != nil {
16036					return err
16037				}
16038				s.Kind = &kind
16039			}
16040		case "location":
16041			if v != nil {
16042				var location string
16043				err = json.Unmarshal(*v, &location)
16044				if err != nil {
16045					return err
16046				}
16047				s.Location = &location
16048			}
16049		case "type":
16050			if v != nil {
16051				var typeVar string
16052				err = json.Unmarshal(*v, &typeVar)
16053				if err != nil {
16054					return err
16055				}
16056				s.Type = &typeVar
16057			}
16058		case "tags":
16059			if v != nil {
16060				var tags map[string]*string
16061				err = json.Unmarshal(*v, &tags)
16062				if err != nil {
16063					return err
16064				}
16065				s.Tags = tags
16066			}
16067		}
16068	}
16069
16070	return nil
16071}
16072
16073// SiteAuthSettings configuration settings for the Azure App Service Authentication / Authorization
16074// feature.
16075type SiteAuthSettings struct {
16076	autorest.Response `json:"-"`
16077	// SiteAuthSettingsProperties - SiteAuthSettings resource specific properties
16078	*SiteAuthSettingsProperties `json:"properties,omitempty"`
16079	// ID - READ-ONLY; Resource Id.
16080	ID *string `json:"id,omitempty"`
16081	// Name - READ-ONLY; Resource Name.
16082	Name *string `json:"name,omitempty"`
16083	// Kind - Kind of resource.
16084	Kind *string `json:"kind,omitempty"`
16085	// Type - READ-ONLY; Resource type.
16086	Type *string `json:"type,omitempty"`
16087}
16088
16089// MarshalJSON is the custom marshaler for SiteAuthSettings.
16090func (sas SiteAuthSettings) MarshalJSON() ([]byte, error) {
16091	objectMap := make(map[string]interface{})
16092	if sas.SiteAuthSettingsProperties != nil {
16093		objectMap["properties"] = sas.SiteAuthSettingsProperties
16094	}
16095	if sas.Kind != nil {
16096		objectMap["kind"] = sas.Kind
16097	}
16098	return json.Marshal(objectMap)
16099}
16100
16101// UnmarshalJSON is the custom unmarshaler for SiteAuthSettings struct.
16102func (sas *SiteAuthSettings) UnmarshalJSON(body []byte) error {
16103	var m map[string]*json.RawMessage
16104	err := json.Unmarshal(body, &m)
16105	if err != nil {
16106		return err
16107	}
16108	for k, v := range m {
16109		switch k {
16110		case "properties":
16111			if v != nil {
16112				var siteAuthSettingsProperties SiteAuthSettingsProperties
16113				err = json.Unmarshal(*v, &siteAuthSettingsProperties)
16114				if err != nil {
16115					return err
16116				}
16117				sas.SiteAuthSettingsProperties = &siteAuthSettingsProperties
16118			}
16119		case "id":
16120			if v != nil {
16121				var ID string
16122				err = json.Unmarshal(*v, &ID)
16123				if err != nil {
16124					return err
16125				}
16126				sas.ID = &ID
16127			}
16128		case "name":
16129			if v != nil {
16130				var name string
16131				err = json.Unmarshal(*v, &name)
16132				if err != nil {
16133					return err
16134				}
16135				sas.Name = &name
16136			}
16137		case "kind":
16138			if v != nil {
16139				var kind string
16140				err = json.Unmarshal(*v, &kind)
16141				if err != nil {
16142					return err
16143				}
16144				sas.Kind = &kind
16145			}
16146		case "type":
16147			if v != nil {
16148				var typeVar string
16149				err = json.Unmarshal(*v, &typeVar)
16150				if err != nil {
16151					return err
16152				}
16153				sas.Type = &typeVar
16154			}
16155		}
16156	}
16157
16158	return nil
16159}
16160
16161// SiteAuthSettingsProperties siteAuthSettings resource specific properties
16162type SiteAuthSettingsProperties struct {
16163	// Enabled - <code>true</code> if the Authentication / Authorization feature is enabled for the current app; otherwise, <code>false</code>.
16164	Enabled *bool `json:"enabled,omitempty"`
16165	// RuntimeVersion - The RuntimeVersion of the Authentication / Authorization feature in use for the current app.
16166	// The setting in this value can control the behavior of certain features in the Authentication / Authorization module.
16167	RuntimeVersion *string `json:"runtimeVersion,omitempty"`
16168	// UnauthenticatedClientAction - The action to take when an unauthenticated client attempts to access the app. Possible values include: 'RedirectToLoginPage', 'AllowAnonymous'
16169	UnauthenticatedClientAction UnauthenticatedClientAction `json:"unauthenticatedClientAction,omitempty"`
16170	// TokenStoreEnabled - <code>true</code> to durably store platform-specific security tokens that are obtained during login flows; otherwise, <code>false</code>.
16171	//  The default is <code>false</code>.
16172	TokenStoreEnabled *bool `json:"tokenStoreEnabled,omitempty"`
16173	// AllowedExternalRedirectUrls - External URLs that can be redirected to as part of logging in or logging out of the app. Note that the query string part of the URL is ignored.
16174	// This is an advanced setting typically only needed by Windows Store application backends.
16175	// Note that URLs within the current domain are always implicitly allowed.
16176	AllowedExternalRedirectUrls *[]string `json:"allowedExternalRedirectUrls,omitempty"`
16177	// DefaultProvider - The default authentication provider to use when multiple providers are configured.
16178	// This setting is only needed if multiple providers are configured and the unauthenticated client
16179	// action is set to "RedirectToLoginPage". Possible values include: 'AzureActiveDirectory', 'Facebook', 'Google', 'MicrosoftAccount', 'Twitter'
16180	DefaultProvider BuiltInAuthenticationProvider `json:"defaultProvider,omitempty"`
16181	// TokenRefreshExtensionHours - The number of hours after session token expiration that a session token can be used to
16182	// call the token refresh API. The default is 72 hours.
16183	TokenRefreshExtensionHours *float64 `json:"tokenRefreshExtensionHours,omitempty"`
16184	// ClientID - The Client ID of this relying party application, known as the client_id.
16185	// This setting is required for enabling OpenID Connection authentication with Azure Active Directory or
16186	// other 3rd party OpenID Connect providers.
16187	// More information on OpenID Connect: http://openid.net/specs/openid-connect-core-1_0.html
16188	ClientID *string `json:"clientId,omitempty"`
16189	// ClientSecret - The Client Secret of this relying party application (in Azure Active Directory, this is also referred to as the Key).
16190	// This setting is optional. If no client secret is configured, the OpenID Connect implicit auth flow is used to authenticate end users.
16191	// Otherwise, the OpenID Connect Authorization Code Flow is used to authenticate end users.
16192	// More information on OpenID Connect: http://openid.net/specs/openid-connect-core-1_0.html
16193	ClientSecret *string `json:"clientSecret,omitempty"`
16194	// Issuer - The OpenID Connect Issuer URI that represents the entity which issues access tokens for this application.
16195	// When using Azure Active Directory, this value is the URI of the directory tenant, e.g. https://sts.windows.net/{tenant-guid}/.
16196	// This URI is a case-sensitive identifier for the token issuer.
16197	// More information on OpenID Connect Discovery: http://openid.net/specs/openid-connect-discovery-1_0.html
16198	Issuer *string `json:"issuer,omitempty"`
16199	// AllowedAudiences - Allowed audience values to consider when validating JWTs issued by
16200	// Azure Active Directory. Note that the <code>ClientID</code> value is always considered an
16201	// allowed audience, regardless of this setting.
16202	AllowedAudiences *[]string `json:"allowedAudiences,omitempty"`
16203	// AdditionalLoginParams - Login parameters to send to the OpenID Connect authorization endpoint when
16204	// a user logs in. Each parameter must be in the form "key=value".
16205	AdditionalLoginParams *[]string `json:"additionalLoginParams,omitempty"`
16206	// GoogleClientID - The OpenID Connect Client ID for the Google web application.
16207	// This setting is required for enabling Google Sign-In.
16208	// Google Sign-In documentation: https://developers.google.com/identity/sign-in/web/
16209	GoogleClientID *string `json:"googleClientId,omitempty"`
16210	// GoogleClientSecret - The client secret associated with the Google web application.
16211	// This setting is required for enabling Google Sign-In.
16212	// Google Sign-In documentation: https://developers.google.com/identity/sign-in/web/
16213	GoogleClientSecret *string `json:"googleClientSecret,omitempty"`
16214	// GoogleOAuthScopes - The OAuth 2.0 scopes that will be requested as part of Google Sign-In authentication.
16215	// This setting is optional. If not specified, "openid", "profile", and "email" are used as default scopes.
16216	// Google Sign-In documentation: https://developers.google.com/identity/sign-in/web/
16217	GoogleOAuthScopes *[]string `json:"googleOAuthScopes,omitempty"`
16218	// FacebookAppID - The App ID of the Facebook app used for login.
16219	// This setting is required for enabling Facebook Login.
16220	// Facebook Login documentation: https://developers.facebook.com/docs/facebook-login
16221	FacebookAppID *string `json:"facebookAppId,omitempty"`
16222	// FacebookAppSecret - The App Secret of the Facebook app used for Facebook Login.
16223	// This setting is required for enabling Facebook Login.
16224	// Facebook Login documentation: https://developers.facebook.com/docs/facebook-login
16225	FacebookAppSecret *string `json:"facebookAppSecret,omitempty"`
16226	// FacebookOAuthScopes - The OAuth 2.0 scopes that will be requested as part of Facebook Login authentication.
16227	// This setting is optional.
16228	// Facebook Login documentation: https://developers.facebook.com/docs/facebook-login
16229	FacebookOAuthScopes *[]string `json:"facebookOAuthScopes,omitempty"`
16230	// TwitterConsumerKey - The OAuth 1.0a consumer key of the Twitter application used for sign-in.
16231	// This setting is required for enabling Twitter Sign-In.
16232	// Twitter Sign-In documentation: https://dev.twitter.com/web/sign-in
16233	TwitterConsumerKey *string `json:"twitterConsumerKey,omitempty"`
16234	// TwitterConsumerSecret - The OAuth 1.0a consumer secret of the Twitter application used for sign-in.
16235	// This setting is required for enabling Twitter Sign-In.
16236	// Twitter Sign-In documentation: https://dev.twitter.com/web/sign-in
16237	TwitterConsumerSecret *string `json:"twitterConsumerSecret,omitempty"`
16238	// MicrosoftAccountClientID - The OAuth 2.0 client ID that was created for the app used for authentication.
16239	// This setting is required for enabling Microsoft Account authentication.
16240	// Microsoft Account OAuth documentation: https://dev.onedrive.com/auth/msa_oauth.htm
16241	MicrosoftAccountClientID *string `json:"microsoftAccountClientId,omitempty"`
16242	// MicrosoftAccountClientSecret - The OAuth 2.0 client secret that was created for the app used for authentication.
16243	// This setting is required for enabling Microsoft Account authentication.
16244	// Microsoft Account OAuth documentation: https://dev.onedrive.com/auth/msa_oauth.htm
16245	MicrosoftAccountClientSecret *string `json:"microsoftAccountClientSecret,omitempty"`
16246	// MicrosoftAccountOAuthScopes - The OAuth 2.0 scopes that will be requested as part of Microsoft Account authentication.
16247	// This setting is optional. If not specified, "wl.basic" is used as the default scope.
16248	// Microsoft Account Scopes and permissions documentation: https://msdn.microsoft.com/en-us/library/dn631845.aspx
16249	MicrosoftAccountOAuthScopes *[]string `json:"microsoftAccountOAuthScopes,omitempty"`
16250}
16251
16252// SiteCloneability represents whether or not an app is cloneable.
16253type SiteCloneability struct {
16254	autorest.Response `json:"-"`
16255	// Result - Name of app. Possible values include: 'Cloneable', 'PartiallyCloneable', 'NotCloneable'
16256	Result CloneAbilityResult `json:"result,omitempty"`
16257	// BlockingFeatures - List of features enabled on app that prevent cloning.
16258	BlockingFeatures *[]SiteCloneabilityCriterion `json:"blockingFeatures,omitempty"`
16259	// UnsupportedFeatures - List of features enabled on app that are non-blocking but cannot be cloned. The app can still be cloned
16260	// but the features in this list will not be set up on cloned app.
16261	UnsupportedFeatures *[]SiteCloneabilityCriterion `json:"unsupportedFeatures,omitempty"`
16262	// BlockingCharacteristics - List of blocking application characteristics.
16263	BlockingCharacteristics *[]SiteCloneabilityCriterion `json:"blockingCharacteristics,omitempty"`
16264}
16265
16266// SiteCloneabilityCriterion an app cloneability criterion.
16267type SiteCloneabilityCriterion struct {
16268	// Name - Name of criterion.
16269	Name *string `json:"name,omitempty"`
16270	// Description - Description of criterion.
16271	Description *string `json:"description,omitempty"`
16272}
16273
16274// SiteConfig configuration of an App Service app.
16275type SiteConfig struct {
16276	// NumberOfWorkers - Number of workers.
16277	NumberOfWorkers *int32 `json:"numberOfWorkers,omitempty"`
16278	// DefaultDocuments - Default documents.
16279	DefaultDocuments *[]string `json:"defaultDocuments,omitempty"`
16280	// NetFrameworkVersion - .NET Framework version.
16281	NetFrameworkVersion *string `json:"netFrameworkVersion,omitempty"`
16282	// PhpVersion - Version of PHP.
16283	PhpVersion *string `json:"phpVersion,omitempty"`
16284	// PythonVersion - Version of Python.
16285	PythonVersion *string `json:"pythonVersion,omitempty"`
16286	// NodeVersion - Version of Node.js.
16287	NodeVersion *string `json:"nodeVersion,omitempty"`
16288	// LinuxFxVersion - Linux App Framework and version
16289	LinuxFxVersion *string `json:"linuxFxVersion,omitempty"`
16290	// RequestTracingEnabled - <code>true</code> if request tracing is enabled; otherwise, <code>false</code>.
16291	RequestTracingEnabled *bool `json:"requestTracingEnabled,omitempty"`
16292	// RequestTracingExpirationTime - Request tracing expiration time.
16293	RequestTracingExpirationTime *date.Time `json:"requestTracingExpirationTime,omitempty"`
16294	// RemoteDebuggingEnabled - <code>true</code> if remote debugging is enabled; otherwise, <code>false</code>.
16295	RemoteDebuggingEnabled *bool `json:"remoteDebuggingEnabled,omitempty"`
16296	// RemoteDebuggingVersion - Remote debugging version.
16297	RemoteDebuggingVersion *string `json:"remoteDebuggingVersion,omitempty"`
16298	// HTTPLoggingEnabled - <code>true</code> if HTTP logging is enabled; otherwise, <code>false</code>.
16299	HTTPLoggingEnabled *bool `json:"httpLoggingEnabled,omitempty"`
16300	// LogsDirectorySizeLimit - HTTP logs directory size limit.
16301	LogsDirectorySizeLimit *int32 `json:"logsDirectorySizeLimit,omitempty"`
16302	// DetailedErrorLoggingEnabled - <code>true</code> if detailed error logging is enabled; otherwise, <code>false</code>.
16303	DetailedErrorLoggingEnabled *bool `json:"detailedErrorLoggingEnabled,omitempty"`
16304	// PublishingUsername - Publishing user name.
16305	PublishingUsername *string `json:"publishingUsername,omitempty"`
16306	// AppSettings - Application settings.
16307	AppSettings *[]NameValuePair `json:"appSettings,omitempty"`
16308	// ConnectionStrings - Connection strings.
16309	ConnectionStrings *[]ConnStringInfo `json:"connectionStrings,omitempty"`
16310	// MachineKey - READ-ONLY; Site MachineKey.
16311	MachineKey *SiteMachineKey `json:"machineKey,omitempty"`
16312	// HandlerMappings - Handler mappings.
16313	HandlerMappings *[]HandlerMapping `json:"handlerMappings,omitempty"`
16314	// DocumentRoot - Document root.
16315	DocumentRoot *string `json:"documentRoot,omitempty"`
16316	// ScmType - SCM type. Possible values include: 'ScmTypeNone', 'ScmTypeDropbox', 'ScmTypeTfs', 'ScmTypeLocalGit', 'ScmTypeGitHub', 'ScmTypeCodePlexGit', 'ScmTypeCodePlexHg', 'ScmTypeBitbucketGit', 'ScmTypeBitbucketHg', 'ScmTypeExternalGit', 'ScmTypeExternalHg', 'ScmTypeOneDrive', 'ScmTypeVSO'
16317	ScmType ScmType `json:"scmType,omitempty"`
16318	// Use32BitWorkerProcess - <code>true</code> to use 32-bit worker process; otherwise, <code>false</code>.
16319	Use32BitWorkerProcess *bool `json:"use32BitWorkerProcess,omitempty"`
16320	// WebSocketsEnabled - <code>true</code> if WebSocket is enabled; otherwise, <code>false</code>.
16321	WebSocketsEnabled *bool `json:"webSocketsEnabled,omitempty"`
16322	// AlwaysOn - <code>true</code> if Always On is enabled; otherwise, <code>false</code>.
16323	AlwaysOn *bool `json:"alwaysOn,omitempty"`
16324	// JavaVersion - Java version.
16325	JavaVersion *string `json:"javaVersion,omitempty"`
16326	// JavaContainer - Java container.
16327	JavaContainer *string `json:"javaContainer,omitempty"`
16328	// JavaContainerVersion - Java container version.
16329	JavaContainerVersion *string `json:"javaContainerVersion,omitempty"`
16330	// AppCommandLine - App command line to launch.
16331	AppCommandLine *string `json:"appCommandLine,omitempty"`
16332	// ManagedPipelineMode - Managed pipeline mode. Possible values include: 'Integrated', 'Classic'
16333	ManagedPipelineMode ManagedPipelineMode `json:"managedPipelineMode,omitempty"`
16334	// VirtualApplications - Virtual applications.
16335	VirtualApplications *[]VirtualApplication `json:"virtualApplications,omitempty"`
16336	// LoadBalancing - Site load balancing. Possible values include: 'WeightedRoundRobin', 'LeastRequests', 'LeastResponseTime', 'WeightedTotalTraffic', 'RequestHash'
16337	LoadBalancing SiteLoadBalancing `json:"loadBalancing,omitempty"`
16338	// Experiments - This is work around for polymorphic types.
16339	Experiments *Experiments `json:"experiments,omitempty"`
16340	// Limits - Site limits.
16341	Limits *SiteLimits `json:"limits,omitempty"`
16342	// AutoHealEnabled - <code>true</code> if Auto Heal is enabled; otherwise, <code>false</code>.
16343	AutoHealEnabled *bool `json:"autoHealEnabled,omitempty"`
16344	// AutoHealRules - Auto Heal rules.
16345	AutoHealRules *AutoHealRules `json:"autoHealRules,omitempty"`
16346	// TracingOptions - Tracing options.
16347	TracingOptions *string `json:"tracingOptions,omitempty"`
16348	// VnetName - Virtual Network name.
16349	VnetName *string `json:"vnetName,omitempty"`
16350	// Cors - Cross-Origin Resource Sharing (CORS) settings.
16351	Cors *CorsSettings `json:"cors,omitempty"`
16352	// Push - Push endpoint settings.
16353	Push *PushSettings `json:"push,omitempty"`
16354	// APIDefinition - Information about the formal API definition for the app.
16355	APIDefinition *APIDefinitionInfo `json:"apiDefinition,omitempty"`
16356	// AutoSwapSlotName - Auto-swap slot name.
16357	AutoSwapSlotName *string `json:"autoSwapSlotName,omitempty"`
16358	// LocalMySQLEnabled - <code>true</code> to enable local MySQL; otherwise, <code>false</code>.
16359	LocalMySQLEnabled *bool `json:"localMySqlEnabled,omitempty"`
16360	// IPSecurityRestrictions - IP security restrictions.
16361	IPSecurityRestrictions *[]IPSecurityRestriction `json:"ipSecurityRestrictions,omitempty"`
16362	// HTTP20Enabled - Http20Enabled: configures a web site to allow clients to connect over http2.0
16363	HTTP20Enabled *bool `json:"http20Enabled,omitempty"`
16364	// MinTLSVersion - MinTlsVersion: configures the minimum version of TLS required for SSL requests. Possible values include: 'OneFullStopZero', 'OneFullStopOne', 'OneFullStopTwo'
16365	MinTLSVersion SupportedTLSVersions `json:"minTlsVersion,omitempty"`
16366}
16367
16368// SiteConfigResource web app configuration ARM resource.
16369type SiteConfigResource struct {
16370	autorest.Response `json:"-"`
16371	// SiteConfig - Core resource properties
16372	*SiteConfig `json:"properties,omitempty"`
16373	// ID - READ-ONLY; Resource Id.
16374	ID *string `json:"id,omitempty"`
16375	// Name - READ-ONLY; Resource Name.
16376	Name *string `json:"name,omitempty"`
16377	// Kind - Kind of resource.
16378	Kind *string `json:"kind,omitempty"`
16379	// Type - READ-ONLY; Resource type.
16380	Type *string `json:"type,omitempty"`
16381}
16382
16383// MarshalJSON is the custom marshaler for SiteConfigResource.
16384func (scr SiteConfigResource) MarshalJSON() ([]byte, error) {
16385	objectMap := make(map[string]interface{})
16386	if scr.SiteConfig != nil {
16387		objectMap["properties"] = scr.SiteConfig
16388	}
16389	if scr.Kind != nil {
16390		objectMap["kind"] = scr.Kind
16391	}
16392	return json.Marshal(objectMap)
16393}
16394
16395// UnmarshalJSON is the custom unmarshaler for SiteConfigResource struct.
16396func (scr *SiteConfigResource) UnmarshalJSON(body []byte) error {
16397	var m map[string]*json.RawMessage
16398	err := json.Unmarshal(body, &m)
16399	if err != nil {
16400		return err
16401	}
16402	for k, v := range m {
16403		switch k {
16404		case "properties":
16405			if v != nil {
16406				var siteConfig SiteConfig
16407				err = json.Unmarshal(*v, &siteConfig)
16408				if err != nil {
16409					return err
16410				}
16411				scr.SiteConfig = &siteConfig
16412			}
16413		case "id":
16414			if v != nil {
16415				var ID string
16416				err = json.Unmarshal(*v, &ID)
16417				if err != nil {
16418					return err
16419				}
16420				scr.ID = &ID
16421			}
16422		case "name":
16423			if v != nil {
16424				var name string
16425				err = json.Unmarshal(*v, &name)
16426				if err != nil {
16427					return err
16428				}
16429				scr.Name = &name
16430			}
16431		case "kind":
16432			if v != nil {
16433				var kind string
16434				err = json.Unmarshal(*v, &kind)
16435				if err != nil {
16436					return err
16437				}
16438				scr.Kind = &kind
16439			}
16440		case "type":
16441			if v != nil {
16442				var typeVar string
16443				err = json.Unmarshal(*v, &typeVar)
16444				if err != nil {
16445					return err
16446				}
16447				scr.Type = &typeVar
16448			}
16449		}
16450	}
16451
16452	return nil
16453}
16454
16455// SiteConfigResourceCollection collection of site configurations.
16456type SiteConfigResourceCollection struct {
16457	autorest.Response `json:"-"`
16458	// Value - Collection of resources.
16459	Value *[]SiteConfigResource `json:"value,omitempty"`
16460	// NextLink - READ-ONLY; Link to next page of resources.
16461	NextLink *string `json:"nextLink,omitempty"`
16462}
16463
16464// SiteConfigResourceCollectionIterator provides access to a complete listing of SiteConfigResource values.
16465type SiteConfigResourceCollectionIterator struct {
16466	i    int
16467	page SiteConfigResourceCollectionPage
16468}
16469
16470// NextWithContext advances to the next value.  If there was an error making
16471// the request the iterator does not advance and the error is returned.
16472func (iter *SiteConfigResourceCollectionIterator) NextWithContext(ctx context.Context) (err error) {
16473	if tracing.IsEnabled() {
16474		ctx = tracing.StartSpan(ctx, fqdn+"/SiteConfigResourceCollectionIterator.NextWithContext")
16475		defer func() {
16476			sc := -1
16477			if iter.Response().Response.Response != nil {
16478				sc = iter.Response().Response.Response.StatusCode
16479			}
16480			tracing.EndSpan(ctx, sc, err)
16481		}()
16482	}
16483	iter.i++
16484	if iter.i < len(iter.page.Values()) {
16485		return nil
16486	}
16487	err = iter.page.NextWithContext(ctx)
16488	if err != nil {
16489		iter.i--
16490		return err
16491	}
16492	iter.i = 0
16493	return nil
16494}
16495
16496// Next advances to the next value.  If there was an error making
16497// the request the iterator does not advance and the error is returned.
16498// Deprecated: Use NextWithContext() instead.
16499func (iter *SiteConfigResourceCollectionIterator) Next() error {
16500	return iter.NextWithContext(context.Background())
16501}
16502
16503// NotDone returns true if the enumeration should be started or is not yet complete.
16504func (iter SiteConfigResourceCollectionIterator) NotDone() bool {
16505	return iter.page.NotDone() && iter.i < len(iter.page.Values())
16506}
16507
16508// Response returns the raw server response from the last page request.
16509func (iter SiteConfigResourceCollectionIterator) Response() SiteConfigResourceCollection {
16510	return iter.page.Response()
16511}
16512
16513// Value returns the current value or a zero-initialized value if the
16514// iterator has advanced beyond the end of the collection.
16515func (iter SiteConfigResourceCollectionIterator) Value() SiteConfigResource {
16516	if !iter.page.NotDone() {
16517		return SiteConfigResource{}
16518	}
16519	return iter.page.Values()[iter.i]
16520}
16521
16522// Creates a new instance of the SiteConfigResourceCollectionIterator type.
16523func NewSiteConfigResourceCollectionIterator(page SiteConfigResourceCollectionPage) SiteConfigResourceCollectionIterator {
16524	return SiteConfigResourceCollectionIterator{page: page}
16525}
16526
16527// IsEmpty returns true if the ListResult contains no values.
16528func (scrc SiteConfigResourceCollection) IsEmpty() bool {
16529	return scrc.Value == nil || len(*scrc.Value) == 0
16530}
16531
16532// siteConfigResourceCollectionPreparer prepares a request to retrieve the next set of results.
16533// It returns nil if no more results exist.
16534func (scrc SiteConfigResourceCollection) siteConfigResourceCollectionPreparer(ctx context.Context) (*http.Request, error) {
16535	if scrc.NextLink == nil || len(to.String(scrc.NextLink)) < 1 {
16536		return nil, nil
16537	}
16538	return autorest.Prepare((&http.Request{}).WithContext(ctx),
16539		autorest.AsJSON(),
16540		autorest.AsGet(),
16541		autorest.WithBaseURL(to.String(scrc.NextLink)))
16542}
16543
16544// SiteConfigResourceCollectionPage contains a page of SiteConfigResource values.
16545type SiteConfigResourceCollectionPage struct {
16546	fn   func(context.Context, SiteConfigResourceCollection) (SiteConfigResourceCollection, error)
16547	scrc SiteConfigResourceCollection
16548}
16549
16550// NextWithContext advances to the next page of values.  If there was an error making
16551// the request the page does not advance and the error is returned.
16552func (page *SiteConfigResourceCollectionPage) NextWithContext(ctx context.Context) (err error) {
16553	if tracing.IsEnabled() {
16554		ctx = tracing.StartSpan(ctx, fqdn+"/SiteConfigResourceCollectionPage.NextWithContext")
16555		defer func() {
16556			sc := -1
16557			if page.Response().Response.Response != nil {
16558				sc = page.Response().Response.Response.StatusCode
16559			}
16560			tracing.EndSpan(ctx, sc, err)
16561		}()
16562	}
16563	next, err := page.fn(ctx, page.scrc)
16564	if err != nil {
16565		return err
16566	}
16567	page.scrc = next
16568	return nil
16569}
16570
16571// Next advances to the next page of values.  If there was an error making
16572// the request the page does not advance and the error is returned.
16573// Deprecated: Use NextWithContext() instead.
16574func (page *SiteConfigResourceCollectionPage) Next() error {
16575	return page.NextWithContext(context.Background())
16576}
16577
16578// NotDone returns true if the page enumeration should be started or is not yet complete.
16579func (page SiteConfigResourceCollectionPage) NotDone() bool {
16580	return !page.scrc.IsEmpty()
16581}
16582
16583// Response returns the raw server response from the last page request.
16584func (page SiteConfigResourceCollectionPage) Response() SiteConfigResourceCollection {
16585	return page.scrc
16586}
16587
16588// Values returns the slice of values for the current page or nil if there are no values.
16589func (page SiteConfigResourceCollectionPage) Values() []SiteConfigResource {
16590	if page.scrc.IsEmpty() {
16591		return nil
16592	}
16593	return *page.scrc.Value
16594}
16595
16596// Creates a new instance of the SiteConfigResourceCollectionPage type.
16597func NewSiteConfigResourceCollectionPage(getNextPage func(context.Context, SiteConfigResourceCollection) (SiteConfigResourceCollection, error)) SiteConfigResourceCollectionPage {
16598	return SiteConfigResourceCollectionPage{fn: getNextPage}
16599}
16600
16601// SiteConfigurationSnapshotInfo a snapshot of a web app configuration.
16602type SiteConfigurationSnapshotInfo struct {
16603	// SiteConfigurationSnapshotInfoProperties - SiteConfigurationSnapshotInfo resource specific properties
16604	*SiteConfigurationSnapshotInfoProperties `json:"properties,omitempty"`
16605	// ID - READ-ONLY; Resource Id.
16606	ID *string `json:"id,omitempty"`
16607	// Name - READ-ONLY; Resource Name.
16608	Name *string `json:"name,omitempty"`
16609	// Kind - Kind of resource.
16610	Kind *string `json:"kind,omitempty"`
16611	// Type - READ-ONLY; Resource type.
16612	Type *string `json:"type,omitempty"`
16613}
16614
16615// MarshalJSON is the custom marshaler for SiteConfigurationSnapshotInfo.
16616func (scsi SiteConfigurationSnapshotInfo) MarshalJSON() ([]byte, error) {
16617	objectMap := make(map[string]interface{})
16618	if scsi.SiteConfigurationSnapshotInfoProperties != nil {
16619		objectMap["properties"] = scsi.SiteConfigurationSnapshotInfoProperties
16620	}
16621	if scsi.Kind != nil {
16622		objectMap["kind"] = scsi.Kind
16623	}
16624	return json.Marshal(objectMap)
16625}
16626
16627// UnmarshalJSON is the custom unmarshaler for SiteConfigurationSnapshotInfo struct.
16628func (scsi *SiteConfigurationSnapshotInfo) UnmarshalJSON(body []byte) error {
16629	var m map[string]*json.RawMessage
16630	err := json.Unmarshal(body, &m)
16631	if err != nil {
16632		return err
16633	}
16634	for k, v := range m {
16635		switch k {
16636		case "properties":
16637			if v != nil {
16638				var siteConfigurationSnapshotInfoProperties SiteConfigurationSnapshotInfoProperties
16639				err = json.Unmarshal(*v, &siteConfigurationSnapshotInfoProperties)
16640				if err != nil {
16641					return err
16642				}
16643				scsi.SiteConfigurationSnapshotInfoProperties = &siteConfigurationSnapshotInfoProperties
16644			}
16645		case "id":
16646			if v != nil {
16647				var ID string
16648				err = json.Unmarshal(*v, &ID)
16649				if err != nil {
16650					return err
16651				}
16652				scsi.ID = &ID
16653			}
16654		case "name":
16655			if v != nil {
16656				var name string
16657				err = json.Unmarshal(*v, &name)
16658				if err != nil {
16659					return err
16660				}
16661				scsi.Name = &name
16662			}
16663		case "kind":
16664			if v != nil {
16665				var kind string
16666				err = json.Unmarshal(*v, &kind)
16667				if err != nil {
16668					return err
16669				}
16670				scsi.Kind = &kind
16671			}
16672		case "type":
16673			if v != nil {
16674				var typeVar string
16675				err = json.Unmarshal(*v, &typeVar)
16676				if err != nil {
16677					return err
16678				}
16679				scsi.Type = &typeVar
16680			}
16681		}
16682	}
16683
16684	return nil
16685}
16686
16687// SiteConfigurationSnapshotInfoCollection collection of metadata for the app configuration snapshots that
16688// can be restored.
16689type SiteConfigurationSnapshotInfoCollection struct {
16690	autorest.Response `json:"-"`
16691	// Value - Collection of resources.
16692	Value *[]SiteConfigurationSnapshotInfo `json:"value,omitempty"`
16693	// NextLink - READ-ONLY; Link to next page of resources.
16694	NextLink *string `json:"nextLink,omitempty"`
16695}
16696
16697// SiteConfigurationSnapshotInfoCollectionIterator provides access to a complete listing of
16698// SiteConfigurationSnapshotInfo values.
16699type SiteConfigurationSnapshotInfoCollectionIterator struct {
16700	i    int
16701	page SiteConfigurationSnapshotInfoCollectionPage
16702}
16703
16704// NextWithContext advances to the next value.  If there was an error making
16705// the request the iterator does not advance and the error is returned.
16706func (iter *SiteConfigurationSnapshotInfoCollectionIterator) NextWithContext(ctx context.Context) (err error) {
16707	if tracing.IsEnabled() {
16708		ctx = tracing.StartSpan(ctx, fqdn+"/SiteConfigurationSnapshotInfoCollectionIterator.NextWithContext")
16709		defer func() {
16710			sc := -1
16711			if iter.Response().Response.Response != nil {
16712				sc = iter.Response().Response.Response.StatusCode
16713			}
16714			tracing.EndSpan(ctx, sc, err)
16715		}()
16716	}
16717	iter.i++
16718	if iter.i < len(iter.page.Values()) {
16719		return nil
16720	}
16721	err = iter.page.NextWithContext(ctx)
16722	if err != nil {
16723		iter.i--
16724		return err
16725	}
16726	iter.i = 0
16727	return nil
16728}
16729
16730// Next advances to the next value.  If there was an error making
16731// the request the iterator does not advance and the error is returned.
16732// Deprecated: Use NextWithContext() instead.
16733func (iter *SiteConfigurationSnapshotInfoCollectionIterator) Next() error {
16734	return iter.NextWithContext(context.Background())
16735}
16736
16737// NotDone returns true if the enumeration should be started or is not yet complete.
16738func (iter SiteConfigurationSnapshotInfoCollectionIterator) NotDone() bool {
16739	return iter.page.NotDone() && iter.i < len(iter.page.Values())
16740}
16741
16742// Response returns the raw server response from the last page request.
16743func (iter SiteConfigurationSnapshotInfoCollectionIterator) Response() SiteConfigurationSnapshotInfoCollection {
16744	return iter.page.Response()
16745}
16746
16747// Value returns the current value or a zero-initialized value if the
16748// iterator has advanced beyond the end of the collection.
16749func (iter SiteConfigurationSnapshotInfoCollectionIterator) Value() SiteConfigurationSnapshotInfo {
16750	if !iter.page.NotDone() {
16751		return SiteConfigurationSnapshotInfo{}
16752	}
16753	return iter.page.Values()[iter.i]
16754}
16755
16756// Creates a new instance of the SiteConfigurationSnapshotInfoCollectionIterator type.
16757func NewSiteConfigurationSnapshotInfoCollectionIterator(page SiteConfigurationSnapshotInfoCollectionPage) SiteConfigurationSnapshotInfoCollectionIterator {
16758	return SiteConfigurationSnapshotInfoCollectionIterator{page: page}
16759}
16760
16761// IsEmpty returns true if the ListResult contains no values.
16762func (scsic SiteConfigurationSnapshotInfoCollection) IsEmpty() bool {
16763	return scsic.Value == nil || len(*scsic.Value) == 0
16764}
16765
16766// siteConfigurationSnapshotInfoCollectionPreparer prepares a request to retrieve the next set of results.
16767// It returns nil if no more results exist.
16768func (scsic SiteConfigurationSnapshotInfoCollection) siteConfigurationSnapshotInfoCollectionPreparer(ctx context.Context) (*http.Request, error) {
16769	if scsic.NextLink == nil || len(to.String(scsic.NextLink)) < 1 {
16770		return nil, nil
16771	}
16772	return autorest.Prepare((&http.Request{}).WithContext(ctx),
16773		autorest.AsJSON(),
16774		autorest.AsGet(),
16775		autorest.WithBaseURL(to.String(scsic.NextLink)))
16776}
16777
16778// SiteConfigurationSnapshotInfoCollectionPage contains a page of SiteConfigurationSnapshotInfo values.
16779type SiteConfigurationSnapshotInfoCollectionPage struct {
16780	fn    func(context.Context, SiteConfigurationSnapshotInfoCollection) (SiteConfigurationSnapshotInfoCollection, error)
16781	scsic SiteConfigurationSnapshotInfoCollection
16782}
16783
16784// NextWithContext advances to the next page of values.  If there was an error making
16785// the request the page does not advance and the error is returned.
16786func (page *SiteConfigurationSnapshotInfoCollectionPage) NextWithContext(ctx context.Context) (err error) {
16787	if tracing.IsEnabled() {
16788		ctx = tracing.StartSpan(ctx, fqdn+"/SiteConfigurationSnapshotInfoCollectionPage.NextWithContext")
16789		defer func() {
16790			sc := -1
16791			if page.Response().Response.Response != nil {
16792				sc = page.Response().Response.Response.StatusCode
16793			}
16794			tracing.EndSpan(ctx, sc, err)
16795		}()
16796	}
16797	next, err := page.fn(ctx, page.scsic)
16798	if err != nil {
16799		return err
16800	}
16801	page.scsic = next
16802	return nil
16803}
16804
16805// Next advances to the next page of values.  If there was an error making
16806// the request the page does not advance and the error is returned.
16807// Deprecated: Use NextWithContext() instead.
16808func (page *SiteConfigurationSnapshotInfoCollectionPage) Next() error {
16809	return page.NextWithContext(context.Background())
16810}
16811
16812// NotDone returns true if the page enumeration should be started or is not yet complete.
16813func (page SiteConfigurationSnapshotInfoCollectionPage) NotDone() bool {
16814	return !page.scsic.IsEmpty()
16815}
16816
16817// Response returns the raw server response from the last page request.
16818func (page SiteConfigurationSnapshotInfoCollectionPage) Response() SiteConfigurationSnapshotInfoCollection {
16819	return page.scsic
16820}
16821
16822// Values returns the slice of values for the current page or nil if there are no values.
16823func (page SiteConfigurationSnapshotInfoCollectionPage) Values() []SiteConfigurationSnapshotInfo {
16824	if page.scsic.IsEmpty() {
16825		return nil
16826	}
16827	return *page.scsic.Value
16828}
16829
16830// Creates a new instance of the SiteConfigurationSnapshotInfoCollectionPage type.
16831func NewSiteConfigurationSnapshotInfoCollectionPage(getNextPage func(context.Context, SiteConfigurationSnapshotInfoCollection) (SiteConfigurationSnapshotInfoCollection, error)) SiteConfigurationSnapshotInfoCollectionPage {
16832	return SiteConfigurationSnapshotInfoCollectionPage{fn: getNextPage}
16833}
16834
16835// SiteConfigurationSnapshotInfoProperties siteConfigurationSnapshotInfo resource specific properties
16836type SiteConfigurationSnapshotInfoProperties struct {
16837	// Time - READ-ONLY; The time the snapshot was taken.
16838	Time *date.Time `json:"time,omitempty"`
16839	// ID - READ-ONLY; The id of the snapshot
16840	ID *int32 `json:"id,omitempty"`
16841}
16842
16843// SiteExtensionInfo site Extension Information.
16844type SiteExtensionInfo struct {
16845	autorest.Response `json:"-"`
16846	// SiteExtensionInfoProperties - SiteExtensionInfo resource specific properties
16847	*SiteExtensionInfoProperties `json:"properties,omitempty"`
16848	// ID - READ-ONLY; Resource Id.
16849	ID *string `json:"id,omitempty"`
16850	// Name - READ-ONLY; Resource Name.
16851	Name *string `json:"name,omitempty"`
16852	// Kind - Kind of resource.
16853	Kind *string `json:"kind,omitempty"`
16854	// Type - READ-ONLY; Resource type.
16855	Type *string `json:"type,omitempty"`
16856}
16857
16858// MarshalJSON is the custom marshaler for SiteExtensionInfo.
16859func (sei SiteExtensionInfo) MarshalJSON() ([]byte, error) {
16860	objectMap := make(map[string]interface{})
16861	if sei.SiteExtensionInfoProperties != nil {
16862		objectMap["properties"] = sei.SiteExtensionInfoProperties
16863	}
16864	if sei.Kind != nil {
16865		objectMap["kind"] = sei.Kind
16866	}
16867	return json.Marshal(objectMap)
16868}
16869
16870// UnmarshalJSON is the custom unmarshaler for SiteExtensionInfo struct.
16871func (sei *SiteExtensionInfo) UnmarshalJSON(body []byte) error {
16872	var m map[string]*json.RawMessage
16873	err := json.Unmarshal(body, &m)
16874	if err != nil {
16875		return err
16876	}
16877	for k, v := range m {
16878		switch k {
16879		case "properties":
16880			if v != nil {
16881				var siteExtensionInfoProperties SiteExtensionInfoProperties
16882				err = json.Unmarshal(*v, &siteExtensionInfoProperties)
16883				if err != nil {
16884					return err
16885				}
16886				sei.SiteExtensionInfoProperties = &siteExtensionInfoProperties
16887			}
16888		case "id":
16889			if v != nil {
16890				var ID string
16891				err = json.Unmarshal(*v, &ID)
16892				if err != nil {
16893					return err
16894				}
16895				sei.ID = &ID
16896			}
16897		case "name":
16898			if v != nil {
16899				var name string
16900				err = json.Unmarshal(*v, &name)
16901				if err != nil {
16902					return err
16903				}
16904				sei.Name = &name
16905			}
16906		case "kind":
16907			if v != nil {
16908				var kind string
16909				err = json.Unmarshal(*v, &kind)
16910				if err != nil {
16911					return err
16912				}
16913				sei.Kind = &kind
16914			}
16915		case "type":
16916			if v != nil {
16917				var typeVar string
16918				err = json.Unmarshal(*v, &typeVar)
16919				if err != nil {
16920					return err
16921				}
16922				sei.Type = &typeVar
16923			}
16924		}
16925	}
16926
16927	return nil
16928}
16929
16930// SiteExtensionInfoCollection collection of Kudu site extension information elements.
16931type SiteExtensionInfoCollection struct {
16932	autorest.Response `json:"-"`
16933	// Value - Collection of resources.
16934	Value *[]SiteExtensionInfo `json:"value,omitempty"`
16935	// NextLink - READ-ONLY; Link to next page of resources.
16936	NextLink *string `json:"nextLink,omitempty"`
16937}
16938
16939// SiteExtensionInfoCollectionIterator provides access to a complete listing of SiteExtensionInfo values.
16940type SiteExtensionInfoCollectionIterator struct {
16941	i    int
16942	page SiteExtensionInfoCollectionPage
16943}
16944
16945// NextWithContext advances to the next value.  If there was an error making
16946// the request the iterator does not advance and the error is returned.
16947func (iter *SiteExtensionInfoCollectionIterator) NextWithContext(ctx context.Context) (err error) {
16948	if tracing.IsEnabled() {
16949		ctx = tracing.StartSpan(ctx, fqdn+"/SiteExtensionInfoCollectionIterator.NextWithContext")
16950		defer func() {
16951			sc := -1
16952			if iter.Response().Response.Response != nil {
16953				sc = iter.Response().Response.Response.StatusCode
16954			}
16955			tracing.EndSpan(ctx, sc, err)
16956		}()
16957	}
16958	iter.i++
16959	if iter.i < len(iter.page.Values()) {
16960		return nil
16961	}
16962	err = iter.page.NextWithContext(ctx)
16963	if err != nil {
16964		iter.i--
16965		return err
16966	}
16967	iter.i = 0
16968	return nil
16969}
16970
16971// Next advances to the next value.  If there was an error making
16972// the request the iterator does not advance and the error is returned.
16973// Deprecated: Use NextWithContext() instead.
16974func (iter *SiteExtensionInfoCollectionIterator) Next() error {
16975	return iter.NextWithContext(context.Background())
16976}
16977
16978// NotDone returns true if the enumeration should be started or is not yet complete.
16979func (iter SiteExtensionInfoCollectionIterator) NotDone() bool {
16980	return iter.page.NotDone() && iter.i < len(iter.page.Values())
16981}
16982
16983// Response returns the raw server response from the last page request.
16984func (iter SiteExtensionInfoCollectionIterator) Response() SiteExtensionInfoCollection {
16985	return iter.page.Response()
16986}
16987
16988// Value returns the current value or a zero-initialized value if the
16989// iterator has advanced beyond the end of the collection.
16990func (iter SiteExtensionInfoCollectionIterator) Value() SiteExtensionInfo {
16991	if !iter.page.NotDone() {
16992		return SiteExtensionInfo{}
16993	}
16994	return iter.page.Values()[iter.i]
16995}
16996
16997// Creates a new instance of the SiteExtensionInfoCollectionIterator type.
16998func NewSiteExtensionInfoCollectionIterator(page SiteExtensionInfoCollectionPage) SiteExtensionInfoCollectionIterator {
16999	return SiteExtensionInfoCollectionIterator{page: page}
17000}
17001
17002// IsEmpty returns true if the ListResult contains no values.
17003func (seic SiteExtensionInfoCollection) IsEmpty() bool {
17004	return seic.Value == nil || len(*seic.Value) == 0
17005}
17006
17007// siteExtensionInfoCollectionPreparer prepares a request to retrieve the next set of results.
17008// It returns nil if no more results exist.
17009func (seic SiteExtensionInfoCollection) siteExtensionInfoCollectionPreparer(ctx context.Context) (*http.Request, error) {
17010	if seic.NextLink == nil || len(to.String(seic.NextLink)) < 1 {
17011		return nil, nil
17012	}
17013	return autorest.Prepare((&http.Request{}).WithContext(ctx),
17014		autorest.AsJSON(),
17015		autorest.AsGet(),
17016		autorest.WithBaseURL(to.String(seic.NextLink)))
17017}
17018
17019// SiteExtensionInfoCollectionPage contains a page of SiteExtensionInfo values.
17020type SiteExtensionInfoCollectionPage struct {
17021	fn   func(context.Context, SiteExtensionInfoCollection) (SiteExtensionInfoCollection, error)
17022	seic SiteExtensionInfoCollection
17023}
17024
17025// NextWithContext advances to the next page of values.  If there was an error making
17026// the request the page does not advance and the error is returned.
17027func (page *SiteExtensionInfoCollectionPage) NextWithContext(ctx context.Context) (err error) {
17028	if tracing.IsEnabled() {
17029		ctx = tracing.StartSpan(ctx, fqdn+"/SiteExtensionInfoCollectionPage.NextWithContext")
17030		defer func() {
17031			sc := -1
17032			if page.Response().Response.Response != nil {
17033				sc = page.Response().Response.Response.StatusCode
17034			}
17035			tracing.EndSpan(ctx, sc, err)
17036		}()
17037	}
17038	next, err := page.fn(ctx, page.seic)
17039	if err != nil {
17040		return err
17041	}
17042	page.seic = next
17043	return nil
17044}
17045
17046// Next advances to the next page of values.  If there was an error making
17047// the request the page does not advance and the error is returned.
17048// Deprecated: Use NextWithContext() instead.
17049func (page *SiteExtensionInfoCollectionPage) Next() error {
17050	return page.NextWithContext(context.Background())
17051}
17052
17053// NotDone returns true if the page enumeration should be started or is not yet complete.
17054func (page SiteExtensionInfoCollectionPage) NotDone() bool {
17055	return !page.seic.IsEmpty()
17056}
17057
17058// Response returns the raw server response from the last page request.
17059func (page SiteExtensionInfoCollectionPage) Response() SiteExtensionInfoCollection {
17060	return page.seic
17061}
17062
17063// Values returns the slice of values for the current page or nil if there are no values.
17064func (page SiteExtensionInfoCollectionPage) Values() []SiteExtensionInfo {
17065	if page.seic.IsEmpty() {
17066		return nil
17067	}
17068	return *page.seic.Value
17069}
17070
17071// Creates a new instance of the SiteExtensionInfoCollectionPage type.
17072func NewSiteExtensionInfoCollectionPage(getNextPage func(context.Context, SiteExtensionInfoCollection) (SiteExtensionInfoCollection, error)) SiteExtensionInfoCollectionPage {
17073	return SiteExtensionInfoCollectionPage{fn: getNextPage}
17074}
17075
17076// SiteExtensionInfoProperties siteExtensionInfo resource specific properties
17077type SiteExtensionInfoProperties struct {
17078	// ID - Site extension ID.
17079	ID *string `json:"id,omitempty"`
17080	// Title - Site extension title.
17081	Title *string `json:"title,omitempty"`
17082	// Type - Site extension type. Possible values include: 'Gallery', 'WebRoot'
17083	Type SiteExtensionType `json:"type,omitempty"`
17084	// Summary - Summary description.
17085	Summary *string `json:"summary,omitempty"`
17086	// Description - Detailed description.
17087	Description *string `json:"description,omitempty"`
17088	// Version - Version information.
17089	Version *string `json:"version,omitempty"`
17090	// ExtensionURL - Extension URL.
17091	ExtensionURL *string `json:"extensionUrl,omitempty"`
17092	// ProjectURL - Project URL.
17093	ProjectURL *string `json:"projectUrl,omitempty"`
17094	// IconURL - Icon URL.
17095	IconURL *string `json:"iconUrl,omitempty"`
17096	// LicenseURL - License URL.
17097	LicenseURL *string `json:"licenseUrl,omitempty"`
17098	// FeedURL - Feed URL.
17099	FeedURL *string `json:"feedUrl,omitempty"`
17100	// Authors - List of authors.
17101	Authors *[]string `json:"authors,omitempty"`
17102	// InstallationArgs - Installer command line parameters.
17103	InstallationArgs *string `json:"installationArgs,omitempty"`
17104	// PublishedDateTime - Published timestamp.
17105	PublishedDateTime *date.Time `json:"publishedDateTime,omitempty"`
17106	// DownloadCount - Count of downloads.
17107	DownloadCount *int32 `json:"downloadCount,omitempty"`
17108	// LocalIsLatestVersion - <code>true</code> if the local version is the latest version; <code>false</code> otherwise.
17109	LocalIsLatestVersion *bool `json:"localIsLatestVersion,omitempty"`
17110	// LocalPath - Local path.
17111	LocalPath *string `json:"localPath,omitempty"`
17112	// InstalledDateTime - Installed timestamp.
17113	InstalledDateTime *date.Time `json:"installedDateTime,omitempty"`
17114	// ProvisioningState - Provisioning state.
17115	ProvisioningState *string `json:"provisioningState,omitempty"`
17116	// Comment - Site Extension comment.
17117	Comment *string `json:"comment,omitempty"`
17118}
17119
17120// SiteInstance instance of an app.
17121type SiteInstance struct {
17122	// SiteInstanceProperties - SiteInstance resource specific properties
17123	*SiteInstanceProperties `json:"properties,omitempty"`
17124	// ID - READ-ONLY; Resource Id.
17125	ID *string `json:"id,omitempty"`
17126	// Name - READ-ONLY; Resource Name.
17127	Name *string `json:"name,omitempty"`
17128	// Kind - Kind of resource.
17129	Kind *string `json:"kind,omitempty"`
17130	// Type - READ-ONLY; Resource type.
17131	Type *string `json:"type,omitempty"`
17132}
17133
17134// MarshalJSON is the custom marshaler for SiteInstance.
17135func (si SiteInstance) MarshalJSON() ([]byte, error) {
17136	objectMap := make(map[string]interface{})
17137	if si.SiteInstanceProperties != nil {
17138		objectMap["properties"] = si.SiteInstanceProperties
17139	}
17140	if si.Kind != nil {
17141		objectMap["kind"] = si.Kind
17142	}
17143	return json.Marshal(objectMap)
17144}
17145
17146// UnmarshalJSON is the custom unmarshaler for SiteInstance struct.
17147func (si *SiteInstance) UnmarshalJSON(body []byte) error {
17148	var m map[string]*json.RawMessage
17149	err := json.Unmarshal(body, &m)
17150	if err != nil {
17151		return err
17152	}
17153	for k, v := range m {
17154		switch k {
17155		case "properties":
17156			if v != nil {
17157				var siteInstanceProperties SiteInstanceProperties
17158				err = json.Unmarshal(*v, &siteInstanceProperties)
17159				if err != nil {
17160					return err
17161				}
17162				si.SiteInstanceProperties = &siteInstanceProperties
17163			}
17164		case "id":
17165			if v != nil {
17166				var ID string
17167				err = json.Unmarshal(*v, &ID)
17168				if err != nil {
17169					return err
17170				}
17171				si.ID = &ID
17172			}
17173		case "name":
17174			if v != nil {
17175				var name string
17176				err = json.Unmarshal(*v, &name)
17177				if err != nil {
17178					return err
17179				}
17180				si.Name = &name
17181			}
17182		case "kind":
17183			if v != nil {
17184				var kind string
17185				err = json.Unmarshal(*v, &kind)
17186				if err != nil {
17187					return err
17188				}
17189				si.Kind = &kind
17190			}
17191		case "type":
17192			if v != nil {
17193				var typeVar string
17194				err = json.Unmarshal(*v, &typeVar)
17195				if err != nil {
17196					return err
17197				}
17198				si.Type = &typeVar
17199			}
17200		}
17201	}
17202
17203	return nil
17204}
17205
17206// SiteInstanceProperties siteInstance resource specific properties
17207type SiteInstanceProperties struct {
17208	// Name - READ-ONLY; Name of instance.
17209	Name *string `json:"name,omitempty"`
17210}
17211
17212// SiteLimits metric limits set on an app.
17213type SiteLimits struct {
17214	// MaxPercentageCPU - Maximum allowed CPU usage percentage.
17215	MaxPercentageCPU *float64 `json:"maxPercentageCpu,omitempty"`
17216	// MaxMemoryInMb - Maximum allowed memory usage in MB.
17217	MaxMemoryInMb *int64 `json:"maxMemoryInMb,omitempty"`
17218	// MaxDiskSizeInMb - Maximum allowed disk size usage in MB.
17219	MaxDiskSizeInMb *int64 `json:"maxDiskSizeInMb,omitempty"`
17220}
17221
17222// SiteLogsConfig configuration of App Service site logs.
17223type SiteLogsConfig struct {
17224	autorest.Response `json:"-"`
17225	// SiteLogsConfigProperties - SiteLogsConfig resource specific properties
17226	*SiteLogsConfigProperties `json:"properties,omitempty"`
17227	// ID - READ-ONLY; Resource Id.
17228	ID *string `json:"id,omitempty"`
17229	// Name - READ-ONLY; Resource Name.
17230	Name *string `json:"name,omitempty"`
17231	// Kind - Kind of resource.
17232	Kind *string `json:"kind,omitempty"`
17233	// Type - READ-ONLY; Resource type.
17234	Type *string `json:"type,omitempty"`
17235}
17236
17237// MarshalJSON is the custom marshaler for SiteLogsConfig.
17238func (slc SiteLogsConfig) MarshalJSON() ([]byte, error) {
17239	objectMap := make(map[string]interface{})
17240	if slc.SiteLogsConfigProperties != nil {
17241		objectMap["properties"] = slc.SiteLogsConfigProperties
17242	}
17243	if slc.Kind != nil {
17244		objectMap["kind"] = slc.Kind
17245	}
17246	return json.Marshal(objectMap)
17247}
17248
17249// UnmarshalJSON is the custom unmarshaler for SiteLogsConfig struct.
17250func (slc *SiteLogsConfig) UnmarshalJSON(body []byte) error {
17251	var m map[string]*json.RawMessage
17252	err := json.Unmarshal(body, &m)
17253	if err != nil {
17254		return err
17255	}
17256	for k, v := range m {
17257		switch k {
17258		case "properties":
17259			if v != nil {
17260				var siteLogsConfigProperties SiteLogsConfigProperties
17261				err = json.Unmarshal(*v, &siteLogsConfigProperties)
17262				if err != nil {
17263					return err
17264				}
17265				slc.SiteLogsConfigProperties = &siteLogsConfigProperties
17266			}
17267		case "id":
17268			if v != nil {
17269				var ID string
17270				err = json.Unmarshal(*v, &ID)
17271				if err != nil {
17272					return err
17273				}
17274				slc.ID = &ID
17275			}
17276		case "name":
17277			if v != nil {
17278				var name string
17279				err = json.Unmarshal(*v, &name)
17280				if err != nil {
17281					return err
17282				}
17283				slc.Name = &name
17284			}
17285		case "kind":
17286			if v != nil {
17287				var kind string
17288				err = json.Unmarshal(*v, &kind)
17289				if err != nil {
17290					return err
17291				}
17292				slc.Kind = &kind
17293			}
17294		case "type":
17295			if v != nil {
17296				var typeVar string
17297				err = json.Unmarshal(*v, &typeVar)
17298				if err != nil {
17299					return err
17300				}
17301				slc.Type = &typeVar
17302			}
17303		}
17304	}
17305
17306	return nil
17307}
17308
17309// SiteLogsConfigProperties siteLogsConfig resource specific properties
17310type SiteLogsConfigProperties struct {
17311	// ApplicationLogs - Application logs configuration.
17312	ApplicationLogs *ApplicationLogsConfig `json:"applicationLogs,omitempty"`
17313	// HTTPLogs - HTTP logs configuration.
17314	HTTPLogs *HTTPLogsConfig `json:"httpLogs,omitempty"`
17315	// FailedRequestsTracing - Failed requests tracing configuration.
17316	FailedRequestsTracing *EnabledConfig `json:"failedRequestsTracing,omitempty"`
17317	// DetailedErrorMessages - Detailed error messages configuration.
17318	DetailedErrorMessages *EnabledConfig `json:"detailedErrorMessages,omitempty"`
17319}
17320
17321// SiteMachineKey machineKey of an app.
17322type SiteMachineKey struct {
17323	// Validation - MachineKey validation.
17324	Validation *string `json:"validation,omitempty"`
17325	// ValidationKey - Validation key.
17326	ValidationKey *string `json:"validationKey,omitempty"`
17327	// Decryption - Algorithm used for decryption.
17328	Decryption *string `json:"decryption,omitempty"`
17329	// DecryptionKey - Decryption key.
17330	DecryptionKey *string `json:"decryptionKey,omitempty"`
17331}
17332
17333// SitePatchResource ARM resource for a site.
17334type SitePatchResource struct {
17335	// SitePatchResourceProperties - SitePatchResource resource specific properties
17336	*SitePatchResourceProperties `json:"properties,omitempty"`
17337	// ID - READ-ONLY; Resource Id.
17338	ID *string `json:"id,omitempty"`
17339	// Name - READ-ONLY; Resource Name.
17340	Name *string `json:"name,omitempty"`
17341	// Kind - Kind of resource.
17342	Kind *string `json:"kind,omitempty"`
17343	// Type - READ-ONLY; Resource type.
17344	Type *string `json:"type,omitempty"`
17345}
17346
17347// MarshalJSON is the custom marshaler for SitePatchResource.
17348func (spr SitePatchResource) MarshalJSON() ([]byte, error) {
17349	objectMap := make(map[string]interface{})
17350	if spr.SitePatchResourceProperties != nil {
17351		objectMap["properties"] = spr.SitePatchResourceProperties
17352	}
17353	if spr.Kind != nil {
17354		objectMap["kind"] = spr.Kind
17355	}
17356	return json.Marshal(objectMap)
17357}
17358
17359// UnmarshalJSON is the custom unmarshaler for SitePatchResource struct.
17360func (spr *SitePatchResource) UnmarshalJSON(body []byte) error {
17361	var m map[string]*json.RawMessage
17362	err := json.Unmarshal(body, &m)
17363	if err != nil {
17364		return err
17365	}
17366	for k, v := range m {
17367		switch k {
17368		case "properties":
17369			if v != nil {
17370				var sitePatchResourceProperties SitePatchResourceProperties
17371				err = json.Unmarshal(*v, &sitePatchResourceProperties)
17372				if err != nil {
17373					return err
17374				}
17375				spr.SitePatchResourceProperties = &sitePatchResourceProperties
17376			}
17377		case "id":
17378			if v != nil {
17379				var ID string
17380				err = json.Unmarshal(*v, &ID)
17381				if err != nil {
17382					return err
17383				}
17384				spr.ID = &ID
17385			}
17386		case "name":
17387			if v != nil {
17388				var name string
17389				err = json.Unmarshal(*v, &name)
17390				if err != nil {
17391					return err
17392				}
17393				spr.Name = &name
17394			}
17395		case "kind":
17396			if v != nil {
17397				var kind string
17398				err = json.Unmarshal(*v, &kind)
17399				if err != nil {
17400					return err
17401				}
17402				spr.Kind = &kind
17403			}
17404		case "type":
17405			if v != nil {
17406				var typeVar string
17407				err = json.Unmarshal(*v, &typeVar)
17408				if err != nil {
17409					return err
17410				}
17411				spr.Type = &typeVar
17412			}
17413		}
17414	}
17415
17416	return nil
17417}
17418
17419// SitePatchResourceProperties sitePatchResource resource specific properties
17420type SitePatchResourceProperties struct {
17421	// State - READ-ONLY; Current state of the app.
17422	State *string `json:"state,omitempty"`
17423	// HostNames - READ-ONLY; Hostnames associated with the app.
17424	HostNames *[]string `json:"hostNames,omitempty"`
17425	// RepositorySiteName - READ-ONLY; Name of the repository site.
17426	RepositorySiteName *string `json:"repositorySiteName,omitempty"`
17427	// UsageState - READ-ONLY; State indicating whether the app has exceeded its quota usage. Read-only. Possible values include: 'UsageStateNormal', 'UsageStateExceeded'
17428	UsageState UsageState `json:"usageState,omitempty"`
17429	// Enabled - <code>true</code> if the app is enabled; otherwise, <code>false</code>. Setting this value to false disables the app (takes the app offline).
17430	Enabled *bool `json:"enabled,omitempty"`
17431	// EnabledHostNames - READ-ONLY; Enabled hostnames for the app.Hostnames need to be assigned (see HostNames) AND enabled. Otherwise,
17432	// the app is not served on those hostnames.
17433	EnabledHostNames *[]string `json:"enabledHostNames,omitempty"`
17434	// AvailabilityState - READ-ONLY; Management information availability state for the app. Possible values include: 'Normal', 'Limited', 'DisasterRecoveryMode'
17435	AvailabilityState SiteAvailabilityState `json:"availabilityState,omitempty"`
17436	// HostNameSslStates - Hostname SSL states are used to manage the SSL bindings for app's hostnames.
17437	HostNameSslStates *[]HostNameSslState `json:"hostNameSslStates,omitempty"`
17438	// ServerFarmID - Resource ID of the associated App Service plan, formatted as: "/subscriptions/{subscriptionID}/resourceGroups/{groupName}/providers/Microsoft.Web/serverfarms/{appServicePlanName}".
17439	ServerFarmID *string `json:"serverFarmId,omitempty"`
17440	// Reserved - <code>true</code> if reserved; otherwise, <code>false</code>.
17441	Reserved *bool `json:"reserved,omitempty"`
17442	// LastModifiedTimeUtc - READ-ONLY; Last time the app was modified, in UTC. Read-only.
17443	LastModifiedTimeUtc *date.Time `json:"lastModifiedTimeUtc,omitempty"`
17444	// SiteConfig - Configuration of the app.
17445	SiteConfig *SiteConfig `json:"siteConfig,omitempty"`
17446	// TrafficManagerHostNames - READ-ONLY; Azure Traffic Manager hostnames associated with the app. Read-only.
17447	TrafficManagerHostNames *[]string `json:"trafficManagerHostNames,omitempty"`
17448	// ScmSiteAlsoStopped - <code>true</code> to stop SCM (KUDU) site when the app is stopped; otherwise, <code>false</code>. The default is <code>false</code>.
17449	ScmSiteAlsoStopped *bool `json:"scmSiteAlsoStopped,omitempty"`
17450	// TargetSwapSlot - READ-ONLY; Specifies which deployment slot this app will swap into. Read-only.
17451	TargetSwapSlot *string `json:"targetSwapSlot,omitempty"`
17452	// HostingEnvironmentProfile - App Service Environment to use for the app.
17453	HostingEnvironmentProfile *HostingEnvironmentProfile `json:"hostingEnvironmentProfile,omitempty"`
17454	// ClientAffinityEnabled - <code>true</code> to enable client affinity; <code>false</code> to stop sending session affinity cookies, which route client requests in the same session to the same instance. Default is <code>true</code>.
17455	ClientAffinityEnabled *bool `json:"clientAffinityEnabled,omitempty"`
17456	// ClientCertEnabled - <code>true</code> to enable client certificate authentication (TLS mutual authentication); otherwise, <code>false</code>. Default is <code>false</code>.
17457	ClientCertEnabled *bool `json:"clientCertEnabled,omitempty"`
17458	// HostNamesDisabled - <code>true</code> to disable the public hostnames of the app; otherwise, <code>false</code>.
17459	//  If <code>true</code>, the app is only accessible via API management process.
17460	HostNamesDisabled *bool `json:"hostNamesDisabled,omitempty"`
17461	// OutboundIPAddresses - READ-ONLY; List of IP addresses that the app uses for outbound connections (e.g. database access). Includes VIPs from tenants that site can be hosted with current settings. Read-only.
17462	OutboundIPAddresses *string `json:"outboundIpAddresses,omitempty"`
17463	// PossibleOutboundIPAddresses - READ-ONLY; List of IP addresses that the app uses for outbound connections (e.g. database access). Includes VIPs from all tenants. Read-only.
17464	PossibleOutboundIPAddresses *string `json:"possibleOutboundIpAddresses,omitempty"`
17465	// ContainerSize - Size of the function container.
17466	ContainerSize *int32 `json:"containerSize,omitempty"`
17467	// DailyMemoryTimeQuota - Maximum allowed daily memory-time quota (applicable on dynamic apps only).
17468	DailyMemoryTimeQuota *int32 `json:"dailyMemoryTimeQuota,omitempty"`
17469	// SuspendedTill - READ-ONLY; App suspended till in case memory-time quota is exceeded.
17470	SuspendedTill *date.Time `json:"suspendedTill,omitempty"`
17471	// MaxNumberOfWorkers - READ-ONLY; Maximum number of workers.
17472	// This only applies to Functions container.
17473	MaxNumberOfWorkers *int32 `json:"maxNumberOfWorkers,omitempty"`
17474	// CloningInfo - If specified during app creation, the app is cloned from a source app.
17475	CloningInfo *CloningInfo `json:"cloningInfo,omitempty"`
17476	// SnapshotInfo - If specified during app creation, the app is created from a previous snapshot.
17477	SnapshotInfo *SnapshotRecoveryRequest `json:"snapshotInfo,omitempty"`
17478	// ResourceGroup - READ-ONLY; Name of the resource group the app belongs to. Read-only.
17479	ResourceGroup *string `json:"resourceGroup,omitempty"`
17480	// IsDefaultContainer - READ-ONLY; <code>true</code> if the app is a default container; otherwise, <code>false</code>.
17481	IsDefaultContainer *bool `json:"isDefaultContainer,omitempty"`
17482	// DefaultHostName - READ-ONLY; Default hostname of the app. Read-only.
17483	DefaultHostName *string `json:"defaultHostName,omitempty"`
17484	// SlotSwapStatus - READ-ONLY; Status of the last deployment slot swap operation.
17485	SlotSwapStatus *SlotSwapStatus `json:"slotSwapStatus,omitempty"`
17486	// HTTPSOnly - HttpsOnly: configures a web site to accept only https requests. Issues redirect for
17487	// http requests
17488	HTTPSOnly *bool `json:"httpsOnly,omitempty"`
17489}
17490
17491// SitePhpErrorLogFlag used for getting PHP error logging flag.
17492type SitePhpErrorLogFlag struct {
17493	autorest.Response `json:"-"`
17494	// SitePhpErrorLogFlagProperties - SitePhpErrorLogFlag resource specific properties
17495	*SitePhpErrorLogFlagProperties `json:"properties,omitempty"`
17496	// ID - READ-ONLY; Resource Id.
17497	ID *string `json:"id,omitempty"`
17498	// Name - READ-ONLY; Resource Name.
17499	Name *string `json:"name,omitempty"`
17500	// Kind - Kind of resource.
17501	Kind *string `json:"kind,omitempty"`
17502	// Type - READ-ONLY; Resource type.
17503	Type *string `json:"type,omitempty"`
17504}
17505
17506// MarshalJSON is the custom marshaler for SitePhpErrorLogFlag.
17507func (spelf SitePhpErrorLogFlag) MarshalJSON() ([]byte, error) {
17508	objectMap := make(map[string]interface{})
17509	if spelf.SitePhpErrorLogFlagProperties != nil {
17510		objectMap["properties"] = spelf.SitePhpErrorLogFlagProperties
17511	}
17512	if spelf.Kind != nil {
17513		objectMap["kind"] = spelf.Kind
17514	}
17515	return json.Marshal(objectMap)
17516}
17517
17518// UnmarshalJSON is the custom unmarshaler for SitePhpErrorLogFlag struct.
17519func (spelf *SitePhpErrorLogFlag) UnmarshalJSON(body []byte) error {
17520	var m map[string]*json.RawMessage
17521	err := json.Unmarshal(body, &m)
17522	if err != nil {
17523		return err
17524	}
17525	for k, v := range m {
17526		switch k {
17527		case "properties":
17528			if v != nil {
17529				var sitePhpErrorLogFlagProperties SitePhpErrorLogFlagProperties
17530				err = json.Unmarshal(*v, &sitePhpErrorLogFlagProperties)
17531				if err != nil {
17532					return err
17533				}
17534				spelf.SitePhpErrorLogFlagProperties = &sitePhpErrorLogFlagProperties
17535			}
17536		case "id":
17537			if v != nil {
17538				var ID string
17539				err = json.Unmarshal(*v, &ID)
17540				if err != nil {
17541					return err
17542				}
17543				spelf.ID = &ID
17544			}
17545		case "name":
17546			if v != nil {
17547				var name string
17548				err = json.Unmarshal(*v, &name)
17549				if err != nil {
17550					return err
17551				}
17552				spelf.Name = &name
17553			}
17554		case "kind":
17555			if v != nil {
17556				var kind string
17557				err = json.Unmarshal(*v, &kind)
17558				if err != nil {
17559					return err
17560				}
17561				spelf.Kind = &kind
17562			}
17563		case "type":
17564			if v != nil {
17565				var typeVar string
17566				err = json.Unmarshal(*v, &typeVar)
17567				if err != nil {
17568					return err
17569				}
17570				spelf.Type = &typeVar
17571			}
17572		}
17573	}
17574
17575	return nil
17576}
17577
17578// SitePhpErrorLogFlagProperties sitePhpErrorLogFlag resource specific properties
17579type SitePhpErrorLogFlagProperties struct {
17580	// LocalLogErrors - Local log_errors setting.
17581	LocalLogErrors *string `json:"localLogErrors,omitempty"`
17582	// MasterLogErrors - Master log_errors setting.
17583	MasterLogErrors *string `json:"masterLogErrors,omitempty"`
17584	// LocalLogErrorsMaxLength - Local log_errors_max_len setting.
17585	LocalLogErrorsMaxLength *string `json:"localLogErrorsMaxLength,omitempty"`
17586	// MasterLogErrorsMaxLength - Master log_errors_max_len setting.
17587	MasterLogErrorsMaxLength *string `json:"masterLogErrorsMaxLength,omitempty"`
17588}
17589
17590// SiteProperties site resource specific properties
17591type SiteProperties struct {
17592	// State - READ-ONLY; Current state of the app.
17593	State *string `json:"state,omitempty"`
17594	// HostNames - READ-ONLY; Hostnames associated with the app.
17595	HostNames *[]string `json:"hostNames,omitempty"`
17596	// RepositorySiteName - READ-ONLY; Name of the repository site.
17597	RepositorySiteName *string `json:"repositorySiteName,omitempty"`
17598	// UsageState - READ-ONLY; State indicating whether the app has exceeded its quota usage. Read-only. Possible values include: 'UsageStateNormal', 'UsageStateExceeded'
17599	UsageState UsageState `json:"usageState,omitempty"`
17600	// Enabled - <code>true</code> if the app is enabled; otherwise, <code>false</code>. Setting this value to false disables the app (takes the app offline).
17601	Enabled *bool `json:"enabled,omitempty"`
17602	// EnabledHostNames - READ-ONLY; Enabled hostnames for the app.Hostnames need to be assigned (see HostNames) AND enabled. Otherwise,
17603	// the app is not served on those hostnames.
17604	EnabledHostNames *[]string `json:"enabledHostNames,omitempty"`
17605	// AvailabilityState - READ-ONLY; Management information availability state for the app. Possible values include: 'Normal', 'Limited', 'DisasterRecoveryMode'
17606	AvailabilityState SiteAvailabilityState `json:"availabilityState,omitempty"`
17607	// HostNameSslStates - Hostname SSL states are used to manage the SSL bindings for app's hostnames.
17608	HostNameSslStates *[]HostNameSslState `json:"hostNameSslStates,omitempty"`
17609	// ServerFarmID - Resource ID of the associated App Service plan, formatted as: "/subscriptions/{subscriptionID}/resourceGroups/{groupName}/providers/Microsoft.Web/serverfarms/{appServicePlanName}".
17610	ServerFarmID *string `json:"serverFarmId,omitempty"`
17611	// Reserved - <code>true</code> if reserved; otherwise, <code>false</code>.
17612	Reserved *bool `json:"reserved,omitempty"`
17613	// LastModifiedTimeUtc - READ-ONLY; Last time the app was modified, in UTC. Read-only.
17614	LastModifiedTimeUtc *date.Time `json:"lastModifiedTimeUtc,omitempty"`
17615	// SiteConfig - Configuration of the app.
17616	SiteConfig *SiteConfig `json:"siteConfig,omitempty"`
17617	// TrafficManagerHostNames - READ-ONLY; Azure Traffic Manager hostnames associated with the app. Read-only.
17618	TrafficManagerHostNames *[]string `json:"trafficManagerHostNames,omitempty"`
17619	// ScmSiteAlsoStopped - <code>true</code> to stop SCM (KUDU) site when the app is stopped; otherwise, <code>false</code>. The default is <code>false</code>.
17620	ScmSiteAlsoStopped *bool `json:"scmSiteAlsoStopped,omitempty"`
17621	// TargetSwapSlot - READ-ONLY; Specifies which deployment slot this app will swap into. Read-only.
17622	TargetSwapSlot *string `json:"targetSwapSlot,omitempty"`
17623	// HostingEnvironmentProfile - App Service Environment to use for the app.
17624	HostingEnvironmentProfile *HostingEnvironmentProfile `json:"hostingEnvironmentProfile,omitempty"`
17625	// ClientAffinityEnabled - <code>true</code> to enable client affinity; <code>false</code> to stop sending session affinity cookies, which route client requests in the same session to the same instance. Default is <code>true</code>.
17626	ClientAffinityEnabled *bool `json:"clientAffinityEnabled,omitempty"`
17627	// ClientCertEnabled - <code>true</code> to enable client certificate authentication (TLS mutual authentication); otherwise, <code>false</code>. Default is <code>false</code>.
17628	ClientCertEnabled *bool `json:"clientCertEnabled,omitempty"`
17629	// HostNamesDisabled - <code>true</code> to disable the public hostnames of the app; otherwise, <code>false</code>.
17630	//  If <code>true</code>, the app is only accessible via API management process.
17631	HostNamesDisabled *bool `json:"hostNamesDisabled,omitempty"`
17632	// OutboundIPAddresses - READ-ONLY; List of IP addresses that the app uses for outbound connections (e.g. database access). Includes VIPs from tenants that site can be hosted with current settings. Read-only.
17633	OutboundIPAddresses *string `json:"outboundIpAddresses,omitempty"`
17634	// PossibleOutboundIPAddresses - READ-ONLY; List of IP addresses that the app uses for outbound connections (e.g. database access). Includes VIPs from all tenants. Read-only.
17635	PossibleOutboundIPAddresses *string `json:"possibleOutboundIpAddresses,omitempty"`
17636	// ContainerSize - Size of the function container.
17637	ContainerSize *int32 `json:"containerSize,omitempty"`
17638	// DailyMemoryTimeQuota - Maximum allowed daily memory-time quota (applicable on dynamic apps only).
17639	DailyMemoryTimeQuota *int32 `json:"dailyMemoryTimeQuota,omitempty"`
17640	// SuspendedTill - READ-ONLY; App suspended till in case memory-time quota is exceeded.
17641	SuspendedTill *date.Time `json:"suspendedTill,omitempty"`
17642	// MaxNumberOfWorkers - READ-ONLY; Maximum number of workers.
17643	// This only applies to Functions container.
17644	MaxNumberOfWorkers *int32 `json:"maxNumberOfWorkers,omitempty"`
17645	// CloningInfo - If specified during app creation, the app is cloned from a source app.
17646	CloningInfo *CloningInfo `json:"cloningInfo,omitempty"`
17647	// SnapshotInfo - If specified during app creation, the app is created from a previous snapshot.
17648	SnapshotInfo *SnapshotRecoveryRequest `json:"snapshotInfo,omitempty"`
17649	// ResourceGroup - READ-ONLY; Name of the resource group the app belongs to. Read-only.
17650	ResourceGroup *string `json:"resourceGroup,omitempty"`
17651	// IsDefaultContainer - READ-ONLY; <code>true</code> if the app is a default container; otherwise, <code>false</code>.
17652	IsDefaultContainer *bool `json:"isDefaultContainer,omitempty"`
17653	// DefaultHostName - READ-ONLY; Default hostname of the app. Read-only.
17654	DefaultHostName *string `json:"defaultHostName,omitempty"`
17655	// SlotSwapStatus - READ-ONLY; Status of the last deployment slot swap operation.
17656	SlotSwapStatus *SlotSwapStatus `json:"slotSwapStatus,omitempty"`
17657	// HTTPSOnly - HttpsOnly: configures a web site to accept only https requests. Issues redirect for
17658	// http requests
17659	HTTPSOnly *bool `json:"httpsOnly,omitempty"`
17660}
17661
17662// SiteSeal site seal
17663type SiteSeal struct {
17664	autorest.Response `json:"-"`
17665	// HTML - HTML snippet
17666	HTML *string `json:"html,omitempty"`
17667}
17668
17669// SiteSealRequest site seal request.
17670type SiteSealRequest struct {
17671	// LightTheme - If <code>true</code> use the light color theme for site seal; otherwise, use the default color theme.
17672	LightTheme *bool `json:"lightTheme,omitempty"`
17673	// Locale - Locale of site seal.
17674	Locale *string `json:"locale,omitempty"`
17675}
17676
17677// SiteSourceControl source control configuration for an app.
17678type SiteSourceControl struct {
17679	autorest.Response `json:"-"`
17680	// SiteSourceControlProperties - SiteSourceControl resource specific properties
17681	*SiteSourceControlProperties `json:"properties,omitempty"`
17682	// ID - READ-ONLY; Resource Id.
17683	ID *string `json:"id,omitempty"`
17684	// Name - READ-ONLY; Resource Name.
17685	Name *string `json:"name,omitempty"`
17686	// Kind - Kind of resource.
17687	Kind *string `json:"kind,omitempty"`
17688	// Type - READ-ONLY; Resource type.
17689	Type *string `json:"type,omitempty"`
17690}
17691
17692// MarshalJSON is the custom marshaler for SiteSourceControl.
17693func (ssc SiteSourceControl) MarshalJSON() ([]byte, error) {
17694	objectMap := make(map[string]interface{})
17695	if ssc.SiteSourceControlProperties != nil {
17696		objectMap["properties"] = ssc.SiteSourceControlProperties
17697	}
17698	if ssc.Kind != nil {
17699		objectMap["kind"] = ssc.Kind
17700	}
17701	return json.Marshal(objectMap)
17702}
17703
17704// UnmarshalJSON is the custom unmarshaler for SiteSourceControl struct.
17705func (ssc *SiteSourceControl) UnmarshalJSON(body []byte) error {
17706	var m map[string]*json.RawMessage
17707	err := json.Unmarshal(body, &m)
17708	if err != nil {
17709		return err
17710	}
17711	for k, v := range m {
17712		switch k {
17713		case "properties":
17714			if v != nil {
17715				var siteSourceControlProperties SiteSourceControlProperties
17716				err = json.Unmarshal(*v, &siteSourceControlProperties)
17717				if err != nil {
17718					return err
17719				}
17720				ssc.SiteSourceControlProperties = &siteSourceControlProperties
17721			}
17722		case "id":
17723			if v != nil {
17724				var ID string
17725				err = json.Unmarshal(*v, &ID)
17726				if err != nil {
17727					return err
17728				}
17729				ssc.ID = &ID
17730			}
17731		case "name":
17732			if v != nil {
17733				var name string
17734				err = json.Unmarshal(*v, &name)
17735				if err != nil {
17736					return err
17737				}
17738				ssc.Name = &name
17739			}
17740		case "kind":
17741			if v != nil {
17742				var kind string
17743				err = json.Unmarshal(*v, &kind)
17744				if err != nil {
17745					return err
17746				}
17747				ssc.Kind = &kind
17748			}
17749		case "type":
17750			if v != nil {
17751				var typeVar string
17752				err = json.Unmarshal(*v, &typeVar)
17753				if err != nil {
17754					return err
17755				}
17756				ssc.Type = &typeVar
17757			}
17758		}
17759	}
17760
17761	return nil
17762}
17763
17764// SiteSourceControlProperties siteSourceControl resource specific properties
17765type SiteSourceControlProperties struct {
17766	// RepoURL - Repository or source control URL.
17767	RepoURL *string `json:"repoUrl,omitempty"`
17768	// Branch - Name of branch to use for deployment.
17769	Branch *string `json:"branch,omitempty"`
17770	// IsManualIntegration - <code>true</code> to limit to manual integration; <code>false</code> to enable continuous integration (which configures webhooks into online repos like GitHub).
17771	IsManualIntegration *bool `json:"isManualIntegration,omitempty"`
17772	// DeploymentRollbackEnabled - <code>true</code> to enable deployment rollback; otherwise, <code>false</code>.
17773	DeploymentRollbackEnabled *bool `json:"deploymentRollbackEnabled,omitempty"`
17774	// IsMercurial - <code>true</code> for a Mercurial repository; <code>false</code> for a Git repository.
17775	IsMercurial *bool `json:"isMercurial,omitempty"`
17776}
17777
17778// SkuCapacity description of the App Service plan scale options.
17779type SkuCapacity struct {
17780	// Minimum - Minimum number of workers for this App Service plan SKU.
17781	Minimum *int32 `json:"minimum,omitempty"`
17782	// Maximum - Maximum number of workers for this App Service plan SKU.
17783	Maximum *int32 `json:"maximum,omitempty"`
17784	// Default - Default number of workers for this App Service plan SKU.
17785	Default *int32 `json:"default,omitempty"`
17786	// ScaleType - Available scale configurations for an App Service plan.
17787	ScaleType *string `json:"scaleType,omitempty"`
17788}
17789
17790// SkuDescription description of a SKU for a scalable resource.
17791type SkuDescription struct {
17792	// Name - Name of the resource SKU.
17793	Name *string `json:"name,omitempty"`
17794	// Tier - Service tier of the resource SKU.
17795	Tier *string `json:"tier,omitempty"`
17796	// Size - Size specifier of the resource SKU.
17797	Size *string `json:"size,omitempty"`
17798	// Family - Family code of the resource SKU.
17799	Family *string `json:"family,omitempty"`
17800	// Capacity - Current number of instances assigned to the resource.
17801	Capacity *int32 `json:"capacity,omitempty"`
17802	// SkuCapacity - Min, max, and default scale values of the SKU.
17803	SkuCapacity *SkuCapacity `json:"skuCapacity,omitempty"`
17804	// Locations - Locations of the SKU.
17805	Locations *[]string `json:"locations,omitempty"`
17806	// Capabilities - Capabilities of the SKU, e.g., is traffic manager enabled?
17807	Capabilities *[]Capability `json:"capabilities,omitempty"`
17808}
17809
17810// SkuInfo SKU discovery information.
17811type SkuInfo struct {
17812	// ResourceType - Resource type that this SKU applies to.
17813	ResourceType *string `json:"resourceType,omitempty"`
17814	// Sku - Name and tier of the SKU.
17815	Sku *SkuDescription `json:"sku,omitempty"`
17816	// Capacity - Min, max, and default scale values of the SKU.
17817	Capacity *SkuCapacity `json:"capacity,omitempty"`
17818}
17819
17820// SkuInfoCollection collection of SKU information.
17821type SkuInfoCollection struct {
17822	autorest.Response `json:"-"`
17823	// Value - Collection of resources.
17824	Value *[]SkuInfo `json:"value,omitempty"`
17825	// NextLink - READ-ONLY; Link to next page of resources.
17826	NextLink *string `json:"nextLink,omitempty"`
17827}
17828
17829// SkuInfoCollectionIterator provides access to a complete listing of SkuInfo values.
17830type SkuInfoCollectionIterator struct {
17831	i    int
17832	page SkuInfoCollectionPage
17833}
17834
17835// NextWithContext advances to the next value.  If there was an error making
17836// the request the iterator does not advance and the error is returned.
17837func (iter *SkuInfoCollectionIterator) NextWithContext(ctx context.Context) (err error) {
17838	if tracing.IsEnabled() {
17839		ctx = tracing.StartSpan(ctx, fqdn+"/SkuInfoCollectionIterator.NextWithContext")
17840		defer func() {
17841			sc := -1
17842			if iter.Response().Response.Response != nil {
17843				sc = iter.Response().Response.Response.StatusCode
17844			}
17845			tracing.EndSpan(ctx, sc, err)
17846		}()
17847	}
17848	iter.i++
17849	if iter.i < len(iter.page.Values()) {
17850		return nil
17851	}
17852	err = iter.page.NextWithContext(ctx)
17853	if err != nil {
17854		iter.i--
17855		return err
17856	}
17857	iter.i = 0
17858	return nil
17859}
17860
17861// Next advances to the next value.  If there was an error making
17862// the request the iterator does not advance and the error is returned.
17863// Deprecated: Use NextWithContext() instead.
17864func (iter *SkuInfoCollectionIterator) Next() error {
17865	return iter.NextWithContext(context.Background())
17866}
17867
17868// NotDone returns true if the enumeration should be started or is not yet complete.
17869func (iter SkuInfoCollectionIterator) NotDone() bool {
17870	return iter.page.NotDone() && iter.i < len(iter.page.Values())
17871}
17872
17873// Response returns the raw server response from the last page request.
17874func (iter SkuInfoCollectionIterator) Response() SkuInfoCollection {
17875	return iter.page.Response()
17876}
17877
17878// Value returns the current value or a zero-initialized value if the
17879// iterator has advanced beyond the end of the collection.
17880func (iter SkuInfoCollectionIterator) Value() SkuInfo {
17881	if !iter.page.NotDone() {
17882		return SkuInfo{}
17883	}
17884	return iter.page.Values()[iter.i]
17885}
17886
17887// Creates a new instance of the SkuInfoCollectionIterator type.
17888func NewSkuInfoCollectionIterator(page SkuInfoCollectionPage) SkuInfoCollectionIterator {
17889	return SkuInfoCollectionIterator{page: page}
17890}
17891
17892// IsEmpty returns true if the ListResult contains no values.
17893func (sic SkuInfoCollection) IsEmpty() bool {
17894	return sic.Value == nil || len(*sic.Value) == 0
17895}
17896
17897// skuInfoCollectionPreparer prepares a request to retrieve the next set of results.
17898// It returns nil if no more results exist.
17899func (sic SkuInfoCollection) skuInfoCollectionPreparer(ctx context.Context) (*http.Request, error) {
17900	if sic.NextLink == nil || len(to.String(sic.NextLink)) < 1 {
17901		return nil, nil
17902	}
17903	return autorest.Prepare((&http.Request{}).WithContext(ctx),
17904		autorest.AsJSON(),
17905		autorest.AsGet(),
17906		autorest.WithBaseURL(to.String(sic.NextLink)))
17907}
17908
17909// SkuInfoCollectionPage contains a page of SkuInfo values.
17910type SkuInfoCollectionPage struct {
17911	fn  func(context.Context, SkuInfoCollection) (SkuInfoCollection, error)
17912	sic SkuInfoCollection
17913}
17914
17915// NextWithContext advances to the next page of values.  If there was an error making
17916// the request the page does not advance and the error is returned.
17917func (page *SkuInfoCollectionPage) NextWithContext(ctx context.Context) (err error) {
17918	if tracing.IsEnabled() {
17919		ctx = tracing.StartSpan(ctx, fqdn+"/SkuInfoCollectionPage.NextWithContext")
17920		defer func() {
17921			sc := -1
17922			if page.Response().Response.Response != nil {
17923				sc = page.Response().Response.Response.StatusCode
17924			}
17925			tracing.EndSpan(ctx, sc, err)
17926		}()
17927	}
17928	next, err := page.fn(ctx, page.sic)
17929	if err != nil {
17930		return err
17931	}
17932	page.sic = next
17933	return nil
17934}
17935
17936// Next advances to the next page of values.  If there was an error making
17937// the request the page does not advance and the error is returned.
17938// Deprecated: Use NextWithContext() instead.
17939func (page *SkuInfoCollectionPage) Next() error {
17940	return page.NextWithContext(context.Background())
17941}
17942
17943// NotDone returns true if the page enumeration should be started or is not yet complete.
17944func (page SkuInfoCollectionPage) NotDone() bool {
17945	return !page.sic.IsEmpty()
17946}
17947
17948// Response returns the raw server response from the last page request.
17949func (page SkuInfoCollectionPage) Response() SkuInfoCollection {
17950	return page.sic
17951}
17952
17953// Values returns the slice of values for the current page or nil if there are no values.
17954func (page SkuInfoCollectionPage) Values() []SkuInfo {
17955	if page.sic.IsEmpty() {
17956		return nil
17957	}
17958	return *page.sic.Value
17959}
17960
17961// Creates a new instance of the SkuInfoCollectionPage type.
17962func NewSkuInfoCollectionPage(getNextPage func(context.Context, SkuInfoCollection) (SkuInfoCollection, error)) SkuInfoCollectionPage {
17963	return SkuInfoCollectionPage{fn: getNextPage}
17964}
17965
17966// SkuInfos collection of SKU information.
17967type SkuInfos struct {
17968	autorest.Response `json:"-"`
17969	// ResourceType - Resource type that this SKU applies to.
17970	ResourceType *string `json:"resourceType,omitempty"`
17971	// Skus - List of SKUs the subscription is able to use.
17972	Skus *[]GlobalCsmSkuDescription `json:"skus,omitempty"`
17973}
17974
17975// SlotConfigNames names for connection strings and application settings to be marked as sticky to the
17976// deployment slot and not moved during a swap operation.
17977// This is valid for all deployment slots in an app.
17978type SlotConfigNames struct {
17979	// ConnectionStringNames - List of connection string names.
17980	ConnectionStringNames *[]string `json:"connectionStringNames,omitempty"`
17981	// AppSettingNames - List of application settings names.
17982	AppSettingNames *[]string `json:"appSettingNames,omitempty"`
17983}
17984
17985// SlotConfigNamesResource slot Config names azure resource.
17986type SlotConfigNamesResource struct {
17987	autorest.Response `json:"-"`
17988	// SlotConfigNames - Core resource properties
17989	*SlotConfigNames `json:"properties,omitempty"`
17990	// ID - READ-ONLY; Resource Id.
17991	ID *string `json:"id,omitempty"`
17992	// Name - READ-ONLY; Resource Name.
17993	Name *string `json:"name,omitempty"`
17994	// Kind - Kind of resource.
17995	Kind *string `json:"kind,omitempty"`
17996	// Type - READ-ONLY; Resource type.
17997	Type *string `json:"type,omitempty"`
17998}
17999
18000// MarshalJSON is the custom marshaler for SlotConfigNamesResource.
18001func (scnr SlotConfigNamesResource) MarshalJSON() ([]byte, error) {
18002	objectMap := make(map[string]interface{})
18003	if scnr.SlotConfigNames != nil {
18004		objectMap["properties"] = scnr.SlotConfigNames
18005	}
18006	if scnr.Kind != nil {
18007		objectMap["kind"] = scnr.Kind
18008	}
18009	return json.Marshal(objectMap)
18010}
18011
18012// UnmarshalJSON is the custom unmarshaler for SlotConfigNamesResource struct.
18013func (scnr *SlotConfigNamesResource) UnmarshalJSON(body []byte) error {
18014	var m map[string]*json.RawMessage
18015	err := json.Unmarshal(body, &m)
18016	if err != nil {
18017		return err
18018	}
18019	for k, v := range m {
18020		switch k {
18021		case "properties":
18022			if v != nil {
18023				var slotConfigNames SlotConfigNames
18024				err = json.Unmarshal(*v, &slotConfigNames)
18025				if err != nil {
18026					return err
18027				}
18028				scnr.SlotConfigNames = &slotConfigNames
18029			}
18030		case "id":
18031			if v != nil {
18032				var ID string
18033				err = json.Unmarshal(*v, &ID)
18034				if err != nil {
18035					return err
18036				}
18037				scnr.ID = &ID
18038			}
18039		case "name":
18040			if v != nil {
18041				var name string
18042				err = json.Unmarshal(*v, &name)
18043				if err != nil {
18044					return err
18045				}
18046				scnr.Name = &name
18047			}
18048		case "kind":
18049			if v != nil {
18050				var kind string
18051				err = json.Unmarshal(*v, &kind)
18052				if err != nil {
18053					return err
18054				}
18055				scnr.Kind = &kind
18056			}
18057		case "type":
18058			if v != nil {
18059				var typeVar string
18060				err = json.Unmarshal(*v, &typeVar)
18061				if err != nil {
18062					return err
18063				}
18064				scnr.Type = &typeVar
18065			}
18066		}
18067	}
18068
18069	return nil
18070}
18071
18072// SlotDifference a setting difference between two deployment slots of an app.
18073type SlotDifference struct {
18074	// SlotDifferenceProperties - SlotDifference resource specific properties
18075	*SlotDifferenceProperties `json:"properties,omitempty"`
18076	// ID - READ-ONLY; Resource Id.
18077	ID *string `json:"id,omitempty"`
18078	// Name - READ-ONLY; Resource Name.
18079	Name *string `json:"name,omitempty"`
18080	// Kind - Kind of resource.
18081	Kind *string `json:"kind,omitempty"`
18082	// Type - READ-ONLY; Resource type.
18083	Type *string `json:"type,omitempty"`
18084}
18085
18086// MarshalJSON is the custom marshaler for SlotDifference.
18087func (sd SlotDifference) MarshalJSON() ([]byte, error) {
18088	objectMap := make(map[string]interface{})
18089	if sd.SlotDifferenceProperties != nil {
18090		objectMap["properties"] = sd.SlotDifferenceProperties
18091	}
18092	if sd.Kind != nil {
18093		objectMap["kind"] = sd.Kind
18094	}
18095	return json.Marshal(objectMap)
18096}
18097
18098// UnmarshalJSON is the custom unmarshaler for SlotDifference struct.
18099func (sd *SlotDifference) UnmarshalJSON(body []byte) error {
18100	var m map[string]*json.RawMessage
18101	err := json.Unmarshal(body, &m)
18102	if err != nil {
18103		return err
18104	}
18105	for k, v := range m {
18106		switch k {
18107		case "properties":
18108			if v != nil {
18109				var slotDifferenceProperties SlotDifferenceProperties
18110				err = json.Unmarshal(*v, &slotDifferenceProperties)
18111				if err != nil {
18112					return err
18113				}
18114				sd.SlotDifferenceProperties = &slotDifferenceProperties
18115			}
18116		case "id":
18117			if v != nil {
18118				var ID string
18119				err = json.Unmarshal(*v, &ID)
18120				if err != nil {
18121					return err
18122				}
18123				sd.ID = &ID
18124			}
18125		case "name":
18126			if v != nil {
18127				var name string
18128				err = json.Unmarshal(*v, &name)
18129				if err != nil {
18130					return err
18131				}
18132				sd.Name = &name
18133			}
18134		case "kind":
18135			if v != nil {
18136				var kind string
18137				err = json.Unmarshal(*v, &kind)
18138				if err != nil {
18139					return err
18140				}
18141				sd.Kind = &kind
18142			}
18143		case "type":
18144			if v != nil {
18145				var typeVar string
18146				err = json.Unmarshal(*v, &typeVar)
18147				if err != nil {
18148					return err
18149				}
18150				sd.Type = &typeVar
18151			}
18152		}
18153	}
18154
18155	return nil
18156}
18157
18158// SlotDifferenceCollection collection of slot differences.
18159type SlotDifferenceCollection struct {
18160	autorest.Response `json:"-"`
18161	// Value - Collection of resources.
18162	Value *[]SlotDifference `json:"value,omitempty"`
18163	// NextLink - READ-ONLY; Link to next page of resources.
18164	NextLink *string `json:"nextLink,omitempty"`
18165}
18166
18167// SlotDifferenceCollectionIterator provides access to a complete listing of SlotDifference values.
18168type SlotDifferenceCollectionIterator struct {
18169	i    int
18170	page SlotDifferenceCollectionPage
18171}
18172
18173// NextWithContext advances to the next value.  If there was an error making
18174// the request the iterator does not advance and the error is returned.
18175func (iter *SlotDifferenceCollectionIterator) NextWithContext(ctx context.Context) (err error) {
18176	if tracing.IsEnabled() {
18177		ctx = tracing.StartSpan(ctx, fqdn+"/SlotDifferenceCollectionIterator.NextWithContext")
18178		defer func() {
18179			sc := -1
18180			if iter.Response().Response.Response != nil {
18181				sc = iter.Response().Response.Response.StatusCode
18182			}
18183			tracing.EndSpan(ctx, sc, err)
18184		}()
18185	}
18186	iter.i++
18187	if iter.i < len(iter.page.Values()) {
18188		return nil
18189	}
18190	err = iter.page.NextWithContext(ctx)
18191	if err != nil {
18192		iter.i--
18193		return err
18194	}
18195	iter.i = 0
18196	return nil
18197}
18198
18199// Next advances to the next value.  If there was an error making
18200// the request the iterator does not advance and the error is returned.
18201// Deprecated: Use NextWithContext() instead.
18202func (iter *SlotDifferenceCollectionIterator) Next() error {
18203	return iter.NextWithContext(context.Background())
18204}
18205
18206// NotDone returns true if the enumeration should be started or is not yet complete.
18207func (iter SlotDifferenceCollectionIterator) NotDone() bool {
18208	return iter.page.NotDone() && iter.i < len(iter.page.Values())
18209}
18210
18211// Response returns the raw server response from the last page request.
18212func (iter SlotDifferenceCollectionIterator) Response() SlotDifferenceCollection {
18213	return iter.page.Response()
18214}
18215
18216// Value returns the current value or a zero-initialized value if the
18217// iterator has advanced beyond the end of the collection.
18218func (iter SlotDifferenceCollectionIterator) Value() SlotDifference {
18219	if !iter.page.NotDone() {
18220		return SlotDifference{}
18221	}
18222	return iter.page.Values()[iter.i]
18223}
18224
18225// Creates a new instance of the SlotDifferenceCollectionIterator type.
18226func NewSlotDifferenceCollectionIterator(page SlotDifferenceCollectionPage) SlotDifferenceCollectionIterator {
18227	return SlotDifferenceCollectionIterator{page: page}
18228}
18229
18230// IsEmpty returns true if the ListResult contains no values.
18231func (sdc SlotDifferenceCollection) IsEmpty() bool {
18232	return sdc.Value == nil || len(*sdc.Value) == 0
18233}
18234
18235// slotDifferenceCollectionPreparer prepares a request to retrieve the next set of results.
18236// It returns nil if no more results exist.
18237func (sdc SlotDifferenceCollection) slotDifferenceCollectionPreparer(ctx context.Context) (*http.Request, error) {
18238	if sdc.NextLink == nil || len(to.String(sdc.NextLink)) < 1 {
18239		return nil, nil
18240	}
18241	return autorest.Prepare((&http.Request{}).WithContext(ctx),
18242		autorest.AsJSON(),
18243		autorest.AsGet(),
18244		autorest.WithBaseURL(to.String(sdc.NextLink)))
18245}
18246
18247// SlotDifferenceCollectionPage contains a page of SlotDifference values.
18248type SlotDifferenceCollectionPage struct {
18249	fn  func(context.Context, SlotDifferenceCollection) (SlotDifferenceCollection, error)
18250	sdc SlotDifferenceCollection
18251}
18252
18253// NextWithContext advances to the next page of values.  If there was an error making
18254// the request the page does not advance and the error is returned.
18255func (page *SlotDifferenceCollectionPage) NextWithContext(ctx context.Context) (err error) {
18256	if tracing.IsEnabled() {
18257		ctx = tracing.StartSpan(ctx, fqdn+"/SlotDifferenceCollectionPage.NextWithContext")
18258		defer func() {
18259			sc := -1
18260			if page.Response().Response.Response != nil {
18261				sc = page.Response().Response.Response.StatusCode
18262			}
18263			tracing.EndSpan(ctx, sc, err)
18264		}()
18265	}
18266	next, err := page.fn(ctx, page.sdc)
18267	if err != nil {
18268		return err
18269	}
18270	page.sdc = next
18271	return nil
18272}
18273
18274// Next advances to the next page of values.  If there was an error making
18275// the request the page does not advance and the error is returned.
18276// Deprecated: Use NextWithContext() instead.
18277func (page *SlotDifferenceCollectionPage) Next() error {
18278	return page.NextWithContext(context.Background())
18279}
18280
18281// NotDone returns true if the page enumeration should be started or is not yet complete.
18282func (page SlotDifferenceCollectionPage) NotDone() bool {
18283	return !page.sdc.IsEmpty()
18284}
18285
18286// Response returns the raw server response from the last page request.
18287func (page SlotDifferenceCollectionPage) Response() SlotDifferenceCollection {
18288	return page.sdc
18289}
18290
18291// Values returns the slice of values for the current page or nil if there are no values.
18292func (page SlotDifferenceCollectionPage) Values() []SlotDifference {
18293	if page.sdc.IsEmpty() {
18294		return nil
18295	}
18296	return *page.sdc.Value
18297}
18298
18299// Creates a new instance of the SlotDifferenceCollectionPage type.
18300func NewSlotDifferenceCollectionPage(getNextPage func(context.Context, SlotDifferenceCollection) (SlotDifferenceCollection, error)) SlotDifferenceCollectionPage {
18301	return SlotDifferenceCollectionPage{fn: getNextPage}
18302}
18303
18304// SlotDifferenceProperties slotDifference resource specific properties
18305type SlotDifferenceProperties struct {
18306	// Type - READ-ONLY; Type of the difference: Information, Warning or Error.
18307	Type *string `json:"type,omitempty"`
18308	// SettingType - READ-ONLY; The type of the setting: General, AppSetting or ConnectionString.
18309	SettingType *string `json:"settingType,omitempty"`
18310	// DiffRule - READ-ONLY; Rule that describes how to process the setting difference during a slot swap.
18311	DiffRule *string `json:"diffRule,omitempty"`
18312	// SettingName - READ-ONLY; Name of the setting.
18313	SettingName *string `json:"settingName,omitempty"`
18314	// ValueInCurrentSlot - READ-ONLY; Value of the setting in the current slot.
18315	ValueInCurrentSlot *string `json:"valueInCurrentSlot,omitempty"`
18316	// ValueInTargetSlot - READ-ONLY; Value of the setting in the target slot.
18317	ValueInTargetSlot *string `json:"valueInTargetSlot,omitempty"`
18318	// Description - READ-ONLY; Description of the setting difference.
18319	Description *string `json:"description,omitempty"`
18320}
18321
18322// SlotSwapStatus the status of the last successful slot swap operation.
18323type SlotSwapStatus struct {
18324	// TimestampUtc - READ-ONLY; The time the last successful slot swap completed.
18325	TimestampUtc *date.Time `json:"timestampUtc,omitempty"`
18326	// SourceSlotName - READ-ONLY; The source slot of the last swap operation.
18327	SourceSlotName *string `json:"sourceSlotName,omitempty"`
18328	// DestinationSlotName - READ-ONLY; The destination slot of the last swap operation.
18329	DestinationSlotName *string `json:"destinationSlotName,omitempty"`
18330}
18331
18332// SlowRequestsBasedTrigger trigger based on request execution time.
18333type SlowRequestsBasedTrigger struct {
18334	// TimeTaken - Time taken.
18335	TimeTaken *string `json:"timeTaken,omitempty"`
18336	// Count - Request Count.
18337	Count *int32 `json:"count,omitempty"`
18338	// TimeInterval - Time interval.
18339	TimeInterval *string `json:"timeInterval,omitempty"`
18340}
18341
18342// Snapshot a snapshot of an app.
18343type Snapshot struct {
18344	// SnapshotProperties - Snapshot resource specific properties
18345	*SnapshotProperties `json:"properties,omitempty"`
18346	// ID - READ-ONLY; Resource Id.
18347	ID *string `json:"id,omitempty"`
18348	// Name - READ-ONLY; Resource Name.
18349	Name *string `json:"name,omitempty"`
18350	// Kind - Kind of resource.
18351	Kind *string `json:"kind,omitempty"`
18352	// Type - READ-ONLY; Resource type.
18353	Type *string `json:"type,omitempty"`
18354}
18355
18356// MarshalJSON is the custom marshaler for Snapshot.
18357func (s Snapshot) MarshalJSON() ([]byte, error) {
18358	objectMap := make(map[string]interface{})
18359	if s.SnapshotProperties != nil {
18360		objectMap["properties"] = s.SnapshotProperties
18361	}
18362	if s.Kind != nil {
18363		objectMap["kind"] = s.Kind
18364	}
18365	return json.Marshal(objectMap)
18366}
18367
18368// UnmarshalJSON is the custom unmarshaler for Snapshot struct.
18369func (s *Snapshot) UnmarshalJSON(body []byte) error {
18370	var m map[string]*json.RawMessage
18371	err := json.Unmarshal(body, &m)
18372	if err != nil {
18373		return err
18374	}
18375	for k, v := range m {
18376		switch k {
18377		case "properties":
18378			if v != nil {
18379				var snapshotProperties SnapshotProperties
18380				err = json.Unmarshal(*v, &snapshotProperties)
18381				if err != nil {
18382					return err
18383				}
18384				s.SnapshotProperties = &snapshotProperties
18385			}
18386		case "id":
18387			if v != nil {
18388				var ID string
18389				err = json.Unmarshal(*v, &ID)
18390				if err != nil {
18391					return err
18392				}
18393				s.ID = &ID
18394			}
18395		case "name":
18396			if v != nil {
18397				var name string
18398				err = json.Unmarshal(*v, &name)
18399				if err != nil {
18400					return err
18401				}
18402				s.Name = &name
18403			}
18404		case "kind":
18405			if v != nil {
18406				var kind string
18407				err = json.Unmarshal(*v, &kind)
18408				if err != nil {
18409					return err
18410				}
18411				s.Kind = &kind
18412			}
18413		case "type":
18414			if v != nil {
18415				var typeVar string
18416				err = json.Unmarshal(*v, &typeVar)
18417				if err != nil {
18418					return err
18419				}
18420				s.Type = &typeVar
18421			}
18422		}
18423	}
18424
18425	return nil
18426}
18427
18428// SnapshotCollection collection of snapshots which can be used to revert an app to a previous time.
18429type SnapshotCollection struct {
18430	autorest.Response `json:"-"`
18431	// Value - Collection of resources.
18432	Value *[]Snapshot `json:"value,omitempty"`
18433	// NextLink - READ-ONLY; Link to next page of resources.
18434	NextLink *string `json:"nextLink,omitempty"`
18435}
18436
18437// SnapshotCollectionIterator provides access to a complete listing of Snapshot values.
18438type SnapshotCollectionIterator struct {
18439	i    int
18440	page SnapshotCollectionPage
18441}
18442
18443// NextWithContext advances to the next value.  If there was an error making
18444// the request the iterator does not advance and the error is returned.
18445func (iter *SnapshotCollectionIterator) NextWithContext(ctx context.Context) (err error) {
18446	if tracing.IsEnabled() {
18447		ctx = tracing.StartSpan(ctx, fqdn+"/SnapshotCollectionIterator.NextWithContext")
18448		defer func() {
18449			sc := -1
18450			if iter.Response().Response.Response != nil {
18451				sc = iter.Response().Response.Response.StatusCode
18452			}
18453			tracing.EndSpan(ctx, sc, err)
18454		}()
18455	}
18456	iter.i++
18457	if iter.i < len(iter.page.Values()) {
18458		return nil
18459	}
18460	err = iter.page.NextWithContext(ctx)
18461	if err != nil {
18462		iter.i--
18463		return err
18464	}
18465	iter.i = 0
18466	return nil
18467}
18468
18469// Next advances to the next value.  If there was an error making
18470// the request the iterator does not advance and the error is returned.
18471// Deprecated: Use NextWithContext() instead.
18472func (iter *SnapshotCollectionIterator) Next() error {
18473	return iter.NextWithContext(context.Background())
18474}
18475
18476// NotDone returns true if the enumeration should be started or is not yet complete.
18477func (iter SnapshotCollectionIterator) NotDone() bool {
18478	return iter.page.NotDone() && iter.i < len(iter.page.Values())
18479}
18480
18481// Response returns the raw server response from the last page request.
18482func (iter SnapshotCollectionIterator) Response() SnapshotCollection {
18483	return iter.page.Response()
18484}
18485
18486// Value returns the current value or a zero-initialized value if the
18487// iterator has advanced beyond the end of the collection.
18488func (iter SnapshotCollectionIterator) Value() Snapshot {
18489	if !iter.page.NotDone() {
18490		return Snapshot{}
18491	}
18492	return iter.page.Values()[iter.i]
18493}
18494
18495// Creates a new instance of the SnapshotCollectionIterator type.
18496func NewSnapshotCollectionIterator(page SnapshotCollectionPage) SnapshotCollectionIterator {
18497	return SnapshotCollectionIterator{page: page}
18498}
18499
18500// IsEmpty returns true if the ListResult contains no values.
18501func (sc SnapshotCollection) IsEmpty() bool {
18502	return sc.Value == nil || len(*sc.Value) == 0
18503}
18504
18505// snapshotCollectionPreparer prepares a request to retrieve the next set of results.
18506// It returns nil if no more results exist.
18507func (sc SnapshotCollection) snapshotCollectionPreparer(ctx context.Context) (*http.Request, error) {
18508	if sc.NextLink == nil || len(to.String(sc.NextLink)) < 1 {
18509		return nil, nil
18510	}
18511	return autorest.Prepare((&http.Request{}).WithContext(ctx),
18512		autorest.AsJSON(),
18513		autorest.AsGet(),
18514		autorest.WithBaseURL(to.String(sc.NextLink)))
18515}
18516
18517// SnapshotCollectionPage contains a page of Snapshot values.
18518type SnapshotCollectionPage struct {
18519	fn func(context.Context, SnapshotCollection) (SnapshotCollection, error)
18520	sc SnapshotCollection
18521}
18522
18523// NextWithContext advances to the next page of values.  If there was an error making
18524// the request the page does not advance and the error is returned.
18525func (page *SnapshotCollectionPage) NextWithContext(ctx context.Context) (err error) {
18526	if tracing.IsEnabled() {
18527		ctx = tracing.StartSpan(ctx, fqdn+"/SnapshotCollectionPage.NextWithContext")
18528		defer func() {
18529			sc := -1
18530			if page.Response().Response.Response != nil {
18531				sc = page.Response().Response.Response.StatusCode
18532			}
18533			tracing.EndSpan(ctx, sc, err)
18534		}()
18535	}
18536	next, err := page.fn(ctx, page.sc)
18537	if err != nil {
18538		return err
18539	}
18540	page.sc = next
18541	return nil
18542}
18543
18544// Next advances to the next page of values.  If there was an error making
18545// the request the page does not advance and the error is returned.
18546// Deprecated: Use NextWithContext() instead.
18547func (page *SnapshotCollectionPage) Next() error {
18548	return page.NextWithContext(context.Background())
18549}
18550
18551// NotDone returns true if the page enumeration should be started or is not yet complete.
18552func (page SnapshotCollectionPage) NotDone() bool {
18553	return !page.sc.IsEmpty()
18554}
18555
18556// Response returns the raw server response from the last page request.
18557func (page SnapshotCollectionPage) Response() SnapshotCollection {
18558	return page.sc
18559}
18560
18561// Values returns the slice of values for the current page or nil if there are no values.
18562func (page SnapshotCollectionPage) Values() []Snapshot {
18563	if page.sc.IsEmpty() {
18564		return nil
18565	}
18566	return *page.sc.Value
18567}
18568
18569// Creates a new instance of the SnapshotCollectionPage type.
18570func NewSnapshotCollectionPage(getNextPage func(context.Context, SnapshotCollection) (SnapshotCollection, error)) SnapshotCollectionPage {
18571	return SnapshotCollectionPage{fn: getNextPage}
18572}
18573
18574// SnapshotProperties snapshot resource specific properties
18575type SnapshotProperties struct {
18576	// Time - READ-ONLY; The time the snapshot was taken.
18577	Time *string `json:"time,omitempty"`
18578}
18579
18580// SnapshotRecoveryRequest details about app recovery operation.
18581type SnapshotRecoveryRequest struct {
18582	// SnapshotRecoveryRequestProperties - SnapshotRecoveryRequest resource specific properties
18583	*SnapshotRecoveryRequestProperties `json:"properties,omitempty"`
18584	// ID - READ-ONLY; Resource Id.
18585	ID *string `json:"id,omitempty"`
18586	// Name - READ-ONLY; Resource Name.
18587	Name *string `json:"name,omitempty"`
18588	// Kind - Kind of resource.
18589	Kind *string `json:"kind,omitempty"`
18590	// Type - READ-ONLY; Resource type.
18591	Type *string `json:"type,omitempty"`
18592}
18593
18594// MarshalJSON is the custom marshaler for SnapshotRecoveryRequest.
18595func (srr SnapshotRecoveryRequest) MarshalJSON() ([]byte, error) {
18596	objectMap := make(map[string]interface{})
18597	if srr.SnapshotRecoveryRequestProperties != nil {
18598		objectMap["properties"] = srr.SnapshotRecoveryRequestProperties
18599	}
18600	if srr.Kind != nil {
18601		objectMap["kind"] = srr.Kind
18602	}
18603	return json.Marshal(objectMap)
18604}
18605
18606// UnmarshalJSON is the custom unmarshaler for SnapshotRecoveryRequest struct.
18607func (srr *SnapshotRecoveryRequest) UnmarshalJSON(body []byte) error {
18608	var m map[string]*json.RawMessage
18609	err := json.Unmarshal(body, &m)
18610	if err != nil {
18611		return err
18612	}
18613	for k, v := range m {
18614		switch k {
18615		case "properties":
18616			if v != nil {
18617				var snapshotRecoveryRequestProperties SnapshotRecoveryRequestProperties
18618				err = json.Unmarshal(*v, &snapshotRecoveryRequestProperties)
18619				if err != nil {
18620					return err
18621				}
18622				srr.SnapshotRecoveryRequestProperties = &snapshotRecoveryRequestProperties
18623			}
18624		case "id":
18625			if v != nil {
18626				var ID string
18627				err = json.Unmarshal(*v, &ID)
18628				if err != nil {
18629					return err
18630				}
18631				srr.ID = &ID
18632			}
18633		case "name":
18634			if v != nil {
18635				var name string
18636				err = json.Unmarshal(*v, &name)
18637				if err != nil {
18638					return err
18639				}
18640				srr.Name = &name
18641			}
18642		case "kind":
18643			if v != nil {
18644				var kind string
18645				err = json.Unmarshal(*v, &kind)
18646				if err != nil {
18647					return err
18648				}
18649				srr.Kind = &kind
18650			}
18651		case "type":
18652			if v != nil {
18653				var typeVar string
18654				err = json.Unmarshal(*v, &typeVar)
18655				if err != nil {
18656					return err
18657				}
18658				srr.Type = &typeVar
18659			}
18660		}
18661	}
18662
18663	return nil
18664}
18665
18666// SnapshotRecoveryRequestProperties snapshotRecoveryRequest resource specific properties
18667type SnapshotRecoveryRequestProperties struct {
18668	// SnapshotTime - Point in time in which the app recovery should be attempted, formatted as a DateTime string.
18669	SnapshotTime *string `json:"snapshotTime,omitempty"`
18670	// RecoveryTarget - Specifies the web app that snapshot contents will be written to.
18671	RecoveryTarget *SnapshotRecoveryTarget `json:"recoveryTarget,omitempty"`
18672	// Overwrite - If <code>true</code> the recovery operation can overwrite source app; otherwise, <code>false</code>.
18673	Overwrite *bool `json:"overwrite,omitempty"`
18674	// RecoverConfiguration - If true, site configuration, in addition to content, will be reverted.
18675	RecoverConfiguration *bool `json:"recoverConfiguration,omitempty"`
18676	// IgnoreConflictingHostNames - If true, custom hostname conflicts will be ignored when recovering to a target web app.
18677	// This setting is only necessary when RecoverConfiguration is enabled.
18678	IgnoreConflictingHostNames *bool `json:"ignoreConflictingHostNames,omitempty"`
18679}
18680
18681// SnapshotRecoveryTarget specifies the web app that snapshot contents will be written to.
18682type SnapshotRecoveryTarget struct {
18683	// Location - Geographical location of the target web app, e.g. SouthEastAsia, SouthCentralUS
18684	Location *string `json:"location,omitempty"`
18685	// ID - ARM resource ID of the target app.
18686	// /subscriptions/{subId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{siteName} for production slots and
18687	// /subscriptions/{subId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{siteName}/slots/{slotName} for other slots.
18688	ID *string `json:"id,omitempty"`
18689}
18690
18691// Solution class Representing Solution for problems detected.
18692type Solution struct {
18693	// ID - Solution Id.
18694	ID *float64 `json:"id,omitempty"`
18695	// DisplayName - Display Name of the solution
18696	DisplayName *string `json:"displayName,omitempty"`
18697	// Order - Order of the solution.
18698	Order *float64 `json:"order,omitempty"`
18699	// Description - Description of the solution
18700	Description *string `json:"description,omitempty"`
18701	// Type - Type of Solution. Possible values include: 'QuickSolution', 'DeepInvestigation', 'BestPractices'
18702	Type SolutionType `json:"type,omitempty"`
18703	// Data - Solution Data.
18704	Data *[][]NameValuePair `json:"data,omitempty"`
18705	// Metadata - Solution Metadata.
18706	Metadata *[][]NameValuePair `json:"metadata,omitempty"`
18707}
18708
18709// SourceControl the source control OAuth token.
18710type SourceControl struct {
18711	autorest.Response `json:"-"`
18712	// SourceControlProperties - SourceControl resource specific properties
18713	*SourceControlProperties `json:"properties,omitempty"`
18714	// ID - READ-ONLY; Resource Id.
18715	ID *string `json:"id,omitempty"`
18716	// Name - READ-ONLY; Resource Name.
18717	Name *string `json:"name,omitempty"`
18718	// Kind - Kind of resource.
18719	Kind *string `json:"kind,omitempty"`
18720	// Type - READ-ONLY; Resource type.
18721	Type *string `json:"type,omitempty"`
18722}
18723
18724// MarshalJSON is the custom marshaler for SourceControl.
18725func (sc SourceControl) MarshalJSON() ([]byte, error) {
18726	objectMap := make(map[string]interface{})
18727	if sc.SourceControlProperties != nil {
18728		objectMap["properties"] = sc.SourceControlProperties
18729	}
18730	if sc.Kind != nil {
18731		objectMap["kind"] = sc.Kind
18732	}
18733	return json.Marshal(objectMap)
18734}
18735
18736// UnmarshalJSON is the custom unmarshaler for SourceControl struct.
18737func (sc *SourceControl) UnmarshalJSON(body []byte) error {
18738	var m map[string]*json.RawMessage
18739	err := json.Unmarshal(body, &m)
18740	if err != nil {
18741		return err
18742	}
18743	for k, v := range m {
18744		switch k {
18745		case "properties":
18746			if v != nil {
18747				var sourceControlProperties SourceControlProperties
18748				err = json.Unmarshal(*v, &sourceControlProperties)
18749				if err != nil {
18750					return err
18751				}
18752				sc.SourceControlProperties = &sourceControlProperties
18753			}
18754		case "id":
18755			if v != nil {
18756				var ID string
18757				err = json.Unmarshal(*v, &ID)
18758				if err != nil {
18759					return err
18760				}
18761				sc.ID = &ID
18762			}
18763		case "name":
18764			if v != nil {
18765				var name string
18766				err = json.Unmarshal(*v, &name)
18767				if err != nil {
18768					return err
18769				}
18770				sc.Name = &name
18771			}
18772		case "kind":
18773			if v != nil {
18774				var kind string
18775				err = json.Unmarshal(*v, &kind)
18776				if err != nil {
18777					return err
18778				}
18779				sc.Kind = &kind
18780			}
18781		case "type":
18782			if v != nil {
18783				var typeVar string
18784				err = json.Unmarshal(*v, &typeVar)
18785				if err != nil {
18786					return err
18787				}
18788				sc.Type = &typeVar
18789			}
18790		}
18791	}
18792
18793	return nil
18794}
18795
18796// SourceControlCollection collection of source controls.
18797type SourceControlCollection struct {
18798	autorest.Response `json:"-"`
18799	// Value - Collection of resources.
18800	Value *[]SourceControl `json:"value,omitempty"`
18801	// NextLink - READ-ONLY; Link to next page of resources.
18802	NextLink *string `json:"nextLink,omitempty"`
18803}
18804
18805// SourceControlCollectionIterator provides access to a complete listing of SourceControl values.
18806type SourceControlCollectionIterator struct {
18807	i    int
18808	page SourceControlCollectionPage
18809}
18810
18811// NextWithContext advances to the next value.  If there was an error making
18812// the request the iterator does not advance and the error is returned.
18813func (iter *SourceControlCollectionIterator) NextWithContext(ctx context.Context) (err error) {
18814	if tracing.IsEnabled() {
18815		ctx = tracing.StartSpan(ctx, fqdn+"/SourceControlCollectionIterator.NextWithContext")
18816		defer func() {
18817			sc := -1
18818			if iter.Response().Response.Response != nil {
18819				sc = iter.Response().Response.Response.StatusCode
18820			}
18821			tracing.EndSpan(ctx, sc, err)
18822		}()
18823	}
18824	iter.i++
18825	if iter.i < len(iter.page.Values()) {
18826		return nil
18827	}
18828	err = iter.page.NextWithContext(ctx)
18829	if err != nil {
18830		iter.i--
18831		return err
18832	}
18833	iter.i = 0
18834	return nil
18835}
18836
18837// Next advances to the next value.  If there was an error making
18838// the request the iterator does not advance and the error is returned.
18839// Deprecated: Use NextWithContext() instead.
18840func (iter *SourceControlCollectionIterator) Next() error {
18841	return iter.NextWithContext(context.Background())
18842}
18843
18844// NotDone returns true if the enumeration should be started or is not yet complete.
18845func (iter SourceControlCollectionIterator) NotDone() bool {
18846	return iter.page.NotDone() && iter.i < len(iter.page.Values())
18847}
18848
18849// Response returns the raw server response from the last page request.
18850func (iter SourceControlCollectionIterator) Response() SourceControlCollection {
18851	return iter.page.Response()
18852}
18853
18854// Value returns the current value or a zero-initialized value if the
18855// iterator has advanced beyond the end of the collection.
18856func (iter SourceControlCollectionIterator) Value() SourceControl {
18857	if !iter.page.NotDone() {
18858		return SourceControl{}
18859	}
18860	return iter.page.Values()[iter.i]
18861}
18862
18863// Creates a new instance of the SourceControlCollectionIterator type.
18864func NewSourceControlCollectionIterator(page SourceControlCollectionPage) SourceControlCollectionIterator {
18865	return SourceControlCollectionIterator{page: page}
18866}
18867
18868// IsEmpty returns true if the ListResult contains no values.
18869func (scc SourceControlCollection) IsEmpty() bool {
18870	return scc.Value == nil || len(*scc.Value) == 0
18871}
18872
18873// sourceControlCollectionPreparer prepares a request to retrieve the next set of results.
18874// It returns nil if no more results exist.
18875func (scc SourceControlCollection) sourceControlCollectionPreparer(ctx context.Context) (*http.Request, error) {
18876	if scc.NextLink == nil || len(to.String(scc.NextLink)) < 1 {
18877		return nil, nil
18878	}
18879	return autorest.Prepare((&http.Request{}).WithContext(ctx),
18880		autorest.AsJSON(),
18881		autorest.AsGet(),
18882		autorest.WithBaseURL(to.String(scc.NextLink)))
18883}
18884
18885// SourceControlCollectionPage contains a page of SourceControl values.
18886type SourceControlCollectionPage struct {
18887	fn  func(context.Context, SourceControlCollection) (SourceControlCollection, error)
18888	scc SourceControlCollection
18889}
18890
18891// NextWithContext advances to the next page of values.  If there was an error making
18892// the request the page does not advance and the error is returned.
18893func (page *SourceControlCollectionPage) NextWithContext(ctx context.Context) (err error) {
18894	if tracing.IsEnabled() {
18895		ctx = tracing.StartSpan(ctx, fqdn+"/SourceControlCollectionPage.NextWithContext")
18896		defer func() {
18897			sc := -1
18898			if page.Response().Response.Response != nil {
18899				sc = page.Response().Response.Response.StatusCode
18900			}
18901			tracing.EndSpan(ctx, sc, err)
18902		}()
18903	}
18904	next, err := page.fn(ctx, page.scc)
18905	if err != nil {
18906		return err
18907	}
18908	page.scc = next
18909	return nil
18910}
18911
18912// Next advances to the next page of values.  If there was an error making
18913// the request the page does not advance and the error is returned.
18914// Deprecated: Use NextWithContext() instead.
18915func (page *SourceControlCollectionPage) Next() error {
18916	return page.NextWithContext(context.Background())
18917}
18918
18919// NotDone returns true if the page enumeration should be started or is not yet complete.
18920func (page SourceControlCollectionPage) NotDone() bool {
18921	return !page.scc.IsEmpty()
18922}
18923
18924// Response returns the raw server response from the last page request.
18925func (page SourceControlCollectionPage) Response() SourceControlCollection {
18926	return page.scc
18927}
18928
18929// Values returns the slice of values for the current page or nil if there are no values.
18930func (page SourceControlCollectionPage) Values() []SourceControl {
18931	if page.scc.IsEmpty() {
18932		return nil
18933	}
18934	return *page.scc.Value
18935}
18936
18937// Creates a new instance of the SourceControlCollectionPage type.
18938func NewSourceControlCollectionPage(getNextPage func(context.Context, SourceControlCollection) (SourceControlCollection, error)) SourceControlCollectionPage {
18939	return SourceControlCollectionPage{fn: getNextPage}
18940}
18941
18942// SourceControlProperties sourceControl resource specific properties
18943type SourceControlProperties struct {
18944	// Name - Name or source control type.
18945	Name *string `json:"name,omitempty"`
18946	// Token - OAuth access token.
18947	Token *string `json:"token,omitempty"`
18948	// TokenSecret - OAuth access token secret.
18949	TokenSecret *string `json:"tokenSecret,omitempty"`
18950	// RefreshToken - OAuth refresh token.
18951	RefreshToken *string `json:"refreshToken,omitempty"`
18952	// ExpirationTime - OAuth token expiration.
18953	ExpirationTime *date.Time `json:"expirationTime,omitempty"`
18954}
18955
18956// StackMajorVersion application stack major version.
18957type StackMajorVersion struct {
18958	// DisplayVersion - Application stack major version (display only).
18959	DisplayVersion *string `json:"displayVersion,omitempty"`
18960	// RuntimeVersion - Application stack major version (runtime only).
18961	RuntimeVersion *string `json:"runtimeVersion,omitempty"`
18962	// IsDefault - <code>true</code> if this is the default major version; otherwise, <code>false</code>.
18963	IsDefault *bool `json:"isDefault,omitempty"`
18964	// MinorVersions - Minor versions associated with the major version.
18965	MinorVersions *[]StackMinorVersion `json:"minorVersions,omitempty"`
18966}
18967
18968// StackMinorVersion application stack minor version.
18969type StackMinorVersion struct {
18970	// DisplayVersion - Application stack minor version (display only).
18971	DisplayVersion *string `json:"displayVersion,omitempty"`
18972	// RuntimeVersion - Application stack minor version (runtime only).
18973	RuntimeVersion *string `json:"runtimeVersion,omitempty"`
18974	// IsDefault - <code>true</code> if this is the default minor version; otherwise, <code>false</code>.
18975	IsDefault *bool `json:"isDefault,omitempty"`
18976}
18977
18978// StampCapacity stamp capacity information.
18979type StampCapacity struct {
18980	// Name - Name of the stamp.
18981	Name *string `json:"name,omitempty"`
18982	// AvailableCapacity - Available capacity (# of machines, bytes of storage etc...).
18983	AvailableCapacity *int64 `json:"availableCapacity,omitempty"`
18984	// TotalCapacity - Total capacity (# of machines, bytes of storage etc...).
18985	TotalCapacity *int64 `json:"totalCapacity,omitempty"`
18986	// Unit - Name of the unit.
18987	Unit *string `json:"unit,omitempty"`
18988	// ComputeMode - Shared/dedicated workers. Possible values include: 'ComputeModeOptionsShared', 'ComputeModeOptionsDedicated', 'ComputeModeOptionsDynamic'
18989	ComputeMode ComputeModeOptions `json:"computeMode,omitempty"`
18990	// WorkerSize - Size of the machines. Possible values include: 'Default', 'Small', 'Medium', 'Large', 'D1', 'D2', 'D3'
18991	WorkerSize WorkerSizeOptions `json:"workerSize,omitempty"`
18992	// WorkerSizeID - Size ID of machines:
18993	// 0 - Small
18994	// 1 - Medium
18995	// 2 - Large
18996	WorkerSizeID *int32 `json:"workerSizeId,omitempty"`
18997	// ExcludeFromCapacityAllocation - If <code>true</code>, it includes basic apps.
18998	// Basic apps are not used for capacity allocation.
18999	ExcludeFromCapacityAllocation *bool `json:"excludeFromCapacityAllocation,omitempty"`
19000	// IsApplicableForAllComputeModes - <code>true</code> if capacity is applicable for all apps; otherwise, <code>false</code>.
19001	IsApplicableForAllComputeModes *bool `json:"isApplicableForAllComputeModes,omitempty"`
19002	// SiteMode - Shared or Dedicated.
19003	SiteMode *string `json:"siteMode,omitempty"`
19004}
19005
19006// StampCapacityCollection collection of stamp capacities.
19007type StampCapacityCollection struct {
19008	autorest.Response `json:"-"`
19009	// Value - Collection of resources.
19010	Value *[]StampCapacity `json:"value,omitempty"`
19011	// NextLink - READ-ONLY; Link to next page of resources.
19012	NextLink *string `json:"nextLink,omitempty"`
19013}
19014
19015// StampCapacityCollectionIterator provides access to a complete listing of StampCapacity values.
19016type StampCapacityCollectionIterator struct {
19017	i    int
19018	page StampCapacityCollectionPage
19019}
19020
19021// NextWithContext advances to the next value.  If there was an error making
19022// the request the iterator does not advance and the error is returned.
19023func (iter *StampCapacityCollectionIterator) NextWithContext(ctx context.Context) (err error) {
19024	if tracing.IsEnabled() {
19025		ctx = tracing.StartSpan(ctx, fqdn+"/StampCapacityCollectionIterator.NextWithContext")
19026		defer func() {
19027			sc := -1
19028			if iter.Response().Response.Response != nil {
19029				sc = iter.Response().Response.Response.StatusCode
19030			}
19031			tracing.EndSpan(ctx, sc, err)
19032		}()
19033	}
19034	iter.i++
19035	if iter.i < len(iter.page.Values()) {
19036		return nil
19037	}
19038	err = iter.page.NextWithContext(ctx)
19039	if err != nil {
19040		iter.i--
19041		return err
19042	}
19043	iter.i = 0
19044	return nil
19045}
19046
19047// Next advances to the next value.  If there was an error making
19048// the request the iterator does not advance and the error is returned.
19049// Deprecated: Use NextWithContext() instead.
19050func (iter *StampCapacityCollectionIterator) Next() error {
19051	return iter.NextWithContext(context.Background())
19052}
19053
19054// NotDone returns true if the enumeration should be started or is not yet complete.
19055func (iter StampCapacityCollectionIterator) NotDone() bool {
19056	return iter.page.NotDone() && iter.i < len(iter.page.Values())
19057}
19058
19059// Response returns the raw server response from the last page request.
19060func (iter StampCapacityCollectionIterator) Response() StampCapacityCollection {
19061	return iter.page.Response()
19062}
19063
19064// Value returns the current value or a zero-initialized value if the
19065// iterator has advanced beyond the end of the collection.
19066func (iter StampCapacityCollectionIterator) Value() StampCapacity {
19067	if !iter.page.NotDone() {
19068		return StampCapacity{}
19069	}
19070	return iter.page.Values()[iter.i]
19071}
19072
19073// Creates a new instance of the StampCapacityCollectionIterator type.
19074func NewStampCapacityCollectionIterator(page StampCapacityCollectionPage) StampCapacityCollectionIterator {
19075	return StampCapacityCollectionIterator{page: page}
19076}
19077
19078// IsEmpty returns true if the ListResult contains no values.
19079func (scc StampCapacityCollection) IsEmpty() bool {
19080	return scc.Value == nil || len(*scc.Value) == 0
19081}
19082
19083// stampCapacityCollectionPreparer prepares a request to retrieve the next set of results.
19084// It returns nil if no more results exist.
19085func (scc StampCapacityCollection) stampCapacityCollectionPreparer(ctx context.Context) (*http.Request, error) {
19086	if scc.NextLink == nil || len(to.String(scc.NextLink)) < 1 {
19087		return nil, nil
19088	}
19089	return autorest.Prepare((&http.Request{}).WithContext(ctx),
19090		autorest.AsJSON(),
19091		autorest.AsGet(),
19092		autorest.WithBaseURL(to.String(scc.NextLink)))
19093}
19094
19095// StampCapacityCollectionPage contains a page of StampCapacity values.
19096type StampCapacityCollectionPage struct {
19097	fn  func(context.Context, StampCapacityCollection) (StampCapacityCollection, error)
19098	scc StampCapacityCollection
19099}
19100
19101// NextWithContext advances to the next page of values.  If there was an error making
19102// the request the page does not advance and the error is returned.
19103func (page *StampCapacityCollectionPage) NextWithContext(ctx context.Context) (err error) {
19104	if tracing.IsEnabled() {
19105		ctx = tracing.StartSpan(ctx, fqdn+"/StampCapacityCollectionPage.NextWithContext")
19106		defer func() {
19107			sc := -1
19108			if page.Response().Response.Response != nil {
19109				sc = page.Response().Response.Response.StatusCode
19110			}
19111			tracing.EndSpan(ctx, sc, err)
19112		}()
19113	}
19114	next, err := page.fn(ctx, page.scc)
19115	if err != nil {
19116		return err
19117	}
19118	page.scc = next
19119	return nil
19120}
19121
19122// Next advances to the next page of values.  If there was an error making
19123// the request the page does not advance and the error is returned.
19124// Deprecated: Use NextWithContext() instead.
19125func (page *StampCapacityCollectionPage) Next() error {
19126	return page.NextWithContext(context.Background())
19127}
19128
19129// NotDone returns true if the page enumeration should be started or is not yet complete.
19130func (page StampCapacityCollectionPage) NotDone() bool {
19131	return !page.scc.IsEmpty()
19132}
19133
19134// Response returns the raw server response from the last page request.
19135func (page StampCapacityCollectionPage) Response() StampCapacityCollection {
19136	return page.scc
19137}
19138
19139// Values returns the slice of values for the current page or nil if there are no values.
19140func (page StampCapacityCollectionPage) Values() []StampCapacity {
19141	if page.scc.IsEmpty() {
19142		return nil
19143	}
19144	return *page.scc.Value
19145}
19146
19147// Creates a new instance of the StampCapacityCollectionPage type.
19148func NewStampCapacityCollectionPage(getNextPage func(context.Context, StampCapacityCollection) (StampCapacityCollection, error)) StampCapacityCollectionPage {
19149	return StampCapacityCollectionPage{fn: getNextPage}
19150}
19151
19152// StatusCodesBasedTrigger trigger based on status code.
19153type StatusCodesBasedTrigger struct {
19154	// Status - HTTP status code.
19155	Status *int32 `json:"status,omitempty"`
19156	// SubStatus - Request Sub Status.
19157	SubStatus *int32 `json:"subStatus,omitempty"`
19158	// Win32Status - Win32 error code.
19159	Win32Status *int32 `json:"win32Status,omitempty"`
19160	// Count - Request Count.
19161	Count *int32 `json:"count,omitempty"`
19162	// TimeInterval - Time interval.
19163	TimeInterval *string `json:"timeInterval,omitempty"`
19164}
19165
19166// StorageMigrationOptions options for app content migration.
19167type StorageMigrationOptions struct {
19168	// StorageMigrationOptionsProperties - StorageMigrationOptions resource specific properties
19169	*StorageMigrationOptionsProperties `json:"properties,omitempty"`
19170	// ID - READ-ONLY; Resource Id.
19171	ID *string `json:"id,omitempty"`
19172	// Name - READ-ONLY; Resource Name.
19173	Name *string `json:"name,omitempty"`
19174	// Kind - Kind of resource.
19175	Kind *string `json:"kind,omitempty"`
19176	// Type - READ-ONLY; Resource type.
19177	Type *string `json:"type,omitempty"`
19178}
19179
19180// MarshalJSON is the custom marshaler for StorageMigrationOptions.
19181func (smo StorageMigrationOptions) MarshalJSON() ([]byte, error) {
19182	objectMap := make(map[string]interface{})
19183	if smo.StorageMigrationOptionsProperties != nil {
19184		objectMap["properties"] = smo.StorageMigrationOptionsProperties
19185	}
19186	if smo.Kind != nil {
19187		objectMap["kind"] = smo.Kind
19188	}
19189	return json.Marshal(objectMap)
19190}
19191
19192// UnmarshalJSON is the custom unmarshaler for StorageMigrationOptions struct.
19193func (smo *StorageMigrationOptions) UnmarshalJSON(body []byte) error {
19194	var m map[string]*json.RawMessage
19195	err := json.Unmarshal(body, &m)
19196	if err != nil {
19197		return err
19198	}
19199	for k, v := range m {
19200		switch k {
19201		case "properties":
19202			if v != nil {
19203				var storageMigrationOptionsProperties StorageMigrationOptionsProperties
19204				err = json.Unmarshal(*v, &storageMigrationOptionsProperties)
19205				if err != nil {
19206					return err
19207				}
19208				smo.StorageMigrationOptionsProperties = &storageMigrationOptionsProperties
19209			}
19210		case "id":
19211			if v != nil {
19212				var ID string
19213				err = json.Unmarshal(*v, &ID)
19214				if err != nil {
19215					return err
19216				}
19217				smo.ID = &ID
19218			}
19219		case "name":
19220			if v != nil {
19221				var name string
19222				err = json.Unmarshal(*v, &name)
19223				if err != nil {
19224					return err
19225				}
19226				smo.Name = &name
19227			}
19228		case "kind":
19229			if v != nil {
19230				var kind string
19231				err = json.Unmarshal(*v, &kind)
19232				if err != nil {
19233					return err
19234				}
19235				smo.Kind = &kind
19236			}
19237		case "type":
19238			if v != nil {
19239				var typeVar string
19240				err = json.Unmarshal(*v, &typeVar)
19241				if err != nil {
19242					return err
19243				}
19244				smo.Type = &typeVar
19245			}
19246		}
19247	}
19248
19249	return nil
19250}
19251
19252// StorageMigrationOptionsProperties storageMigrationOptions resource specific properties
19253type StorageMigrationOptionsProperties struct {
19254	// AzurefilesConnectionString - AzureFiles connection string.
19255	AzurefilesConnectionString *string `json:"azurefilesConnectionString,omitempty"`
19256	// AzurefilesShare - AzureFiles share.
19257	AzurefilesShare *string `json:"azurefilesShare,omitempty"`
19258	// SwitchSiteAfterMigration - <code>true</code>if the app should be switched over; otherwise, <code>false</code>.
19259	SwitchSiteAfterMigration *bool `json:"switchSiteAfterMigration,omitempty"`
19260	// BlockWriteAccessToSite - <code>true</code> if the app should be read only during copy operation; otherwise, <code>false</code>.
19261	BlockWriteAccessToSite *bool `json:"blockWriteAccessToSite,omitempty"`
19262}
19263
19264// StorageMigrationResponse response for a migration of app content request.
19265type StorageMigrationResponse struct {
19266	autorest.Response `json:"-"`
19267	// StorageMigrationResponseProperties - StorageMigrationResponse resource specific properties
19268	*StorageMigrationResponseProperties `json:"properties,omitempty"`
19269	// ID - READ-ONLY; Resource Id.
19270	ID *string `json:"id,omitempty"`
19271	// Name - READ-ONLY; Resource Name.
19272	Name *string `json:"name,omitempty"`
19273	// Kind - Kind of resource.
19274	Kind *string `json:"kind,omitempty"`
19275	// Type - READ-ONLY; Resource type.
19276	Type *string `json:"type,omitempty"`
19277}
19278
19279// MarshalJSON is the custom marshaler for StorageMigrationResponse.
19280func (smr StorageMigrationResponse) MarshalJSON() ([]byte, error) {
19281	objectMap := make(map[string]interface{})
19282	if smr.StorageMigrationResponseProperties != nil {
19283		objectMap["properties"] = smr.StorageMigrationResponseProperties
19284	}
19285	if smr.Kind != nil {
19286		objectMap["kind"] = smr.Kind
19287	}
19288	return json.Marshal(objectMap)
19289}
19290
19291// UnmarshalJSON is the custom unmarshaler for StorageMigrationResponse struct.
19292func (smr *StorageMigrationResponse) UnmarshalJSON(body []byte) error {
19293	var m map[string]*json.RawMessage
19294	err := json.Unmarshal(body, &m)
19295	if err != nil {
19296		return err
19297	}
19298	for k, v := range m {
19299		switch k {
19300		case "properties":
19301			if v != nil {
19302				var storageMigrationResponseProperties StorageMigrationResponseProperties
19303				err = json.Unmarshal(*v, &storageMigrationResponseProperties)
19304				if err != nil {
19305					return err
19306				}
19307				smr.StorageMigrationResponseProperties = &storageMigrationResponseProperties
19308			}
19309		case "id":
19310			if v != nil {
19311				var ID string
19312				err = json.Unmarshal(*v, &ID)
19313				if err != nil {
19314					return err
19315				}
19316				smr.ID = &ID
19317			}
19318		case "name":
19319			if v != nil {
19320				var name string
19321				err = json.Unmarshal(*v, &name)
19322				if err != nil {
19323					return err
19324				}
19325				smr.Name = &name
19326			}
19327		case "kind":
19328			if v != nil {
19329				var kind string
19330				err = json.Unmarshal(*v, &kind)
19331				if err != nil {
19332					return err
19333				}
19334				smr.Kind = &kind
19335			}
19336		case "type":
19337			if v != nil {
19338				var typeVar string
19339				err = json.Unmarshal(*v, &typeVar)
19340				if err != nil {
19341					return err
19342				}
19343				smr.Type = &typeVar
19344			}
19345		}
19346	}
19347
19348	return nil
19349}
19350
19351// StorageMigrationResponseProperties storageMigrationResponse resource specific properties
19352type StorageMigrationResponseProperties struct {
19353	// OperationID - READ-ONLY; When server starts the migration process, it will return an operation ID identifying that particular migration operation.
19354	OperationID *string `json:"operationId,omitempty"`
19355}
19356
19357// String ...
19358type String struct {
19359	autorest.Response `json:"-"`
19360	Value             *string `json:"value,omitempty"`
19361}
19362
19363// StringDictionary string dictionary resource.
19364type StringDictionary struct {
19365	autorest.Response `json:"-"`
19366	// Properties - Settings.
19367	Properties map[string]*string `json:"properties"`
19368	// ID - READ-ONLY; Resource Id.
19369	ID *string `json:"id,omitempty"`
19370	// Name - READ-ONLY; Resource Name.
19371	Name *string `json:"name,omitempty"`
19372	// Kind - Kind of resource.
19373	Kind *string `json:"kind,omitempty"`
19374	// Type - READ-ONLY; Resource type.
19375	Type *string `json:"type,omitempty"`
19376}
19377
19378// MarshalJSON is the custom marshaler for StringDictionary.
19379func (sd StringDictionary) MarshalJSON() ([]byte, error) {
19380	objectMap := make(map[string]interface{})
19381	if sd.Properties != nil {
19382		objectMap["properties"] = sd.Properties
19383	}
19384	if sd.Kind != nil {
19385		objectMap["kind"] = sd.Kind
19386	}
19387	return json.Marshal(objectMap)
19388}
19389
19390// TldLegalAgreement legal agreement for a top level domain.
19391type TldLegalAgreement struct {
19392	// AgreementKey - Unique identifier for the agreement.
19393	AgreementKey *string `json:"agreementKey,omitempty"`
19394	// Title - Agreement title.
19395	Title *string `json:"title,omitempty"`
19396	// Content - Agreement details.
19397	Content *string `json:"content,omitempty"`
19398	// URL - URL where a copy of the agreement details is hosted.
19399	URL *string `json:"url,omitempty"`
19400}
19401
19402// TldLegalAgreementCollection collection of top-level domain legal agreements.
19403type TldLegalAgreementCollection struct {
19404	autorest.Response `json:"-"`
19405	// Value - Collection of resources.
19406	Value *[]TldLegalAgreement `json:"value,omitempty"`
19407	// NextLink - READ-ONLY; Link to next page of resources.
19408	NextLink *string `json:"nextLink,omitempty"`
19409}
19410
19411// TldLegalAgreementCollectionIterator provides access to a complete listing of TldLegalAgreement values.
19412type TldLegalAgreementCollectionIterator struct {
19413	i    int
19414	page TldLegalAgreementCollectionPage
19415}
19416
19417// NextWithContext advances to the next value.  If there was an error making
19418// the request the iterator does not advance and the error is returned.
19419func (iter *TldLegalAgreementCollectionIterator) NextWithContext(ctx context.Context) (err error) {
19420	if tracing.IsEnabled() {
19421		ctx = tracing.StartSpan(ctx, fqdn+"/TldLegalAgreementCollectionIterator.NextWithContext")
19422		defer func() {
19423			sc := -1
19424			if iter.Response().Response.Response != nil {
19425				sc = iter.Response().Response.Response.StatusCode
19426			}
19427			tracing.EndSpan(ctx, sc, err)
19428		}()
19429	}
19430	iter.i++
19431	if iter.i < len(iter.page.Values()) {
19432		return nil
19433	}
19434	err = iter.page.NextWithContext(ctx)
19435	if err != nil {
19436		iter.i--
19437		return err
19438	}
19439	iter.i = 0
19440	return nil
19441}
19442
19443// Next advances to the next value.  If there was an error making
19444// the request the iterator does not advance and the error is returned.
19445// Deprecated: Use NextWithContext() instead.
19446func (iter *TldLegalAgreementCollectionIterator) Next() error {
19447	return iter.NextWithContext(context.Background())
19448}
19449
19450// NotDone returns true if the enumeration should be started or is not yet complete.
19451func (iter TldLegalAgreementCollectionIterator) NotDone() bool {
19452	return iter.page.NotDone() && iter.i < len(iter.page.Values())
19453}
19454
19455// Response returns the raw server response from the last page request.
19456func (iter TldLegalAgreementCollectionIterator) Response() TldLegalAgreementCollection {
19457	return iter.page.Response()
19458}
19459
19460// Value returns the current value or a zero-initialized value if the
19461// iterator has advanced beyond the end of the collection.
19462func (iter TldLegalAgreementCollectionIterator) Value() TldLegalAgreement {
19463	if !iter.page.NotDone() {
19464		return TldLegalAgreement{}
19465	}
19466	return iter.page.Values()[iter.i]
19467}
19468
19469// Creates a new instance of the TldLegalAgreementCollectionIterator type.
19470func NewTldLegalAgreementCollectionIterator(page TldLegalAgreementCollectionPage) TldLegalAgreementCollectionIterator {
19471	return TldLegalAgreementCollectionIterator{page: page}
19472}
19473
19474// IsEmpty returns true if the ListResult contains no values.
19475func (tlac TldLegalAgreementCollection) IsEmpty() bool {
19476	return tlac.Value == nil || len(*tlac.Value) == 0
19477}
19478
19479// tldLegalAgreementCollectionPreparer prepares a request to retrieve the next set of results.
19480// It returns nil if no more results exist.
19481func (tlac TldLegalAgreementCollection) tldLegalAgreementCollectionPreparer(ctx context.Context) (*http.Request, error) {
19482	if tlac.NextLink == nil || len(to.String(tlac.NextLink)) < 1 {
19483		return nil, nil
19484	}
19485	return autorest.Prepare((&http.Request{}).WithContext(ctx),
19486		autorest.AsJSON(),
19487		autorest.AsGet(),
19488		autorest.WithBaseURL(to.String(tlac.NextLink)))
19489}
19490
19491// TldLegalAgreementCollectionPage contains a page of TldLegalAgreement values.
19492type TldLegalAgreementCollectionPage struct {
19493	fn   func(context.Context, TldLegalAgreementCollection) (TldLegalAgreementCollection, error)
19494	tlac TldLegalAgreementCollection
19495}
19496
19497// NextWithContext advances to the next page of values.  If there was an error making
19498// the request the page does not advance and the error is returned.
19499func (page *TldLegalAgreementCollectionPage) NextWithContext(ctx context.Context) (err error) {
19500	if tracing.IsEnabled() {
19501		ctx = tracing.StartSpan(ctx, fqdn+"/TldLegalAgreementCollectionPage.NextWithContext")
19502		defer func() {
19503			sc := -1
19504			if page.Response().Response.Response != nil {
19505				sc = page.Response().Response.Response.StatusCode
19506			}
19507			tracing.EndSpan(ctx, sc, err)
19508		}()
19509	}
19510	next, err := page.fn(ctx, page.tlac)
19511	if err != nil {
19512		return err
19513	}
19514	page.tlac = next
19515	return nil
19516}
19517
19518// Next advances to the next page of values.  If there was an error making
19519// the request the page does not advance and the error is returned.
19520// Deprecated: Use NextWithContext() instead.
19521func (page *TldLegalAgreementCollectionPage) Next() error {
19522	return page.NextWithContext(context.Background())
19523}
19524
19525// NotDone returns true if the page enumeration should be started or is not yet complete.
19526func (page TldLegalAgreementCollectionPage) NotDone() bool {
19527	return !page.tlac.IsEmpty()
19528}
19529
19530// Response returns the raw server response from the last page request.
19531func (page TldLegalAgreementCollectionPage) Response() TldLegalAgreementCollection {
19532	return page.tlac
19533}
19534
19535// Values returns the slice of values for the current page or nil if there are no values.
19536func (page TldLegalAgreementCollectionPage) Values() []TldLegalAgreement {
19537	if page.tlac.IsEmpty() {
19538		return nil
19539	}
19540	return *page.tlac.Value
19541}
19542
19543// Creates a new instance of the TldLegalAgreementCollectionPage type.
19544func NewTldLegalAgreementCollectionPage(getNextPage func(context.Context, TldLegalAgreementCollection) (TldLegalAgreementCollection, error)) TldLegalAgreementCollectionPage {
19545	return TldLegalAgreementCollectionPage{fn: getNextPage}
19546}
19547
19548// TopLevelDomain a top level domain object.
19549type TopLevelDomain struct {
19550	autorest.Response `json:"-"`
19551	// TopLevelDomainProperties - TopLevelDomain resource specific properties
19552	*TopLevelDomainProperties `json:"properties,omitempty"`
19553	// ID - READ-ONLY; Resource Id.
19554	ID *string `json:"id,omitempty"`
19555	// Name - READ-ONLY; Resource Name.
19556	Name *string `json:"name,omitempty"`
19557	// Kind - Kind of resource.
19558	Kind *string `json:"kind,omitempty"`
19559	// Type - READ-ONLY; Resource type.
19560	Type *string `json:"type,omitempty"`
19561}
19562
19563// MarshalJSON is the custom marshaler for TopLevelDomain.
19564func (tld TopLevelDomain) MarshalJSON() ([]byte, error) {
19565	objectMap := make(map[string]interface{})
19566	if tld.TopLevelDomainProperties != nil {
19567		objectMap["properties"] = tld.TopLevelDomainProperties
19568	}
19569	if tld.Kind != nil {
19570		objectMap["kind"] = tld.Kind
19571	}
19572	return json.Marshal(objectMap)
19573}
19574
19575// UnmarshalJSON is the custom unmarshaler for TopLevelDomain struct.
19576func (tld *TopLevelDomain) UnmarshalJSON(body []byte) error {
19577	var m map[string]*json.RawMessage
19578	err := json.Unmarshal(body, &m)
19579	if err != nil {
19580		return err
19581	}
19582	for k, v := range m {
19583		switch k {
19584		case "properties":
19585			if v != nil {
19586				var topLevelDomainProperties TopLevelDomainProperties
19587				err = json.Unmarshal(*v, &topLevelDomainProperties)
19588				if err != nil {
19589					return err
19590				}
19591				tld.TopLevelDomainProperties = &topLevelDomainProperties
19592			}
19593		case "id":
19594			if v != nil {
19595				var ID string
19596				err = json.Unmarshal(*v, &ID)
19597				if err != nil {
19598					return err
19599				}
19600				tld.ID = &ID
19601			}
19602		case "name":
19603			if v != nil {
19604				var name string
19605				err = json.Unmarshal(*v, &name)
19606				if err != nil {
19607					return err
19608				}
19609				tld.Name = &name
19610			}
19611		case "kind":
19612			if v != nil {
19613				var kind string
19614				err = json.Unmarshal(*v, &kind)
19615				if err != nil {
19616					return err
19617				}
19618				tld.Kind = &kind
19619			}
19620		case "type":
19621			if v != nil {
19622				var typeVar string
19623				err = json.Unmarshal(*v, &typeVar)
19624				if err != nil {
19625					return err
19626				}
19627				tld.Type = &typeVar
19628			}
19629		}
19630	}
19631
19632	return nil
19633}
19634
19635// TopLevelDomainAgreementOption options for retrieving the list of top level domain legal agreements.
19636type TopLevelDomainAgreementOption struct {
19637	// IncludePrivacy - If <code>true</code>, then the list of agreements will include agreements for domain privacy as well; otherwise, <code>false</code>.
19638	IncludePrivacy *bool `json:"includePrivacy,omitempty"`
19639	// ForTransfer - If <code>true</code>, then the list of agreements will include agreements for domain transfer as well; otherwise, <code>false</code>.
19640	ForTransfer *bool `json:"forTransfer,omitempty"`
19641}
19642
19643// TopLevelDomainCollection collection of Top-level domains.
19644type TopLevelDomainCollection struct {
19645	autorest.Response `json:"-"`
19646	// Value - Collection of resources.
19647	Value *[]TopLevelDomain `json:"value,omitempty"`
19648	// NextLink - READ-ONLY; Link to next page of resources.
19649	NextLink *string `json:"nextLink,omitempty"`
19650}
19651
19652// TopLevelDomainCollectionIterator provides access to a complete listing of TopLevelDomain values.
19653type TopLevelDomainCollectionIterator struct {
19654	i    int
19655	page TopLevelDomainCollectionPage
19656}
19657
19658// NextWithContext advances to the next value.  If there was an error making
19659// the request the iterator does not advance and the error is returned.
19660func (iter *TopLevelDomainCollectionIterator) NextWithContext(ctx context.Context) (err error) {
19661	if tracing.IsEnabled() {
19662		ctx = tracing.StartSpan(ctx, fqdn+"/TopLevelDomainCollectionIterator.NextWithContext")
19663		defer func() {
19664			sc := -1
19665			if iter.Response().Response.Response != nil {
19666				sc = iter.Response().Response.Response.StatusCode
19667			}
19668			tracing.EndSpan(ctx, sc, err)
19669		}()
19670	}
19671	iter.i++
19672	if iter.i < len(iter.page.Values()) {
19673		return nil
19674	}
19675	err = iter.page.NextWithContext(ctx)
19676	if err != nil {
19677		iter.i--
19678		return err
19679	}
19680	iter.i = 0
19681	return nil
19682}
19683
19684// Next advances to the next value.  If there was an error making
19685// the request the iterator does not advance and the error is returned.
19686// Deprecated: Use NextWithContext() instead.
19687func (iter *TopLevelDomainCollectionIterator) Next() error {
19688	return iter.NextWithContext(context.Background())
19689}
19690
19691// NotDone returns true if the enumeration should be started or is not yet complete.
19692func (iter TopLevelDomainCollectionIterator) NotDone() bool {
19693	return iter.page.NotDone() && iter.i < len(iter.page.Values())
19694}
19695
19696// Response returns the raw server response from the last page request.
19697func (iter TopLevelDomainCollectionIterator) Response() TopLevelDomainCollection {
19698	return iter.page.Response()
19699}
19700
19701// Value returns the current value or a zero-initialized value if the
19702// iterator has advanced beyond the end of the collection.
19703func (iter TopLevelDomainCollectionIterator) Value() TopLevelDomain {
19704	if !iter.page.NotDone() {
19705		return TopLevelDomain{}
19706	}
19707	return iter.page.Values()[iter.i]
19708}
19709
19710// Creates a new instance of the TopLevelDomainCollectionIterator type.
19711func NewTopLevelDomainCollectionIterator(page TopLevelDomainCollectionPage) TopLevelDomainCollectionIterator {
19712	return TopLevelDomainCollectionIterator{page: page}
19713}
19714
19715// IsEmpty returns true if the ListResult contains no values.
19716func (tldc TopLevelDomainCollection) IsEmpty() bool {
19717	return tldc.Value == nil || len(*tldc.Value) == 0
19718}
19719
19720// topLevelDomainCollectionPreparer prepares a request to retrieve the next set of results.
19721// It returns nil if no more results exist.
19722func (tldc TopLevelDomainCollection) topLevelDomainCollectionPreparer(ctx context.Context) (*http.Request, error) {
19723	if tldc.NextLink == nil || len(to.String(tldc.NextLink)) < 1 {
19724		return nil, nil
19725	}
19726	return autorest.Prepare((&http.Request{}).WithContext(ctx),
19727		autorest.AsJSON(),
19728		autorest.AsGet(),
19729		autorest.WithBaseURL(to.String(tldc.NextLink)))
19730}
19731
19732// TopLevelDomainCollectionPage contains a page of TopLevelDomain values.
19733type TopLevelDomainCollectionPage struct {
19734	fn   func(context.Context, TopLevelDomainCollection) (TopLevelDomainCollection, error)
19735	tldc TopLevelDomainCollection
19736}
19737
19738// NextWithContext advances to the next page of values.  If there was an error making
19739// the request the page does not advance and the error is returned.
19740func (page *TopLevelDomainCollectionPage) NextWithContext(ctx context.Context) (err error) {
19741	if tracing.IsEnabled() {
19742		ctx = tracing.StartSpan(ctx, fqdn+"/TopLevelDomainCollectionPage.NextWithContext")
19743		defer func() {
19744			sc := -1
19745			if page.Response().Response.Response != nil {
19746				sc = page.Response().Response.Response.StatusCode
19747			}
19748			tracing.EndSpan(ctx, sc, err)
19749		}()
19750	}
19751	next, err := page.fn(ctx, page.tldc)
19752	if err != nil {
19753		return err
19754	}
19755	page.tldc = next
19756	return nil
19757}
19758
19759// Next advances to the next page of values.  If there was an error making
19760// the request the page does not advance and the error is returned.
19761// Deprecated: Use NextWithContext() instead.
19762func (page *TopLevelDomainCollectionPage) Next() error {
19763	return page.NextWithContext(context.Background())
19764}
19765
19766// NotDone returns true if the page enumeration should be started or is not yet complete.
19767func (page TopLevelDomainCollectionPage) NotDone() bool {
19768	return !page.tldc.IsEmpty()
19769}
19770
19771// Response returns the raw server response from the last page request.
19772func (page TopLevelDomainCollectionPage) Response() TopLevelDomainCollection {
19773	return page.tldc
19774}
19775
19776// Values returns the slice of values for the current page or nil if there are no values.
19777func (page TopLevelDomainCollectionPage) Values() []TopLevelDomain {
19778	if page.tldc.IsEmpty() {
19779		return nil
19780	}
19781	return *page.tldc.Value
19782}
19783
19784// Creates a new instance of the TopLevelDomainCollectionPage type.
19785func NewTopLevelDomainCollectionPage(getNextPage func(context.Context, TopLevelDomainCollection) (TopLevelDomainCollection, error)) TopLevelDomainCollectionPage {
19786	return TopLevelDomainCollectionPage{fn: getNextPage}
19787}
19788
19789// TopLevelDomainProperties topLevelDomain resource specific properties
19790type TopLevelDomainProperties struct {
19791	// DomainName - READ-ONLY; Name of the top level domain.
19792	DomainName *string `json:"name,omitempty"`
19793	// Privacy - If <code>true</code>, then the top level domain supports domain privacy; otherwise, <code>false</code>.
19794	Privacy *bool `json:"privacy,omitempty"`
19795}
19796
19797// TriggeredJobHistory triggered Web Job History. List of Triggered Web Job Run Information elements.
19798type TriggeredJobHistory struct {
19799	autorest.Response `json:"-"`
19800	// TriggeredJobHistoryProperties - TriggeredJobHistory resource specific properties
19801	*TriggeredJobHistoryProperties `json:"properties,omitempty"`
19802	// ID - READ-ONLY; Resource Id.
19803	ID *string `json:"id,omitempty"`
19804	// Name - READ-ONLY; Resource Name.
19805	Name *string `json:"name,omitempty"`
19806	// Kind - Kind of resource.
19807	Kind *string `json:"kind,omitempty"`
19808	// Type - READ-ONLY; Resource type.
19809	Type *string `json:"type,omitempty"`
19810}
19811
19812// MarshalJSON is the custom marshaler for TriggeredJobHistory.
19813func (tjh TriggeredJobHistory) MarshalJSON() ([]byte, error) {
19814	objectMap := make(map[string]interface{})
19815	if tjh.TriggeredJobHistoryProperties != nil {
19816		objectMap["properties"] = tjh.TriggeredJobHistoryProperties
19817	}
19818	if tjh.Kind != nil {
19819		objectMap["kind"] = tjh.Kind
19820	}
19821	return json.Marshal(objectMap)
19822}
19823
19824// UnmarshalJSON is the custom unmarshaler for TriggeredJobHistory struct.
19825func (tjh *TriggeredJobHistory) UnmarshalJSON(body []byte) error {
19826	var m map[string]*json.RawMessage
19827	err := json.Unmarshal(body, &m)
19828	if err != nil {
19829		return err
19830	}
19831	for k, v := range m {
19832		switch k {
19833		case "properties":
19834			if v != nil {
19835				var triggeredJobHistoryProperties TriggeredJobHistoryProperties
19836				err = json.Unmarshal(*v, &triggeredJobHistoryProperties)
19837				if err != nil {
19838					return err
19839				}
19840				tjh.TriggeredJobHistoryProperties = &triggeredJobHistoryProperties
19841			}
19842		case "id":
19843			if v != nil {
19844				var ID string
19845				err = json.Unmarshal(*v, &ID)
19846				if err != nil {
19847					return err
19848				}
19849				tjh.ID = &ID
19850			}
19851		case "name":
19852			if v != nil {
19853				var name string
19854				err = json.Unmarshal(*v, &name)
19855				if err != nil {
19856					return err
19857				}
19858				tjh.Name = &name
19859			}
19860		case "kind":
19861			if v != nil {
19862				var kind string
19863				err = json.Unmarshal(*v, &kind)
19864				if err != nil {
19865					return err
19866				}
19867				tjh.Kind = &kind
19868			}
19869		case "type":
19870			if v != nil {
19871				var typeVar string
19872				err = json.Unmarshal(*v, &typeVar)
19873				if err != nil {
19874					return err
19875				}
19876				tjh.Type = &typeVar
19877			}
19878		}
19879	}
19880
19881	return nil
19882}
19883
19884// TriggeredJobHistoryCollection collection of Kudu continuous web job information elements.
19885type TriggeredJobHistoryCollection struct {
19886	autorest.Response `json:"-"`
19887	// Value - Collection of resources.
19888	Value *[]TriggeredJobHistory `json:"value,omitempty"`
19889	// NextLink - READ-ONLY; Link to next page of resources.
19890	NextLink *string `json:"nextLink,omitempty"`
19891}
19892
19893// TriggeredJobHistoryCollectionIterator provides access to a complete listing of TriggeredJobHistory
19894// values.
19895type TriggeredJobHistoryCollectionIterator struct {
19896	i    int
19897	page TriggeredJobHistoryCollectionPage
19898}
19899
19900// NextWithContext advances to the next value.  If there was an error making
19901// the request the iterator does not advance and the error is returned.
19902func (iter *TriggeredJobHistoryCollectionIterator) NextWithContext(ctx context.Context) (err error) {
19903	if tracing.IsEnabled() {
19904		ctx = tracing.StartSpan(ctx, fqdn+"/TriggeredJobHistoryCollectionIterator.NextWithContext")
19905		defer func() {
19906			sc := -1
19907			if iter.Response().Response.Response != nil {
19908				sc = iter.Response().Response.Response.StatusCode
19909			}
19910			tracing.EndSpan(ctx, sc, err)
19911		}()
19912	}
19913	iter.i++
19914	if iter.i < len(iter.page.Values()) {
19915		return nil
19916	}
19917	err = iter.page.NextWithContext(ctx)
19918	if err != nil {
19919		iter.i--
19920		return err
19921	}
19922	iter.i = 0
19923	return nil
19924}
19925
19926// Next advances to the next value.  If there was an error making
19927// the request the iterator does not advance and the error is returned.
19928// Deprecated: Use NextWithContext() instead.
19929func (iter *TriggeredJobHistoryCollectionIterator) Next() error {
19930	return iter.NextWithContext(context.Background())
19931}
19932
19933// NotDone returns true if the enumeration should be started or is not yet complete.
19934func (iter TriggeredJobHistoryCollectionIterator) NotDone() bool {
19935	return iter.page.NotDone() && iter.i < len(iter.page.Values())
19936}
19937
19938// Response returns the raw server response from the last page request.
19939func (iter TriggeredJobHistoryCollectionIterator) Response() TriggeredJobHistoryCollection {
19940	return iter.page.Response()
19941}
19942
19943// Value returns the current value or a zero-initialized value if the
19944// iterator has advanced beyond the end of the collection.
19945func (iter TriggeredJobHistoryCollectionIterator) Value() TriggeredJobHistory {
19946	if !iter.page.NotDone() {
19947		return TriggeredJobHistory{}
19948	}
19949	return iter.page.Values()[iter.i]
19950}
19951
19952// Creates a new instance of the TriggeredJobHistoryCollectionIterator type.
19953func NewTriggeredJobHistoryCollectionIterator(page TriggeredJobHistoryCollectionPage) TriggeredJobHistoryCollectionIterator {
19954	return TriggeredJobHistoryCollectionIterator{page: page}
19955}
19956
19957// IsEmpty returns true if the ListResult contains no values.
19958func (tjhc TriggeredJobHistoryCollection) IsEmpty() bool {
19959	return tjhc.Value == nil || len(*tjhc.Value) == 0
19960}
19961
19962// triggeredJobHistoryCollectionPreparer prepares a request to retrieve the next set of results.
19963// It returns nil if no more results exist.
19964func (tjhc TriggeredJobHistoryCollection) triggeredJobHistoryCollectionPreparer(ctx context.Context) (*http.Request, error) {
19965	if tjhc.NextLink == nil || len(to.String(tjhc.NextLink)) < 1 {
19966		return nil, nil
19967	}
19968	return autorest.Prepare((&http.Request{}).WithContext(ctx),
19969		autorest.AsJSON(),
19970		autorest.AsGet(),
19971		autorest.WithBaseURL(to.String(tjhc.NextLink)))
19972}
19973
19974// TriggeredJobHistoryCollectionPage contains a page of TriggeredJobHistory values.
19975type TriggeredJobHistoryCollectionPage struct {
19976	fn   func(context.Context, TriggeredJobHistoryCollection) (TriggeredJobHistoryCollection, error)
19977	tjhc TriggeredJobHistoryCollection
19978}
19979
19980// NextWithContext advances to the next page of values.  If there was an error making
19981// the request the page does not advance and the error is returned.
19982func (page *TriggeredJobHistoryCollectionPage) NextWithContext(ctx context.Context) (err error) {
19983	if tracing.IsEnabled() {
19984		ctx = tracing.StartSpan(ctx, fqdn+"/TriggeredJobHistoryCollectionPage.NextWithContext")
19985		defer func() {
19986			sc := -1
19987			if page.Response().Response.Response != nil {
19988				sc = page.Response().Response.Response.StatusCode
19989			}
19990			tracing.EndSpan(ctx, sc, err)
19991		}()
19992	}
19993	next, err := page.fn(ctx, page.tjhc)
19994	if err != nil {
19995		return err
19996	}
19997	page.tjhc = next
19998	return nil
19999}
20000
20001// Next advances to the next page of values.  If there was an error making
20002// the request the page does not advance and the error is returned.
20003// Deprecated: Use NextWithContext() instead.
20004func (page *TriggeredJobHistoryCollectionPage) Next() error {
20005	return page.NextWithContext(context.Background())
20006}
20007
20008// NotDone returns true if the page enumeration should be started or is not yet complete.
20009func (page TriggeredJobHistoryCollectionPage) NotDone() bool {
20010	return !page.tjhc.IsEmpty()
20011}
20012
20013// Response returns the raw server response from the last page request.
20014func (page TriggeredJobHistoryCollectionPage) Response() TriggeredJobHistoryCollection {
20015	return page.tjhc
20016}
20017
20018// Values returns the slice of values for the current page or nil if there are no values.
20019func (page TriggeredJobHistoryCollectionPage) Values() []TriggeredJobHistory {
20020	if page.tjhc.IsEmpty() {
20021		return nil
20022	}
20023	return *page.tjhc.Value
20024}
20025
20026// Creates a new instance of the TriggeredJobHistoryCollectionPage type.
20027func NewTriggeredJobHistoryCollectionPage(getNextPage func(context.Context, TriggeredJobHistoryCollection) (TriggeredJobHistoryCollection, error)) TriggeredJobHistoryCollectionPage {
20028	return TriggeredJobHistoryCollectionPage{fn: getNextPage}
20029}
20030
20031// TriggeredJobHistoryProperties triggeredJobHistory resource specific properties
20032type TriggeredJobHistoryProperties struct {
20033	// TriggeredJobRuns - List of triggered web job runs.
20034	TriggeredJobRuns *[]TriggeredJobRun `json:"triggeredJobRuns,omitempty"`
20035}
20036
20037// TriggeredJobRun triggered Web Job Run Information.
20038type TriggeredJobRun struct {
20039	// TriggeredJobRunProperties - TriggeredJobRun resource specific properties
20040	*TriggeredJobRunProperties `json:"properties,omitempty"`
20041	// ID - READ-ONLY; Resource Id.
20042	ID *string `json:"id,omitempty"`
20043	// Name - READ-ONLY; Resource Name.
20044	Name *string `json:"name,omitempty"`
20045	// Kind - Kind of resource.
20046	Kind *string `json:"kind,omitempty"`
20047	// Type - READ-ONLY; Resource type.
20048	Type *string `json:"type,omitempty"`
20049}
20050
20051// MarshalJSON is the custom marshaler for TriggeredJobRun.
20052func (tjr TriggeredJobRun) MarshalJSON() ([]byte, error) {
20053	objectMap := make(map[string]interface{})
20054	if tjr.TriggeredJobRunProperties != nil {
20055		objectMap["properties"] = tjr.TriggeredJobRunProperties
20056	}
20057	if tjr.Kind != nil {
20058		objectMap["kind"] = tjr.Kind
20059	}
20060	return json.Marshal(objectMap)
20061}
20062
20063// UnmarshalJSON is the custom unmarshaler for TriggeredJobRun struct.
20064func (tjr *TriggeredJobRun) UnmarshalJSON(body []byte) error {
20065	var m map[string]*json.RawMessage
20066	err := json.Unmarshal(body, &m)
20067	if err != nil {
20068		return err
20069	}
20070	for k, v := range m {
20071		switch k {
20072		case "properties":
20073			if v != nil {
20074				var triggeredJobRunProperties TriggeredJobRunProperties
20075				err = json.Unmarshal(*v, &triggeredJobRunProperties)
20076				if err != nil {
20077					return err
20078				}
20079				tjr.TriggeredJobRunProperties = &triggeredJobRunProperties
20080			}
20081		case "id":
20082			if v != nil {
20083				var ID string
20084				err = json.Unmarshal(*v, &ID)
20085				if err != nil {
20086					return err
20087				}
20088				tjr.ID = &ID
20089			}
20090		case "name":
20091			if v != nil {
20092				var name string
20093				err = json.Unmarshal(*v, &name)
20094				if err != nil {
20095					return err
20096				}
20097				tjr.Name = &name
20098			}
20099		case "kind":
20100			if v != nil {
20101				var kind string
20102				err = json.Unmarshal(*v, &kind)
20103				if err != nil {
20104					return err
20105				}
20106				tjr.Kind = &kind
20107			}
20108		case "type":
20109			if v != nil {
20110				var typeVar string
20111				err = json.Unmarshal(*v, &typeVar)
20112				if err != nil {
20113					return err
20114				}
20115				tjr.Type = &typeVar
20116			}
20117		}
20118	}
20119
20120	return nil
20121}
20122
20123// TriggeredJobRunProperties triggeredJobRun resource specific properties
20124type TriggeredJobRunProperties struct {
20125	// ID - Job ID.
20126	ID *string `json:"id,omitempty"`
20127	// Name - READ-ONLY; Job name.
20128	Name *string `json:"name,omitempty"`
20129	// Status - Job status. Possible values include: 'TriggeredWebJobStatusSuccess', 'TriggeredWebJobStatusFailed', 'TriggeredWebJobStatusError'
20130	Status TriggeredWebJobStatus `json:"status,omitempty"`
20131	// StartTime - Start time.
20132	StartTime *date.Time `json:"startTime,omitempty"`
20133	// EndTime - End time.
20134	EndTime *date.Time `json:"endTime,omitempty"`
20135	// Duration - Job duration.
20136	Duration *string `json:"duration,omitempty"`
20137	// OutputURL - Output URL.
20138	OutputURL *string `json:"outputUrl,omitempty"`
20139	// ErrorURL - Error URL.
20140	ErrorURL *string `json:"errorUrl,omitempty"`
20141	// URL - Job URL.
20142	URL *string `json:"url,omitempty"`
20143	// JobName - Job name.
20144	JobName *string `json:"jobName,omitempty"`
20145	// Trigger - Job trigger.
20146	Trigger *string `json:"trigger,omitempty"`
20147}
20148
20149// TriggeredWebJob triggered Web Job Information.
20150type TriggeredWebJob struct {
20151	autorest.Response `json:"-"`
20152	// TriggeredWebJobProperties - TriggeredWebJob resource specific properties
20153	*TriggeredWebJobProperties `json:"properties,omitempty"`
20154	// ID - READ-ONLY; Resource Id.
20155	ID *string `json:"id,omitempty"`
20156	// Name - READ-ONLY; Resource Name.
20157	Name *string `json:"name,omitempty"`
20158	// Kind - Kind of resource.
20159	Kind *string `json:"kind,omitempty"`
20160	// Type - READ-ONLY; Resource type.
20161	Type *string `json:"type,omitempty"`
20162}
20163
20164// MarshalJSON is the custom marshaler for TriggeredWebJob.
20165func (twj TriggeredWebJob) MarshalJSON() ([]byte, error) {
20166	objectMap := make(map[string]interface{})
20167	if twj.TriggeredWebJobProperties != nil {
20168		objectMap["properties"] = twj.TriggeredWebJobProperties
20169	}
20170	if twj.Kind != nil {
20171		objectMap["kind"] = twj.Kind
20172	}
20173	return json.Marshal(objectMap)
20174}
20175
20176// UnmarshalJSON is the custom unmarshaler for TriggeredWebJob struct.
20177func (twj *TriggeredWebJob) UnmarshalJSON(body []byte) error {
20178	var m map[string]*json.RawMessage
20179	err := json.Unmarshal(body, &m)
20180	if err != nil {
20181		return err
20182	}
20183	for k, v := range m {
20184		switch k {
20185		case "properties":
20186			if v != nil {
20187				var triggeredWebJobProperties TriggeredWebJobProperties
20188				err = json.Unmarshal(*v, &triggeredWebJobProperties)
20189				if err != nil {
20190					return err
20191				}
20192				twj.TriggeredWebJobProperties = &triggeredWebJobProperties
20193			}
20194		case "id":
20195			if v != nil {
20196				var ID string
20197				err = json.Unmarshal(*v, &ID)
20198				if err != nil {
20199					return err
20200				}
20201				twj.ID = &ID
20202			}
20203		case "name":
20204			if v != nil {
20205				var name string
20206				err = json.Unmarshal(*v, &name)
20207				if err != nil {
20208					return err
20209				}
20210				twj.Name = &name
20211			}
20212		case "kind":
20213			if v != nil {
20214				var kind string
20215				err = json.Unmarshal(*v, &kind)
20216				if err != nil {
20217					return err
20218				}
20219				twj.Kind = &kind
20220			}
20221		case "type":
20222			if v != nil {
20223				var typeVar string
20224				err = json.Unmarshal(*v, &typeVar)
20225				if err != nil {
20226					return err
20227				}
20228				twj.Type = &typeVar
20229			}
20230		}
20231	}
20232
20233	return nil
20234}
20235
20236// TriggeredWebJobCollection collection of Kudu continuous web job information elements.
20237type TriggeredWebJobCollection struct {
20238	autorest.Response `json:"-"`
20239	// Value - Collection of resources.
20240	Value *[]TriggeredWebJob `json:"value,omitempty"`
20241	// NextLink - READ-ONLY; Link to next page of resources.
20242	NextLink *string `json:"nextLink,omitempty"`
20243}
20244
20245// TriggeredWebJobCollectionIterator provides access to a complete listing of TriggeredWebJob values.
20246type TriggeredWebJobCollectionIterator struct {
20247	i    int
20248	page TriggeredWebJobCollectionPage
20249}
20250
20251// NextWithContext advances to the next value.  If there was an error making
20252// the request the iterator does not advance and the error is returned.
20253func (iter *TriggeredWebJobCollectionIterator) NextWithContext(ctx context.Context) (err error) {
20254	if tracing.IsEnabled() {
20255		ctx = tracing.StartSpan(ctx, fqdn+"/TriggeredWebJobCollectionIterator.NextWithContext")
20256		defer func() {
20257			sc := -1
20258			if iter.Response().Response.Response != nil {
20259				sc = iter.Response().Response.Response.StatusCode
20260			}
20261			tracing.EndSpan(ctx, sc, err)
20262		}()
20263	}
20264	iter.i++
20265	if iter.i < len(iter.page.Values()) {
20266		return nil
20267	}
20268	err = iter.page.NextWithContext(ctx)
20269	if err != nil {
20270		iter.i--
20271		return err
20272	}
20273	iter.i = 0
20274	return nil
20275}
20276
20277// Next advances to the next value.  If there was an error making
20278// the request the iterator does not advance and the error is returned.
20279// Deprecated: Use NextWithContext() instead.
20280func (iter *TriggeredWebJobCollectionIterator) Next() error {
20281	return iter.NextWithContext(context.Background())
20282}
20283
20284// NotDone returns true if the enumeration should be started or is not yet complete.
20285func (iter TriggeredWebJobCollectionIterator) NotDone() bool {
20286	return iter.page.NotDone() && iter.i < len(iter.page.Values())
20287}
20288
20289// Response returns the raw server response from the last page request.
20290func (iter TriggeredWebJobCollectionIterator) Response() TriggeredWebJobCollection {
20291	return iter.page.Response()
20292}
20293
20294// Value returns the current value or a zero-initialized value if the
20295// iterator has advanced beyond the end of the collection.
20296func (iter TriggeredWebJobCollectionIterator) Value() TriggeredWebJob {
20297	if !iter.page.NotDone() {
20298		return TriggeredWebJob{}
20299	}
20300	return iter.page.Values()[iter.i]
20301}
20302
20303// Creates a new instance of the TriggeredWebJobCollectionIterator type.
20304func NewTriggeredWebJobCollectionIterator(page TriggeredWebJobCollectionPage) TriggeredWebJobCollectionIterator {
20305	return TriggeredWebJobCollectionIterator{page: page}
20306}
20307
20308// IsEmpty returns true if the ListResult contains no values.
20309func (twjc TriggeredWebJobCollection) IsEmpty() bool {
20310	return twjc.Value == nil || len(*twjc.Value) == 0
20311}
20312
20313// triggeredWebJobCollectionPreparer prepares a request to retrieve the next set of results.
20314// It returns nil if no more results exist.
20315func (twjc TriggeredWebJobCollection) triggeredWebJobCollectionPreparer(ctx context.Context) (*http.Request, error) {
20316	if twjc.NextLink == nil || len(to.String(twjc.NextLink)) < 1 {
20317		return nil, nil
20318	}
20319	return autorest.Prepare((&http.Request{}).WithContext(ctx),
20320		autorest.AsJSON(),
20321		autorest.AsGet(),
20322		autorest.WithBaseURL(to.String(twjc.NextLink)))
20323}
20324
20325// TriggeredWebJobCollectionPage contains a page of TriggeredWebJob values.
20326type TriggeredWebJobCollectionPage struct {
20327	fn   func(context.Context, TriggeredWebJobCollection) (TriggeredWebJobCollection, error)
20328	twjc TriggeredWebJobCollection
20329}
20330
20331// NextWithContext advances to the next page of values.  If there was an error making
20332// the request the page does not advance and the error is returned.
20333func (page *TriggeredWebJobCollectionPage) NextWithContext(ctx context.Context) (err error) {
20334	if tracing.IsEnabled() {
20335		ctx = tracing.StartSpan(ctx, fqdn+"/TriggeredWebJobCollectionPage.NextWithContext")
20336		defer func() {
20337			sc := -1
20338			if page.Response().Response.Response != nil {
20339				sc = page.Response().Response.Response.StatusCode
20340			}
20341			tracing.EndSpan(ctx, sc, err)
20342		}()
20343	}
20344	next, err := page.fn(ctx, page.twjc)
20345	if err != nil {
20346		return err
20347	}
20348	page.twjc = next
20349	return nil
20350}
20351
20352// Next advances to the next page of values.  If there was an error making
20353// the request the page does not advance and the error is returned.
20354// Deprecated: Use NextWithContext() instead.
20355func (page *TriggeredWebJobCollectionPage) Next() error {
20356	return page.NextWithContext(context.Background())
20357}
20358
20359// NotDone returns true if the page enumeration should be started or is not yet complete.
20360func (page TriggeredWebJobCollectionPage) NotDone() bool {
20361	return !page.twjc.IsEmpty()
20362}
20363
20364// Response returns the raw server response from the last page request.
20365func (page TriggeredWebJobCollectionPage) Response() TriggeredWebJobCollection {
20366	return page.twjc
20367}
20368
20369// Values returns the slice of values for the current page or nil if there are no values.
20370func (page TriggeredWebJobCollectionPage) Values() []TriggeredWebJob {
20371	if page.twjc.IsEmpty() {
20372		return nil
20373	}
20374	return *page.twjc.Value
20375}
20376
20377// Creates a new instance of the TriggeredWebJobCollectionPage type.
20378func NewTriggeredWebJobCollectionPage(getNextPage func(context.Context, TriggeredWebJobCollection) (TriggeredWebJobCollection, error)) TriggeredWebJobCollectionPage {
20379	return TriggeredWebJobCollectionPage{fn: getNextPage}
20380}
20381
20382// TriggeredWebJobProperties triggeredWebJob resource specific properties
20383type TriggeredWebJobProperties struct {
20384	// LatestRun - Latest job run information.
20385	LatestRun *TriggeredJobRun `json:"latestRun,omitempty"`
20386	// HistoryURL - History URL.
20387	HistoryURL *string `json:"historyUrl,omitempty"`
20388	// SchedulerLogsURL - Scheduler Logs URL.
20389	SchedulerLogsURL *string `json:"schedulerLogsUrl,omitempty"`
20390	// Name - READ-ONLY; Job name. Used as job identifier in ARM resource URI.
20391	Name *string `json:"name,omitempty"`
20392	// RunCommand - Run command.
20393	RunCommand *string `json:"runCommand,omitempty"`
20394	// URL - Job URL.
20395	URL *string `json:"url,omitempty"`
20396	// ExtraInfoURL - Extra Info URL.
20397	ExtraInfoURL *string `json:"extraInfoUrl,omitempty"`
20398	// JobType - Job type. Possible values include: 'Continuous', 'Triggered'
20399	JobType JobType `json:"jobType,omitempty"`
20400	// Error - Error information.
20401	Error *string `json:"error,omitempty"`
20402	// UsingSdk - Using SDK?
20403	UsingSdk *bool `json:"usingSdk,omitempty"`
20404	// Settings - Job settings.
20405	Settings map[string]interface{} `json:"settings"`
20406}
20407
20408// MarshalJSON is the custom marshaler for TriggeredWebJobProperties.
20409func (twj TriggeredWebJobProperties) MarshalJSON() ([]byte, error) {
20410	objectMap := make(map[string]interface{})
20411	if twj.LatestRun != nil {
20412		objectMap["latestRun"] = twj.LatestRun
20413	}
20414	if twj.HistoryURL != nil {
20415		objectMap["historyUrl"] = twj.HistoryURL
20416	}
20417	if twj.SchedulerLogsURL != nil {
20418		objectMap["schedulerLogsUrl"] = twj.SchedulerLogsURL
20419	}
20420	if twj.RunCommand != nil {
20421		objectMap["runCommand"] = twj.RunCommand
20422	}
20423	if twj.URL != nil {
20424		objectMap["url"] = twj.URL
20425	}
20426	if twj.ExtraInfoURL != nil {
20427		objectMap["extraInfoUrl"] = twj.ExtraInfoURL
20428	}
20429	if twj.JobType != "" {
20430		objectMap["jobType"] = twj.JobType
20431	}
20432	if twj.Error != nil {
20433		objectMap["error"] = twj.Error
20434	}
20435	if twj.UsingSdk != nil {
20436		objectMap["usingSdk"] = twj.UsingSdk
20437	}
20438	if twj.Settings != nil {
20439		objectMap["settings"] = twj.Settings
20440	}
20441	return json.Marshal(objectMap)
20442}
20443
20444// Usage usage of the quota resource.
20445type Usage struct {
20446	// UsageProperties - Usage resource specific properties
20447	*UsageProperties `json:"properties,omitempty"`
20448	// ID - READ-ONLY; Resource Id.
20449	ID *string `json:"id,omitempty"`
20450	// Name - READ-ONLY; Resource Name.
20451	Name *string `json:"name,omitempty"`
20452	// Kind - Kind of resource.
20453	Kind *string `json:"kind,omitempty"`
20454	// Type - READ-ONLY; Resource type.
20455	Type *string `json:"type,omitempty"`
20456}
20457
20458// MarshalJSON is the custom marshaler for Usage.
20459func (u Usage) MarshalJSON() ([]byte, error) {
20460	objectMap := make(map[string]interface{})
20461	if u.UsageProperties != nil {
20462		objectMap["properties"] = u.UsageProperties
20463	}
20464	if u.Kind != nil {
20465		objectMap["kind"] = u.Kind
20466	}
20467	return json.Marshal(objectMap)
20468}
20469
20470// UnmarshalJSON is the custom unmarshaler for Usage struct.
20471func (u *Usage) UnmarshalJSON(body []byte) error {
20472	var m map[string]*json.RawMessage
20473	err := json.Unmarshal(body, &m)
20474	if err != nil {
20475		return err
20476	}
20477	for k, v := range m {
20478		switch k {
20479		case "properties":
20480			if v != nil {
20481				var usageProperties UsageProperties
20482				err = json.Unmarshal(*v, &usageProperties)
20483				if err != nil {
20484					return err
20485				}
20486				u.UsageProperties = &usageProperties
20487			}
20488		case "id":
20489			if v != nil {
20490				var ID string
20491				err = json.Unmarshal(*v, &ID)
20492				if err != nil {
20493					return err
20494				}
20495				u.ID = &ID
20496			}
20497		case "name":
20498			if v != nil {
20499				var name string
20500				err = json.Unmarshal(*v, &name)
20501				if err != nil {
20502					return err
20503				}
20504				u.Name = &name
20505			}
20506		case "kind":
20507			if v != nil {
20508				var kind string
20509				err = json.Unmarshal(*v, &kind)
20510				if err != nil {
20511					return err
20512				}
20513				u.Kind = &kind
20514			}
20515		case "type":
20516			if v != nil {
20517				var typeVar string
20518				err = json.Unmarshal(*v, &typeVar)
20519				if err != nil {
20520					return err
20521				}
20522				u.Type = &typeVar
20523			}
20524		}
20525	}
20526
20527	return nil
20528}
20529
20530// UsageCollection collection of usages.
20531type UsageCollection struct {
20532	autorest.Response `json:"-"`
20533	// Value - Collection of resources.
20534	Value *[]Usage `json:"value,omitempty"`
20535	// NextLink - READ-ONLY; Link to next page of resources.
20536	NextLink *string `json:"nextLink,omitempty"`
20537}
20538
20539// UsageCollectionIterator provides access to a complete listing of Usage values.
20540type UsageCollectionIterator struct {
20541	i    int
20542	page UsageCollectionPage
20543}
20544
20545// NextWithContext advances to the next value.  If there was an error making
20546// the request the iterator does not advance and the error is returned.
20547func (iter *UsageCollectionIterator) NextWithContext(ctx context.Context) (err error) {
20548	if tracing.IsEnabled() {
20549		ctx = tracing.StartSpan(ctx, fqdn+"/UsageCollectionIterator.NextWithContext")
20550		defer func() {
20551			sc := -1
20552			if iter.Response().Response.Response != nil {
20553				sc = iter.Response().Response.Response.StatusCode
20554			}
20555			tracing.EndSpan(ctx, sc, err)
20556		}()
20557	}
20558	iter.i++
20559	if iter.i < len(iter.page.Values()) {
20560		return nil
20561	}
20562	err = iter.page.NextWithContext(ctx)
20563	if err != nil {
20564		iter.i--
20565		return err
20566	}
20567	iter.i = 0
20568	return nil
20569}
20570
20571// Next advances to the next value.  If there was an error making
20572// the request the iterator does not advance and the error is returned.
20573// Deprecated: Use NextWithContext() instead.
20574func (iter *UsageCollectionIterator) Next() error {
20575	return iter.NextWithContext(context.Background())
20576}
20577
20578// NotDone returns true if the enumeration should be started or is not yet complete.
20579func (iter UsageCollectionIterator) NotDone() bool {
20580	return iter.page.NotDone() && iter.i < len(iter.page.Values())
20581}
20582
20583// Response returns the raw server response from the last page request.
20584func (iter UsageCollectionIterator) Response() UsageCollection {
20585	return iter.page.Response()
20586}
20587
20588// Value returns the current value or a zero-initialized value if the
20589// iterator has advanced beyond the end of the collection.
20590func (iter UsageCollectionIterator) Value() Usage {
20591	if !iter.page.NotDone() {
20592		return Usage{}
20593	}
20594	return iter.page.Values()[iter.i]
20595}
20596
20597// Creates a new instance of the UsageCollectionIterator type.
20598func NewUsageCollectionIterator(page UsageCollectionPage) UsageCollectionIterator {
20599	return UsageCollectionIterator{page: page}
20600}
20601
20602// IsEmpty returns true if the ListResult contains no values.
20603func (uc UsageCollection) IsEmpty() bool {
20604	return uc.Value == nil || len(*uc.Value) == 0
20605}
20606
20607// usageCollectionPreparer prepares a request to retrieve the next set of results.
20608// It returns nil if no more results exist.
20609func (uc UsageCollection) usageCollectionPreparer(ctx context.Context) (*http.Request, error) {
20610	if uc.NextLink == nil || len(to.String(uc.NextLink)) < 1 {
20611		return nil, nil
20612	}
20613	return autorest.Prepare((&http.Request{}).WithContext(ctx),
20614		autorest.AsJSON(),
20615		autorest.AsGet(),
20616		autorest.WithBaseURL(to.String(uc.NextLink)))
20617}
20618
20619// UsageCollectionPage contains a page of Usage values.
20620type UsageCollectionPage struct {
20621	fn func(context.Context, UsageCollection) (UsageCollection, error)
20622	uc UsageCollection
20623}
20624
20625// NextWithContext advances to the next page of values.  If there was an error making
20626// the request the page does not advance and the error is returned.
20627func (page *UsageCollectionPage) NextWithContext(ctx context.Context) (err error) {
20628	if tracing.IsEnabled() {
20629		ctx = tracing.StartSpan(ctx, fqdn+"/UsageCollectionPage.NextWithContext")
20630		defer func() {
20631			sc := -1
20632			if page.Response().Response.Response != nil {
20633				sc = page.Response().Response.Response.StatusCode
20634			}
20635			tracing.EndSpan(ctx, sc, err)
20636		}()
20637	}
20638	next, err := page.fn(ctx, page.uc)
20639	if err != nil {
20640		return err
20641	}
20642	page.uc = next
20643	return nil
20644}
20645
20646// Next advances to the next page of values.  If there was an error making
20647// the request the page does not advance and the error is returned.
20648// Deprecated: Use NextWithContext() instead.
20649func (page *UsageCollectionPage) Next() error {
20650	return page.NextWithContext(context.Background())
20651}
20652
20653// NotDone returns true if the page enumeration should be started or is not yet complete.
20654func (page UsageCollectionPage) NotDone() bool {
20655	return !page.uc.IsEmpty()
20656}
20657
20658// Response returns the raw server response from the last page request.
20659func (page UsageCollectionPage) Response() UsageCollection {
20660	return page.uc
20661}
20662
20663// Values returns the slice of values for the current page or nil if there are no values.
20664func (page UsageCollectionPage) Values() []Usage {
20665	if page.uc.IsEmpty() {
20666		return nil
20667	}
20668	return *page.uc.Value
20669}
20670
20671// Creates a new instance of the UsageCollectionPage type.
20672func NewUsageCollectionPage(getNextPage func(context.Context, UsageCollection) (UsageCollection, error)) UsageCollectionPage {
20673	return UsageCollectionPage{fn: getNextPage}
20674}
20675
20676// UsageProperties usage resource specific properties
20677type UsageProperties struct {
20678	// DisplayName - READ-ONLY; Friendly name shown in the UI.
20679	DisplayName *string `json:"displayName,omitempty"`
20680	// Name - READ-ONLY; Name of the quota.
20681	Name *string `json:"name,omitempty"`
20682	// ResourceName - READ-ONLY; Name of the quota resource.
20683	ResourceName *string `json:"resourceName,omitempty"`
20684	// Unit - READ-ONLY; Units of measurement for the quota resource.
20685	Unit *string `json:"unit,omitempty"`
20686	// CurrentValue - READ-ONLY; The current value of the resource counter.
20687	CurrentValue *int64 `json:"currentValue,omitempty"`
20688	// Limit - READ-ONLY; The resource limit.
20689	Limit *int64 `json:"limit,omitempty"`
20690	// NextResetTime - READ-ONLY; Next reset time for the resource counter.
20691	NextResetTime *date.Time `json:"nextResetTime,omitempty"`
20692	// ComputeMode - READ-ONLY; Compute mode used for this usage. Possible values include: 'ComputeModeOptionsShared', 'ComputeModeOptionsDedicated', 'ComputeModeOptionsDynamic'
20693	ComputeMode ComputeModeOptions `json:"computeMode,omitempty"`
20694	// SiteMode - READ-ONLY; Site mode used for this usage.
20695	SiteMode *string `json:"siteMode,omitempty"`
20696}
20697
20698// User user credentials used for publishing activity.
20699type User struct {
20700	autorest.Response `json:"-"`
20701	// UserProperties - User resource specific properties
20702	*UserProperties `json:"properties,omitempty"`
20703	// ID - READ-ONLY; Resource Id.
20704	ID *string `json:"id,omitempty"`
20705	// Name - READ-ONLY; Resource Name.
20706	Name *string `json:"name,omitempty"`
20707	// Kind - Kind of resource.
20708	Kind *string `json:"kind,omitempty"`
20709	// Type - READ-ONLY; Resource type.
20710	Type *string `json:"type,omitempty"`
20711}
20712
20713// MarshalJSON is the custom marshaler for User.
20714func (u User) MarshalJSON() ([]byte, error) {
20715	objectMap := make(map[string]interface{})
20716	if u.UserProperties != nil {
20717		objectMap["properties"] = u.UserProperties
20718	}
20719	if u.Kind != nil {
20720		objectMap["kind"] = u.Kind
20721	}
20722	return json.Marshal(objectMap)
20723}
20724
20725// UnmarshalJSON is the custom unmarshaler for User struct.
20726func (u *User) UnmarshalJSON(body []byte) error {
20727	var m map[string]*json.RawMessage
20728	err := json.Unmarshal(body, &m)
20729	if err != nil {
20730		return err
20731	}
20732	for k, v := range m {
20733		switch k {
20734		case "properties":
20735			if v != nil {
20736				var userProperties UserProperties
20737				err = json.Unmarshal(*v, &userProperties)
20738				if err != nil {
20739					return err
20740				}
20741				u.UserProperties = &userProperties
20742			}
20743		case "id":
20744			if v != nil {
20745				var ID string
20746				err = json.Unmarshal(*v, &ID)
20747				if err != nil {
20748					return err
20749				}
20750				u.ID = &ID
20751			}
20752		case "name":
20753			if v != nil {
20754				var name string
20755				err = json.Unmarshal(*v, &name)
20756				if err != nil {
20757					return err
20758				}
20759				u.Name = &name
20760			}
20761		case "kind":
20762			if v != nil {
20763				var kind string
20764				err = json.Unmarshal(*v, &kind)
20765				if err != nil {
20766					return err
20767				}
20768				u.Kind = &kind
20769			}
20770		case "type":
20771			if v != nil {
20772				var typeVar string
20773				err = json.Unmarshal(*v, &typeVar)
20774				if err != nil {
20775					return err
20776				}
20777				u.Type = &typeVar
20778			}
20779		}
20780	}
20781
20782	return nil
20783}
20784
20785// UserProperties user resource specific properties
20786type UserProperties struct {
20787	// UserName - Username
20788	UserName *string `json:"name,omitempty"`
20789	// PublishingUserName - Username used for publishing.
20790	PublishingUserName *string `json:"publishingUserName,omitempty"`
20791	// PublishingPassword - Password used for publishing.
20792	PublishingPassword *string `json:"publishingPassword,omitempty"`
20793	// PublishingPasswordHash - Password hash used for publishing.
20794	PublishingPasswordHash *string `json:"publishingPasswordHash,omitempty"`
20795	// PublishingPasswordHashSalt - Password hash salt used for publishing.
20796	PublishingPasswordHashSalt *string `json:"publishingPasswordHashSalt,omitempty"`
20797}
20798
20799// ValidateProperties app properties used for validation.
20800type ValidateProperties struct {
20801	// ServerFarmID - ARM resource ID of an App Service plan that would host the app.
20802	ServerFarmID *string `json:"serverFarmId,omitempty"`
20803	// SkuName - Name of the target SKU for the App Service plan.
20804	SkuName *string `json:"skuName,omitempty"`
20805	// NeedLinuxWorkers - <code>true</code> if App Service plan is for Linux workers; otherwise, <code>false</code>.
20806	NeedLinuxWorkers *bool `json:"needLinuxWorkers,omitempty"`
20807	// IsSpot - <code>true</code> if App Service plan is for Spot instances; otherwise, <code>false</code>.
20808	IsSpot *bool `json:"isSpot,omitempty"`
20809	// Capacity - Target capacity of the App Service plan (number of VMs).
20810	Capacity *int32 `json:"capacity,omitempty"`
20811	// HostingEnvironment - Name of App Service Environment where app or App Service plan should be created.
20812	HostingEnvironment *string `json:"hostingEnvironment,omitempty"`
20813}
20814
20815// ValidateRequest resource validation request content.
20816type ValidateRequest struct {
20817	// Name - Resource name to verify.
20818	Name *string `json:"name,omitempty"`
20819	// Type - Resource type used for verification. Possible values include: 'ValidateResourceTypesServerFarm', 'ValidateResourceTypesSite'
20820	Type ValidateResourceTypes `json:"type,omitempty"`
20821	// Location - Expected location of the resource.
20822	Location *string `json:"location,omitempty"`
20823	// ValidateProperties - Properties of the resource to validate.
20824	*ValidateProperties `json:"properties,omitempty"`
20825}
20826
20827// MarshalJSON is the custom marshaler for ValidateRequest.
20828func (vr ValidateRequest) MarshalJSON() ([]byte, error) {
20829	objectMap := make(map[string]interface{})
20830	if vr.Name != nil {
20831		objectMap["name"] = vr.Name
20832	}
20833	if vr.Type != "" {
20834		objectMap["type"] = vr.Type
20835	}
20836	if vr.Location != nil {
20837		objectMap["location"] = vr.Location
20838	}
20839	if vr.ValidateProperties != nil {
20840		objectMap["properties"] = vr.ValidateProperties
20841	}
20842	return json.Marshal(objectMap)
20843}
20844
20845// UnmarshalJSON is the custom unmarshaler for ValidateRequest struct.
20846func (vr *ValidateRequest) UnmarshalJSON(body []byte) error {
20847	var m map[string]*json.RawMessage
20848	err := json.Unmarshal(body, &m)
20849	if err != nil {
20850		return err
20851	}
20852	for k, v := range m {
20853		switch k {
20854		case "name":
20855			if v != nil {
20856				var name string
20857				err = json.Unmarshal(*v, &name)
20858				if err != nil {
20859					return err
20860				}
20861				vr.Name = &name
20862			}
20863		case "type":
20864			if v != nil {
20865				var typeVar ValidateResourceTypes
20866				err = json.Unmarshal(*v, &typeVar)
20867				if err != nil {
20868					return err
20869				}
20870				vr.Type = typeVar
20871			}
20872		case "location":
20873			if v != nil {
20874				var location string
20875				err = json.Unmarshal(*v, &location)
20876				if err != nil {
20877					return err
20878				}
20879				vr.Location = &location
20880			}
20881		case "properties":
20882			if v != nil {
20883				var validateProperties ValidateProperties
20884				err = json.Unmarshal(*v, &validateProperties)
20885				if err != nil {
20886					return err
20887				}
20888				vr.ValidateProperties = &validateProperties
20889			}
20890		}
20891	}
20892
20893	return nil
20894}
20895
20896// ValidateResponse describes the result of resource validation.
20897type ValidateResponse struct {
20898	autorest.Response `json:"-"`
20899	// Status - Result of validation.
20900	Status *string `json:"status,omitempty"`
20901	// Error - Error details for the case when validation fails.
20902	Error *ValidateResponseError `json:"error,omitempty"`
20903}
20904
20905// ValidateResponseError error details for when validation fails.
20906type ValidateResponseError struct {
20907	// Code - Validation error code.
20908	Code *string `json:"code,omitempty"`
20909	// Message - Validation error message.
20910	Message *string `json:"message,omitempty"`
20911}
20912
20913// VirtualApplication virtual application in an app.
20914type VirtualApplication struct {
20915	// VirtualPath - Virtual path.
20916	VirtualPath *string `json:"virtualPath,omitempty"`
20917	// PhysicalPath - Physical path.
20918	PhysicalPath *string `json:"physicalPath,omitempty"`
20919	// PreloadEnabled - <code>true</code> if preloading is enabled; otherwise, <code>false</code>.
20920	PreloadEnabled *bool `json:"preloadEnabled,omitempty"`
20921	// VirtualDirectories - Virtual directories for virtual application.
20922	VirtualDirectories *[]VirtualDirectory `json:"virtualDirectories,omitempty"`
20923}
20924
20925// VirtualDirectory directory for virtual application.
20926type VirtualDirectory struct {
20927	// VirtualPath - Path to virtual application.
20928	VirtualPath *string `json:"virtualPath,omitempty"`
20929	// PhysicalPath - Physical path.
20930	PhysicalPath *string `json:"physicalPath,omitempty"`
20931}
20932
20933// VirtualIPMapping virtual IP mapping.
20934type VirtualIPMapping struct {
20935	// VirtualIP - Virtual IP address.
20936	VirtualIP *string `json:"virtualIP,omitempty"`
20937	// InternalHTTPPort - Internal HTTP port.
20938	InternalHTTPPort *int32 `json:"internalHttpPort,omitempty"`
20939	// InternalHTTPSPort - Internal HTTPS port.
20940	InternalHTTPSPort *int32 `json:"internalHttpsPort,omitempty"`
20941	// InUse - Is virtual IP mapping in use.
20942	InUse *bool `json:"inUse,omitempty"`
20943}
20944
20945// VirtualNetworkProfile specification for using a Virtual Network.
20946type VirtualNetworkProfile struct {
20947	// ID - Resource id of the Virtual Network.
20948	ID *string `json:"id,omitempty"`
20949	// Name - READ-ONLY; Name of the Virtual Network (read-only).
20950	Name *string `json:"name,omitempty"`
20951	// Type - READ-ONLY; Resource type of the Virtual Network (read-only).
20952	Type *string `json:"type,omitempty"`
20953	// Subnet - Subnet within the Virtual Network.
20954	Subnet *string `json:"subnet,omitempty"`
20955}
20956
20957// VnetGateway the Virtual Network gateway contract. This is used to give the Virtual Network gateway
20958// access to the VPN package.
20959type VnetGateway struct {
20960	autorest.Response `json:"-"`
20961	// VnetGatewayProperties - VnetGateway resource specific properties
20962	*VnetGatewayProperties `json:"properties,omitempty"`
20963	// ID - READ-ONLY; Resource Id.
20964	ID *string `json:"id,omitempty"`
20965	// Name - READ-ONLY; Resource Name.
20966	Name *string `json:"name,omitempty"`
20967	// Kind - Kind of resource.
20968	Kind *string `json:"kind,omitempty"`
20969	// Type - READ-ONLY; Resource type.
20970	Type *string `json:"type,omitempty"`
20971}
20972
20973// MarshalJSON is the custom marshaler for VnetGateway.
20974func (vg VnetGateway) MarshalJSON() ([]byte, error) {
20975	objectMap := make(map[string]interface{})
20976	if vg.VnetGatewayProperties != nil {
20977		objectMap["properties"] = vg.VnetGatewayProperties
20978	}
20979	if vg.Kind != nil {
20980		objectMap["kind"] = vg.Kind
20981	}
20982	return json.Marshal(objectMap)
20983}
20984
20985// UnmarshalJSON is the custom unmarshaler for VnetGateway struct.
20986func (vg *VnetGateway) UnmarshalJSON(body []byte) error {
20987	var m map[string]*json.RawMessage
20988	err := json.Unmarshal(body, &m)
20989	if err != nil {
20990		return err
20991	}
20992	for k, v := range m {
20993		switch k {
20994		case "properties":
20995			if v != nil {
20996				var vnetGatewayProperties VnetGatewayProperties
20997				err = json.Unmarshal(*v, &vnetGatewayProperties)
20998				if err != nil {
20999					return err
21000				}
21001				vg.VnetGatewayProperties = &vnetGatewayProperties
21002			}
21003		case "id":
21004			if v != nil {
21005				var ID string
21006				err = json.Unmarshal(*v, &ID)
21007				if err != nil {
21008					return err
21009				}
21010				vg.ID = &ID
21011			}
21012		case "name":
21013			if v != nil {
21014				var name string
21015				err = json.Unmarshal(*v, &name)
21016				if err != nil {
21017					return err
21018				}
21019				vg.Name = &name
21020			}
21021		case "kind":
21022			if v != nil {
21023				var kind string
21024				err = json.Unmarshal(*v, &kind)
21025				if err != nil {
21026					return err
21027				}
21028				vg.Kind = &kind
21029			}
21030		case "type":
21031			if v != nil {
21032				var typeVar string
21033				err = json.Unmarshal(*v, &typeVar)
21034				if err != nil {
21035					return err
21036				}
21037				vg.Type = &typeVar
21038			}
21039		}
21040	}
21041
21042	return nil
21043}
21044
21045// VnetGatewayProperties vnetGateway resource specific properties
21046type VnetGatewayProperties struct {
21047	// VnetName - The Virtual Network name.
21048	VnetName *string `json:"vnetName,omitempty"`
21049	// VpnPackageURI - The URI where the VPN package can be downloaded.
21050	VpnPackageURI *string `json:"vpnPackageUri,omitempty"`
21051}
21052
21053// VnetInfo virtual Network information contract.
21054type VnetInfo struct {
21055	autorest.Response `json:"-"`
21056	// VnetInfoProperties - VnetInfo resource specific properties
21057	*VnetInfoProperties `json:"properties,omitempty"`
21058	// ID - READ-ONLY; Resource Id.
21059	ID *string `json:"id,omitempty"`
21060	// Name - READ-ONLY; Resource Name.
21061	Name *string `json:"name,omitempty"`
21062	// Kind - Kind of resource.
21063	Kind *string `json:"kind,omitempty"`
21064	// Type - READ-ONLY; Resource type.
21065	Type *string `json:"type,omitempty"`
21066}
21067
21068// MarshalJSON is the custom marshaler for VnetInfo.
21069func (vi VnetInfo) MarshalJSON() ([]byte, error) {
21070	objectMap := make(map[string]interface{})
21071	if vi.VnetInfoProperties != nil {
21072		objectMap["properties"] = vi.VnetInfoProperties
21073	}
21074	if vi.Kind != nil {
21075		objectMap["kind"] = vi.Kind
21076	}
21077	return json.Marshal(objectMap)
21078}
21079
21080// UnmarshalJSON is the custom unmarshaler for VnetInfo struct.
21081func (vi *VnetInfo) UnmarshalJSON(body []byte) error {
21082	var m map[string]*json.RawMessage
21083	err := json.Unmarshal(body, &m)
21084	if err != nil {
21085		return err
21086	}
21087	for k, v := range m {
21088		switch k {
21089		case "properties":
21090			if v != nil {
21091				var vnetInfoProperties VnetInfoProperties
21092				err = json.Unmarshal(*v, &vnetInfoProperties)
21093				if err != nil {
21094					return err
21095				}
21096				vi.VnetInfoProperties = &vnetInfoProperties
21097			}
21098		case "id":
21099			if v != nil {
21100				var ID string
21101				err = json.Unmarshal(*v, &ID)
21102				if err != nil {
21103					return err
21104				}
21105				vi.ID = &ID
21106			}
21107		case "name":
21108			if v != nil {
21109				var name string
21110				err = json.Unmarshal(*v, &name)
21111				if err != nil {
21112					return err
21113				}
21114				vi.Name = &name
21115			}
21116		case "kind":
21117			if v != nil {
21118				var kind string
21119				err = json.Unmarshal(*v, &kind)
21120				if err != nil {
21121					return err
21122				}
21123				vi.Kind = &kind
21124			}
21125		case "type":
21126			if v != nil {
21127				var typeVar string
21128				err = json.Unmarshal(*v, &typeVar)
21129				if err != nil {
21130					return err
21131				}
21132				vi.Type = &typeVar
21133			}
21134		}
21135	}
21136
21137	return nil
21138}
21139
21140// VnetInfoProperties vnetInfo resource specific properties
21141type VnetInfoProperties struct {
21142	// VnetResourceID - The Virtual Network's resource ID.
21143	VnetResourceID *string `json:"vnetResourceId,omitempty"`
21144	// CertThumbprint - READ-ONLY; The client certificate thumbprint.
21145	CertThumbprint *string `json:"certThumbprint,omitempty"`
21146	// CertBlob - A certificate file (.cer) blob containing the public key of the private key used to authenticate a
21147	// Point-To-Site VPN connection.
21148	CertBlob *[]byte `json:"certBlob,omitempty"`
21149	// Routes - READ-ONLY; The routes that this Virtual Network connection uses.
21150	Routes *[]VnetRoute `json:"routes,omitempty"`
21151	// ResyncRequired - READ-ONLY; <code>true</code> if a resync is required; otherwise, <code>false</code>.
21152	ResyncRequired *bool `json:"resyncRequired,omitempty"`
21153	// DNSServers - DNS servers to be used by this Virtual Network. This should be a comma-separated list of IP addresses.
21154	DNSServers *string `json:"dnsServers,omitempty"`
21155}
21156
21157// VnetParameters the required set of inputs to validate a VNET
21158type VnetParameters struct {
21159	// VnetParametersProperties - VnetParameters resource specific properties
21160	*VnetParametersProperties `json:"properties,omitempty"`
21161	// ID - READ-ONLY; Resource Id.
21162	ID *string `json:"id,omitempty"`
21163	// Name - READ-ONLY; Resource Name.
21164	Name *string `json:"name,omitempty"`
21165	// Kind - Kind of resource.
21166	Kind *string `json:"kind,omitempty"`
21167	// Type - READ-ONLY; Resource type.
21168	Type *string `json:"type,omitempty"`
21169}
21170
21171// MarshalJSON is the custom marshaler for VnetParameters.
21172func (vp VnetParameters) MarshalJSON() ([]byte, error) {
21173	objectMap := make(map[string]interface{})
21174	if vp.VnetParametersProperties != nil {
21175		objectMap["properties"] = vp.VnetParametersProperties
21176	}
21177	if vp.Kind != nil {
21178		objectMap["kind"] = vp.Kind
21179	}
21180	return json.Marshal(objectMap)
21181}
21182
21183// UnmarshalJSON is the custom unmarshaler for VnetParameters struct.
21184func (vp *VnetParameters) UnmarshalJSON(body []byte) error {
21185	var m map[string]*json.RawMessage
21186	err := json.Unmarshal(body, &m)
21187	if err != nil {
21188		return err
21189	}
21190	for k, v := range m {
21191		switch k {
21192		case "properties":
21193			if v != nil {
21194				var vnetParametersProperties VnetParametersProperties
21195				err = json.Unmarshal(*v, &vnetParametersProperties)
21196				if err != nil {
21197					return err
21198				}
21199				vp.VnetParametersProperties = &vnetParametersProperties
21200			}
21201		case "id":
21202			if v != nil {
21203				var ID string
21204				err = json.Unmarshal(*v, &ID)
21205				if err != nil {
21206					return err
21207				}
21208				vp.ID = &ID
21209			}
21210		case "name":
21211			if v != nil {
21212				var name string
21213				err = json.Unmarshal(*v, &name)
21214				if err != nil {
21215					return err
21216				}
21217				vp.Name = &name
21218			}
21219		case "kind":
21220			if v != nil {
21221				var kind string
21222				err = json.Unmarshal(*v, &kind)
21223				if err != nil {
21224					return err
21225				}
21226				vp.Kind = &kind
21227			}
21228		case "type":
21229			if v != nil {
21230				var typeVar string
21231				err = json.Unmarshal(*v, &typeVar)
21232				if err != nil {
21233					return err
21234				}
21235				vp.Type = &typeVar
21236			}
21237		}
21238	}
21239
21240	return nil
21241}
21242
21243// VnetParametersProperties vnetParameters resource specific properties
21244type VnetParametersProperties struct {
21245	// VnetResourceGroup - The Resource Group of the VNET to be validated
21246	VnetResourceGroup *string `json:"vnetResourceGroup,omitempty"`
21247	// VnetName - The name of the VNET to be validated
21248	VnetName *string `json:"vnetName,omitempty"`
21249	// VnetSubnetName - The subnet name to be validated
21250	VnetSubnetName *string `json:"vnetSubnetName,omitempty"`
21251}
21252
21253// VnetRoute virtual Network route contract used to pass routing information for a Virtual Network.
21254type VnetRoute struct {
21255	autorest.Response `json:"-"`
21256	// VnetRouteProperties - VnetRoute resource specific properties
21257	*VnetRouteProperties `json:"properties,omitempty"`
21258	// ID - READ-ONLY; Resource Id.
21259	ID *string `json:"id,omitempty"`
21260	// Name - READ-ONLY; Resource Name.
21261	Name *string `json:"name,omitempty"`
21262	// Kind - Kind of resource.
21263	Kind *string `json:"kind,omitempty"`
21264	// Type - READ-ONLY; Resource type.
21265	Type *string `json:"type,omitempty"`
21266}
21267
21268// MarshalJSON is the custom marshaler for VnetRoute.
21269func (vr VnetRoute) MarshalJSON() ([]byte, error) {
21270	objectMap := make(map[string]interface{})
21271	if vr.VnetRouteProperties != nil {
21272		objectMap["properties"] = vr.VnetRouteProperties
21273	}
21274	if vr.Kind != nil {
21275		objectMap["kind"] = vr.Kind
21276	}
21277	return json.Marshal(objectMap)
21278}
21279
21280// UnmarshalJSON is the custom unmarshaler for VnetRoute struct.
21281func (vr *VnetRoute) UnmarshalJSON(body []byte) error {
21282	var m map[string]*json.RawMessage
21283	err := json.Unmarshal(body, &m)
21284	if err != nil {
21285		return err
21286	}
21287	for k, v := range m {
21288		switch k {
21289		case "properties":
21290			if v != nil {
21291				var vnetRouteProperties VnetRouteProperties
21292				err = json.Unmarshal(*v, &vnetRouteProperties)
21293				if err != nil {
21294					return err
21295				}
21296				vr.VnetRouteProperties = &vnetRouteProperties
21297			}
21298		case "id":
21299			if v != nil {
21300				var ID string
21301				err = json.Unmarshal(*v, &ID)
21302				if err != nil {
21303					return err
21304				}
21305				vr.ID = &ID
21306			}
21307		case "name":
21308			if v != nil {
21309				var name string
21310				err = json.Unmarshal(*v, &name)
21311				if err != nil {
21312					return err
21313				}
21314				vr.Name = &name
21315			}
21316		case "kind":
21317			if v != nil {
21318				var kind string
21319				err = json.Unmarshal(*v, &kind)
21320				if err != nil {
21321					return err
21322				}
21323				vr.Kind = &kind
21324			}
21325		case "type":
21326			if v != nil {
21327				var typeVar string
21328				err = json.Unmarshal(*v, &typeVar)
21329				if err != nil {
21330					return err
21331				}
21332				vr.Type = &typeVar
21333			}
21334		}
21335	}
21336
21337	return nil
21338}
21339
21340// VnetRouteProperties vnetRoute resource specific properties
21341type VnetRouteProperties struct {
21342	// VnetRouteName - The name of this route. This is only returned by the server and does not need to be set by the client.
21343	VnetRouteName *string `json:"name,omitempty"`
21344	// StartAddress - The starting address for this route. This may also include a CIDR notation, in which case the end address must not be specified.
21345	StartAddress *string `json:"startAddress,omitempty"`
21346	// EndAddress - The ending address for this route. If the start address is specified in CIDR notation, this must be omitted.
21347	EndAddress *string `json:"endAddress,omitempty"`
21348	// RouteType - The type of route this is:
21349	// DEFAULT - By default, every app has routes to the local address ranges specified by RFC1918
21350	// INHERITED - Routes inherited from the real Virtual Network routes
21351	// STATIC - Static route set on the app only
21352	// These values will be used for syncing an app's routes with those from a Virtual Network. Possible values include: 'DEFAULT', 'INHERITED', 'STATIC'
21353	RouteType RouteType `json:"routeType,omitempty"`
21354}
21355
21356// VnetValidationFailureDetails a class that describes the reason for a validation failure.
21357type VnetValidationFailureDetails struct {
21358	autorest.Response `json:"-"`
21359	// VnetValidationFailureDetailsProperties - VnetValidationFailureDetails resource specific properties
21360	*VnetValidationFailureDetailsProperties `json:"properties,omitempty"`
21361	// ID - READ-ONLY; Resource Id.
21362	ID *string `json:"id,omitempty"`
21363	// Name - READ-ONLY; Resource Name.
21364	Name *string `json:"name,omitempty"`
21365	// Kind - Kind of resource.
21366	Kind *string `json:"kind,omitempty"`
21367	// Type - READ-ONLY; Resource type.
21368	Type *string `json:"type,omitempty"`
21369}
21370
21371// MarshalJSON is the custom marshaler for VnetValidationFailureDetails.
21372func (vvfd VnetValidationFailureDetails) MarshalJSON() ([]byte, error) {
21373	objectMap := make(map[string]interface{})
21374	if vvfd.VnetValidationFailureDetailsProperties != nil {
21375		objectMap["properties"] = vvfd.VnetValidationFailureDetailsProperties
21376	}
21377	if vvfd.Kind != nil {
21378		objectMap["kind"] = vvfd.Kind
21379	}
21380	return json.Marshal(objectMap)
21381}
21382
21383// UnmarshalJSON is the custom unmarshaler for VnetValidationFailureDetails struct.
21384func (vvfd *VnetValidationFailureDetails) UnmarshalJSON(body []byte) error {
21385	var m map[string]*json.RawMessage
21386	err := json.Unmarshal(body, &m)
21387	if err != nil {
21388		return err
21389	}
21390	for k, v := range m {
21391		switch k {
21392		case "properties":
21393			if v != nil {
21394				var vnetValidationFailureDetailsProperties VnetValidationFailureDetailsProperties
21395				err = json.Unmarshal(*v, &vnetValidationFailureDetailsProperties)
21396				if err != nil {
21397					return err
21398				}
21399				vvfd.VnetValidationFailureDetailsProperties = &vnetValidationFailureDetailsProperties
21400			}
21401		case "id":
21402			if v != nil {
21403				var ID string
21404				err = json.Unmarshal(*v, &ID)
21405				if err != nil {
21406					return err
21407				}
21408				vvfd.ID = &ID
21409			}
21410		case "name":
21411			if v != nil {
21412				var name string
21413				err = json.Unmarshal(*v, &name)
21414				if err != nil {
21415					return err
21416				}
21417				vvfd.Name = &name
21418			}
21419		case "kind":
21420			if v != nil {
21421				var kind string
21422				err = json.Unmarshal(*v, &kind)
21423				if err != nil {
21424					return err
21425				}
21426				vvfd.Kind = &kind
21427			}
21428		case "type":
21429			if v != nil {
21430				var typeVar string
21431				err = json.Unmarshal(*v, &typeVar)
21432				if err != nil {
21433					return err
21434				}
21435				vvfd.Type = &typeVar
21436			}
21437		}
21438	}
21439
21440	return nil
21441}
21442
21443// VnetValidationFailureDetailsProperties vnetValidationFailureDetails resource specific properties
21444type VnetValidationFailureDetailsProperties struct {
21445	// Failed - A flag describing whether or not validation failed.
21446	Failed *bool `json:"failed,omitempty"`
21447	// FailedTests - A list of tests that failed in the validation.
21448	FailedTests *[]VnetValidationTestFailure `json:"failedTests,omitempty"`
21449}
21450
21451// VnetValidationTestFailure a class that describes a test that failed during NSG and UDR validation.
21452type VnetValidationTestFailure struct {
21453	// VnetValidationTestFailureProperties - VnetValidationTestFailure resource specific properties
21454	*VnetValidationTestFailureProperties `json:"properties,omitempty"`
21455	// ID - READ-ONLY; Resource Id.
21456	ID *string `json:"id,omitempty"`
21457	// Name - READ-ONLY; Resource Name.
21458	Name *string `json:"name,omitempty"`
21459	// Kind - Kind of resource.
21460	Kind *string `json:"kind,omitempty"`
21461	// Type - READ-ONLY; Resource type.
21462	Type *string `json:"type,omitempty"`
21463}
21464
21465// MarshalJSON is the custom marshaler for VnetValidationTestFailure.
21466func (vvtf VnetValidationTestFailure) MarshalJSON() ([]byte, error) {
21467	objectMap := make(map[string]interface{})
21468	if vvtf.VnetValidationTestFailureProperties != nil {
21469		objectMap["properties"] = vvtf.VnetValidationTestFailureProperties
21470	}
21471	if vvtf.Kind != nil {
21472		objectMap["kind"] = vvtf.Kind
21473	}
21474	return json.Marshal(objectMap)
21475}
21476
21477// UnmarshalJSON is the custom unmarshaler for VnetValidationTestFailure struct.
21478func (vvtf *VnetValidationTestFailure) UnmarshalJSON(body []byte) error {
21479	var m map[string]*json.RawMessage
21480	err := json.Unmarshal(body, &m)
21481	if err != nil {
21482		return err
21483	}
21484	for k, v := range m {
21485		switch k {
21486		case "properties":
21487			if v != nil {
21488				var vnetValidationTestFailureProperties VnetValidationTestFailureProperties
21489				err = json.Unmarshal(*v, &vnetValidationTestFailureProperties)
21490				if err != nil {
21491					return err
21492				}
21493				vvtf.VnetValidationTestFailureProperties = &vnetValidationTestFailureProperties
21494			}
21495		case "id":
21496			if v != nil {
21497				var ID string
21498				err = json.Unmarshal(*v, &ID)
21499				if err != nil {
21500					return err
21501				}
21502				vvtf.ID = &ID
21503			}
21504		case "name":
21505			if v != nil {
21506				var name string
21507				err = json.Unmarshal(*v, &name)
21508				if err != nil {
21509					return err
21510				}
21511				vvtf.Name = &name
21512			}
21513		case "kind":
21514			if v != nil {
21515				var kind string
21516				err = json.Unmarshal(*v, &kind)
21517				if err != nil {
21518					return err
21519				}
21520				vvtf.Kind = &kind
21521			}
21522		case "type":
21523			if v != nil {
21524				var typeVar string
21525				err = json.Unmarshal(*v, &typeVar)
21526				if err != nil {
21527					return err
21528				}
21529				vvtf.Type = &typeVar
21530			}
21531		}
21532	}
21533
21534	return nil
21535}
21536
21537// VnetValidationTestFailureProperties vnetValidationTestFailure resource specific properties
21538type VnetValidationTestFailureProperties struct {
21539	// TestName - The name of the test that failed.
21540	TestName *string `json:"testName,omitempty"`
21541	// Details - The details of what caused the failure, e.g. the blocking rule name, etc.
21542	Details *string `json:"details,omitempty"`
21543}
21544
21545// WorkerPool worker pool of an App Service Environment.
21546type WorkerPool struct {
21547	// WorkerSizeID - Worker size ID for referencing this worker pool.
21548	WorkerSizeID *int32 `json:"workerSizeId,omitempty"`
21549	// ComputeMode - Shared or dedicated app hosting. Possible values include: 'ComputeModeOptionsShared', 'ComputeModeOptionsDedicated', 'ComputeModeOptionsDynamic'
21550	ComputeMode ComputeModeOptions `json:"computeMode,omitempty"`
21551	// WorkerSize - VM size of the worker pool instances.
21552	WorkerSize *string `json:"workerSize,omitempty"`
21553	// WorkerCount - Number of instances in the worker pool.
21554	WorkerCount *int32 `json:"workerCount,omitempty"`
21555	// InstanceNames - READ-ONLY; Names of all instances in the worker pool (read only).
21556	InstanceNames *[]string `json:"instanceNames,omitempty"`
21557}
21558
21559// WorkerPoolCollection collection of worker pools.
21560type WorkerPoolCollection struct {
21561	autorest.Response `json:"-"`
21562	// Value - Collection of resources.
21563	Value *[]WorkerPoolResource `json:"value,omitempty"`
21564	// NextLink - READ-ONLY; Link to next page of resources.
21565	NextLink *string `json:"nextLink,omitempty"`
21566}
21567
21568// WorkerPoolCollectionIterator provides access to a complete listing of WorkerPoolResource values.
21569type WorkerPoolCollectionIterator struct {
21570	i    int
21571	page WorkerPoolCollectionPage
21572}
21573
21574// NextWithContext advances to the next value.  If there was an error making
21575// the request the iterator does not advance and the error is returned.
21576func (iter *WorkerPoolCollectionIterator) NextWithContext(ctx context.Context) (err error) {
21577	if tracing.IsEnabled() {
21578		ctx = tracing.StartSpan(ctx, fqdn+"/WorkerPoolCollectionIterator.NextWithContext")
21579		defer func() {
21580			sc := -1
21581			if iter.Response().Response.Response != nil {
21582				sc = iter.Response().Response.Response.StatusCode
21583			}
21584			tracing.EndSpan(ctx, sc, err)
21585		}()
21586	}
21587	iter.i++
21588	if iter.i < len(iter.page.Values()) {
21589		return nil
21590	}
21591	err = iter.page.NextWithContext(ctx)
21592	if err != nil {
21593		iter.i--
21594		return err
21595	}
21596	iter.i = 0
21597	return nil
21598}
21599
21600// Next advances to the next value.  If there was an error making
21601// the request the iterator does not advance and the error is returned.
21602// Deprecated: Use NextWithContext() instead.
21603func (iter *WorkerPoolCollectionIterator) Next() error {
21604	return iter.NextWithContext(context.Background())
21605}
21606
21607// NotDone returns true if the enumeration should be started or is not yet complete.
21608func (iter WorkerPoolCollectionIterator) NotDone() bool {
21609	return iter.page.NotDone() && iter.i < len(iter.page.Values())
21610}
21611
21612// Response returns the raw server response from the last page request.
21613func (iter WorkerPoolCollectionIterator) Response() WorkerPoolCollection {
21614	return iter.page.Response()
21615}
21616
21617// Value returns the current value or a zero-initialized value if the
21618// iterator has advanced beyond the end of the collection.
21619func (iter WorkerPoolCollectionIterator) Value() WorkerPoolResource {
21620	if !iter.page.NotDone() {
21621		return WorkerPoolResource{}
21622	}
21623	return iter.page.Values()[iter.i]
21624}
21625
21626// Creates a new instance of the WorkerPoolCollectionIterator type.
21627func NewWorkerPoolCollectionIterator(page WorkerPoolCollectionPage) WorkerPoolCollectionIterator {
21628	return WorkerPoolCollectionIterator{page: page}
21629}
21630
21631// IsEmpty returns true if the ListResult contains no values.
21632func (wpc WorkerPoolCollection) IsEmpty() bool {
21633	return wpc.Value == nil || len(*wpc.Value) == 0
21634}
21635
21636// workerPoolCollectionPreparer prepares a request to retrieve the next set of results.
21637// It returns nil if no more results exist.
21638func (wpc WorkerPoolCollection) workerPoolCollectionPreparer(ctx context.Context) (*http.Request, error) {
21639	if wpc.NextLink == nil || len(to.String(wpc.NextLink)) < 1 {
21640		return nil, nil
21641	}
21642	return autorest.Prepare((&http.Request{}).WithContext(ctx),
21643		autorest.AsJSON(),
21644		autorest.AsGet(),
21645		autorest.WithBaseURL(to.String(wpc.NextLink)))
21646}
21647
21648// WorkerPoolCollectionPage contains a page of WorkerPoolResource values.
21649type WorkerPoolCollectionPage struct {
21650	fn  func(context.Context, WorkerPoolCollection) (WorkerPoolCollection, error)
21651	wpc WorkerPoolCollection
21652}
21653
21654// NextWithContext advances to the next page of values.  If there was an error making
21655// the request the page does not advance and the error is returned.
21656func (page *WorkerPoolCollectionPage) NextWithContext(ctx context.Context) (err error) {
21657	if tracing.IsEnabled() {
21658		ctx = tracing.StartSpan(ctx, fqdn+"/WorkerPoolCollectionPage.NextWithContext")
21659		defer func() {
21660			sc := -1
21661			if page.Response().Response.Response != nil {
21662				sc = page.Response().Response.Response.StatusCode
21663			}
21664			tracing.EndSpan(ctx, sc, err)
21665		}()
21666	}
21667	next, err := page.fn(ctx, page.wpc)
21668	if err != nil {
21669		return err
21670	}
21671	page.wpc = next
21672	return nil
21673}
21674
21675// Next advances to the next page of values.  If there was an error making
21676// the request the page does not advance and the error is returned.
21677// Deprecated: Use NextWithContext() instead.
21678func (page *WorkerPoolCollectionPage) Next() error {
21679	return page.NextWithContext(context.Background())
21680}
21681
21682// NotDone returns true if the page enumeration should be started or is not yet complete.
21683func (page WorkerPoolCollectionPage) NotDone() bool {
21684	return !page.wpc.IsEmpty()
21685}
21686
21687// Response returns the raw server response from the last page request.
21688func (page WorkerPoolCollectionPage) Response() WorkerPoolCollection {
21689	return page.wpc
21690}
21691
21692// Values returns the slice of values for the current page or nil if there are no values.
21693func (page WorkerPoolCollectionPage) Values() []WorkerPoolResource {
21694	if page.wpc.IsEmpty() {
21695		return nil
21696	}
21697	return *page.wpc.Value
21698}
21699
21700// Creates a new instance of the WorkerPoolCollectionPage type.
21701func NewWorkerPoolCollectionPage(getNextPage func(context.Context, WorkerPoolCollection) (WorkerPoolCollection, error)) WorkerPoolCollectionPage {
21702	return WorkerPoolCollectionPage{fn: getNextPage}
21703}
21704
21705// WorkerPoolResource worker pool of an App Service Environment ARM resource.
21706type WorkerPoolResource struct {
21707	autorest.Response `json:"-"`
21708	// WorkerPool - Core resource properties
21709	*WorkerPool `json:"properties,omitempty"`
21710	Sku         *SkuDescription `json:"sku,omitempty"`
21711	// ID - READ-ONLY; Resource Id.
21712	ID *string `json:"id,omitempty"`
21713	// Name - READ-ONLY; Resource Name.
21714	Name *string `json:"name,omitempty"`
21715	// Kind - Kind of resource.
21716	Kind *string `json:"kind,omitempty"`
21717	// Type - READ-ONLY; Resource type.
21718	Type *string `json:"type,omitempty"`
21719}
21720
21721// MarshalJSON is the custom marshaler for WorkerPoolResource.
21722func (wpr WorkerPoolResource) MarshalJSON() ([]byte, error) {
21723	objectMap := make(map[string]interface{})
21724	if wpr.WorkerPool != nil {
21725		objectMap["properties"] = wpr.WorkerPool
21726	}
21727	if wpr.Sku != nil {
21728		objectMap["sku"] = wpr.Sku
21729	}
21730	if wpr.Kind != nil {
21731		objectMap["kind"] = wpr.Kind
21732	}
21733	return json.Marshal(objectMap)
21734}
21735
21736// UnmarshalJSON is the custom unmarshaler for WorkerPoolResource struct.
21737func (wpr *WorkerPoolResource) UnmarshalJSON(body []byte) error {
21738	var m map[string]*json.RawMessage
21739	err := json.Unmarshal(body, &m)
21740	if err != nil {
21741		return err
21742	}
21743	for k, v := range m {
21744		switch k {
21745		case "properties":
21746			if v != nil {
21747				var workerPool WorkerPool
21748				err = json.Unmarshal(*v, &workerPool)
21749				if err != nil {
21750					return err
21751				}
21752				wpr.WorkerPool = &workerPool
21753			}
21754		case "sku":
21755			if v != nil {
21756				var sku SkuDescription
21757				err = json.Unmarshal(*v, &sku)
21758				if err != nil {
21759					return err
21760				}
21761				wpr.Sku = &sku
21762			}
21763		case "id":
21764			if v != nil {
21765				var ID string
21766				err = json.Unmarshal(*v, &ID)
21767				if err != nil {
21768					return err
21769				}
21770				wpr.ID = &ID
21771			}
21772		case "name":
21773			if v != nil {
21774				var name string
21775				err = json.Unmarshal(*v, &name)
21776				if err != nil {
21777					return err
21778				}
21779				wpr.Name = &name
21780			}
21781		case "kind":
21782			if v != nil {
21783				var kind string
21784				err = json.Unmarshal(*v, &kind)
21785				if err != nil {
21786					return err
21787				}
21788				wpr.Kind = &kind
21789			}
21790		case "type":
21791			if v != nil {
21792				var typeVar string
21793				err = json.Unmarshal(*v, &typeVar)
21794				if err != nil {
21795					return err
21796				}
21797				wpr.Type = &typeVar
21798			}
21799		}
21800	}
21801
21802	return nil
21803}
21804